rows = $rows; return $this; } public function setShowMoreString($show_more_string) { $this->showMoreString = $show_more_string; return $this; } public function render() { $rows = array(); $any_hidden = false; foreach ($this->rows as $row) { $style = idx($row, 'style'); switch ($style) { case 'section': $cells = phutil_tag( 'th', array( 'colspan' => 2, ), idx($row, 'name')); break; default: $name = phutil_tag( 'th', array( ), idx($row, 'name')); $value = phutil_tag( 'td', array( ), idx($row, 'value')); $cells = array($name, $value); break; } $show = idx($row, 'show'); $rows[] = javelin_tag( 'tr', array( 'style' => $show ? null : 'display: none', 'sigil' => $show ? null : 'differential-results-row-toggle', 'class' => 'differential-results-row-'.$style, ), $cells); if (!$show) { $any_hidden = true; } } if ($any_hidden) { $show_more = javelin_tag( 'a', array( 'href' => '#', 'mustcapture' => true, ), $this->showMoreString); $hide_more = javelin_tag( 'a', array( 'href' => '#', 'mustcapture' => true, ), 'Hide'); $rows[] = javelin_tag( 'tr', array( 'class' => 'differential-results-row-show', 'sigil' => 'differential-results-row-show', ), phutil_tag('th', array('colspan' => 2), $show_more)); $rows[] = javelin_tag( 'tr', array( 'class' => 'differential-results-row-show', 'sigil' => 'differential-results-row-hide', 'style' => 'display: none', ), phutil_tag('th', array('colspan' => 2), $hide_more)); Javelin::initBehavior('differential-show-field-details'); } require_celerity_resource('differential-results-table-css'); return javelin_tag( 'table', array( 'class' => 'differential-results-table', 'sigil' => 'differential-results-table', ), $rows); } }