/**
* Create grid UI component Grido\Grid
*
* @param array|IRepository|Selection $data
* @param string $primaryKey
* @param integer $perPage
* @param array $permanentlyFilter
*
* @return Grid
*/
public function createGrido($data = null, $primaryKey = null, $perPage = null, $permanentlyFilter = [])
{
$grid = new Grid();
// set data model
if ($data) {
if ($data instanceof IRepository) {
$dataModel = new Mepatek\Components\Grido\DataSources\RepositorySource($data);
$dataModel->setPermanentlyFilter($permanentlyFilter);
} elseif ($data instanceof Selection) {
$dataModel = new Grido\DataSources\NetteDatabase($data);
} else {
$dataModel = new Grido\DataSources\ArraySource($data);
}
$grid->setModel($dataModel);
} else {
$dataModel = new Grido\DataSources\ArraySource([]);
$grid->setModel($dataModel);
}
// set primary key
if ($primaryKey) {
$grid->setPrimaryKey($primaryKey);
}
// set properties of grido
$grid->filterRenderType = \Grido\Components\Filters\Filter::RENDER_INNER;
if ($this->translator) {
$grid->setTranslator($this->translator);
}
$grid->getTablePrototype()->class("table table-striped table-hover table-bordered dataTable");
// set item per page
if ($perPage) {
$grid->setDefaultPerPage($perPage);
}
return $grid;
}