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

Pavel Janda
Člen | 977
+
0
-

@r2294743 $this['suggestions']->getTemplate()->foo = "bar"

Pavel Janda
Člen | 977
+
0
-

@H0w4rd Ublaboo\DataGrid\DataSource\NetteDatabaseTableDataSource neimplementuje Ublaboo\DataGrid\AggregationFunction\IAggregatable, můžeš poslat PR s implementací a testy. :)

H0w4rd
Člen | 96
+
0
-

Hmm, to je zvlastni, ze to dosud nikdo nepotreboval.

Mam jiny zahadny problem.
U me na lokalu to funguje, kdyz to nahraju na server (stejna verze php, stejna konfigurace), tak u vsech tlacitek je href=„#“ a tim padem zadne nefunguje.
Je mi jasne, ze nemas kristalovou kouli, ale nenapada te neco? Protoze ja naprosto netusim, co se deje.

<?php
$grid->addToolbarButton("add", "Přidat")
    ->setIcon("plus-circle")
    ->setClass("btn btn-xs btn-default open-in-fancybox");

$grid->addAction("edit", "")
    ->setIcon("edit")
    ->setTitle("Editovat záznam")
    ->setClass("btn btn-xs btn-default open-in-fancybox");

$grid->addAction("active", "", "switch!")
    ->setIcon(function($row) { return $row->not_deleted ? "times-circle" : "check-circle"; })
    ->setTitle(function($row) { return $row->not_deleted ? "Zneplatit záznam" : "Obnovit záznam"; })
    ->setClass("btn btn-xs btn-default ajax")
    ->setConfirm(function($row)
    {
        return "Opravdu chcete " . ($row->not_deleted ? "zneplatnit" : "obnovit") . " záznam?";
    });
?>

Vygenerovane HTML v radku vpravo:

<?php
<td class="col-action">
    <a class="btn btn-xs btn-default open-in-fancybox" title="Editovat záznam" href="#">
        <span class="fa fa-edit">
        </span>
    </a>
    <a class="btn btn-xs btn-default ajax" data-datagrid-confirm="Opravdu chcete zneplatnit záznam?" title="Zneplatit záznam" href="#">
        <span class="fa fa-times-circle">
        </span>
    </a>
</td>
?>

Editoval H0w4rd (4. 3. 2018 18:09)

Pavel Janda
Člen | 977
+
0
-

@H0w4rd Hm, to už někdo (v nějakém issue na githubu, tuším) zmínil a já nemám nejmenší ponětí, o co jde. Ale jelikož se to chová na localu správně a na produkci ne, nepovažuju to za problém datagridu.
Co s tím: Mohl bys rozjet u sebe produkční prostředí a vystopovat, proč se to tam dostane? Mně se to ještě nestalo.. Díky.

H0w4rd
Člen | 96
+
0
-

Hmm, vyresil jsem to zatim tak, ze jsem pridal $grid->addColumnText(„actions“, „Akce“) a v latte jsem definoval obsah a nasazel si tam ty ikony rucne.
Ale kazdopadne je to divne, vyzkousim to nasadit jeste na jiny server.

Pavel Janda napsal(a):

@H0w4rd Ublaboo\DataGrid\DataSource\NetteDatabaseTableDataSource neimplementuje Ublaboo\DataGrid\AggregationFunction\IAggregatable, můžeš poslat PR s implementací a testy. :)

Mohl bych poprosit, potreboval bych jenom nakopnout, proste jak zacit, pak to snad napisu :)

Pavel Janda
Člen | 977
+
0
-

@H0w4rd Ve třídě Ublaboo\DataGrid\AggregationFunction\FunctionSum je potřeba implementovat stav, kdy přijde v argumentu instance třídy Ublaboo\DataGrid\DataSource\NetteDatabaseTableDataSource a pak v třídě přidat implementaci interface Ublaboo\DataGrid\AggregationFunction\IAggregatable (stejně, jako například Ublaboo\DataGrid\DataSource\DibiFluentDataSource).

pitr82
Člen | 121
+
0
-

@PavelJanda Ahoj,

Updatoval jsem datagrid z verze: 5.0.8.0 na verzi 5.5.6.0 a nejde mi sortování podle sloupce dataTime

$grid->setDefaultSort(['create' => 'DESC']);

Při vymázání session najede sprácvně, ale pokud chci ručně sortovat jde jen podle ASC.

Zdenal
Člen | 21
+
0
-

Ahoj @PavelJanda prosím tě nevíš kde by mohl být problém? Když si chci datagrid rozjet přes webpack. Nainstaluji vše přes npm a nefunguje mi ajax filtrace, ale například třídění ve sloupci funguje ajaxove. Hazi to chybu Uncaught ReferenceError: Nette is not defined. A tato chyba se objevuje u souboru nette.ajax.js

Editoval Zdenal (5. 3. 2018 21:07)

Pavel Janda
Člen | 977
+
0
-

@Zdenal Možná chybí NetteForms?

Zdenal
Člen | 21
+
0
-

Pavel Janda napsal(a):

@Zdenal Možná chybí NetteForms?

To určitě nechybí. Je tam a validace formulářů v aplikaci normálně funguje.

d@rkWolf
Člen | 167
+
0
-

Zdravím, neporadil by někdo, jak vyřešit kolizi Nette-ajax-history Vojty Dobeše a Ublaboo datagridu? Mám zajaxovaný back-end aplikace, mám to nastaveno podle návodu u history.ajax a ajaxové požadavky na filtrování apod. od datagridu refreshují celou stránku, načež ovládací prvky ztrácí focus.

Viz. z návodu pro history.ajax:

To correctly update UI, use snippets. If you plan to ajaxify whole application, consider adding this snippet to your beforeRender() method in BasePresenter.

<?php
if ($this->isAjax()) {
	$this->redrawControl('title');
	$this->redrawControl('content');
}
?>

And app/@layout.latte might be upgraded accordingly:

<?php
{snippet content}
{include content}
{/snippet}
?>

Chtělo by to něco, jako je data atribut data-ajax-off=„history“, jenže na požadavky prováděné Datagridem, ne na odkaz.

Croc
Člen | 270
+
0
-

zdravím, potřeboval bych poradit s následujícím:

Potřebuji vytvořit akci a stažení dokumentu z nějaké řádku (id_attachment není primary key řádku).

$grid->addAction('download', '', 'download!', function ($item) {return (array) array('id' => $item->id_attachment);})
            ->setIcon('download')
            ->setClass('btn btn-xs btn-primary ajax');

Dostávám chybu:

Argument 4 passed to Ublaboo\DataGrid\DataGrid::addAction() must be of the type array or null, object given

Je nějaká jiná možnost, jak dostat do url parametru volání akce hodnotu nějakého sloupce?

Moc děkuju, už si nevím rady…

Editoval Croc (7. 3. 2018 13:40)

jAkErCZ
Člen | 322
+
0
-

@PavelJanda
Měl bych dotaz mám actionAcces($configure_id) a chtěl bych vědět zda-li mohu nějak pomocí action poslat toto id do DataSource? Jelikož Datagrid mám jako komponenu…

nebo jak přes MultiAction předat id do dalšího gridu..

Díky

Editoval jAkErCZ (8. 3. 2018 12:41)

r2294743
Člen | 16
+
0
-

Měl bych dotaz ohledně překleslování. Při obnovení stránky se mi správně přepíše status, ale ajaxem se nic neprovede.

Předem děkuji za pomoc

<?php
    public function createComponentGuestList($name)
    {
        $grid = new DataGrid($this, $name);
        $id = $this->getParameter('id');
        $grid->setDataSource($this->pluginFacade->getGuestList($id));

        $grid->addColumnStatus('status', 'Status')
            ->setSortable()
            ->addOption("paid", 'Paid')
            ->setClass('btn-success')
            ->endOption()
            ->addOption("unpaid", 'Unpaid')
            ->setClass('btn-danger')
            ->endOption()
            ->onChange[] = [$this, "changeStatus"];

        $grid->addFilterMultiSelect('status', 'Status:', [
            "paid" => 'Paid',
            "unpaid" => 'Unpaid'
        ]);
    }

    public function changeStatus($id, $status)
    {
        $this->pluginFacade->changeUserPaidEvent($id, $status);
        $this->flashMessage("Status was updated to $status.", 'success');

        if ($this->isAjax()) {
            $this->redrawControl('flashes');
            $this['guestList']->redrawControl($id);
        } else {
            $this->redirect('this');
        }
    }

    function renderView($event){
        $this->template->event = $this->pluginFacade->getEvent($event);
    }

?>
petr.pavel
Člen | 535
+
0
-

@jAkErCZ: Šlo by takto?

<?php
public function actionAcces($configureId)
{
  /** @var DataGrid $grid */
  $grid = $this->getComponent('grid');
  $grid->setDataSource(
    $this->repo->findByConfigureId($configureId)
  );
);
}

public function createComponentGrid($name)
{
  $grid = new DataGrid($this, $name);
  ...
  return $grid;
}
?>

P.S. Zakládejte nové vlákno. Budete mít větší šanci, že si vás někdo všimne.

Editoval petr.pavel (9. 3. 2018 19:36)

Čamo
Člen | 798
+
0
-

Zdravím,
nevie niekto či existuje spôsob ako naštýlovať pozadie bunky v datagride? Potreboval by som zafarbiť background ale iba na základe podmienky.
Je tam metoda ->addAttributes(['style' => 'background-color: red']) ale tá podfarbí celý stlpec a nedá sa to dať do podmienky.

Editoval Čamo (11. 3. 2018 19:22)

MW
Člen | 626
+
0
-

Zdravím a prosím o info.
Instaluji grid přes Yarn a nestáhnou se me všechny JS balíčky, jaké jsou uvedeny v dokumentaci a jaké se mě před časem instalovaly automaticky přes bower.

Dělám chybu nebo je to ok a musím je tam nacpat ručně? Používá někdo Yarn?

Moc díky

Pavel Janda
Člen | 977
+
0
-

@MW Pro yarn jsem snad nic nedělal. Můžete někdo poslat PR nebo nějaký užitečný odkaz, jak vše dostat na yarn?

MW
Člen | 626
+
0
-

Já jsem právě našel Ublaboo na Yarnu, tak práve řeším, jestli jsou tam správně nastavené závislosti.
Také o Yarnu toho moc nevím, a přecházím z Boweru. Na Boweru si to natáhlo všechny balíky najednou..

Díky

Ivorius
Nette Blogger | 119
+
0
-

@H0w4rd Tohle by ti mělo pomoci https://github.com/…rid/pull/628 – Taky jsem s tím bojoval. Chyba se totiž vyskytuje jen v produkčním modu (tedy na serveru nebo na localu pokud si to zapneš) a to v tom případě, že chceš zavolat signál parent komponenty. Jenže k tomu nikdy nedojde, protože nette vrátí v produkčním modu v url # namísto #error a projde to tedy podmínkou.

MW
Člen | 626
+
0
-

Pavel Janda napsal(a):

@MW Pro yarn jsem snad nic nedělal. Můžete někdo poslat PR nebo nějaký užitečný odkaz, jak vše dostat na yarn?

Podařilo se tam prosím nějak dostat ty závislosti? Koukal jsem i na NPM a také tam nejsou. Jen ten Bower je má. Nebo co použít pro ty JS závislosti ? Moc díky za info.

Dark0ne
Člen | 47
+
0
-

Zdravím,

používám TreeView (https://ublaboo.org/…id/tree-view) a nějak si nemůžu poradit s jedním problémem:

Tento Grid jsem použil k vytvoření stromové struktury kategorie produktů, což je v pohodě. Nyní chci však v této stromové struktuře mít i produkty samotné (ne jen jejich kategorie a podkategorie). Narážím tedy na problém, že chci data i z jiné tabulky navázané jen pomocí cizího klíče.

Pro ilustraci něco takového:

- Obývací pokoj (tabulka typ kategorie)
	-- Sedačky	(tabulka typ kategorie)
		-- Sedačka Lana AA4 (tabulka produkt)

Je toto řešitelné prostředky datagridu? Případně mohl by mne někdo navést, jak na to?

Děkuji za rady.

Petr Parolek
Člen | 455
+
0
-

Ahoj, netuším, jestli problém přímo souvisí s datagridem. Dnes jsem aktulizoval Nette Componet Model na 2.4.0 a začalo mi házet:

User Deprecated Nette\ComponentModel\Component::__construct() argument $parent is deprecated, use $parent->addComponent() instead.

Ukázku jsem oprášil na https://github.com/…der-datagrid , kde se taky problé projevuje.

Prosím, víte o nějakém řešení nebo jsem narazil na bug?

Editoval ppar (21. 3. 2018 21:58)

Petr Parolek
Člen | 455
+
0
-

Vyřešeno: https://github.com/…d/issues/631

<?php
$grid = new DataGrid();
$this->addComponent($grid, $name);
?>
Shampoo
Člen | 38
+
0
-

Ahoj,

řeším následující problém.
Pro filtrování hodnot ve sloupci datagridu používám SelectBox. Problém nicméně je, že filter hledá podřetězce.

příklad hodnot:

  • test
  • test1
  • test2
  • test1
  • test3

Pokud zvolím filter test, tak dostanu úplně všechny hodnoty, což není cílem.
Je možné nějak zařídit, aby filterSelect hledal přesnou shodu?

filterText má např. metodu setSplitWordsSearch(FALSE), ale tu použít nemůžu.

Díky za rady.

Pavel Janda
Člen | 977
+
0
-

@Shampoo FilterText::setExactSearch(true)

Edit: Aha, ty mluvíš o selectboxu. Fakt selectbox vyhledává %value%? To se mi nezdá. V kódu to tak není.. Viz FilterSelect.php:

public function getCondition()
{
	return [$this->column => $this->getValue()];
}

Editoval Pavel Janda (22. 3. 2018 13:00)

pitr82
Člen | 121
+
0
-

@PavelJanda Ahoj,
jak je to s podporou bootstrap 4.0 ?

David Grudl
Nette Core | 8218
+
+1
-
Jarek92
Člen | 91
+
0
-

Ahoj, řešil prosím někdo následující problém? Upgradoval jsem nette na nejnovější a začala mi Tracy házet varování:

User Deprecated
Replace deprecated Nette\Object with trait Nette\SmartObject in /var/www/clients/client4/web5/web/vendor/ublaboo/datagrid/src/DataModel.php:25

Kód komponenty: (vyhazuje na řádku 66)

63:			   $grid = new \Ublaboo\DataGrid\DataGrid();
64:            $this->addComponent($grid, $name);
65:            $this->setLogs();
66:            $grid->setDataSource($this->logs);

Je nějaké jiné řešení, než downgradovat zpět na dřívější verzi Nette?

Petr Parolek
Člen | 455
+
0
-

Jarek92 napsal(a):

Ahoj, řešil prosím někdo následující problém? Upgradoval jsem nette na nejnovější a začala mi Tracy házet varování:

User Deprecated
Replace deprecated Nette\Object with trait Nette\SmartObject in /var/www/clients/client4/web5/web/vendor/ublaboo/datagrid/src/DataModel.php:25

Kód komponenty: (vyhazuje na řádku 66)

63:			   $grid = new \Ublaboo\DataGrid\DataGrid();
64:            $this->addComponent($grid, $name);
65:            $this->setLogs();
66:            $grid->setDataSource($this->logs);

Je nějaké jiné řešení, než downgradovat zpět na dřívější verzi Nette?

Použij nejnovější verzi gridu

Editoval ppar (22. 3. 2018 15:56)

Pavel Janda
Člen | 977
+
0
-

@pitr82 Je, ve větvi bootstrap-4. S ofiko releasem čekám už několik měsíců na https://github.com/…/issues/1135 :/ . Viz github issue: https://github.com/…d/issues/416

Shampoo
Člen | 38
+
0
-

Pavel Janda napsal(a):

@Shampoo FilterText::setExactSearch(true)

Edit: Aha, ty mluvíš o selectboxu. Fakt selectbox vyhledává %value%? To se mi nezdá. V kódu to tak není.. Viz FilterSelect.php:

public function getCondition()
{
	return [$this->column => $this->getValue()];
}

Heleď, já fakt netuším, ale prostě mi to takhle funguje defaultně…

monty
Člen | 66
+
0
-

Ahoj Pavle a ostatní příznivci :)

Rád bych si do filtrů přidal checkbox, který bude filtrovat záznamy podle nějaké hodnoty.

Z dokumentace se mi to zjistit nepodařilo, je to možné?

Díky
Petr

H0w4rd
Člen | 96
+
0
-

Zkus to pomocí šablon filtrů: https://ublaboo.org/datagrid/filter#…

Pavel Janda
Člen | 977
+
0
-

@monty Podobně, jak navrhuje @H0w4rd, udělal bych si filtr typu select se dvěma hodnotami – 0 a 1, pak přidal vlastní šablonku a select vykreslil jen jako checkbox.. Trošku praseúprava, ale rychlá a určtiě funkční bez nutnosti implementovat nový typ filtru do všech datasourců. Filtr typu checkbox implementován by-default není.

cujan
Člen | 410
+
0
-

@PavelJanda nevies mi nahodou pomoct…dost preslapujem na mieste…
caute taham data z dvoch tabuliek prepojenych cez cudzi kluc…
clenKurzu(id,idOsoba, idKurz)
kurz(id, idNazovKurzu,…)

dokazem si ku osobe vytiahnut prislusne udaje o kurze z tabulky kurz…len nazov kurzu potrebujem tahat z tretej tabulky nazovKurzu(id, nazov…) ktora je cudzim klucom prepojena s tabulkou kurz…ako nato?

<?php
public function create() {

	$grid = new DataGrid();
	$grid->setDataSource($this->clenoviaKurzuManager->getRecords());
	$grid->addColumnText('idKurz', 'Nazov kurzu','kurz.idNazovKurzu');
	$grid->addColumnDateTime('zaciatok_kurzu', 'Zaciatok','kurz.zaciatok_kurzu');
	$grid->addColumnDateTime('koniec_kurzu', 'koniec','kurz.koniec_kurzu');
	$grid->addColumnDateTime('cislo_protokolu', 'cislo protokolu','kurz.cislo_protokolu');

	return $grid;
    }
?>

Editoval cujan (27. 3. 2018 10:35)

cujan
Člen | 410
+
0
-

no cize tento select mi vracia co potrebujem

<?php
SELECT pilcik_db.kurz.idNazovKurzu, pilcik_db.kurz.zaciatok_kurzu, pilcik_db.nazovKurzu.nazov FROM pilcik_db.clenoviaKurzu inner join pilcik_db.kurz  on ((kurz.id = clenoviaKurzu.idKurz) and clenoviaKurzu.idClen = 10 ) inner join pilcik_db.nazovKurzu ON nazovKurzu.id = kurz.idNazovKurzu;

?>

uz len ho potrebujem namapovat na ublaboo

cujan napsal(a):

@PavelJanda nevies mi nahodou pomoct…dost preslapujem na mieste…
caute taham data z dvoch tabuliek prepojenych cez cudzi kluc…
clenKurzu(id,idOsoba, idKurz)
kurz(id, idNazovKurzu,…)

dokazem si ku osobe vytiahnut prislusne udaje o kurze z tabulky kurz…len nazov kurzu potrebujem tahat z tretej tabulky nazovKurzu(id, nazov…) ktora je cudzim klucom prepojena s tabulkou kurz…ako nato?

<?php
public function create() {

	$grid = new DataGrid();
	$grid->setDataSource($this->clenoviaKurzuManager->getRecords());
	$grid->addColumnText('idKurz', 'Nazov kurzu','kurz.idNazovKurzu');
	$grid->addColumnDateTime('zaciatok_kurzu', 'Zaciatok','kurz.zaciatok_kurzu');
	$grid->addColumnDateTime('koniec_kurzu', 'koniec','kurz.koniec_kurzu');
	$grid->addColumnDateTime('cislo_protokolu', 'cislo protokolu','kurz.cislo_protokolu');

	return $grid;
    }
?>
monty
Člen | 66
+
0
-

@H0w4rd @PavelJanda
Jo, vydal jsem se přesně touhle cestou ;)

Díky oběma
P

Dark0ne
Člen | 47
+
0
-

Zdravím,

mám datagrid na obrazovce s GET parametrem detail?id=21. Tento parametr se mi však při akcích datagridu ztrácí a v podstatě ihned se přesměruje na něco takového detail?exeGrid-per_page=20. Co udělat pro to, aby id parametr zůstal v URL?

Díky za rady

Editoval Dark0ne (27. 3. 2018 18:40)

Pavel Janda
Člen | 977
+
+1
-

@Dark0ne @persistent :)

Dark0ne
Člen | 47
+
0
-

Pavel Janda napsal(a):

@Dark0ne @persistent :)

Paráda, díky :).

Čamo
Člen | 798
+
0
-

Zdravím,
narazil som dnes na problém s funkciou setDefaultSort(). Ublaboo používam s Nextras ORM.
Problém je v tom, že ak je na stlpci volaná metóda setSortable() tak setDefaultSort() sa vôbec neprejavý. Ak setSortable() odstránim tak setDefaultSort() funguje. Nechápem prečo sa to deje.

$grid->setDefaultSort(['closed' => 'DESC'], FALSE);  // Does not work with setSortable()

$grid->addColumnDateTime('closed', "$cDomain.date")
	->setRenderer( function ( $item ) use ( $cDomain ) {
		/** @var Task $item */
		return  $item->closed->format( 'j. n. Y' );
	})
	->setTemplateEscaping( FALSE )
	->setSortable()  // Has to be removed if I want defaultSort()
	->setFilterDate()
		->setCondition( function ($fluent, $value) {
			/** @var \Nextras\Orm\Mapper\Dbal\DbalCollection $fluent */
			$start = DateTime::createFromFormat( 'j. n. Y', $value)->setTime( 0, 0, 0 );
			$end = DateTime::createFromFormat( 'j. n. Y', $value)->setTime( 23, 59, 59 );
			$fluent->getQueryBuilder()
				->from('tasks', 'tasks')
				->andWhere( 'tasks.closed > %dt', $start )
				->andWhere( 'tasks.closed < %dt', $end );
		});

EDIT: Hmm tak to vyzerá, že workaround pre default sort vyzerá asi takto:

	if( ! $grid->sort )
	{
		$collection = $collection->orderBy( ['closed' => 'DESC'] );
	}

Editoval Čamo (28. 3. 2018 12:25)

kralik
Člen | 230
+
0
-

Ahoj,
datagrid funguje super.
Jenže nyní potřebuji do projektu přidat nette.ajax.js.
Nalinkoval jsem si https://github.com/…ette.ajax.js a bohužel mi přestal fungovat $grid->addColumnStatus.

Při změně, výběru položky, nedojde k „redirectu“.
Po manuálním refreshi je u položky nová hodnota, ale k refreshi nedojde automaticky.

Prosím nesetkali jste se s tímto někdo?

Předem díky

Isigarek
Člen | 74
+
0
-

Dobrý den,
měl bych dotaz ohledně datagridu. Potřeboval bych ho otevřít aneb v tree view mít po spuštění a vytvoření komponenty mít všechny nody otevřené. Jde to nějak?

MW
Člen | 626
+
0
-

Zdravím a moc prosím o nasměrování.

mám rozdělaný jeden projekt, kde mám i tento grid. Teď jej budu rozšiřovat a potřebuji Boostrap ver.4. Zároveň jsem chtěl přejít z Boweru na Yarn, jak jsem zmínil před časem, ale nedaří se, tak prosím o radu:

  1. Jaké jsou skutečně potřeba JSka, je to aktuální dle Boweru? Myslím ty závislosti.
  2. Na Yarnu je nějaký jednoduchý, asi automatizovaně převzatý, packages.json, kde nejsou závislosti. Chystají se ? Na Yarnu asi nejsou všechny.
  3. Není Yarn špatná cesta? Nebo jaký systém pro správu JS budeš používat dále?
  4. Grid mám poslední verze, jak prosím přechodím grid na BS4?

Moc díky !

Isigarek
Člen | 74
+
0
-

MW napsal(a):

Zdravím a moc prosím o nasměrování.

mám rozdělaný jeden projekt, kde mám i tento grid. Teď jej budu rozšiřovat a potřebuji Boostrap ver.4. Zároveň jsem chtěl přejít z Boweru na Yarn, jak jsem zmínil před časem, ale nedaří se, tak prosím o radu:

  1. Jaké jsou skutečně potřeba JSka, je to aktuální dle Boweru? Myslím ty závislosti.
  2. Na Yarnu je nějaký jednoduchý, asi automatizovaně převzatý, packages.json, kde nejsou závislosti. Chystají se ? Na Yarnu asi nejsou všechny.
  3. Není Yarn špatná cesta? Nebo jaký systém pro správu JS budeš používat dále?
  4. Grid mám poslední verze, jak prosím přechodím grid na BS4?

Moc díky !

Možný přechod vidím tím, že si upravíš šablonu pro datagrid viz. jeho dokumentace. https://ublaboo.org/…rid/template

Pavel Janda
Člen | 977
+
0
-

@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).

andros
Člen | 145
+
0
-

Ahoj,
snažím se vytvořit sloupec, který zobrazí celkovou cenu (počet ks * cena/ks). To řeším takto:

$grid->addColumnNumber('totalPrice', 'Celkem')
			->setRenderer(function($orderItem):float {
				return $orderItem->price * $orderItem->pcs;
			})

Rád bych ale nastavil také formát výsledné ceny.

->setFormat(2, ',', '.');

To mi ale bohužel nefunguje. Nevíte někdo prosím, jak to udělat ?

Díky moc za rady.

rkor
Člen | 62
+
+1
-

andros napsal(a):

Ahoj,
snažím se vytvořit sloupec, který zobrazí celkovou cenu (počet ks * cena/ks). To řeším takto…

Jednoduše ;-)

$grid->addColumnNumber('totalPrice', 'Celkem')
 			->setRenderer(function($orderItem):string {
 				return number_format($orderItem->price * $orderItem->pcs,2,',','.');
 			})
andros
Člen | 145
+
0
-

Díky. Při neděli už mi to nemyslí, tohle mi taky mohlo dojít :)

rkor napsal(a):

andros napsal(a):

Ahoj,
snažím se vytvořit sloupec, který zobrazí celkovou cenu (počet ks * cena/ks). To řeším takto…

Jednoduše ;-)

$grid->addColumnNumber('totalPrice', 'Celkem')
 			->setRenderer(function($orderItem):string {
 				return number_format($orderItem->price * $orderItem->pcs,2,',','.');
 			})