/**
* Builds listing grid
*
* @param string|null $name
* @return Grid
* @throws \Grido\Exception
*/
public function createComponentDataGrid($name = NULL)
{
$data = $this->generateDataForGrid();
$dataGrid = new Grid($this, $name);
$dataGrid->setRowCallback(function ($row, $tr) {
/** @var Nette\Utils\Html $tr */
if (empty($row['translation'])) {
$tr->attrs['class'][] = 'untranslated';
}
return $tr;
});
$dataGrid->setFilterRenderType(Filter::RENDER_INNER);
$dataGrid->setModel(new ArraySource($data));
$dataGrid->addActionHref('remove', 'Remove', 'remove');
$dataGrid->setDefaultSort(array('translation' => 'ASC'));
// Columns
$catalogueColumn = $dataGrid->addColumnText('catalogue', 'Catalogue');
$catalogueColumn->setCustomRender(function ($values) {
return ucfirst($values['catalogue']);
});
$catalogueColumn->setFilterSelect($this->getCataloguesInModel($data));
$catalogueColumn->setSortable();
$dataGrid->addColumnText('id', 'Code')->setSortable()->setFilterText();
$translationColumn = $dataGrid->addColumnText('translation', 'Translation');
$translationColumn->setFilterText();
$translationColumn->setCustomRender(function ($values) {
$el = Nette\Utils\Html::el('textarea');
$el->addAttributes(array('type' => 'text', 'class' => 'text', 'rows' => 1, 'data-translation-control-change-url' => $this->link('saveTranslation!', array('catalogue' => $values['catalogue'], 'code' => $values['id'], 'language' => $this->locale))));
$el->add(str_replace('|', "|\n", $values['translation']));
return $el;
});
return $dataGrid;
}