public function render() { $resources = $this->resources; $viewer = $this->getUser(); $view = new PHUIObjectItemListView(); foreach ($resources as $resource) { $name = pht('Resource %d', $resource->getID()) . ': ' . $resource->getName(); $item = id(new PHUIObjectItemView())->setHref('/drydock/resource/' . $resource->getID() . '/')->setHeader($name); $status = DrydockResourceStatus::getNameForStatus($resource->getStatus()); $item->addAttribute($status); switch ($resource->getStatus()) { case DrydockResourceStatus::STATUS_PENDING: $item->setBarColor('yellow'); break; case DrydockResourceStatus::STATUS_OPEN: $item->setBarColor('green'); break; case DrydockResourceStatus::STATUS_DESTROYED: $item->setBarColor('black'); break; default: $item->setBarColor('red'); break; } $view->addItem($item); } return $view; }
private function buildPropertyListView(DrydockResource $resource, PhabricatorActionListView $actions) { $viewer = $this->getViewer(); $view = id(new PHUIPropertyListView())->setActionList($actions); $status = $resource->getStatus(); $status = DrydockResourceStatus::getNameForStatus($status); $view->addProperty(pht('Status'), $status); $until = $resource->getUntil(); if ($until) { $until_display = phabricator_datetime($until, $viewer); } else { $until_display = phutil_tag('em', array(), pht('Never')); } $view->addProperty(pht('Expires'), $until_display); $view->addProperty(pht('Resource Type'), $resource->getType()); $view->addProperty(pht('Blueprint'), $viewer->renderHandle($resource->getBlueprintPHID())); $attributes = $resource->getAttributes(); if ($attributes) { $view->addSectionHeader(pht('Attributes'), 'fa-list-ul'); foreach ($attributes as $key => $value) { $view->addProperty($key, $value); } } return $view; }
public function processRequest() { $request = $this->getRequest(); $user = $request->getUser(); $nav = $this->buildSideNav('resource'); $pager = new AphrontPagerView(); $pager->setURI(new PhutilURI('/drydock/resource/'), 'page'); $data = id(new DrydockResource())->loadAllWhere('1 = 1 ORDER BY id DESC LIMIT %d, %d', $pager->getOffset(), $pager->getPageSize() + 1); $data = $pager->sliceResults($data); $phids = mpull($data, 'getOwnerPHID'); $handles = $this->loadViewerHandles($phids); $rows = array(); foreach ($data as $resource) { $rows[] = array($resource->getID(), $resource->getOwnerPHID() ? $handles[$resource->getOwnerPHID()]->renderLink() : null, phutil_escape_html($resource->getType()), DrydockResourceStatus::getNameForStatus($resource->getStatus()), phutil_escape_html(nonempty($resource->getName(), 'Unnamed')), phabricator_datetime($resource->getDateCreated(), $user)); } $table = new AphrontTableView($rows); $table->setHeaders(array('ID', 'Owner', 'Type', 'Status', 'Resource', 'Created')); $table->setColumnClasses(array('', '', '', '', 'pri wide', 'right')); $panel = new AphrontPanelView(); $panel->setHeader('Drydock Resources'); $panel->addButton(phutil_render_tag('a', array('href' => '/drydock/resource/allocate/', 'class' => 'green button'), 'Allocate Resource')); $panel->appendChild($table); $panel->appendChild($pager); $nav->appendChild($panel); return $this->buildStandardPageResponse($nav, array('title' => 'Resources')); }
public function render() { $resources = $this->resources; $viewer = $this->getUser(); $view = new PHUIObjectItemListView(); foreach ($resources as $resource) { $id = $resource->getID(); $item = id(new PHUIObjectItemView())->setHref("/drydock/resource/{$id}/")->setObjectName(pht('Resource %d', $id))->setHeader($resource->getResourceName()); $status = DrydockResourceStatus::getNameForStatus($resource->getStatus()); $item->addAttribute($status); switch ($resource->getStatus()) { case DrydockResourceStatus::STATUS_PENDING: $item->setStatusIcon('fa-dot-circle-o yellow'); break; case DrydockResourceStatus::STATUS_ACTIVE: $item->setStatusIcon('fa-dot-circle-o green'); break; case DrydockResourceStatus::STATUS_DESTROYED: $item->setStatusIcon('fa-times-circle-o black'); break; default: $item->setStatusIcon('fa-dot-circle-o red'); break; } $view->addItem($item); } return $view; }
public function buildSearchForm(AphrontFormView $form, PhabricatorSavedQuery $saved) { $statuses = $saved->getParameter('statuses', array()); $status_control = id(new AphrontFormCheckboxControl())->setLabel(pht('Status')); foreach (DrydockResourceStatus::getAllStatuses() as $status) { $status_control->addCheckbox('statuses[]', $status, DrydockResourceStatus::getNameForStatus($status), in_array($status, $statuses)); } $form->appendChild($status_control); }
private function buildPropertyListView(DrydockResource $resource, PhabricatorActionListView $actions) { $viewer = $this->getViewer(); $view = id(new PHUIPropertyListView())->setActionList($actions); $status = $resource->getStatus(); $status = DrydockResourceStatus::getNameForStatus($status); $view->addProperty(pht('Status'), $status); $view->addProperty(pht('Resource Type'), $resource->getType()); $view->addProperty(pht('Blueprint'), $viewer->renderHandle($resource->getBlueprintPHID())); $attributes = $resource->getAttributes(); if ($attributes) { $view->addSectionHeader(pht('Attributes'), 'fa-list-ul'); foreach ($attributes as $key => $value) { $view->addProperty($key, $value); } } return $view; }
/** * Sanity checks that the blueprint is implemented properly. */ private function validateAllocatedResource($resource) { $blueprint = $this->getBlueprintClass(); if (!$resource instanceof DrydockResource) { throw new Exception(pht("Blueprint '%s' is not properly implemented: %s must return an " . "object of type %s or throw, but returned something else.", $blueprint, 'executeAllocateResource()', 'DrydockResource')); } $current_status = $resource->getStatus(); $req_status = DrydockResourceStatus::STATUS_OPEN; if ($current_status != $req_status) { $current_name = DrydockResourceStatus::getNameForStatus($current_status); $req_name = DrydockResourceStatus::getNameForStatus($req_status); throw new Exception(pht("Blueprint '%s' is not properly implemented: %s must return a %s " . "with status '%s', but returned one with status '%s'.", $blueprint, 'executeAllocateResource()', 'DrydockResource', $req_name, $current_name)); } }
/** * Sanity checks that the blueprint is implemented properly. */ private function validateAllocatedResource($resource) { $blueprint = $this->getBlueprintClass(); if (!$resource instanceof DrydockResource) { throw new Exception("Blueprint '{$blueprint}' is not properly implemented: " . "executeAllocateResource() must return an object of type " . "DrydockResource or throw, but returned something else."); } $current_status = $resource->getStatus(); $req_status = DrydockResourceStatus::STATUS_OPEN; if ($current_status != $req_status) { $current_name = DrydockResourceStatus::getNameForStatus($current_status); $req_name = DrydockResourceStatus::getNameForStatus($req_status); throw new Exception("Blueprint '{$blueprint}' is not properly implemented: " . "executeAllocateResource() must return a DrydockResource with " . "status '{$req_name}', but returned one with status " . "'{$current_name}'."); } }