ublaboo/datagrid: mocný, rychlý, rozšiřitelný, hezký, anglicky dokumentovaný datagrid

andros
Člen | 145
+
0
-

Ahoj,

pokud si v gridu nastavím „setColumnsSummary“ na určitý sloupec a inline edituji řádek, po uložení záznamu se přepočte sum pouze z editovaného řádku a ne ze všech zobrazených sloupců. Nevíte někdo prosím, jak to vyřešit ?

Díky moc.

$grid->setColumnsSummary(['totalPrice']);
Isigarek
Člen | 74
+
0
-

Díky za odpověď a ještě nějaká odpověď na předešlí dotaz? Jak nechat všechny nody defaultně otevřené v tree view?

Pavel Janda napsal(a):

@MW @Isigarek Podpora pro bs 4 je ready ve větvi boostrap-4. Bohužel se s mergnutím do 5.x čeká ještě na jednu knihovnu (bootstrap-select), která stále nmá podporu bs4 ve stable verzi. Ale možná to tam už prdnu, ať to lze všechno používat (tedy krom toho bootstrap-select).

Pavel Janda
Člen | 977
+
0
-

@Isigarek Momentálně to nelze. Existuje na to stařičký PR (https://github.com/…ll/236/files). Ten PR by se musel zrefaktořit.

+
0
-

Dobré ráno!

Mám velmi hloupý dotaz. Začal jsem pracovat s gridem a potřebuji vytvořit tree-view, ale nesedí mi poloha sloupců a jejich nadpisů, viz zde:

http://gdermog.rajce.idnes.cz/ruzne/#…

Je to nějaká známá blbost, co dělám? Resp. máte někdo nějaké vodítko, kde bych mohl problém hledat?
Vřelé díky!

suwer
Člen | 33
+
0
-

Vypinam si remeber state kvuli tomu, aby se pri novem pristupu na stranku s datagridem nacetla vychozi konfigurace (strankovani na zacatku a razeni dle default nastaveni) a ne konfigurace ulozena v session. Bohuzel v tu chvili prestane fungovat defaultni skryti vybranych sloupcu. Ve skutecnosti moznost skryvani/zobrazovani sloupcu uplne prestane fungovat.

Jde tohle nejak rozdelit?

Dark0ne
Člen | 47
+
0
-

Zdravím,

řeším takovou drobnost, se kterou si ale lámo nějakou chvíli hlavu.
Mám addAction, do kterého mi může a nemusí přijít „exe_id“, ve chvíli, kdy nepříjde, tak chci, aby se akce pro daný řádek vůbec nezobrazovala.

Začal jsem to řešit nějak takto

$grid->addAction('exe_id', 'a', 'Execution:detail', ['id' => 'exe_id'])->setRenderer(function ($item) {
      if($item->exe_id==null){
          return null; //nezobrazim nic - to je ok
      }
      else {

          return null; // zde potrebuji vratit celou akci (tedy funkcni odkaz), bohuzel $this->action mi vrací jen její název

      }


  });

Díky za rady.

Zapp3
Člen | 8
+
-1
-

Dark0ne napsal(a):

Zdravím,

řeším takovou drobnost, se kterou si ale lámo nějakou chvíli hlavu.
Mám addAction, do kterého mi může a nemusí přijít „exe_id“, ve chvíli, kdy nepříjde, tak chci, aby se akce pro daný řádek vůbec nezobrazovala.

Začal jsem to řešit nějak takto

$grid->addAction('exe_id', 'a', 'Execution:detail', ['id' => 'exe_id'])->setRenderer(function ($item) {
      if($item->exe_id==null){
          return null; //nezobrazim nic - to je ok
      }
      else {

          return null; // zde potrebuji vratit celou akci (tedy funkcni odkaz), bohuzel $this->action mi vrací jen její název

      }


  });

Díky za rady.

@Dark0ne
Mělo by stačit

if($item->exe_id)
{
	return TRUE;
}

Editoval Zapp3 (19. 4. 2018 12:23)

Dark0ne
Člen | 47
+
0
-

Zapp3 napsal(a):

@Dark0ne
Mělo by stačit

if($item->exe_id)
{
	return TRUE;
}

True vrací „1“ nikoliv celou akci.

Tomáš Vodička
Člen | 28
+
+1
-

Dark0ne napsal(a):

Zdravím,

řeším takovou drobnost, se kterou si ale lámo nějakou chvíli hlavu.
Mám addAction, do kterého mi může a nemusí přijít „exe_id“, ve chvíli, kdy nepříjde, tak chci, aby se akce pro daný řádek vůbec nezobrazovala.

Začal jsem to řešit nějak takto

$grid->addAction('exe_id', 'a', 'Execution:detail', ['id' => 'exe_id'])->setRenderer(function ($item) {
      if($item->exe_id==null){
          return null; //nezobrazim nic - to je ok
      }
      else {

          return null; // zde potrebuji vratit celou akci (tedy funkcni odkaz), bohuzel $this->action mi vrací jen její název

      }


  });

Díky za rady.

Akce lze skrývat pomocí funkce allowRowsAction()

viz https://ublaboo.org/datagrid/row#…

Editoval Tomáš Vodička (19. 4. 2018 13:08)

Zapp3
Člen | 8
+
0
-

Dark0ne napsal(a):

Zapp3 napsal(a):

@Dark0ne
Mělo by stačit

if($item->exe_id)
{
	return TRUE;
}

True vrací „1“ nikoliv celou akci.

@Dark0ne
Moje chyba, zapomněl jsem napsat že je třeba použít setRendererCondition() čili:

$grid->addAction('exe_id', 'a', 'Execution:detail', ['id' => 'exe_id'])
    ->setRendererCondition(function ($item)
	{
		if($item->exe_id)
		{
			return true;
		}
	}

nebo to co navrhuje Tomáš Vodička což je imho asi lepší

Dark0ne
Člen | 47
+
0
-

Vyřešeno funkcí allowRowsAction(), úplně jsem ji v dokumentaci přehlédl.

Díky za pomoc.

wenkow
Člen | 1
+
0
-

Ahoj,
mám dotaz – neřešil tu někdo modal form přes action button s ajaxem? Postnete někdo příklad jak na to?

vladimir
Člen | 11
+
0
-

Ahojte,
začínám si hrát s timhle DataGridem a zatím super, jen bych se chtěl zeptat, řešil někdo jak snadno zakázat ajaxové volání v rámci datagridu?

Úplně naivní řešení zrušením reference na nette.ajax.js rozbije JavaScript celkově (například checkboxy přestanou fungovat), takže tohle není úplně ta správná cesta, ale co jsem koukal, tak ty ajax třídy jsou vesměs zadrátované na original_template.

Díky za nasměrování.

Vl.

Petr Parolek
Člen | 455
+
0
-

Ahoj,

@vladimir z jakého důvodu bys chtěl vypnout AJAX? Ten je dnes základ všeho

FTCP
Člen | 6
+
0
-

@PavelJanda zdravíčko, byla by možnost zapnutí/vypnutí duplikace paginátoru aby mohl být i nahoře ? Custom templatem jsem to zkoušel, ale je zde jedinný problém, který se mi nepodařilo vyřešit, při změně počtu řádků na stránku se aktualizuje počet stránek pouze v prvním vykresleném paginátoru a v druhém zůstane původní parametr per page i počet stránek, nebo by stačilo přidat možnost v createComponent definovat další snippety k reloadování

Editoval FTCP (10. 5. 2018 8:03)

pavel_4
Člen | 13
+
0
-

@PavelJanda Zdravím, možná jsem to někde přehlídnul, ale dá se obnovit snippet s detailem řádku? Mám v něm nějaké tlačítka a když zavolám redrawControl(‚items‘) a redrawControl(‚item-‘.$var . ‚-detail‘), tak se data sice obnoví, ale zavře se ten detail.

pitr82
Člen | 121
+
0
-

Ahoj @PavelJanda,
Nějaká podpora pro FontAwasome 5 ?

Ondris
Člen | 37
+
0
-

Ahoj,

nevíte někdo jak fulltextově vyhledávat i ve stromové struktuře. Klasický text filter podle všeho prohledává jen první úroveň.

kralik
Člen | 230
+
0
-

Ahoj,
nevíte prosím jak s CSV exportem z datagridu? Narazil jsem na 3 problémy.
Zatím jsem CSV export nepoužíval.

  1. Lze provést CSV export s verzí Nette 2.3.?
    • dostával jsem chybovou hlášku o chybějící class SmartObject, který je ve verzi 2.4.
    • nižší verze Ublaboo také nepomohla
  2. Na verzi Nette 2.4. dostávám tuto chybu

    „Cannot read an undeclared column ‚action‘.“

DataGrid

<?php
...
	$grid->addColumnText('action', 'Menu')
                    ->setTemplate(__DIR__ . '/templates/Sprava/usMenu.latte');
...
?>
  1. Jednoduchý výběr sloupců pro export z existujícího datagridu

    Když mám již datagrid nadefinovaný mohl bych jednoduše vybrat sloupce pro export.

    Nějak takto:

<?php
	$grid->addExportCsv('Csv export', 'examples_all.csv')
		          ->setTitle('Csv export')
				  ->setColumns(array('jmeno','prijmeni','email'));
?>

než přes „složitější“ definování znovu každého sloupce
Bohužel nevím jak přidat více sloupců než jen „jmeno“

<?php
	$column_name = new Ublaboo\DataGrid\Column\ColumnText($grid, 'jmeno', 'jmeno', 'Jméno');

	$grid->addExportCsv('Csv export', 'examples_all.csv')
		->setTitle('Csv export')
		->setColumns([
			$column_name
		]);
?>

Moc díky

Editoval kralik (1. 6. 2018 11:18)

Čamo
Člen | 786
+
+1
-

Prosím Vás vie niekto ako nastavím v dátumových filtroch, začiatok týždňa v kalendári na podnelok? V dokumentácii https://ublaboo.org/datagrid/filter?… je len setFormat()

EDIT: Tak to vyzerá že ->setFilterDateRange()->setAttribute('data-date-week-start', 1);
EDIT2: Alebo skôr prilinkovať /locales/bootstrap-datetimepicker.cs.min.js + $.fn.datepicker.defaults.language = 'cs'

Editoval Čamo (19. 6. 2018 19:35)

Felix
Nette Core | 1186
+
+1
-

Priprava v5.7.0

Github: https://github.com/…d/issues/680


Pokud vite o nejakem bugu, nebojte se zapojit a poslete PR nebo napiste komentar. Ve verzi v5.x se jiz nebudou objevovat nove veci, vsechen volny cas se investuje do v6.x, ktera bude postavena na PHP 7.1.

libik
Člen | 96
+
0
-

Ahoj,

lze nejak pres addToolbarButton definovat rekneme tri buttony, vedouci na stejnou action jen s jinym parametrem v url?

$grid->addToolbarButton('create', 'Vložit odkaz', ['type' => 'link']);
$grid->addToolbarButton('create', 'Vložit stránku', ['type' => 'page']);
$grid->addToolbarButton('create', 'Vložit sekci', ['type' => 'node']);

Totok neprojde. Diky!

libik
Člen | 96
+
0
-

Tak si mezitim odpovim :)

$grid->addToolbarButton('whatever', 'Vložit')->setRenderer(function() use ($presenter) { return Html::el('a')->href($presenter->link('create', array('type' => 'node')))->setAttribute('class', 'btn btn-xs btn-outline btn-info')->setHtml(Html::el('span')->setAttribute('class', 'fa fa-plus').' Vložit sekci'); });
pitr82
Člen | 121
+
0
-

Ahoj @PavelJanda ,
jak nastavím, aby mi datagrid neprováděl refreshState ?

Pavel Janda
Člen | 977
+
0
-

@pitr82 DataGrid::setRefreshUrl(false)

majo1
Člen | 103
+
0
-

ahojte, chcem sa spýtať, používam nette 2.4, datagrid 5.6. Konflikt v JS žiaden. Prejavuje sa to aj na BS3 aj na BS4.. Inline-add sa mi neustále zobrazuje, po kliknutí na tlačidlo +, inline edit nezmizne.. Viete mi prosím poradiť, v čom môže byť problém? Ďakujem.

Sophyx
Člen | 1
+
0
-

Zdravim.

Existuje moznost vytvorit three-level group action? Two-level funguje skvele no nenasiel som nic ohladom moznosti pridania three-level. Ak uz niekto nieco podobne riesil a bol by schopny pridat nejake fungujuce riesenie velmi by mi to pomohlo.

Dakujem.

Neo-Mike
Člen | 22
+
0
-

Zdravím,
děje se mi, že pokud nastavím setRequired na prvek v addInlineAdd, tak při vyhledávání dojde k vyskočení alert okna. Pokud před tím přepunu na jiný počet položek v zobrazení gridu na stránce nebo provedu editaci záznamu, tak vyhledávání funguje jak má. Jak se tohle dá vyřešit? Díky za rady

Croc
Člen | 270
+
0
-

Zdravím, potřeboval bych pomoc s inline add/edit. Vše funguje jak má, jen s použitím selectize právě v inline add/edit bych potřeboval při překreslení či při zobrazení formu vynulovat hodnoty v selectize. Problém je následující:

  1. Kliknu na tlačítko přidat a správně se mi objeví form na přidání.
  2. Vyplním 3 znaky do selectize a ten mi dynamicky z DB vyhledá nějaké entity a zobrazí.
  3. Jednu z nich vyberu a formulář uložím. Entita do datagridu se přidá.
  4. Kliknu opět na tlačítko přidat a správně se mi objeví form na přidání.
  5. Kliknu do selectize a ten mi nabídne entitu, kterou jsem vyhledával v kroku 2.

Cílem je, aby v kroku 5 byl selectize opět prázdný. Nejlepší by bylo, kdybych mohl nějkým způsobem před zobrazením formuláře či při překreslení po odeslání selectize pomocí JS vynulovat.

Existuje nějaký způsob jak zavolat custom JS v popsaném případě?

Moc děkuju za odpovědi.

Editoval Croc (19. 8. 2018 18:30)

Jurix
Člen | 11
+
0
-

Ahoj!
Nemohu nikde najít instrukce k stažení a zavedení assets pro datagrid. Dokumentace odkazuje na bower, ten ale použít nechci…
Máme alternativu?

díky

Mistrfilda
Člen | 76
+
0
-

Ahoj,

třeba https://www.npmjs.com/…boo-datagrid nebo https://yarnpkg.com/…boo-datagrid pro custom assety (nejsem si ale jist jestli je to oficialne podporovano :D v dokumentaci se o tom nepise a pak jsem nasel https://github.com/…d/issues/676), ostatní assety (bootstrap, bootstrap datetimepicker) je nutné najít a doinstalovat, seznam je dole v bower.json

Editoval Mistrfilda (24. 8. 2018 19:06)

MW
Člen | 615
+
0
-

Mistrfilda napsal(a):

Ahoj,

třeba https://www.npmjs.com/…boo-datagrid nebo https://yarnpkg.com/…boo-datagrid pro custom assety (nejsem si ale jist jestli je to oficialne podporovano :D v dokumentaci se o tom nepise a pak jsem nasel https://github.com/…d/issues/676), ostatní assety (bootstrap, bootstrap datetimepicker) je nutné najít a doinstalovat, seznam je dole v bower.json

Taky jsem hledal, ale jedině Bower teď nainstaluje komplet vč. závislostí. Jinak ručně.

Jurix
Člen | 11
+
0
-

MW napsal(a):

Mistrfilda napsal(a):

Ahoj,

třeba https://www.npmjs.com/…boo-datagrid nebo https://yarnpkg.com/…boo-datagrid pro custom assety (nejsem si ale jist jestli je to oficialne podporovano :D v dokumentaci se o tom nepise a pak jsem nasel https://github.com/…d/issues/676), ostatní assety (bootstrap, bootstrap datetimepicker) je nutné najít a doinstalovat, seznam je dole v bower.json

Taky jsem hledal, ale jedině Bower teď nainstaluje komplet vč. závislostí. Jinak ručně.

Bower není pro nové projekty doporučen – je zastaralý. Je to opravdu v současnosti to nejlepší řešení?

Jurix
Člen | 11
+
0
-

Ahojte!
Řešil někdo filtrování v ublaboo datagridu pomocí regulárního výrazu?

Mistrfilda
Člen | 76
+
0
-

Ahoj,

jestli chapu spravne, chces do filtru napsat reguralni vyraz, pomoci ktereho se vyfiltruji zaznamy dale? Jesli ano myslim ze by to slo pres „Custom where condition“ – https://ublaboo.org/datagrid/filter

pavelinnuendo
Člen | 33
+
0
-

Ahoj, funguje vám boostrap-select při inline editaci celého řádku ve FF? Při přidání nového je vše ok, ale při následné editaci se ve FF select vůbec nezobrazí. Chrome je ok. Updatoval jsem na 5.6, jquery, boostrap na poslední verze, ale v editaci prostě takový select ve FF nevidím, dokud mu neodeberu tu css třídu.

kajinek32
Člen | 31
+
0
-

Ahoj,
řeším inline editaci (dle dokumentace tu „malou“ – jednoho pole) a poté překreslení daného řádku.

Když je editace pole potvrzena, vykoná se custom funkce correctionEdited:

$grid->addColumnNumber('pieces_correction', 'Korekce')
			->setEditableCallback([$this, 'correctionEdited'])
			->setEditableInputType('number', ['class' => 'form-control input-tiny'])
                        ->setSortable();

V tu chvíli se mi ale zbytek řádku nepřekreslí sám.
Používám ArrayDataSource (získávám data pomocí FetchAll()), zkoušel jsem tedy dle rad autora překreslit grid (stačil by i řádek) ručně, tedy nějak takto:

$grid->getInlineEdit()->onCustomRedraw[] = function() use ($grid) {
    $grid->setDataSource($this->db->query('SELECT id,name FROM myTable')->fetchAll());
    $grid->redrawControl();
};

jenomže mám pocit, že ten onCustomRedraw[] se volá jen při editaci celého řádku? (Umístil jsem do něj zápis do logu, a nevypsalo se mi do něj nic).

Z funkce correctionEdited zas neumím tomu gridu nastavit RedrawControl, ani mu nastavit znovu DataSource.

public function correctionEdited($id, $value)
	{
	    $toDb = [
		'pieces_correction' => $value
	    ];
	    $this->stockTakingItemModel->editOrAdd($toDb,$id);
	}

Jak tedy překreslit jeden řádek?
Díky za radu.

Jurix
Člen | 11
+
0
-

Ahojte,
zápasím s formulářem v detailu a nevím co dělám blbě. Po kliku na save button se vykoná AJAX a v konzoli prohlížeče (v hlavičkách) vidím správnou hodnotu odeslaného inputu. Ale nedaří se mi tyto hodnoty formulářových polí vrátit do komponenty.
Abych byl přesnější, metoda v kódu níže nevykoná nic (nevykreslí flash message, neuloží do DB… prostě nic). Přitom AJAX response je success – 200.

$container->addSubmit('save', 'Save')
	->onClick[] = function($button) use ($grid, $presenter) {
		$values = $button->getParent()->getValues();
		// tady mi nic nefunguje
	};

Netušíte, v čem by mohl být zádrhel?
Díky moc!

theo
Člen | 57
+
0
-

Ahoj,

existuje nějaká šance, že by v dohledné době vznikla nějaká verze Datagridu, která by měla jednak podporu pro Bootstrap 4 (vim, že taková už je) a zároveň by měla podporu pro Dibi 4.0? Tam se totiž změnilo Fluent rozhraní (zmizla třída DibiFluent) a mě by se docela hodila, protože umí pěkné nové psí kousky s PostgreSQL, které by se mi opravdu hodily (např. to umí handlovat datový typ JSON). Díky.

Editoval theo (3. 10. 2018 12:33)

Felix
Nette Core | 1186
+
+3
-

theo napsal(a):

Ahoj,

Ahoj, urcite je to v planu. A dokonce, dokonce se muzes zapojit i ty a pomoct nam s balickem pro Dibi 4. Cool co?

Paradiso
Člen | 101
+
0
-

Pavel Janda napsal(a):

@romiix.org $grid->getTemplate()->foo = 'bar'

je možné pracovat s aktuálním záznamem?

představoval jsem si něco, jako:

$grid->setItemsDetail(function($row) {
			$foo = new Foo($row);
    $grid->getTemplate()->foo = $foo->getResult();
});
$grid->setTemplateFile(__DIR__ . '/../templates/Invoices/detailTemplateGrid.latte');

příklad: mám faktury a při detailu bych potřeboval zobrazovat vypočtené položky, o výpočet se mi stará nějaká třída a nechci to počítat přímo v šabloně, ale potřebuji zachovat funkčnost formuláře

Pavel Janda
Člen | 977
+
0
-

@Paradiso Pomohla by třebas metoda ItemDetail::setTemplateParameters()?

Paradiso
Člen | 101
+
0
-

Pavel Janda napsal(a):

@Paradiso Pomohla by třebas metoda ItemDetail::setTemplateParameters()?

no zapomněl jsem říct jednu podstatnou věc. Pokud nastavím to rozšíření šablony i ten detail, tak v tu chvíli se mi ignoruje ten callback. Takže i když si zkusím:

$grid->setItemsDetail(function($row) {
    dump(1); exit;
});
$grid->setTemplateFile(__DIR__ . '/../templates/Invoices/detailTemplateGrid.latte');

tak se vůbec ten dump neprovede a vrátí se výsledek ze šablony. Pokud nepoužiji tu šablonu, tak mi to ten callback bere. Což je právě věc, která mne mate. V podstatě bych potřeboval vědět, jaký callback použít, aby mi to fungovalo. Nebo to chápu špatně?

představuji si, že když bych dal setTemplateParameters mimo callback, tak si tam mohu poslat statická data pro všechny řádky, ale nemohu pracovat s konkrétním řádkem.

zoool
Člen | 89
+
0
-

Ahoj dá se nějak vytvořit filtr aby filtroval to zda je pole null či není? Potřeboval bych filtr select a tam dát tři option
vse, když je pole null a když pole není null
takto to nefunguje
$grid->addFilterSelect(‚aktivni‘, ‚Aktivní:‘, ['' ⇒ ‚All‘, ‚IS NULL‘ ⇒ ‚Aktivní‘, ‚IS NOT NULL‘ ⇒ ‚neaktivní‘],‚datum_deinstalace‘);

Děkuji

Pavel Janda
Člen | 977
+
0
-

@zoool Udělej si vlastní filtrační callback..

$grid->addFilterText('custom', 'Custom search:', 'name')
	->setCondition(function($fluent, $value) {
		/**
		 * The data source is here DibiFluent
		 * No matter what data source you are using,
		 * prepared data source will be passed as the first parameter of your callback function
		 */
		$fluent->where('id > ?', strlen($value));
	});

Viz https://ublaboo.org/datagrid/filter

jikki
Člen | 73
+
0
-

Ahoj, takto mám udělaný TreeView. Zobrazují se mi šipky na rozbalení u všech položek, i vnořených, i když položka nemá žádného potomka. Poradíte někdo co mám špatně prosím?

<?php
    public function createComponentTreeStructure()
    {
        $grid = $this->myTreeViewFactory->create();
        $stock = $this->wh->em->find(Entity\Stock::class, 1);

        $qb = $this->wh->em->createQueryBuilder();
        $qb->select('e')
            ->from('\App\Model\Entity\Stock', 'e')
            ->where('e.parent = :stock')
            ->setParameter('stock', $stock->id)
            ;
        $qb->getQuery()->getResult();
        $grid['grid']->setDataSource($qb);
        $grid['grid']->setTreeView(function ($parent)
        {
            $qb = $this->wh->em->createQueryBuilder();
            $qb->select('e')
                ->from('\App\Model\Entity\Stock', 'e')
                ->where('e.parent = :parent')
                ->setParameter('parent', $parent)
                ;
            return $qb->getQuery()->getResult();
        }, 'id');

        $grid['grid']->addColumnText('stockName', 'Název umístění');
        $grid['grid']->addColumnText('parent.stockName', 'Nadřazené umístění');
        $grid['grid']->addColumnNumber('id', 'Id');

        $grid['grid']->setPagination(false);

        return $grid;
    }
?>

díky moc

Editoval jikki (19. 10. 2018 7:35)

cujan
Člen | 410
+
0
-

Zdravim potrebujem vypisat stlpec typu TIME z DB

<?php
$grid->addColumnDateTime('casPrichod', 'Čas príchodu')
?>

a hodi mi chybu

DateTime::createFromFormat() expects parameter 2 to be string, object given

v com moze byt problem?

Pavel Janda
Člen | 977
+
0
-

@cujan Můžeš ukázat factory celého gridu?

cujan
Člen | 410
+
0
-

@PavelJanda

<?php
<?php
namespace App\DataGrid;
/*
 * To change this license header, choose License Headers in Project Properties.
 * To change this template file, choose Tools | Templates
 * and open the template in the editor.
 */
use Nette,
    Ublaboo\DataGrid\DataGrid,
    App\Model\NavstevaManager;
/**
 * Description of NavstevaDataGridFactory
 *
 * @author Holub
 */
class NavstevaDataGridFactory {

    private $navstevaManager;

    public function __construct(NavstevaManager $navstevaManager) {

	$this->navstevaManager = $navstevaManager;
    }

    public function create()
    {
	$grid = new DataGrid();
	$grid->setDataSource($this->navstevaManager->getRecords());
	$grid->addColumnDateTime('datumZapisu', 'Dátum zápisu');
	$grid->addColumnDateTime('datumNavsteva', 'Dátum návštevy');
	$grid->addColumnText('priezvisko', 'Priezvisko','users.priezvisko');
	$grid->addColumnDateTime('casPrichod', 'Čas príchodu')-> setFormat ( 'H: i: s' );
	$grid->addColumnDateTime('casOdchod', 'Čas odchodu')-> setFormat ( 'H: i: s' );
	return $grid;
    }
}

?>

Pavel Janda napsal(a):

@cujan Můžeš ukázat factory celého gridu?

Pavel Janda
Člen | 977
+
0
-

@cujan A ukážeš metodu NavstevaManager::getRecords() :)