ublaboo/datagrid: mocný, rychlý, rozšiřitelný, hezký, anglicky dokumentovaný datagrid
- Petr Steinbauer
- Člen | 26
Ivorius napsal(a):
Rád bych dostal resetovací tlačítko (odkaz) filtrace také nahoru nad výpis tabulky – někam k filtrovacím políčkům. Zkusil jsem tedy nasimulovat chování resetovacího tlačítka takto
Bohužel při odeslání filtračního formuláře se to nevykreslí, protože se neodesílá snippet kde by byl ten toolbar. Napadá někoho řešení jak dostat resetovací tlačítko nahoru?
Do archivu, třeba někomu pomůže…
PHP (baseGrid):
JS:
- jikki
- Člen | 73
Ivorius napsal(a):
Rád bych dostal resetovací tlačítko (odkaz) filtrace také nahoru nad výpis tabulky – někam k filtrovacím políčkům. Zkusil jsem tedy nasimulovat chování resetovacího tlačítka takto
Bohužel při odeslání filtračního formuláře se to nevykreslí, protože se neodesílá snippet kde by byl ten toolbar. Napadá někoho řešení jak dostat resetovací tlačítko nahoru?
@Ivorius Přidej si za to ještě tohle
- jikki
- Člen | 73
@Ivorius Koukám, že ani jedno z řešení není ideální. Protože dojde k překreslení celé tabulky, tedy i filtrů.. tzn. když píšeš do filtru hledaný text, tak se napíše 1–2 písmena a dojde k překreslení a kurzor zmizí. Což není moc ideální.
@PavelJanda Nešlo by připsat n:snippet=„toolbar“ do spanu s toolbar tlačítky? Zkoušel jsem to a funguje. Vyřešilo by náš problém :)
- black72
- Člen | 5
Ahoj všem. Jsem začátečník, takže možná stupidní dotaz. Potřebuji
v Gridu dotáhnou data z tabulky photo, takže jsem požil
:related_table.name:through_column_id.
Potřebuji ale ty data dále upravit přes Callback. Neumím se ale v Callbacku
dostat k těm datům z tabulky photo.
Relace je 1:N. Jde o fotky k případům. Nepotřebuji je všechny vypsat, ale
spíše spočítat počet, abzch měl fotky jsou a je jich X nebo fotky
nejsou.
Má to řešení?
Můj kod.
DataSource nastavuji v render metode.
- jAkErCZ
- Člen | 324
Karlito napsal(a):
Ahoj, lze nějak jednoduše přidat pořadí položek do filtrovaného exportu pro CSV ?
Rád bych měl položky vždy
#(pořadí) | název_jednoho_sloupce | název_dalšího_sloupce
Normálně si je vygeneruj metodou setColumns
Ukázka
A pořadí si určíš sám jak chceš 😊
A já mám takový problém když se snažím exportovat data z gridu funkcí
Vrací mi to tuto chybu.
Když tam kódování nevyplním tak se export provede dobře ale texty jsou ala rozsypaný čaj.
Díky za pomoc :)
Editoval jAkErCZ (29. 1. 2021 10:57)
- honzazach
- Člen | 4
Zdravím, bojuji s tím, že mi nefunguje skrývání sloupců (nebo zase nefunguje inlineadd). Netušíte čím by to mohlo být? Předpokládám, že problém je někde ve skriptech.. vzal jsem i skripty přímo z dokumentace, chyba je v požadavku na popper, ale ten se natahuje s bootstrapem a i když ho tam přidám extra, chyba je stejná.
Chyba:
Uncaught TypeError: Bootstrap's dropdowns require Popper.js (https://popper.js.org/)
show dropdown.js:164
toggle dropdown.js:137
_jQueryInterface dropdown.js:375
jQuery 2
_jQueryInterface dropdown.js:362
<anonymous> dropdown.js:528
jQuery 8
<anonymous> alert.js:160
<anonymous> bootstrap.js:9
<anonymous> bootstrap.js:10
dropdown.js:164:14
show dropdown.js:164
toggle dropdown.js:137
_jQueryInterface dropdown.js:375
jQuery 2
_jQueryInterface dropdown.js:362
<anonymous> dropdown.js:528
jQuery 8
<anonymous> alert.js:160
<anonymous> bootstrap.js:9
<anonymous> bootstrap.js:10
Šablona:
Editováno:) Díky případně za pomoc
Editoval honzazach (30. 1. 2021 19:21)
- Pavel Janda
- Člen | 977
@jAkErCZ Dokázal bys, pls, udělat ukázku v sandboxu a nahrát někam na github? Mrknl bych se na to, díky. Na jaké platformě to jede? Pokud tam hodíš i Dockerfile/docker-compose, tak ideál 👍👍 Díky
- Karlito
- Člen | 18
jAkErCZ napsal(a):
Karlito napsal(a):
Ahoj, lze nějak jednoduše přidat pořadí položek do filtrovaného exportu pro CSV ?
Rád bych měl položky vždy
#(pořadí) | název_jednoho_sloupce | název_dalšího_sloupceNormálně si je vygeneruj metodou setColumns
Ukázka
A pořadí si určíš sám jak chceš 😊
A já mám takový problém když se snažím exportovat data z gridu funkcí
Vrací mi to tuto chybu.
Když tam kódování nevyplním tak se export provede dobře ale texty jsou ala rozsypaný čaj.
Díky za pomoc :)
Špatně jsme se pochopily, myslel jsem pořadí jako očíslované řádky. Asi jsem se špatně vyjádřil. Pokusím se to nastínit:
Potřeboval bych do toho sloupce přidat nějaký iterátor, který bude vypisovat čísla podle řádků a né podle obsahu, aby při filtraci nedocházelo k prohazování očíslování řádků.
Tedy si vyfiltruji například druhý a čtvrtý řádek a chtěl bych v exportu vidět nasledující
Co se týče tvého problému, narazil jsem na to taky a vyřešil jsem to né moc pěkně, ale funguje to tak.
- Siki
- Člen | 9
jAkErCZ napsal(a):
A já mám takový problém když se snažím exportovat data z gridu funkcí
Vrací mi to tuto chybu.
Když tam kódování nevyplním tak se export provede dobře ale texty jsou ala rozsypaný čaj.
Díky za pomoc :)
Taky jsem měl stejný problém PHP 7.4.14 a Datagrid 6.6.1. Windows-1250 jsem nahradil ISO-8859–2:
- turbo80
- Člen | 50
galab napsal(a):
@turbo80 Asi bych to řešil přes setRenderer, kde bych vrátil input a na JS onBlur bych navázal volání nějaké handle update metody. Bez použití datagridovského editu.
@galab
Super, ale vubec nevim jak na to? mohl by jsi me trosku nakopnout.
Moc dekuji
Editoval turbo80 (16. 2. 2021 22:26)
- MW
- Člen | 626
Zdravím,
chápu prosím správně, že zatím Ublaboo nepodporuje?
Problem 1
– ublaboo/datagrid[v6.7.0, …, v6.7.1] require nette/forms >=3.0.1
<3.1.0 → found nette/forms[v3.0.1, …, v3.0.7] but it conflicts with your
root composer.json require (^3.1).
– Root composer.json requires ublaboo/datagrid ^6.7 → satisfiable by
ublaboo/datagrid[v6.7.0, v6.7.1].
Díky moc
Editoval MW (22. 2. 2021 21:22)
- MW
- Člen | 626
jAkErCZ napsal(a):
Narazil jsem na chybu.
Narazil jsem na to samé + další chyba, co David již řeší zde ":https://forum.nette.org/…ri-getvalues
- jiri.pudil
- Nette Blogger | 1034
Vyhazuje ti to skutečně tu výjimku, kterou máš v catch
?
Popř. máš v souboru s catch
em správně její
namespace/use?
- MW
- Člen | 626
jiri.pudil napsal(a):
Vyhazuje ti to skutečně tu výjimku, kterou máš v
catch
? Popř. máš v souboru scatch
em správně její namespace/use?
Ano, jen bych ji chtěl podchytit a poslat do flashMessage .. je to v podstatě čistý Nette\Sandbox. Ta vyjimka(metoda) je v modelu prázdná. Spíše asi nevím, jak a kde to implemetovat, aby to nepadalo do laděnky :)
Editoval MW (26. 2. 2021 10:00)
- Pavel Janda
- Člen | 977
@radas Určitě toho půjde docílit. Například, můžeš si v eventu „onFiltersAssembled“ zkontrolovat, zda nějaké filtry existují a pokud ne, vytáhnout si data source („getDataSource“) a přidat do něj něco jako u Dibi „->where(1 = 0)“.
Editoval Pavel Janda (2. 3. 2021 9:21)
- Pavel Janda
- Člen | 977
@lubos Určitě, šablonu komponenty si vytáhneš normálně přes DataGrid::getTemplate(). Nad tím už můžeš dělat standardní kejkle s přidáváním filtrů, maker atd.
- Pavel Janda
- Člen | 977
Normálně sem nedávám info o releasech, ale nová verze 6.8.0 fixuje nějaké poslední bugy + podporuje nette/forms ^3.1.3.
- Sami_
- Člen | 15
Ahoj, chci AJAXově odeslat data a následně jimi naplnit Datagrid a reloadnout ho, avšak Datagridu se vykreslí pouze 1 strana se záznamy a po překliknutí strany všechny záznamy zmizí.
V createComponentGrid mám setDataSource($src)
, kde
$src
je proměnná v presenteru (na začátku prázdné pole).
Když potom v zavolaném handleFillWithData($data)
naplním
$src
daty a překreslím grid přes grid->reload()
,
Datagrid se opravdu vykreslí s daty na 1 stránce. Když stranu překliknu
nebo změním počet vypisovaných řádků, data zmizí a Datagrid je opět
prázdný.
Asi by fungovalo, kdybych data uložil do databáze, avšak já potřebuju, aby
je uživatel viděl předtím, než se uloží.
Napadá vás, co dělám špatně? Díky : )
Editoval Sami_ (8. 3. 2021 19:50)
- Kamil Valenta
- Člen | 835
Zkontroluj si všechna místa, kde na $src saháš. Je možné, že se hodnota pole persistencí přenese a ty si ho pak někde nezáměrně vynuluješ…
Editoval Kamil Valenta (8. 3. 2021 22:19)
- Sami_
- Člen | 15
Kamil Valenta napsal(a):
Zkontroluj si všechna místa, kde na $src saháš. Je možné, že se hodnota pole persistencí přenese a ty si ho pak někde nezáměrně vynuluješ…
Posílám minimalistický kód. Na $src opravdu nesahám
Presenter:
Latte (Blok ‚content‘ includuju v layoutu):
… a javascript na odeslání dat a přijetí odpovědi (Naja).
- Kamil Valenta
- Člen | 835
Já bych si dal ten persistentní $src do té komponenty, ne do presenteru. Tak mi to funguje…
- Kamil Valenta
- Člen | 835
Píšu z hlavy, takže to není copy-paste řešení. Ale takto mi to
funguje.
Nezohledňuju tady DI a továrničky, to si přizpůsob své struktuře.
Také názvy nemusí být ideální, neznám kontext, jen jsem chtěl
jednotlivé komponenty oddělit, aby bylo zřejmé co je kde…
Je to prostě komponenta v komponentě, přičemž ta vnější má persistentní parametr, ta vnitřní jej využívá.
- Sami_
- Člen | 15
@KamilValenta
Vážím si tvé pomoci, ale jsem stále bezradný. Souhlasí tento kód
s tvými myšlenkami?
Komponenta ImportGrid:
Šablona komponenty:
Presenter:
Mám 2 komponenty v sobě, $src
je persistent, ale jakmile
kliknu na další stránku gridu, $src
se nejspíš vyprázdní,
data zmizí.
EDIT: Zkoušel jsem dumpovat a když teda překliknu stránku v datagridu, spustí se znovu createComponentImportGrid funkce z Presenteru. Je toto očekávané chování? Jsem v tomto trochu neznalý, musím si doplnit vědomosti z dokumentace
Editoval Sami_ (9. 3. 2021 18:30)
- Kamil Valenta
- Člen | 835
Zdá se, že ano, ale v handleTest($data) musíš invalidovat vnější
ImportGrid.
Pokud by to nepomohlo, vyextrahoval bych to nějak z řešení,
které mám…
EDIT: ano, při ajaxovém požadavku (např. při stránkování) se celý request rozběhne od počátku.
Editoval Kamil Valenta (9. 3. 2021 18:34)
- Sami_
- Člen | 15
Kamil Valenta napsal(a):
Zdá se, že ano, ale v handleTest($data) musíš invalidovat vnější ImportGrid.
Pokud by to nepomohlo, vyextrahoval bych to nějak z řešení, které mám…EDIT: ano, při ajaxovém požadavku (např. při stránkování) se celý request rozběhne od počátku.
Zkusil jsem obalit vnější ImportGrid do snippetu a ten v handleTest invalidovat, nic se nezměnilo : (
- Pavel Janda
- Člen | 977
Tak to možná zkuste uložit do session, to by mělo být celkem rychlé/snadné řešení.