/**
  * Execution of the view helper
  *
  * @param TableModel $tableModel
  * @param array $displaySettings
  * @return null|string
  */
 public function __invoke(TableModel $tableModel, $displaySettings = array('columnsForm', 'pagination', 'ordering', 'simpleSearch', 'actionRoutes'))
 {
     $this->escaper = new Escaper('utf-8');
     $this->translator = $this->getView()->plugin('translate')->getTranslator();
     $this->setTableModel($tableModel);
     $this->displaySettings = $displaySettings;
     $this->dataStrategyResolver = new StrategyResolver($tableModel->getDataTypes());
     $this->dataStrategyResolver->addDependency($this->getView(), 'Zend\\View\\Renderer\\RendererInterface');
     $output = $this->printSettings();
     $output .= $this->printTable();
     $output .= $this->printPaginator();
     $this->addStylingToView();
     return $output;
 }
 /**
  * Resolves tableHeaders and additional filters into a single array of
  * Zend ElementInterface forms
  *
  * @return ElementInterface[]
  */
 protected function getFilterElements()
 {
     $elements = array();
     // Get all filters that can be placed above a header
     foreach ($this->tableHeaders as $tableHeader) {
         $filter = $tableHeader->getFilter();
         // Are you a extra configured filter, good we'll call you directly
         if (!is_null($filter->getInstance())) {
             $filterElement = $filter->getInstance()->getFilterElement();
             $filterElement->setName('search[' . $filterElement->getName() . ']');
             $elements[] = $filterElement;
             continue;
         }
         // No filter instance has been configured, create a new FormElement throughout the strategy resolver
         $dataType = $tableHeader->getDataType();
         if ($this->tableModel->getPrefetchedValuesByName($tableHeader->getName())) {
             $dataType = "Array";
         }
         $filterName = 'search[' . $filter->getName() . ']';
         $element = $this->dataStrategyResolver->displayFilterForDataType($filterName, $dataType);
         $this->setElementCurrentValue($element, $tableHeader->getSafeName());
         if ($dataType == "Array") {
             $this->setElementValues($element, $tableHeader->getName());
         }
         $elements[] = $element;
     }
     // Append additional filters
     foreach ($this->additionalFilters as $filter) {
         $filterElement = $filter->getInstance()->getFilterElement($filter);
         $filterElement->setName('search[' . $filterElement->getName() . ']');
         $elements[] = $filterElement;
         continue;
     }
     return $elements;
 }
 /**
  * Wraps the content cell in a <td> element
  *
  * @param TableCellModel $cell
  * @param string $tdClass
  * @return string
  * @internal param $cellValue
  * @internal param string $cellName
  */
 protected function printTableContentCell(TableCellModel $cell = null, $tdClass = "kolom")
 {
     $html = '<td class="' . $tdClass . '">';
     if (!is_null($cell)) {
         $html = sprintf("<td class=\"%s\">", $tdClass . " " . $cell->getSafeName());
         $html .= $this->dataStrategyResolver->resolveAndParse($cell->getValue(), $cell->getName());
     }
     $html .= '</td>';
     return $html;
 }
 /**
  * Wraps the content cell in a <td> element
  *
  * @param $dataStrategyResolver
  * @param TableCellModel $cell
  * @param string $tdClass
  * @return string
  */
 public static function printTableCell(StrategyResolver $dataStrategyResolver, TableCellModel $cell, $tdClass = "kolom")
 {
     return sprintf("<td class=\"%s\">", $tdClass . " " . $cell->getSafeName()) . $dataStrategyResolver->resolveAndParse($cell->getValue(), $cell->getName()) . '</td>';
 }