ublaboo/datagrid: mocný, rychlý, rozšiřitelný, hezký, anglicky dokumentovaný datagrid
- Pepino
- Člen | 185
@Čamo střílím od boku, ale neslouží k tomu setCondition (https://examples.contributte.org/…eton/filters) ?
- Čamo
- Člen | 768
Prosím vás ako sa robí filtrovanie keď datasource je array?
Mám to teraz takto:
->setFilterSelect($hasAgenciesAll)
->setCondition(function($datasource, $value) use ($agencies) {
if( $value == 'all' ) return $datasource;
$return = [];
foreach ($datasource as $row) {
if( $value == 1 && isset($agencies[$row['agency_id']]) ) $return = $row;
if( $value == 0 || !isset($agencies[$row['agency_id']]) ) $return = $row;
}
return $return;
});
ale dostávam z toho error
PropertyAccessor requires a graph of objects or arrays to operate on, but it found type "integer" while trying to traverse path "id" at property "id"
EDIT
Tak som na to prišiel. Treba proste upraviť to vstupné pole a to sa predáva odkazom takže sa to vlastne prejaví aj na celom datasource.
Editoval Čamo (5. 9. 2022 9:01)
- krkabol
- Člen | 5
ahoj,
pro vyfiltrované položky (datasource Doctrine) bych chtěl udělat proklik na
samostatnou stránku kde se vykreslí jinou Latte šablonou – pro
položky tiskneme štítky s čárovým kódem, takže v gridu si krásně
vyfiltruje a potom se chce podívat na preview.. A nemohu to vymyslet –
addExportCallback() mi sice zpřístupní filtrovaný subset, ale poradili byste
mi prosím někdo kudy dál, jak si ho přehodit někam na úroveň presenteru
nebo jinak se dostat k tomu abych si filtrovaný set položek zpracoval
nezávisle na gridu?
díky předem
- Melebius
- Člen | 16
@PavelJanda Bylo by, prosím, možné opět zpřístupnit dokumentaci? Web ublaboo.org už nefunguje, stránka https://ublaboo.paveljanda.com/datagrid/, avizovaná na GitHubu, hlásí 404 a ještě má problém s certifikátem pro HTTPS…
- Pepino
- Člen | 185
- Pavel Janda
- Člen | 973
Melebius napsal(a):
@PavelJanda Bylo by, prosím, možné opět zpřístupnit dokumentaci? Web ublaboo.org už nefunguje, stránka https://ublaboo.paveljanda.com/datagrid/, avizovaná na GitHubu, hlásí 404 a ještě má problém s certifikátem pro HTTPS…
Ahoj, github.com/dg/ublaboo-datagrid je nějaký davidům starší klon.
Tady je oficiální repozitář: https://github.com/…tte/datagrid
Dokumentace: https://contributte.org/…te/datagrid/
Demo se snippety kódu: https://examples.contributte.org/…id-skeleton/
- krkabol
- Člen | 5
dms napsal(a):
Snad jsem spravne pochopil ale zkusil bych Group akcí a v te udelat redirect s ideckama v get parametru (oddelil bych je carkou pres implode) na pozadovany jiny presenter. V tom pak idecka explodnout a mel bys mit pozadovana data
@dms díky, vyzkouším
Edit: jede, takže ještě jednou díky!
Editoval krkabol (7. 11. 2022 13:27)
- theo
- Člen | 57
Narazil jsem na zajímavý problém. Z nějakého důvodu nechci použít
CSV export přímo z datagridu (špatně mi escapuje řetězce), takže
používám League\Csv jako komponentu pro export do CSV. Funguje pěkně, ale
zákazník by si přál, aby se do CSV exportu dostaly jen sloupce, které jsou
zapnuté (viditelné). Myslel jsem si, že to udělám skrze
$grid->getColumnsVisibility()
a nastavení hodnoty
'visible'
daného sloupce, ale narazil jsem na to, že tato hodnota
vůbec nereflektuje aktuálně nastavenou viditelnost daného sloupce. Chápu
význam této vlastnosti špatně, nebo je to chyba? Kde tedy najdu nějaký
příznak viditelnosti sloupců? (Podotýkám, že nemám na mysli
defaultHide).
- Martin Vágovszký
- Člen | 7
Zdravím, poradí mi někdo prosím jak udělat editaci řádku datagridu doubleclickem místo tlačítka? Napadlo mě řešit to něják javascriptem, ale třeba je nějáké hezčí řešení o kterém nevím. Díky za radu
- igi
- Člen | 10
Zdravím, začal jsem používat tuto komponette a musím ho pochválit. Dá
se v něm jednoduše použít jako zdroj sql tabulky spojené joinem?
Respektive možná to ani nepotřebuji, stačilo by mi aby tam byl i sloupec
typu select(to jsem nikde v dokumentaci nenašel), kde by klíč byl cizí
klíč a hodnota by byla hodnota z té připojené tabulky. Selectem to chci
z důvodu, že by to mělo být editovatelné, takto by to bylo docela
pohodlné, že uživatel by si vybral z dostupných jiných hodnot. Jak to
prosím jednoduše implementovat? Děkuji.
EDIT: ještě tu mám další problém, nevím jestli je to chyba v gridu nebo
dělám něco špatně, ale když jsem přidal možnost inline přidání
řádku přesně dle návodu, tak místo toho se mi objevila „komponenta“
pro skrývání sloupců.
Editoval igi (20. 1. 14:42)
- tom
- Člen | 154
Ahoj,
v ramci datasource mam nektere slouce takove
CAST(AES_DECRYPT(u.telefon, 'SALT') AS CHAR(255)) as telefon
a kdyz
pak pouzivam filtr
$grid->addFilterText('telefon', 'Telefon')->setSplitWordsSearch(false);
tak mi to nefunguje, protoze misto
WHERE (CAST(AES_DECRYPT(u.telefon, 'SALT') AS CHAR(255)) LIKE '%777%') ` se vytvori dotaz `AND (
telefon`
LIKE ‚%77%‘) `
Jde s tim neco delat? nebo si v ramci stranky musim udelat cely svuj novy filtr?
Diky
- Felix
- Nette Core | 1167
👋 Pripravujeme novou verzi datagridu. S podporou PHP 8, bootstrap 5 a prepsanym javascriptem. Postupne muzete testovat v next vetvi.
https://github.com/…id/pull/1060
https://github.com/…ton/pull/168
- Pavel Kravčík
- Člen | 1111
@Felix: Super práce! Akorát data-provide=datepicker
asi
není nikde definovaný v JS.
Zkus {input $input, type => date}
v šabloně dateFilteru a
dateRangeFilteru, funguje to perfektně a bez dalšího JS.
- Ozzrel
- Generous Backer | 28
@Felix: Když si potřebuju odchytit Paginator a použiju $grid->getPaginator() tak přestane fungovat ItemsPerPage a další věci.
Sranda je že stačí bdump($grid->getPaginator());
Testováno na skeletonu a stejný výsledek.
Edit: vyřešeno jinak
// Toto nahrazeno:
$grid->getPaginator()->setTemplateFile(__DIR__.'/templates/data_grid_paginator.latte');
// Nedokumentovanou funkcí:
$grid->setCustomPaginatorTemplate(__DIR__.'/templates/data_grid_paginator.latte');
Kdyby někdo potřeboval Bootstrap Paginator:
{*
* @param Paginator $paginator
* @param array $steps
* @param string $iconPrefix
*}
{var $link = [$control->getParent(), link]}
<nav n:if="$paginator->pageCount > 1" aria-label="DataGrid Paginator">
<ul class="pagination pagination-sm">
<li n:class="page-item, $paginator->isFirst() ? disabled"><a class="page-link ajax" href="{$link('page!', ['page' => $paginator->page - 1])}"><i n:block="{$iconPrefix}arrow-left" class="{$iconPrefix}arrow-left"></i> {='ublaboo_datagrid.previous'|translate}</a></li>
{foreach $steps as $step}
<li n:class="page-item, $step == $paginator->page ? active">
<a class="page-link ajax" {if $step !== $paginator->page}href="{$link('page!', ['page' => $step])}"{/if}>{$step}</a>
</li>
<span n:if="$iterator->nextValue > $step + 1" class="mx-3">…</span>
{/foreach}
<li n:class="page-item, $paginator->isLast() ? disabled"><a class="page-link ajax" href="{$link('page!', ['page' => $paginator->page + 1])}">{='ublaboo_datagrid.next'|translate} <i n:block="{$iconPrefix}arrow-right" class="{$iconPrefix}arrow-right"></i></a></li>
</ul>
</nav>
Editoval Ozzrel (Dnes 9:28)