Пример #1
0
 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);
 }
Пример #2
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();
     }
 }
Пример #3
0
 /**
  *
  * @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;
 }
Пример #4
0
 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());
     }
 }