Page MenuHomePhabricator

D19574.diff
No OneTemporary

D19574.diff

diff --git a/src/applications/drydock/query/DrydockRepositoryOperationQuery.php b/src/applications/drydock/query/DrydockRepositoryOperationQuery.php
--- a/src/applications/drydock/query/DrydockRepositoryOperationQuery.php
+++ b/src/applications/drydock/query/DrydockRepositoryOperationQuery.php
@@ -9,6 +9,7 @@
private $operationStates;
private $operationTypes;
private $isDismissed;
+ private $authorPHIDs;
public function withIDs(array $ids) {
$this->ids = $ids;
@@ -45,6 +46,11 @@
return $this;
}
+ public function withAuthorPHIDs(array $phids) {
+ $this->authorPHIDs = $phids;
+ return $this;
+ }
+
public function newResultObject() {
return new DrydockRepositoryOperation();
}
@@ -165,6 +171,13 @@
(int)$this->isDismissed);
}
+ if ($this->authorPHIDs !== null) {
+ $where[] = qsprintf(
+ $conn,
+ 'authorPHID IN (%Ls)',
+ $this->authorPHIDs);
+ }
+
return $where;
}
diff --git a/src/applications/drydock/query/DrydockRepositoryOperationSearchEngine.php b/src/applications/drydock/query/DrydockRepositoryOperationSearchEngine.php
--- a/src/applications/drydock/query/DrydockRepositoryOperationSearchEngine.php
+++ b/src/applications/drydock/query/DrydockRepositoryOperationSearchEngine.php
@@ -18,11 +18,41 @@
protected function buildQueryFromParameters(array $map) {
$query = $this->newQuery();
+ if ($map['repositoryPHIDs']) {
+ $query->withRepositoryPHIDs($map['repositoryPHIDs']);
+ }
+
+ if ($map['authorPHIDs']) {
+ $query->withAuthorPHIDs($map['authorPHIDs']);
+ }
+
+ if ($map['states']) {
+ $query->withOperationStates($map['states']);
+ }
+
return $query;
}
protected function buildCustomSearchFields() {
return array(
+ id(new PhabricatorSearchDatasourceField())
+ ->setLabel(pht('Repositories'))
+ ->setKey('repositoryPHIDs')
+ ->setAliases(array('repository', 'repositories', 'repositoryPHID'))
+ ->setDatasource(new DiffusionRepositoryFunctionDatasource()),
+
+ // NOTE: Repository operations aren't necessarily created by a real
+ // user, but for now they normally are. Just use a user typeahead until
+ // more use cases arise.
+ id(new PhabricatorUsersSearchField())
+ ->setLabel(pht('Authors'))
+ ->setKey('authorPHIDs')
+ ->setAliases(array('author', 'authors', 'authorPHID')),
+ id(new PhabricatorSearchCheckboxesField())
+ ->setLabel(pht('States'))
+ ->setKey('states')
+ ->setAliases(array('state'))
+ ->setOptions(DrydockRepositoryOperation::getOperationStateNameMap()),
);
}
@@ -72,6 +102,10 @@
$item->setStatusIcon($icon, $name);
+
+ $created = phabricator_datetime($operation->getDateCreated(), $viewer);
+ $item->addIcon(null, $created);
+
$item->addByline(
array(
pht('Via:'),
diff --git a/src/applications/drydock/storage/DrydockRepositoryOperation.php b/src/applications/drydock/storage/DrydockRepositoryOperation.php
--- a/src/applications/drydock/storage/DrydockRepositoryOperation.php
+++ b/src/applications/drydock/storage/DrydockRepositoryOperation.php
@@ -99,6 +99,15 @@
return $this;
}
+ public static function getOperationStateNameMap() {
+ return array(
+ self::STATE_WAIT => pht('Waiting'),
+ self::STATE_WORK => pht('Working'),
+ self::STATE_DONE => pht('Done'),
+ self::STATE_FAIL => pht('Failed'),
+ );
+ }
+
public static function getOperationStateIcon($state) {
$map = array(
self::STATE_WAIT => 'fa-clock-o',
@@ -111,13 +120,7 @@
}
public static function getOperationStateName($state) {
- $map = array(
- self::STATE_WAIT => pht('Waiting'),
- self::STATE_WORK => pht('Working'),
- self::STATE_DONE => pht('Done'),
- self::STATE_FAIL => pht('Failed'),
- );
-
+ $map = self::getOperationStateNameMap();
return idx($map, $state, pht('<Unknown: %s>', $state));
}

File Metadata

Mime Type
text/plain
Expires
Thu, Jul 31, 1:34 PM (3 w, 6 d ago)
Storage Engine
blob
Storage Format
Encrypted (AES-256-CBC)
Storage Handle
8759191
Default Alt Text
D19574.diff (3 KB)

Event Timeline