public function testColumnRenderInvalidArgument() { $column = new Table\Column(); $this->setExpectedException('Zend\\Text\\Table\\Exception\\InvalidArgumentException', 'must be an integer and greater than 0'); $column->render(0); }
private function parseTable(\DOMElement $node, $context) { /*{{{*/ $trs = $this->xpath->query('txt:tr', $node); $num_cols = 0; $rows = array(); foreach ($trs as $tr) { $row = new Zend_Row(); $tds = $this->xpath->query('txt:td', $tr); $len = $tds->length; if ($len > $num_cols) { $num_cols = $len; } foreach ($tds as $td) { $td_text = ""; foreach ($td->childNodes as $child) { $td_text .= $this->parseNode($child, $context); } $column = new Zend_Column($td_text); if ($td->hasAttribute('colspan')) { $column->setColSpan((int) $td->getAttribute('colspan')); } $row->appendColumn($column); } $rows[] = $row; } if ($num_cols) { $col_width = (int) floor($this->wordwrap / $num_cols); $table = new Zend_Table(array('columnWidths' => array_fill(0, $num_cols, $col_width), 'decorator' => 'ascii', 'padding' => 1)); foreach ($rows as $row) { $table->appendRow($row); } return $table->render(); } }
/** * * @return TextTable */ private function getTable() { $paginator = $this->getPaginator(); $translator = $this->getTranslator(); $options = ['columnWidths' => $this->getColumnWidths()]; $table = new TextTable($options); $table->setDecorator('ascii'); /* * Title */ $tableRow = new Table\Row(); $tableColumn = new Table\Column($this->getTitle()); $tableColumn->setColSpan(count($options['columnWidths'])); $tableColumn->setAlign(Table\Column::ALIGN_CENTER); $tableRow->appendColumn($tableColumn); $table->appendRow($tableRow); /** * Header */ $tableRow = new Table\Row(); foreach ($this->getColumnsToDisplay() as $column) { $label = $column->getLabel(); if ($this->getTranslator() !== null) { $label = $this->getTranslator()->translate($label); } if (function_exists('mb_strtoupper')) { $label = mb_strtoupper($label); } else { $label = strtoupper($label); } $tableColumn = new Table\Column($label); if ($column->getType() instanceof Type\Number) { $tableColumn->setAlign(Table\Column::ALIGN_RIGHT); } else { $tableColumn->setAlign(Table\Column::ALIGN_LEFT); } $tableRow->appendColumn($tableColumn); } $table->appendRow($tableRow); /* * Data */ foreach ($this->getData() as $row) { $tableRow = new Table\Row(); foreach ($this->getColumnsToDisplay() as $column) { $value = ''; if (isset($row[$column->getUniqueId()])) { $value = $row[$column->getUniqueId()]; } if (is_array($value)) { $value = implode(', ', $value); } $tableColumn = new Table\Column($value); if ($column->getType() instanceof Type\Number) { $tableColumn->setAlign(Table\Column::ALIGN_RIGHT); } else { $tableColumn->setAlign(Table\Column::ALIGN_LEFT); } $tableRow->appendColumn($tableColumn); } $table->appendRow($tableRow); } /* * Pagination */ $tableRow = new Table\Row(); $footer = $translator->translate('Page') . ' '; $footer .= $paginator->getCurrentPageNumber() . ' ' . $translator->translate('of') . ' ' . $paginator->count(); $footer .= ' / '; $footer .= $translator->translate('Showing') . ' ' . $paginator->getCurrentItemCount() . ' ' . $translator->translate('of') . ' ' . $paginator->getTotalItemCount() . ' ' . $translator->translate('items'); $tableColumn = new Table\Column($footer); $tableColumn->setColSpan(count($options['columnWidths'])); $tableColumn->setAlign(Table\Column::ALIGN_CENTER); $tableRow->appendColumn($tableColumn); $table->appendRow($tableRow); return $table; }
public function testColumnRenderInvalidArgument() { try { $column = new Table\Column(); $column->render(0); $this->fail('An expected InvalidArgumentException has not been raised'); } catch (Table\Exception $expected) { $this->assertContains('$columnWidth must be an integer and greater than 0', $expected->getMessage()); } }