diff --git a/src/applications/harbormaster/constants/HarbormasterBuildStatus.php b/src/applications/harbormaster/constants/HarbormasterBuildStatus.php --- a/src/applications/harbormaster/constants/HarbormasterBuildStatus.php +++ b/src/applications/harbormaster/constants/HarbormasterBuildStatus.php @@ -118,4 +118,28 @@ } } + public static function getWaitingStatusConstants() { + return array( + self::STATUS_INACTIVE, + self::STATUS_PENDING, + ); + } + + public static function getActiveStatusConstants() { + return array( + self::STATUS_BUILDING, + self::STATUS_PAUSED, + ); + } + + public static function getCompletedStatusConstants() { + return array( + self::STATUS_PASSED, + self::STATUS_FAILED, + self::STATUS_ABORTED, + self::STATUS_ERROR, + self::STATUS_DEADLOCKED, + ); + } + } diff --git a/src/applications/harbormaster/query/HarbormasterBuildSearchEngine.php b/src/applications/harbormaster/query/HarbormasterBuildSearchEngine.php --- a/src/applications/harbormaster/query/HarbormasterBuildSearchEngine.php +++ b/src/applications/harbormaster/query/HarbormasterBuildSearchEngine.php @@ -55,6 +55,9 @@ protected function getBuiltinQueryNames() { return array( 'all' => pht('All Builds'), + 'waiting' => pht('Waiting'), + 'active' => pht('Active'), + 'completed' => pht('Completed'), ); } @@ -65,6 +68,21 @@ switch ($query_key) { case 'all': return $query; + case 'waiting': + return $query + ->setParameter( + 'statuses', + HarbormasterBuildStatus::getWaitingStatusConstants()); + case 'active': + return $query + ->setParameter( + 'statuses', + HarbormasterBuildStatus::getActiveStatusConstants()); + case 'completed': + return $query + ->setParameter( + 'statuses', + HarbormasterBuildStatus::getCompletedStatusConstants()); } return parent::buildSavedQueryFromBuiltin($query_key); diff --git a/src/applications/harbormaster/storage/build/HarbormasterBuild.php b/src/applications/harbormaster/storage/build/HarbormasterBuild.php --- a/src/applications/harbormaster/storage/build/HarbormasterBuild.php +++ b/src/applications/harbormaster/storage/build/HarbormasterBuild.php @@ -169,16 +169,9 @@ } public function isComplete() { - switch ($this->getBuildStatus()) { - case HarbormasterBuildStatus::STATUS_PASSED: - case HarbormasterBuildStatus::STATUS_FAILED: - case HarbormasterBuildStatus::STATUS_ABORTED: - case HarbormasterBuildStatus::STATUS_ERROR: - case HarbormasterBuildStatus::STATUS_PAUSED: - return true; - } - - return false; + return in_array( + $this->getBuildStatus(), + HarbormasterBuildStatus::getCompletedStatusConstants()); } public function isPaused() {