Path: blob/master/src/applications/harbormaster/view/HarbormasterUnitPropertyView.php
12256 views
<?php12final class HarbormasterUnitPropertyView extends AphrontView {34private $pathURIMap = array();5private $unitMessages = array();6private $limit;7private $fullResultsURI;8private $notice;910public function setPathURIMap(array $map) {11$this->pathURIMap = $map;12return $this;13}1415public function setUnitMessages(array $messages) {16assert_instances_of($messages, 'HarbormasterBuildUnitMessage');17$this->unitMessages = $messages;18return $this;19}2021public function setLimit($limit) {22$this->limit = $limit;23return $this;24}2526public function setFullResultsURI($full_results_uri) {27$this->fullResultsURI = $full_results_uri;28return $this;29}3031public function setNotice($notice) {32$this->notice = $notice;33return $this;34}3536public function render() {37$viewer = $this->getViewer();3839$messages = $this->unitMessages;40$messages = msort($messages, 'getSortKey');4142$limit = $this->limit;4344if ($this->limit) {45$display_messages = array_slice($messages, 0, $limit);46} else {47$display_messages = $messages;48}4950$rows = array();51$any_duration = false;52foreach ($display_messages as $message) {53$status = $message->getResult();5455$icon_icon = HarbormasterUnitStatus::getUnitStatusIcon($status);56$icon_color = HarbormasterUnitStatus::getUnitStatusColor($status);57$icon_label = HarbormasterUnitStatus::getUnitStatusLabel($status);5859$result_icon = id(new PHUIIconView())60->setIcon("{$icon_icon} {$icon_color}")61->addSigil('has-tooltip')62->setMetadata(63array(64'tip' => $icon_label,65));6667$duration = $message->getDuration();68if ($duration !== null) {69$any_duration = true;70$duration = pht('%s ms', new PhutilNumber((int)(1000 * $duration)));71}7273$name = $message->getUnitMessageDisplayName();74$uri = $message->getURI();7576if ($uri) {77$name = phutil_tag(78'a',79array(80'href' => $uri,81),82$name);83}8485$name = array(86$name,87$message->newUnitMessageDetailsView($viewer, true),88);8990$rows[] = array(91$result_icon,92$duration,93$name,94);95}9697$full_uri = $this->fullResultsURI;98if ($full_uri && (count($messages) > $limit)) {99$counts = array();100101$groups = mgroup($messages, 'getResult');102foreach ($groups as $status => $group) {103$counts[] = HarbormasterUnitStatus::getUnitStatusCountLabel(104$status,105count($group));106}107108$link_text = pht(109'View Full Test Results (%s)',110implode(" \xC2\xB7 ", $counts));111112$full_link = phutil_tag(113'a',114array(115'href' => $full_uri,116),117$link_text);118119$link_icon = id(new PHUIIconView())120->setIcon('fa-ellipsis-h lightgreytext');121122$rows[] = array($link_icon, null, $full_link);123}124125$table = id(new AphrontTableView($rows))126->setHeaders(127array(128null,129pht('Time'),130pht('Test'),131))132->setColumnClasses(133array(134'top center',135'top right',136'top wide',137))138->setColumnWidths(139array(140'32px',141'64px',142))143->setColumnVisibility(144array(145true,146$any_duration,147));148149if ($this->notice) {150$table->setNotice($this->notice);151}152153return $table;154}155156}157158159