3 final class DrydockResourceSearchEngine
4 extends PhabricatorApplicationSearchEngine
{
8 public function setBlueprint(DrydockBlueprint
$blueprint) {
9 $this->blueprint
= $blueprint;
13 public function getBlueprint() {
14 return $this->blueprint
;
17 public function getResultTypeDescription() {
18 return pht('Drydock Resources');
21 public function getApplicationClassName() {
22 return 'PhabricatorDrydockApplication';
25 public function newQuery() {
26 $query = new DrydockResourceQuery();
28 $blueprint = $this->getBlueprint();
30 $query->withBlueprintPHIDs(array($blueprint->getPHID()));
36 protected function buildQueryFromParameters(array $map) {
37 $query = $this->newQuery();
39 if ($map['statuses']) {
40 $query->withStatuses($map['statuses']);
43 if ($map['blueprintPHIDs']) {
44 $query->withBlueprintPHIDs($map['blueprintPHIDs']);
50 protected function buildCustomSearchFields() {
52 id(new PhabricatorSearchCheckboxesField())
53 ->setLabel(pht('Statuses'))
55 ->setOptions(DrydockResourceStatus
::getStatusMap()),
56 id(new PhabricatorPHIDsSearchField())
57 ->setLabel(pht('Blueprints'))
58 ->setKey('blueprintPHIDs')
59 ->setAliases(array('blueprintPHID', 'blueprints', 'blueprint'))
61 pht('Search for resources generated by particular blueprints.')),
65 protected function getURI($path) {
66 $blueprint = $this->getBlueprint();
68 $id = $blueprint->getID();
69 return "/drydock/blueprint/{$id}/resources/".$path;
71 return '/drydock/resource/'.$path;
75 protected function getBuiltinQueryNames() {
77 'active' => pht('Active Resources'),
78 'all' => pht('All Resources'),
82 public function buildSavedQueryFromBuiltin($query_key) {
83 $query = $this->newSavedQuery();
84 $query->setQueryKey($query_key);
88 return $query->setParameter(
91 DrydockResourceStatus
::STATUS_PENDING
,
92 DrydockResourceStatus
::STATUS_ACTIVE
,
98 return parent
::buildSavedQueryFromBuiltin($query_key);
101 protected function renderResultList(
103 PhabricatorSavedQuery
$query,
106 $list = id(new DrydockResourceListView())
107 ->setUser($this->requireViewer())
108 ->setResources($resources);
110 $result = new PhabricatorApplicationSearchResultView();
111 $result->setTable($list);