/** * @param array $mapping */ public function setMapping(array $mapping) { parent::setMapping($mapping); foreach ($mapping as $k => $m) { $this->selection->select("{$m} AS `{$k}`"); } }
public function select($columns) { if (!$this->sqlBuilder->getSelect()) { $this->sqlBuilder->addSelect("{$this->name}.{$this->column}"); } return parent::select($columns); }
public function select($columns) { if (!$this->select) { $this->select[] = "{$this->delimitedName}.{$this->delimitedColumn}"; } return parent::select($columns); }
public function setRelated($table, $key, $column, $as = NULL, $primary = 'id') { if (is_null($this->context)) { throw new Grid_Exception('Related require set Nette database context in constructor.'); } $this->related[$table] = array($table, $key, $column, $as, $primary); $this->nette_table->select($table . '.' . $column . (!is_null($as) ? ' AS ' . $as : '')); return $this; }
protected function configure($presenter) { $this->selection->select("error.id, title, message, error_dt, project_id.name AS project_name, error_status_id.status AS status"); $source = new \NiftyGrid\DataSource\NDataSource($this->selection); $self = $this; $this->setDataSource($source); $this->setDefaultOrder("error_dt DESC"); $this->addColumn("project_name", "Project")->setTableName("project_id")->setSortable()->setSelectFilter($this->projectEntity->findAll()->fetchPairs("id", "name")); $this->addColumn("title", "Title")->setTextFilter()->setSortable(); $this->addColumn("message", "Message")->setSortable()->setTextFilter()->setRenderer(function ($row) use($presenter) { return \Nette\Utils\Html::el("a")->setText(trim($row["message"]) ? Strings::truncate($row["message"], 60) : $row["id"])->addAttributes(array("target" => "_blank"))->href($presenter->link("ErrorList:display", $row["id"])); }); $this->addColumn("status", "Status")->setTableName("error_status_id")->setSelectFilter($this->lstErrorStatus->findAll()->fetchPairs("id", "status"))->setRenderer(function ($row) use($presenter) { $label = ""; if ($row["status"] == "New") { $label = "label-important"; } return \Nette\Utils\Html::el("span")->setText($row["status"])->addAttributes(array("class" => "label {$label}")); }); if (!isset($this->filter['status'])) { $this->filter['status'] = '1'; } $this->addColumn("error_dt", "Date", "150px")->setDateFilter()->setSortable()->setRenderer(function ($row) { return $row["error_dt"]->format("j.n.Y H:i:s"); }); $this->addButton("archive", "Archive")->setText("Archive")->setAjax()->setLink(function ($row) use($presenter) { return $presenter->link("archive!", $row['id']); })->setClass("btn-success btn-solve"); /* $this->addButton("createTask", "Create Task") ->setText('Create task') ->setAjax() ->setLink(function($row) use ($presenter){return $presenter->link("createTask!", $row['id']);}) ->setClass("btn-info"); */ $this->addAction("archive", "Archive")->setAjax(true)->setCallback(function ($selectedItems) use($self) { $self->handleArchive($selectedItems); }); $this->addAction("unarchive", "Unarchive")->setAjax(true)->setCallback(function ($selectedItems) use($self) { $self->handleUnArchive($selectedItems); }); }
/** * @param \Nette\Database\Table\Selection $selection * @param string|Callable $callback */ private function apply(Selection $selection, $callback) { if (!$callback) { return; } if (is_string($callback)) { $selection->select($callback); } else { $callback($selection); } }
public function aggregation($function) { $aggregation =& $this->refTable->aggregation[$function . implode('', $this->where) . implode('', $this->conditions)]; if ($aggregation === NULL) { $aggregation = array(); $selection = new Selection($this->name, $this->connection); $selection->where = $this->where; $selection->parameters = $this->parameters; $selection->conditions = $this->conditions; $selection->select($function); $selection->select("{$this->name}.{$this->column}"); $selection->group("{$this->name}.{$this->column}"); foreach ($selection as $row) { $aggregation[$row[$this->column]] = $row; } } if (isset($aggregation[$this->active])) { foreach ($aggregation[$this->active] as $val) { return $val; } } }
/** * @param string $select * @return self */ public function setSelect($select) { $this->source->select($select); return $this; }
/** * Executes aggregation function. * @param string * @return string */ public function aggregation($function) { $selection = new Selection($this->name, $this->connection); $selection->where = $this->where; $selection->parameters = $this->parameters; $selection->conditions = $this->conditions; $selection->select($function); foreach ($selection->fetch() as $val) { return $val; } }