/**
* Create grid UI component (Ublaboo/DataGrid
*
* @param array|IRepository|Selection $data
* @param string $primaryKey
* @param integer $perPage
* @param array $permanentlyFilter
* @param Nette\ComponentModel\IContainer|null $parent
* @param string|null $name
*
* @return DataGrid
* @throws DataGridException
*/
public function createUblaboo($data = null, $primaryKey = null, $perPage = null, $permanentlyFilter = [], $parent = null, $name = null)
{
$grid = new DataGrid($parent, $name);
// set primary key
if ($primaryKey) {
$grid->setPrimaryKey($primaryKey);
}
// set data source
if ($data) {
if ($data instanceof IRepository) {
$dataSource = new Mepatek\Components\Ublaboo\DataSources\RepositorySource($data, $primaryKey);
$dataSource->setPermanentlyFilter($permanentlyFilter);
} elseif ($data instanceof Selection) {
$dataSource = new NetteDatabaseTableDataSource($data, $primaryKey);
} else {
$dataSource = new ArrayDataSource($data);
}
$grid->setDataSource($dataSource);
} else {
$dataSource = new ArrayDataSource([]);
$grid->setDataSource($dataSource);
}
// set properties of grid
if ($this->translator) {
$grid->setTranslator($this->translator);
}
//$grid->setEditableColumns();
$grid->setRememberState(true);
// set item per page
if ($perPage) {
$grid->per_page = $perPage;
}
return $grid;
}