Differential D19927 Diff 47584 src/applications/phrequent/engineextension/PhrequentCurtainExtension.php
Changeset View
Changeset View
Standalone View
Standalone View
src/applications/phrequent/engineextension/PhrequentCurtainExtension.php
<?php | <?php | ||||
final class PhrequentCurtainExtension | final class PhrequentCurtainExtension | ||||
extends PHUICurtainExtension { | extends PHUICurtainExtension { | ||||
const EXTENSIONKEY = 'phrequent.time'; | const EXTENSIONKEY = 'phrequent.time'; | ||||
public function shouldEnableForObject($object) { | public function shouldEnableForObject($object) { | ||||
return ($object instanceof PhrequentTrackableInterface); | return ($object instanceof PhrequentTrackableInterface); | ||||
} | } | ||||
public function getExtensionApplication() { | public function getExtensionApplication() { | ||||
return new PhabricatorPhrequentApplication(); | return new PhabricatorPhrequentApplication(); | ||||
} | } | ||||
public function buildCurtainPanel($object) { | public function buildCurtainPanel($object) { | ||||
epriestley: (This method is largely identical to the removed method, below. It renders into the newer… | |||||
$viewer = $this->getViewer(); | $viewer = $this->getViewer(); | ||||
$events = id(new PhrequentUserTimeQuery()) | $events = id(new PhrequentUserTimeQuery()) | ||||
->setViewer($viewer) | ->setViewer($viewer) | ||||
->withObjectPHIDs(array($object->getPHID())) | ->withObjectPHIDs(array($object->getPHID())) | ||||
->needPreemptingEvents(true) | ->needPreemptingEvents(true) | ||||
->execute(); | ->execute(); | ||||
$event_groups = mgroup($events, 'getUserPHID'); | $event_groups = mgroup($events, 'getUserPHID'); | ||||
if (!$events) { | if (!$events) { | ||||
return; | return; | ||||
} | } | ||||
$handles = $viewer->loadHandles(array_keys($event_groups)); | $handles = $viewer->loadHandles(array_keys($event_groups)); | ||||
$status_view = new PHUIStatusListView(); | $status_view = new PHUIStatusListView(); | ||||
$now = PhabricatorTime::getNow(); | |||||
foreach ($event_groups as $user_phid => $event_group) { | foreach ($event_groups as $user_phid => $event_group) { | ||||
$item = new PHUIStatusItemView(); | $item = new PHUIStatusItemView(); | ||||
$item->setTarget($handles[$user_phid]->renderLink()); | $item->setTarget($handles[$user_phid]->renderLink()); | ||||
$state = 'stopped'; | $state = 'stopped'; | ||||
foreach ($event_group as $event) { | foreach ($event_group as $event) { | ||||
if ($event->getDateEnded() === null) { | if ($event->getDateEnded() === null) { | ||||
Show All 23 Lines | foreach ($event_groups as $user_phid => $event_group) { | ||||
$item->setIcon( | $item->setIcon( | ||||
PHUIStatusItemView::ICON_CLOCK, | PHUIStatusItemView::ICON_CLOCK, | ||||
'bluegrey', | 'bluegrey', | ||||
pht('Not Working Now')); | pht('Not Working Now')); | ||||
break; | break; | ||||
} | } | ||||
$block = new PhrequentTimeBlock($event_group); | $block = new PhrequentTimeBlock($event_group); | ||||
$item->setNote( | |||||
phutil_format_relative_time( | $duration = $block->getTimeSpentOnObject( | ||||
$block->getTimeSpentOnObject( | |||||
$object->getPHID(), | $object->getPHID(), | ||||
time()))); | $now); | ||||
$duration_display = phutil_format_relative_time_detailed( | |||||
$duration, | |||||
$levels = 3); | |||||
$item->setNote($duration_display); | |||||
$status_view->addItem($item); | $status_view->addItem($item); | ||||
} | } | ||||
return $this->newPanel() | return $this->newPanel() | ||||
->setHeaderText(pht('Time Spent')) | ->setHeaderText(pht('Time Spent')) | ||||
->setOrder(40000) | ->setOrder(40000) | ||||
->appendChild($status_view); | ->appendChild($status_view); | ||||
} | } | ||||
} | } |
(This method is largely identical to the removed method, below. It renders into the newer "curtain" sidebar element; the old one rendered directly into the main column's list of properties.)