mirror of
https://we.phorge.it/source/phorge.git
synced 2024-12-20 20:40:56 +01:00
Use ApplicationSearch for DrydockLog
Summary: Ref T2015. Move logs over to ApplicationSearch. Test Plan: Browsed logs in UI. Reviewers: btrahan Reviewed By: btrahan CC: aran Maniphest Tasks: T2015 Differential Revision: https://secure.phabricator.com/D7832
This commit is contained in:
parent
3db5833622
commit
9c9a9a919e
6 changed files with 102 additions and 66 deletions
|
@ -660,8 +660,9 @@ phutil_register_library_map(array(
|
||||||
'DrydockLocalCommandInterface' => 'applications/drydock/interface/command/DrydockLocalCommandInterface.php',
|
'DrydockLocalCommandInterface' => 'applications/drydock/interface/command/DrydockLocalCommandInterface.php',
|
||||||
'DrydockLocalHostBlueprintImplementation' => 'applications/drydock/blueprint/DrydockLocalHostBlueprintImplementation.php',
|
'DrydockLocalHostBlueprintImplementation' => 'applications/drydock/blueprint/DrydockLocalHostBlueprintImplementation.php',
|
||||||
'DrydockLog' => 'applications/drydock/storage/DrydockLog.php',
|
'DrydockLog' => 'applications/drydock/storage/DrydockLog.php',
|
||||||
'DrydockLogController' => 'applications/drydock/controller/DrydockLogController.php',
|
'DrydockLogListController' => 'applications/drydock/controller/DrydockLogListController.php',
|
||||||
'DrydockLogQuery' => 'applications/drydock/query/DrydockLogQuery.php',
|
'DrydockLogQuery' => 'applications/drydock/query/DrydockLogQuery.php',
|
||||||
|
'DrydockLogSearchEngine' => 'applications/drydock/query/DrydockLogSearchEngine.php',
|
||||||
'DrydockManagementCloseWorkflow' => 'applications/drydock/management/DrydockManagementCloseWorkflow.php',
|
'DrydockManagementCloseWorkflow' => 'applications/drydock/management/DrydockManagementCloseWorkflow.php',
|
||||||
'DrydockManagementCreateResourceWorkflow' => 'applications/drydock/management/DrydockManagementCreateResourceWorkflow.php',
|
'DrydockManagementCreateResourceWorkflow' => 'applications/drydock/management/DrydockManagementCreateResourceWorkflow.php',
|
||||||
'DrydockManagementLeaseWorkflow' => 'applications/drydock/management/DrydockManagementLeaseWorkflow.php',
|
'DrydockManagementLeaseWorkflow' => 'applications/drydock/management/DrydockManagementLeaseWorkflow.php',
|
||||||
|
@ -3073,9 +3074,18 @@ phutil_register_library_map(array(
|
||||||
'DrydockLeaseViewController' => 'DrydockController',
|
'DrydockLeaseViewController' => 'DrydockController',
|
||||||
'DrydockLocalCommandInterface' => 'DrydockCommandInterface',
|
'DrydockLocalCommandInterface' => 'DrydockCommandInterface',
|
||||||
'DrydockLocalHostBlueprintImplementation' => 'DrydockBlueprintImplementation',
|
'DrydockLocalHostBlueprintImplementation' => 'DrydockBlueprintImplementation',
|
||||||
'DrydockLog' => 'DrydockDAO',
|
'DrydockLog' =>
|
||||||
'DrydockLogController' => 'DrydockController',
|
array(
|
||||||
'DrydockLogQuery' => 'PhabricatorOffsetPagedQuery',
|
0 => 'DrydockDAO',
|
||||||
|
1 => 'PhabricatorPolicyInterface',
|
||||||
|
),
|
||||||
|
'DrydockLogListController' =>
|
||||||
|
array(
|
||||||
|
0 => 'DrydockController',
|
||||||
|
1 => 'PhabricatorApplicationSearchResultsControllerInterface',
|
||||||
|
),
|
||||||
|
'DrydockLogQuery' => 'PhabricatorCursorPagedPolicyAwareQuery',
|
||||||
|
'DrydockLogSearchEngine' => 'PhabricatorApplicationSearchEngine',
|
||||||
'DrydockManagementCloseWorkflow' => 'DrydockManagementWorkflow',
|
'DrydockManagementCloseWorkflow' => 'DrydockManagementWorkflow',
|
||||||
'DrydockManagementCreateResourceWorkflow' => 'DrydockManagementWorkflow',
|
'DrydockManagementCreateResourceWorkflow' => 'DrydockManagementWorkflow',
|
||||||
'DrydockManagementLeaseWorkflow' => 'DrydockManagementWorkflow',
|
'DrydockManagementLeaseWorkflow' => 'DrydockManagementWorkflow',
|
||||||
|
|
|
@ -50,7 +50,9 @@ final class PhabricatorApplicationDrydock extends PhabricatorApplication {
|
||||||
'(?P<id>[1-9]\d*)/' => 'DrydockLeaseViewController',
|
'(?P<id>[1-9]\d*)/' => 'DrydockLeaseViewController',
|
||||||
'(?P<id>[1-9]\d*)/release/' => 'DrydockLeaseReleaseController',
|
'(?P<id>[1-9]\d*)/release/' => 'DrydockLeaseReleaseController',
|
||||||
),
|
),
|
||||||
'log/' => 'DrydockLogController',
|
'log/' => array(
|
||||||
|
'(?:query/(?P<queryKey>[^/]+)/)?' => 'DrydockLogListController',
|
||||||
|
),
|
||||||
),
|
),
|
||||||
);
|
);
|
||||||
}
|
}
|
||||||
|
|
|
@ -18,8 +18,9 @@ abstract class DrydockController extends PhabricatorController {
|
||||||
->setViewer($this->getRequest()->getUser())
|
->setViewer($this->getRequest()->getUser())
|
||||||
->addNavigationItems($nav->getMenu(), pht('Resources'));
|
->addNavigationItems($nav->getMenu(), pht('Resources'));
|
||||||
|
|
||||||
$nav->addLabel(pht('Logs'));
|
id(new DrydockLogSearchEngine())
|
||||||
$nav->addFilter('log', 'Logs');
|
->setViewer($this->getRequest()->getUser())
|
||||||
|
->addNavigationItems($nav->getMenu(), pht('Logs'));
|
||||||
|
|
||||||
$nav->selectFilter($selected, 'resource');
|
$nav->selectFilter($selected, 'resource');
|
||||||
|
|
||||||
|
|
|
@ -1,59 +0,0 @@
|
||||||
<?php
|
|
||||||
|
|
||||||
final class DrydockLogController extends DrydockController {
|
|
||||||
|
|
||||||
public function processRequest() {
|
|
||||||
$request = $this->getRequest();
|
|
||||||
$user = $request->getUser();
|
|
||||||
|
|
||||||
$nav = $this->buildSideNav('log');
|
|
||||||
|
|
||||||
$query = id(new DrydockLogQuery())
|
|
||||||
->setViewer($user);
|
|
||||||
|
|
||||||
$resource_ids = $request->getStrList('resource');
|
|
||||||
if ($resource_ids) {
|
|
||||||
$query->withResourceIDs($resource_ids);
|
|
||||||
}
|
|
||||||
|
|
||||||
$lease_ids = $request->getStrList('lease');
|
|
||||||
if ($lease_ids) {
|
|
||||||
$query->withLeaseIDs($lease_ids);
|
|
||||||
}
|
|
||||||
|
|
||||||
$pager = new AphrontPagerView();
|
|
||||||
$pager->setPageSize(500);
|
|
||||||
$pager->setOffset($request->getInt('offset'));
|
|
||||||
$pager->setURI($request->getRequestURI(), 'offset');
|
|
||||||
|
|
||||||
$logs = $query->executeWithOffsetPager($pager);
|
|
||||||
|
|
||||||
$title = pht('Logs');
|
|
||||||
|
|
||||||
$header = id(new PHUIHeaderView())
|
|
||||||
->setHeader($title);
|
|
||||||
|
|
||||||
$table = $this->buildLogTableView($logs);
|
|
||||||
$table->appendChild($pager);
|
|
||||||
|
|
||||||
$nav->appendChild(
|
|
||||||
array(
|
|
||||||
$header,
|
|
||||||
$table,
|
|
||||||
$pager,
|
|
||||||
));
|
|
||||||
|
|
||||||
$crumbs = $this->buildApplicationCrumbs();
|
|
||||||
$crumbs->addTextCrumb($title, $this->getApplicationURI('/logs/'));
|
|
||||||
$nav->setCrumbs($crumbs);
|
|
||||||
|
|
||||||
return $this->buildApplicationPage(
|
|
||||||
$nav,
|
|
||||||
array(
|
|
||||||
'title' => $title,
|
|
||||||
'device' => true,
|
|
||||||
));
|
|
||||||
|
|
||||||
}
|
|
||||||
|
|
||||||
}
|
|
|
@ -0,0 +1,34 @@
|
||||||
|
<?php
|
||||||
|
|
||||||
|
final class DrydockLogListController extends DrydockController
|
||||||
|
implements PhabricatorApplicationSearchResultsControllerInterface {
|
||||||
|
|
||||||
|
private $queryKey;
|
||||||
|
|
||||||
|
public function shouldAllowPublic() {
|
||||||
|
return true;
|
||||||
|
}
|
||||||
|
|
||||||
|
public function willProcessRequest(array $data) {
|
||||||
|
$this->queryKey = idx($data, 'queryKey');
|
||||||
|
}
|
||||||
|
|
||||||
|
public function processRequest() {
|
||||||
|
$request = $this->getRequest();
|
||||||
|
$controller = id(new PhabricatorApplicationSearchController($request))
|
||||||
|
->setQueryKey($this->queryKey)
|
||||||
|
->setSearchEngine(new DrydockLogSearchEngine())
|
||||||
|
->setNavigation($this->buildSideNav());
|
||||||
|
|
||||||
|
return $this->delegateToController($controller);
|
||||||
|
}
|
||||||
|
|
||||||
|
public function renderResultsList(
|
||||||
|
array $logs,
|
||||||
|
PhabricatorSavedQuery $query) {
|
||||||
|
assert_instances_of($logs, 'DrydockLog');
|
||||||
|
|
||||||
|
return $this->buildLogTableView($logs);
|
||||||
|
}
|
||||||
|
|
||||||
|
}
|
48
src/applications/drydock/query/DrydockLogSearchEngine.php
Normal file
48
src/applications/drydock/query/DrydockLogSearchEngine.php
Normal file
|
@ -0,0 +1,48 @@
|
||||||
|
<?php
|
||||||
|
|
||||||
|
final class DrydockLogSearchEngine
|
||||||
|
extends PhabricatorApplicationSearchEngine {
|
||||||
|
|
||||||
|
public function buildSavedQueryFromRequest(AphrontRequest $request) {
|
||||||
|
$saved = new PhabricatorSavedQuery();
|
||||||
|
|
||||||
|
return $saved;
|
||||||
|
}
|
||||||
|
|
||||||
|
public function buildQueryFromSavedQuery(PhabricatorSavedQuery $saved) {
|
||||||
|
$query = id(new DrydockLogQuery());
|
||||||
|
|
||||||
|
return $query;
|
||||||
|
}
|
||||||
|
|
||||||
|
public function buildSearchForm(
|
||||||
|
AphrontFormView $form,
|
||||||
|
PhabricatorSavedQuery $saved) {
|
||||||
|
|
||||||
|
}
|
||||||
|
|
||||||
|
protected function getURI($path) {
|
||||||
|
return '/drydock/log/'.$path;
|
||||||
|
}
|
||||||
|
|
||||||
|
public function getBuiltinQueryNames() {
|
||||||
|
$names = array(
|
||||||
|
'all' => pht('All Logs'),
|
||||||
|
);
|
||||||
|
|
||||||
|
return $names;
|
||||||
|
}
|
||||||
|
|
||||||
|
public function buildSavedQueryFromBuiltin($query_key) {
|
||||||
|
$query = $this->newSavedQuery();
|
||||||
|
$query->setQueryKey($query_key);
|
||||||
|
|
||||||
|
switch ($query_key) {
|
||||||
|
case 'all':
|
||||||
|
return $query;
|
||||||
|
}
|
||||||
|
|
||||||
|
return parent::buildSavedQueryFromBuiltin($query_key);
|
||||||
|
}
|
||||||
|
|
||||||
|
}
|
Loading…
Reference in a new issue