/** * 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; }
/** * 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; }
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; }
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 . ']='; } }
/** * @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'; }
/** * @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; }
/** * @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)); } } } } }