/**
  * Add a column type.
  *
  * @param Column $column
  *
  * @return $this
  */
 public function addColumn(Column $column)
 {
     $type = $column->getType();
     if ($this->hasColumn($type)) {
         throw new ColumnAlreadyExistsException($type);
     }
     $this->columns[$type] = $column;
     return $this;
 }
Example #2
0
 /**
  * Add column
  * @param Column $column
  * @param int $position
  * @return Columns
  */
 public function addColumn(Column $column, $position = 0)
 {
     $column->setSecurityContext($this->securityContext);
     if ($position > 0) {
         $position--;
         $head = array_slice($this->columns, 0, $position);
         $tail = array_slice($this->columns, $position);
         $this->columns = array_merge($head, array($column), $tail);
     } else {
         $this->columns[] = $column;
     }
     return $this;
 }
Example #3
0
 public function __initialize(array $params)
 {
     $params['filterable'] = false;
     $params['sortable'] = false;
     $params['size'] = 50;
     parent::__initialize($params);
 }
 public function getFilters($source)
 {
     $parentFilters = parent::getFilters($source);
     $filters = array();
     foreach ($parentFilters as $filter) {
         switch ($filter->getOperator()) {
             case self::OPERATOR_EQ:
             case self::OPERATOR_NEQ:
                 $value = $filter->getValue();
                 $filters[] = new Filter($filter->getOperator(), $value);
                 break;
             case self::OPERATOR_LIKE:
             case self::OPERATOR_NLIKE:
                 $value = $filter->getValue();
                 $filters[] = new Filter($filter->getOperator(), $value);
                 break;
             case self::OPERATOR_ISNULL:
                 $filters[] = new Filter(self::OPERATOR_ISNULL);
                 $filters[] = new Filter(self::OPERATOR_EQ, '');
                 $this->setDataJunction(self::DATA_DISJUNCTION);
                 break;
             case self::OPERATOR_ISNOTNULL:
                 $filters[] = new Filter(self::OPERATOR_ISNOTNULL);
                 $filters[] = new Filter(self::OPERATOR_NEQ, '');
                 break;
             default:
                 $filters[] = $filter;
         }
     }
     return $filters;
 }
 public function __initialize(array $params)
 {
     parent::__initialize($params);
     $this->setIconSize($this->getParam('iconSize'));
     $this->setFilterable($this->getParam('filterable', false));
     $this->setSortable($this->getParam('sortable', false));
 }
 public function getFilters($source)
 {
     $parentFilters = parent::getFilters($source);
     $filters = array();
     foreach ($parentFilters as $filter) {
         $filters[] = $filter->getValue() === null ? $filter : $filter->setValue(new \DateTime($filter->getValue()));
     }
     return $filters;
 }
Example #7
0
 public function getFilters($source)
 {
     $parentFilters = parent::getFilters($source);
     $filters = array();
     foreach ($parentFilters as $filter) {
         if ($source === "document") {
             $filters[] = $filter;
         } else {
             switch ($filter->getOperator()) {
                 case self::OPERATOR_EQ:
                 case self::OPERATOR_NEQ:
                     $filterValues = (array) $filter->getValue();
                     $value = '';
                     $counter = 1;
                     foreach ($filterValues as $filterValue) {
                         $len = strlen($filterValue);
                         $value .= 'i:' . $counter++ . ';s:' . $len . ':"' . $filterValue . '";';
                     }
                     $filters[] = new Filter($filter->getOperator(), 'a:' . count($filterValues) . ':{' . $value . '}');
                     break;
                 case self::OPERATOR_LIKE:
                 case self::OPERATOR_NLIKE:
                     $len = strlen($filter->getValue());
                     $value = 's:' . $len . ':"' . $filter->getValue() . '";';
                     $filters[] = new Filter($filter->getOperator(), $value);
                     break;
                 case self::OPERATOR_ISNULL:
                     $filters[] = new Filter(self::OPERATOR_ISNULL);
                     $filters[] = new Filter(self::OPERATOR_EQ, 'a:0:{}');
                     $this->setDataJunction(self::DATA_DISJUNCTION);
                     break;
                 case self::OPERATOR_ISNOTNULL:
                     $filters[] = new Filter(self::OPERATOR_ISNOTNULL);
                     $filters[] = new Filter(self::OPERATOR_NEQ, 'a:0:{}');
                     break;
                 default:
                     $filters[] = $filter;
             }
         }
     }
     return $filters;
 }
 /**
  * @param string $section
  * @param \APY\DataGridBundle\Grid\Grid $grid
  * @param \APY\DataGridBundle\Grid\Column\Column $param
  * @return string
  */
 public function getGridUrl($section, $grid, $param = null)
 {
     $separator = strpos($grid->getRouteUrl(), '?') ? '&' : '?';
     switch ($section) {
         case 'order':
             if ($param->isSorted()) {
                 return $grid->getRouteUrl() . $separator . $grid->getHash() . '[' . Grid::REQUEST_QUERY_ORDER . ']=' . $param->getId() . '|' . ($param->getOrder() == 'asc' ? 'desc' : 'asc');
             } else {
                 return $grid->getRouteUrl() . $separator . $grid->getHash() . '[' . Grid::REQUEST_QUERY_ORDER . ']=' . $param->getId() . '|asc';
             }
         case 'page':
             return $grid->getRouteUrl() . $separator . $grid->getHash() . '[' . Grid::REQUEST_QUERY_PAGE . ']=' . $param;
         case 'limit':
             return $grid->getRouteUrl() . $separator . $grid->getHash() . '[' . Grid::REQUEST_QUERY_LIMIT . ']=';
         case 'reset':
             return $grid->getRouteUrl() . $separator . $grid->getHash() . '[' . Grid::REQUEST_QUERY_RESET . ']=';
     }
 }
Example #9
0
 /**
  * @param \APY\DataGridBundle\Grid\Column\Column $column
  * @return string
  */
 protected function getFieldName($column, $withAlias = false)
 {
     $name = $column->getField();
     /* $isAssocciation = $column->getParam('isAssocciation');
        if($name=='product'){
        var_dump($isAssocciation);die();
        } */
     if (strpos($name, '.') !== false) {
         $previousParent = '';
         $elements = explode('.', $name);
         while ($element = array_shift($elements)) {
             if (count($elements) > 0) {
                 $parent = $previousParent == '' ? $this->getTableAlias() : $previousParent;
                 $previousParent .= '_' . $element;
                 $joinType = $column->getJoinType();
                 $this->joins[$previousParent] = array('field' => $parent . '.' . $element, 'type' => $joinType);
             } else {
                 $name = $previousParent . '.' . $element;
             }
         }
         $alias = str_replace('.', '::', $column->getId());
     } elseif (strpos($name, ':') !== false) {
         $previousParent = $this->getTableAlias();
         $alias = $name;
     } else {
         return $this->getTableAlias() . '.' . $name;
     }
     // Aggregate dql functions
     $matches = array();
     if ($column->hasDQLFunction($matches)) {
         if (strtolower($matches['parameters']) == 'distinct') {
             $functionWithParameters = $matches['function'] . '(DISTINCT ' . $previousParent . '.' . $matches['field'] . ')';
         } else {
             $parameters = '';
             if ($matches['parameters'] !== '') {
                 $parameters = ', ' . (is_numeric($matches['parameters']) ? $matches['parameters'] : "'" . $matches['parameters'] . "'");
             }
             $functionWithParameters = $matches['function'] . '(' . $previousParent . '.' . $matches['field'] . $parameters . ')';
         }
         if ($withAlias) {
             // Group by the primary field of the previous entity
             $this->query->addGroupBy($previousParent);
             $this->querySelectfromSource->addGroupBy($previousParent);
             return "{$functionWithParameters} as {$alias}";
         }
         return $alias;
     }
     if ($withAlias) {
         return "{$name} as {$alias}";
     }
     return $name;
 }
 public function renderCell($value, $row, $router)
 {
     $value = parent::renderCell($value, $row, $router);
     return $value ?: 'false';
 }
Example #11
0
 /**
  * @param \APY\DataGridBundle\Grid\Column\Column $column
  * @return string
  */
 protected function getFieldName($column, $withAlias = false)
 {
     $name = $column->getField();
     if ($column instanceof DQLColumn) {
         if (!$withAlias) {
             return $name;
         }
         return $column->getDql() . ' as ' . $name;
     } else {
         if (strpos($name, '.') !== false) {
             $previousParent = '';
             $elements = explode('.', $name);
             while ($element = array_shift($elements)) {
                 if (count($elements) > 0) {
                     $parent = $previousParent == '' ? self::TABLE_ALIAS : $previousParent;
                     $previousParent .= '_' . $element;
                     $this->joins[$previousParent] = array('field' => $parent . '.' . $element, 'type' => $column->getJoinType());
                 } else {
                     $name = $previousParent . '.' . $element;
                 }
             }
             $alias = str_replace('.', '::', $column->getId());
         } elseif (strpos($name, ':') !== false) {
             $previousParent = self::TABLE_ALIAS;
             $alias = $name;
         } else {
             return self::TABLE_ALIAS . '.' . $name;
         }
     }
     // Aggregate dql functions
     $matches = array();
     if ($column->hasDQLFunction($matches)) {
         if (strtolower($matches['parameters']) == 'distinct') {
             $functionWithParameters = $matches['function'] . '(DISTINCT ' . $previousParent . '.' . $matches['field'] . ')';
         } else {
             $parameters = '';
             if ($matches['parameters'] !== '') {
                 $parameters = ', ' . (is_numeric($matches['parameters']) ? $matches['parameters'] : "'" . $matches['parameters'] . "'");
             }
             $functionWithParameters = $matches['function'] . '(' . $previousParent . '.' . $matches['field'] . $parameters . ')';
         }
         if ($withAlias) {
             // Group by the primary field of the previous entity
             $this->query->addGroupBy($previousParent);
             $this->querySelectfromSource->addGroupBy($previousParent);
             return "{$functionWithParameters} as {$alias}";
         }
         return $alias;
     }
     if ($withAlias) {
         return "{$name} as {$alias}";
     }
     return $name;
 }
 public function getFilters($source)
 {
     $parentFilters = parent::getFilters($source);
     $filters = array();
     foreach ($parentFilters as $filter) {
         // Transforme in number for ODM
         $filters[] = $filter->getValue() === null ? $filter : $filter->setValue($filter->getValue() + 0);
     }
     return $filters;
 }
Example #13
0
 /**
  * @param array  $subColumn
  * @param Column \APY\DataGridBundle\Grid\Column\Column
  */
 protected function addReferencedColumnn(array $subColumn, Column $column)
 {
     $this->referencedColumns[$subColumn[0]][] = $subColumn[1];
     if ($column->isFiltered()) {
         $helperQuery = $this->manager->createQueryBuilder($this->referencedMappings[$subColumn[0]]);
         $filters = $column->getFilters('document');
         foreach ($filters as $filter) {
             $operator = $this->normalizeOperator($filter->getOperator());
             $value = $this->normalizeValue($filter->getOperator(), $filter->getValue());
             $helperQuery->field($subColumn[1])->{$operator}($value);
             $this->prepareQuery($this->query);
             $cursor = $helperQuery->getQuery()->execute();
             foreach ($cursor as $resource) {
                 if ($cursor->count() > 0) {
                     $this->query->select($subColumn[0]);
                 }
                 if ($cursor->count() == 1) {
                     $this->query->field($subColumn[0])->references($resource);
                 } else {
                     $this->query->addOr($this->query->expr()->field($subColumn[0])->references($resource));
                 }
             }
         }
     }
 }