public function testAddColumnWithParams()
 {
     $this->builder->addColumn('foo', 'foo.data', false, false);
     $filter = $this->builder->getFilter();
     $col = new Column('foo', 'foo.data');
     $col->setOrderable(false);
     $col->setSearchable(false);
     $this->assertEquals(array($col), $filter->getColumns());
     $this->assertEquals($col, $filter->getColumn('foo'));
 }
 /**
  * Normaliza as colunas passadas por parametro e transforma em objetos
  * do tipo {@link Column}.
  *
  * @param string[]|array|Column[] $columns
  * @return Column[]
  */
 public static function normalizeColumns(array $columns)
 {
     $normalizedCols = array();
     foreach ($columns as $col) {
         if (is_string($col)) {
             // simples
             $normalizedCols[] = new Column($col);
         } else {
             // referencia completa
             if ($col instanceof Column) {
                 $normalizedCols[] = $col;
                 continue;
             }
             $column = new Column($col['name'], isset($col['data']) ? $col['data'] : null);
             if (isset($col['orderable'])) {
                 $column->setOrderable((bool) $col['orderable']);
             }
             if (isset($col['searchable'])) {
                 $column->setSearchable((bool) $col['searchable']);
             }
             if (isset($col['subcolumns'])) {
                 $column->setSubColumns(self::normalizeColumns((array) $col['subcolumns']));
             }
             $normalizedCols[] = $column;
         }
     }
     return $normalizedCols;
 }
Exemple #3
0
 /**
  * {@inheritdoc}
  */
 public function getFilter()
 {
     if ($this->isTotalizable) {
         $filter = new GenericTotalizableFilter();
     } else {
         $filter = new GenericFilter();
     }
     if (isset($this->outputCallback)) {
         $filter->setOutputCallback($this->outputCallback);
     }
     if (isset($this->firstResult)) {
         $filter->setFirstResult($this->firstResult);
     }
     if (isset($this->maxResults)) {
         $filter->setMaxResults($this->maxResults);
     }
     if (isset($this->globalSearch)) {
         $filter->setGlobalSearch(new Searching($this->globalSearch));
     }
     $columns = array_map(function ($colData) {
         $col = new Column($colData['name'], $colData['data']);
         $col->setOrderable($colData['orderable']);
         $col->setSearchable($colData['searchable']);
         $col->setSubColumns(array_map(function ($subcolData) {
             $subcol = new Column($subcolData['name'], $subcolData['data']);
             $subcol->setOrderable($subcolData['orderable']);
             $subcol->setSearchable($subcolData['searchable']);
             return $subcol;
         }, $colData['subcolumns']));
         return $col;
     }, $this->columns);
     $orderings = array_map(function ($colData) use($columns) {
         return new Ordering($columns[$colData['name']], $colData['dir']);
     }, $this->orders);
     $columnSearchs = array_map(function ($colData) {
         return new Searching($colData['searchValue'], $colData['name']);
     }, $this->columnSearchs);
     $filter->setColumns($columns);
     $filter->setOrderings($orderings);
     $filter->setColumnSearchs($columnSearchs);
     return $filter;
 }
Exemple #4
0
 public function testSetSearchable()
 {
     $col = new Column('foo');
     $col->setSearchable(false);
     $this->assertFalse($col->getSearchable());
 }