private function buildPropertyListView(PhabricatorWorkerTask $task)
 {
     $viewer = $this->getRequest()->getUser();
     $view = new PHUIPropertyListView();
     if ($task->isArchived()) {
         switch ($task->getResult()) {
             case PhabricatorWorkerArchiveTask::RESULT_SUCCESS:
                 $status = pht('Complete');
                 break;
             case PhabricatorWorkerArchiveTask::RESULT_FAILURE:
                 $status = pht('Failed');
                 break;
             case PhabricatorWorkerArchiveTask::RESULT_CANCELLED:
                 $status = pht('Cancelled');
                 break;
             default:
                 throw new Exception(pht('Unknown task status!'));
         }
     } else {
         $status = pht('Queued');
     }
     $view->addProperty(pht('Task Status'), $status);
     $view->addProperty(pht('Task Class'), $task->getTaskClass());
     if ($task->getLeaseExpires()) {
         if ($task->getLeaseExpires() > time()) {
             $lease_status = pht('Leased');
         } else {
             $lease_status = pht('Lease Expired');
         }
     } else {
         $lease_status = phutil_tag('em', array(), pht('Not Leased'));
     }
     $view->addProperty(pht('Lease Status'), $lease_status);
     $view->addProperty(pht('Lease Owner'), $task->getLeaseOwner() ? $task->getLeaseOwner() : phutil_tag('em', array(), pht('None')));
     if ($task->getLeaseExpires() && $task->getLeaseOwner()) {
         $expires = $task->getLeaseExpires() - time();
         $expires = phutil_format_relative_time_detailed($expires);
     } else {
         $expires = phutil_tag('em', array(), pht('None'));
     }
     $view->addProperty(pht('Lease Expires'), $expires);
     if ($task->isArchived()) {
         $duration = pht('%s us', new PhutilNumber($task->getDuration()));
     } else {
         $duration = phutil_tag('em', array(), pht('Not Completed'));
     }
     $view->addProperty(pht('Duration'), $duration);
     $data = id(new PhabricatorWorkerTaskData())->load($task->getDataID());
     $task->setData($data->getData());
     $worker = $task->getWorkerInstance();
     $data = $worker->renderForDisplay($viewer);
     if ($data !== null) {
         $view->addProperty(pht('Data'), $data);
     }
     return $view;
 }
 protected function describeTask(PhabricatorWorkerTask $task)
 {
     return pht('Task %d (%s)', $task->getID(), $task->getTaskClass());
 }