Differential D11419 Diff 27435 src/applications/daemon/controller/PhabricatorDaemonConsoleController.php
Changeset View
Changeset View
Standalone View
Standalone View
src/applications/daemon/controller/PhabricatorDaemonConsoleController.php
Show First 20 Lines • Show All 183 Lines • ▼ Show 20 Lines | public function processRequest() { | ||||
$upcoming_panel = id(new PHUIObjectBoxView()) | $upcoming_panel = id(new PHUIObjectBoxView()) | ||||
->setHeaderText(pht('Next In Queue')) | ->setHeaderText(pht('Next In Queue')) | ||||
->appendChild( | ->appendChild( | ||||
id(new PhabricatorDaemonTasksTableView()) | id(new PhabricatorDaemonTasksTableView()) | ||||
->setTasks($upcoming) | ->setTasks($upcoming) | ||||
->setNoDataString(pht('Task queue is empty.'))); | ->setNoDataString(pht('Task queue is empty.'))); | ||||
$triggers = id(new PhabricatorWorkerTriggerQuery()) | |||||
->setOrder(PhabricatorWorkerTriggerQuery::ORDER_EXECUTION) | |||||
->needEvents(true) | |||||
->setLimit(10) | |||||
->execute(); | |||||
$triggers_table = $this->buildTriggersTable($triggers); | |||||
$triggers_panel = id(new PHUIObjectBoxView()) | |||||
->setHeaderText(pht('Upcoming Triggers')) | |||||
->appendChild($triggers_table); | |||||
$crumbs = $this->buildApplicationCrumbs(); | $crumbs = $this->buildApplicationCrumbs(); | ||||
$crumbs->addTextCrumb(pht('Console')); | $crumbs->addTextCrumb(pht('Console')); | ||||
$nav = $this->buildSideNavView(); | $nav = $this->buildSideNavView(); | ||||
$nav->selectFilter('/'); | $nav->selectFilter('/'); | ||||
$nav->appendChild( | $nav->appendChild( | ||||
array( | array( | ||||
$crumbs, | $crumbs, | ||||
$completed_panel, | $completed_panel, | ||||
$daemon_panel, | $daemon_panel, | ||||
$queued_panel, | $queued_panel, | ||||
$leased_panel, | $leased_panel, | ||||
$upcoming_panel, | $upcoming_panel, | ||||
$triggers_panel, | |||||
)); | )); | ||||
return $this->buildApplicationPage( | return $this->buildApplicationPage( | ||||
$nav, | $nav, | ||||
array( | array( | ||||
'title' => pht('Console'), | 'title' => pht('Console'), | ||||
'device' => false, | 'device' => false, | ||||
)); | )); | ||||
} | } | ||||
private function buildTriggersTable(array $triggers) { | |||||
$viewer = $this->getViewer(); | |||||
$rows = array(); | |||||
foreach ($triggers as $trigger) { | |||||
$event = $trigger->getEvent(); | |||||
if ($event) { | |||||
$last_epoch = $event->getLastEventEpoch(); | |||||
$next_epoch = $event->getNextEventEpoch(); | |||||
} else { | |||||
$last_epoch = null; | |||||
$next_epoch = null; | |||||
} | |||||
$rows[] = array( | |||||
$trigger->getID(), | |||||
$trigger->getClockClass(), | |||||
$trigger->getActionClass(), | |||||
$last_epoch ? phabricator_datetime($last_epoch, $viewer) : null, | |||||
$next_epoch ? phabricator_datetime($next_epoch, $viewer) : null, | |||||
); | |||||
} | |||||
return id(new AphrontTableView($rows)) | |||||
->setNoDataString(pht('There are no upcoming event triggers.')) | |||||
->setHeaders( | |||||
array( | |||||
'ID', | |||||
'Clock', | |||||
'Action', | |||||
'Last', | |||||
'Next', | |||||
)) | |||||
->setColumnClasses( | |||||
array( | |||||
'', | |||||
'', | |||||
'wide', | |||||
'date', | |||||
'date', | |||||
)); | |||||
} | |||||
} | } |