ublaboo/datagrid: mocný, rychlý, rozšiřitelný, hezký, anglicky dokumentovaný datagrid
- Failips
- Člen | 54
Felix napsal(a):
nocturne32 napsal(a):
Ahoj, jak je to s dokumentací datagridu na ublaboo? Pouze to přesměrovává na contributte, ale tam toho moc není, co se informací týče.
Edit: ah, pardon, akorát teď jsem si všiml, že v repu jsou alespoň ty docs více rozepsaný, ale škoda té stránky, byla moc fajn :-)
Ta stranka se premistila na jiny web, jinak obsah zustal stejny nebo lepsi. :-)
Obsah je síce rozšírený ale chýba mi tam zdrojový kód gridov v ukážkach, tak ako to bolo v minulej verzii.
- kralik
- Člen | 230
Ahoj,
rád bych se zeptal zda je možné můj oblíbený ublaboo použít pro live
editaci profilu na webu.
Kde jsou různá metadata uživatele a přes kombinaci CTRL+klik lze data
editovat.
Nejedná se o řádkový grid v pravém slova smyslu, co řádek to záznam,
ale spíše to jendo metadato.
Celkem zajímavé je toto: http://components.mesour.com/…nt/editable/
Předem díky za odpověď
- dTTb
- Člen | 30
cafesk8 napsal(a):
Zdravím,
mám export do CSV
$grid->addExportCsv('Export', 'users'.time().'.csv') ->setTitle('Export uživatelů') ->setColumns([ $column_email, ... ... ]);
ale klient požaduje aby export byl v XLS, protože pracují s MS Excel a v něm se prý po otevření CSV a opětovném uložení se z něj stane sypaný čaj a všechna data na řádku již nejsou ve sloupcích, ale za sebou na řádku. Dále má problém s diakritikou, která se mu nezobrazí správně (mně ano, stejně tak v Libre Office, tak v Google Sheets).
Máte nějaký nápad jak udělat export do XLS? Nedá se třeba soubor místo stažení prohlížečem pouze někde uložit a pak si ho převést pomocí
phpoffice/phpspreadsheet
?Děkuji
Staci pridat export callback
$grid->addExportCallback('Export', [$this, 'generateXls'], true);
a vygenerovat export rucne
public function generateXls($data){
foreach($data as $d){
$phpSpreadSheet->...
}
}
- Ondris
- Člen | 37
Ahoj,
zkouším teď doplněk https://ublaboo.org/…data-source/
A hlásí mi to chybu:
Service ‚398_Elasticsearch_Client‘ (type of Elasticsearch\Client): Parameter $endpoint in Elasticsearch\Client::__construct() has no class type hint or default value, so its value must be specified.
Instalace klasicky přes composer. Ale asi mi ještě něco chybí v configu?
Ale než nad tím strávím víc času, tak se zeptám. Je možné s tímto doplňkem udělat našeptávání a negativní vyhledávání (zobraz vše kromě této kategorie)? Nerad bych se to snažil rozjet a pak za dva dny zjistil, že stejně tento doplněk nemůžu použít.
- Pavel Janda
- Člen | 977
@nocturne32 Chybí na Contributte nějaká informace? Kvůli udržitelnosti jsme přesunuli docs do Readmeček na GitHub. Nicméně, dokumentace by měla být 100%, demo k dispozici aktuální + kódem otevřené (viz https://github.com/…tte-datagrid, https://examples.planette.io/…te/datagrid/). A co se těch Readme týče, jsou zobrazené právě na contributte.org, kde by měly být fakt pěkně čitelné. Snad vše funguje. :)
- Pavel Janda
- Člen | 977
@Ondris nejsem si přesně jistý, kde v datagridu lze použít našeptávání a negativní vyhledávání. Asi jde spíš o nějaké custom řešení? Potom bych použil rovnou elastic clienta.. Tebou zmíněný data source jen implementuje potřebné metody, aby se rozchodil datagrid.
- kralik
- Člen | 230
radas napsal(a):
Ahoj, používám vlastní renderování sloupce a narazil jsem na to, že bych tam potřeboval svůj Latte filtr. Je nějaká možnost, jak ho tam dostat pro tohle použití?
{extends $original_template} {define col-mujSloupec} {$item->sloupec|mujLatteFiltr} {/define}
Díky
Ahoj,
snažím se taktéž použít vlastní renderování sloupce, ale nedaří se
mi.
Prosím mohl bys mrknout níže do kódu a poradit, díky.
Presenter
<?php
...
protected function createComponentGridMujProfil($name) {
$data = $this->mainModel->findUser('gridLidi',$this->uid);
$grid = new DataGrid();
$this->addComponent($grid, $name);
// nastaveni GRIDu
$grid->setPrimaryKey('id');
$grid->setDataSource($data);
$grid->setItemsPerPageList([50,100,150]);
$grid->setTemplateFile(__DIR__ . '/templates/Clen/layMujProfil.latte');
$grid->addColumnText('jmeno', 'Jméno');
$grid->addColumnText('prijmeni', 'Příjmení');
$grid->addColumnText('email', 'Email');
$grid->addColumnText('mobil', 'Mobil');
return $grid;
}
...
?>
layMujProfil.latte
<?php
{extends $original_template}
<div class="col-lg-2">
{define col-id}
{$item->id}
{/define}
</div>
?>
- Pavel Janda
- Člen | 977
@dTTb To je zajímavý nápad, to mě ještě nanapadlo. Neplánuji to, neboť je to hodně specifická věc. Asi nejlíp, když si pro to připravíš vlastní šablonu. Asi by to mělo stačit, bez nutnosti upravovat PHP. 🤔
- Failips
- Člen | 54
- Existuje spôsob, ktorým pri potvrdení formulára, a.k.a. onSubmit, nachádzajúceho sa v ItemsDetail sa daný detail neskryje iba sa prekreslí jeho obsah?
- Prečo sa validita formulára nachádzajúceho sa v ItemsDetail kontroluje pomocou pravidiel pre InlineEdit/InlineAdd?
.. používam v6.2.0
Editoval Failips (14. 8. 2019 8:53)
- Pavel Janda
- Člen | 977
@Failips
Ad 1, určitě to lze. Zkus prozkoumat metodu
DataGrid::handleGetItemDetail()
Ad 2, Je možné, že je tam bug. Poslal bys PR pls?
- dTTb
- Člen | 30
Instaloval jsem na starsi projekt s nette 2.4 datagrid v5.7.2 a composer
zahlasil
Package ublaboo/responses is abandoned, you should avoid using it. Use contributte/application instead.
Ale nevim jestli to ma cenu resit?
Z jineho soudku, mohla by setReplacement prijmat i funkci krome pole? Jestli o to bude zajem, tak si zkusim precist navod vyse ;)
- minimal
- Člen | 12
@PavelJanda Zdravím prosím ťa nefunguje mi setTreeView a nie som si istý či to robím správne.
Správa sa to ako keby to tam ani nebolo. Cache som zmazal.
- dTTb
- Člen | 30
Narazil jsem na zajimavy chovani (v6.2.3)
mel jsem
<?php
->setFilterSelect(['' => '',] + ($this->database->table('slist')->fetchPairs('id', 'name')));
?>
a v tabulce filtry fungovaly normalne, ale export pri pouziti libovolnyho
filtru byl prazdnej.
Po oprave na
<?php
->setFilterSelect(($this->database->table('slist')->fetchPairs('id', 'name')))->setPrompt('');
?>
uz funguje i filtrovani exportu. Nicneme to nekonzistentni chovani me trochu znervoznuje.
Jinak velky diky za super komponentu.
- Failips
- Člen | 54
Pavel Janda napsal(a):
@Failips
Ad 1, určitě to lze. Zkus prozkoumat metodu
DataGrid::handleGetItemDetail()
Ad 2, Je možné, že je tam bug. Poslal bys PR pls?
Ahoj,
- Z tejto metódy som nenačerpal žiadne užitočné informácie pre vyriešenie môjho problému. Nevedel by si ešte niečo poradiť?? (prípadne aj niečo konkrétnejšie)
- PR nejdem posielať nakoľko nemám žiaden kód, ktorý by upravil chybné chovanie ale iba som našiel možnú chybu v správaní (váš kód som nepozeral).
Filip
- Filip111
- Člen | 244
Ahoj,
snažím se jako datasource použít view, ale háže mi to cca v polovině
zobrazení stránky chybu
Table 'v_table' does not have a primary key.
(obvykle prvotní načtení gridu bez filtru je ok, nastavení filtru je ok,
smazání nebo změna hodnoty filtru končí touto chybou)
Použití:
$grid->setDataSource($this->context->table('v_table'));
// ($context je instance Nette\Database\Context)
Zmíněnou chybu vyhodí někde ve střevech
Nette\Database\Table\Selection->getPrimary.
Používáte někdo tento grid nad view?
Díky.
- Felix
- Nette Core | 1197
Filip111 napsal(a):
Ahoj,
snažím se jako datasource použít view, ale háže mi to cca v polovině zobrazení stránky chybu
Table 'v_table' does not have a primary key.
(obvykle prvotní načtení gridu bez filtru je ok, nastavení filtru je ok, smazání nebo změna hodnoty filtru končí touto chybou)Použití:
$grid->setDataSource($this->context->table('v_table')); // ($context je instance Nette\Database\Context)
Zmíněnou chybu vyhodí někde ve střevech Nette\Database\Table\Selection->getPrimary.
Používáte někdo tento grid nad view?Díky.
Tohle neni problem datagridu, stavalo se mi to s nette databse i predtim.
- suwer
- Člen | 33
Je nejaka smysluplna moznost, jak si zapamatovat posledni nastaveni datagridu a pak ho pouzit (nejspis) v url, aby se mi datagrid zpatky nacetl v mnou pozadovanem stavu (sort, filter, per page)?
Editaci jednotlivych polozek mam vzdy na vlastni strance. V ramci ni je nekolik formularu, takze muze nekolikrat dojit k odeslani upravenych dat a tim obnoveni stranky. Tzn. tlacitko zpet v prohlizeci pro me neni optimalni volbou, protoze bych se musel n-krat proklikat pres pripadne upravy (odeslani formulare). Potreboval bych vlastni tlacitko zpet, ktere by rovnou mirilo na na uvodni stranku s datagridem a nacetlo ho v jeho poslednim nastaveni.
Editoval suwer (12. 9. 2019 16:16)
- Pavel Janda
- Člen | 977
@suwer Můžeš určitě upravovat rovnou filtrační parametry componenty.. Je to public property. Kdyby cokoliv, zkusím pomoct víc.
DataGrid::$filter
Editoval Pavel Janda (12. 9. 2019 16:29)
- dTTb
- Člen | 30
Filip111 napsal(a):
Ahoj,
snažím se jako datasource použít view, ale háže mi to cca v polovině zobrazení stránky chybu
Table 'v_table' does not have a primary key.
(obvykle prvotní načtení gridu bez filtru je ok, nastavení filtru je ok, smazání nebo změna hodnoty filtru končí touto chybou)Použití:
$grid->setDataSource($this->context->table('v_table')); // ($context je instance Nette\Database\Context)
Zmíněnou chybu vyhodí někde ve střevech Nette\Database\Table\Selection->getPrimary.
Používáte někdo tento grid nad view?Díky.
Pouzivam (s database 3.0) a jede bez problemu.
Mam view na selectu z jedny tabulky a v nem i sloupec id (PK), nevim jestli
to ma vliv na funkci.
- suwer
- Člen | 33
Pavel Janda napsal(a):
@suwer Můžeš určitě upravovat rovnou filtrační parametry componenty.. Je to public property. Kdyby cokoliv, zkusím pomoct víc.
DataGrid::$filter
Ted mi doslo, ze na reseni meho problemu tam mas setRememberState() metodu :-). Da se potom zapamatovany stav i nejak elegantne na vyzadani resetovat jinak nez smazanim session?
- suwer
- Člen | 33
Tak setRememberState() mi bohuzel nepomuze, nemuzu vyuzit session jako uloziste. Kdyby uzivatel otevrel nekolik stranek s datagridem a kazdy by si nejak nastavil, zustalo by platne vzdy pouze nastaveni posledniho datagridu.
Budu muset udelat nejaky workaround, asi pres url parametry, aby si kazda stranka pamatovala pouze sve nastaveni.
- CzeM
- Člen | 9
suwer napsal(a):
Tak setRememberState() mi bohuzel nepomuze, nemuzu vyuzit session jako uloziste. Kdyby uzivatel otevrel nekolik stranek s datagridem a kazdy by si nejak nastavil, zustalo by platne vzdy pouze nastaveni posledniho datagridu.
Budu muset udelat nejaky workaround, asi pres url parametry, aby si kazda stranka pamatovala pouze sve nastaveni.
Ukládá se každá instance zvlášť, takže bez problému můžeš.
- suwer
- Člen | 33
CzeM napsal(a):
suwer napsal(a):
Tak setRememberState() mi bohuzel nepomuze, nemuzu vyuzit session jako uloziste. Kdyby uzivatel otevrel nekolik stranek s datagridem a kazdy by si nejak nastavil, zustalo by platne vzdy pouze nastaveni posledniho datagridu.
Budu muset udelat nejaky workaround, asi pres url parametry, aby si kazda stranka pamatovala pouze sve nastaveni.
Ukládá se každá instance zvlášť, takže bez problému můžeš.
To plati jenom pro ruzne datagridy (komponenty). V pripade jednoho (napr. users) se vytvori usersDatagrid a stav se do session uklada pod timto identifikatorem. Kdyz ten usersDatagrid otevru ve vice tabech, v jednom nastavim filtr a stranku s druhym refreshnu, tak si nacte ulozeny stav toho prvniho. Ovlivnit se to da jedine tak, ze cely stav bude obsahovat url v parametrech. Pak se i po refreshi stranky spravne nastavi.
Po svuj pripad, kdy se z datagridu prokliknu na detail/edit page a po vykonanych upravach se chci vratit na datagrid (a mit ho nastaveny tak, jak jsem mel), jsem predtim zkousel pouzit query parametry z url requestu, jenze treba filtrovani se posila pres POST a do query parameteru se promitne az po dalsi vykonane akci. V podstate by se mi hodil plne stavovy datagrid bez Ajaxu. Takhle se to snazim nejak obejit.
Editoval suwer (13. 9. 2019 12:11)
- Failips
- Člen | 54
Stretol sa niekto s nasledujúcim problémom?
Pri použití InlineAdd/Edit mám vo formuláre select, v ktorom by som rád akceptoval aj hodnoty Null (nezvolenie žiadnej položky zo zoznamu). Ak tam ale nevyberiem položku, tak pri kliku na Save sa vykoná akcia _datagrid_inline_edit_cancel a teda sa nedostanem ani do metódy spracujúcej event OnSubmit.
Vytvorenie selectu.
$container->addSelect('column','Column', [""=>""]+ $this->parent->getEnums()->getItems())
->setAttribute('class="selectpicker"');
Viete prosím pomôcť? Vďaka.
- Pavel Janda
- Člen | 977
@Failips Mohl bys, prosím, toto chování nasimulovat v nějakém
github repozitáři a poslat? Mrknu na to. nechť jako základ dema poslouží
https://github.com/planette/playground
→ contributte-datagrid. Je
to jednoduché demo, kde se dají takovéto věci docela pěkně
testovat. Díkys.
- Failips
- Člen | 54
Ok, našiel som čo spôsobuje volanie akcie _datagrid_inline_edit_cancel. Mám tam overovanie, že ak sa daná hodnota rovná NULL tak 2 ďalšie inputy obdržia atribút disabled aby ich užívateľ nemohol meniť. Pokiaľ tento atribút nieje nastavený tak sa formulár odošle.
Riešením je použiť namiesto disabled atribút readonly :)
- andros
- Člen | 145
Kam zmizela ta úžasná dokumentace k datagridu ? Byla to jedna z nejlepších dokumentací doplňků pro Nette. Proč, když je něco dobré, musí se to zničit a nahradit něčím jiným, naprosto děsným ? Velice mne to zklamalo. Velice si vážím celé Nette komunity, ale tohle byl podle mého názoru naprostý přešlap.
Editoval andros (21. 9. 2019 12:14)
- Felix
- Nette Core | 1197
andros napsal(a):
Kam zmizela ta úžasná dokumentace k datagridu ? Byla to jedna z nejlepších dokumentací doplňků pro Nette. Proč, když je něco dobré, musí se to zničit a nahradit něčím jiným, naprosto děsným ? Velice mne to zklamalo. Velice si vážím celé Nette komunity, ale tohle byl podle mého názoru naprostý přešlap.
Ahoj Jardo, diky za komentar. Aby byl konstruktivni, muzes doplnit co se ti na predchozi libilo a fungovalo vice? At to muzeme vylepsit.
- andros
- Člen | 145
Ahoj Felixi,
předně se omlouvám za můj původní příspěvek. Napsal jsem ho , když jsem zdravě naštval, co jsem viděl tu změnu. Vím že pro komunitu děláš hodně a asi to nebylo vůči tobě a ostatním úplně fér.
Původní dokumentace byla přehlednější. Hlavně pro začátečníky. Obsahovala rovnou příklady včetně implementace. Když jsem s Nette a Ublaboo začínal, byl tenhle způsob dokumentace pro mne neocenitelným pomocníkem. U každé sekce byl zdrojový kód implementace, demo i dokumentace. Vše krásně přehledně na jednom místě. Přečetl jsi si co by to mělo umět, povídal jsi se jak je to zapracované a jak to pak funguje. Dnes máš dokumentaci, trošku jinde demo (ale bez ukázkové implementace), takže to musíš srovnávat s tím co najdeš na Githubu.
Pro všechny zkušenější kteří si v dokumentaci potřebují najít něco konkrétního a nechtějí to číst z kódu je současná dokumentace naprosto vyhovující. Já se v současné dokumentaci taky bez problémů vyznám. Ale jen proto, že už hodně věcí vím. Pro někoho kdo ale programuje svůj první, druhý grid v životě byla původní dokumentace od @PavelJanda naprosto intuitivní, jednoduchá a přehledná. A to současné dokumentaci bohužel už chybí.
I když mám s Nette a komponentami víc jak 3-leté zkušenosti, pořád se na to zkouším dívat stejnýma očima, jako když jsem k Nette a komponentám přišel před lety poprvé, naprosto bez zkušeností.
P.S: vyhledávání. Např. „addColumnText“ mi nenajde.
Felix napsal(a):
andros napsal(a):
Kam zmizela ta úžasná dokumentace k datagridu ? Byla to jedna z nejlepších dokumentací doplňků pro Nette. Proč, když je něco dobré, musí se to zničit a nahradit něčím jiným, naprosto děsným ? Velice mne to zklamalo. Velice si vážím celé Nette komunity, ale tohle byl podle mého názoru naprostý přešlap.
Ahoj Jardo, diky za komentar. Aby byl konstruktivni, muzes doplnit co se ti na predchozi libilo a fungovalo vice? At to muzeme vylepsit.
- Felix
- Nette Core | 1197
andros napsal(a):
Diky za podnety, rekl bych, ze ten hlavni ukazka kodu + demo je rozpracovane a vime o tom.
Dovolil bych si vypichnout jednu dulezitou vec a to, ze aktualni dokumentace je plne automaticka.
- Muzes ji vest u konkretniho balicku, to predtim neslo a nemel jsi moznost ji vylepsit.
- Kdykoli ji upravis, automaticky se v cyklu nasadi (trva to hodiny, max jednotky dni). Predtim jsi musel manualne.
- Cela je na jednom webu. To predtim sice bylo, ale nedalo se tam hledat.
- Je indexovana do Algolie, takze mas super hledani included.
- Neni to starost jenom 1 cloveka (@PavelJanda), ale tedka uz na datagridu dela vice lidi, prinejmensim ja, spolecne resime issue a rozvoj. Ono to mozna vypada, ze to nic neni, ale mentalne to pro nas znamena hodne. Uz jen to, ze kazdou kravinku nemusis resit, protoze to vyresi nekdo za tebe trebas. Ze mas s kym co prokonzultovat, atd.
Snad jsem to alespon trochu priblizil. :-) A btw, vubec nejsem nastvany, ba naopak.
- Pavel Janda
- Člen | 977
Rozhodně chápu zklamání, které u lidí přichází s odstraněním staré dokumetnace. No, myslím si, že to ještě dokážeme zlepšit. Stoprocentně můžu pod demo ukázky přidat i include presenteru, který demo dělá. + bychom možná mohli prdnout do contributte.org dokumentace iframe vedoucí rovnou na demo? Tohle by byla podle mě úplně boží cesta, jak udělat stejně skvělou věc jako předtím, ale s pozitivy, které pro nás jako autory knihovny přináší nový způsob dělání dokumentace.To s tím iframem možná nebude tak hezké. Uvidíme. I will talk to @Felix :P
- suwer
- Člen | 33
1. Divny sort sloupce
Opakovany sort sloupce zpusobuje reset do vychoziho nastaveni razeni. Tzn. prvni
sort je ASC, druhy DESC, ale treti resetuje grid do defaultniho razeni. A tak
se to cele znovu opakuje. To je pozadovane chovani? Da se to vypnout?
V dokumetaci jsem tu moznost nenasel.
Btw. Neplati pro sort sloupce, ktery je nastaveny jako defaultni. Ten se porad dokola spravne radi ASC, DESC, ASC, DESC, …
2. Reset filtru – reset strankovani
U razeni je mozne zapnout si reset strankovani. Je tohle mozne nastavit i pro
filtry, resp. reset filtru? Potreboval bych po pripadnem resetu filtru resetovat
i strankovani (vratit datagrid zpatky na prvni stranku).
Editoval suwer (23. 9. 2019 13:53)
- Pavel Janda
- Člen | 977
@suwer
- Ano, to je požadované chování a momentálně to nelze vypnout
- Nope, to se teď nedá nastavit. Ale líbil by se mi PR, který by to umožnil. 👍
- suwer
- Člen | 33
Pavel Janda napsal(a):
@suwer
- Ano, to je požadované chování a momentálně to nelze vypnout
- Nope, to se teď nedá nastavit. Ale líbil by se mi PR, který by to umožnil. 👍
Ad 1) Jen pro zajimavost se zeptam, proc? Jeste jsem nenarazil na datagrid/datatable/view, kde by to bylo takto resene. Diky za odpoved.
Ad 2) S vypnutym refreshem URL mi to funguje (nenacte si page z adresy a spravne si promaze session). Pripadny PR na upravu necham mladsim programatorum, ja uz se k tomu dostanu fakt svatecne :-).
- Pavel Janda
- Člen | 977
@suwer
1, Opravdu ne? A já jsem zase většinou narazil právě na takové řazení. Představ si grid uživatelů řazený dle id. Pak je chceš jednou podle jména ASC, pak podle jména DESC. A třetí kliknutí to resetuje zase na defaultní řazení gridu. Tak nějak mi to přijde přirozené a nikdo si zatím ještě nestěžoval. :P Naproti tomu řešení, kdy řadím dle jména, potom obráceně, ale co potom, když chci zase to řazení vyresetovat? Musím klikat na nějaké spešel klikátko k tomu určené? 🤔To mi není úplně sympatické.
2, 👍
- suwer
- Člen | 33
Pavel Janda napsal(a):
@suwer
1, Opravdu ne? A já jsem zase většinou narazil právě na takové řazení. Představ si grid uživatelů řazený dle id. Pak je chceš jednou podle jména ASC, pak podle jména DESC. A třetí kliknutí to resetuje zase na defaultní řazení gridu. Tak nějak mi to přijde přirozené a nikdo si zatím ještě nestěžoval. :P Naproti tomu řešení, kdy řadím dle jména, potom obráceně, ale co potom, když chci zase to řazení vyresetovat? Musím klikat na nějaké spešel klikátko k tomu určené? 🤔To mi není úplně sympatické.
2, 👍
Ja fakt az poprve s tvym DataGridem :-). Ono totiz ve skutecnosti je vzdycky
pouzite nejake razeni. Sam reset vlastne neni reset, ale jenom razeni podle
jineho sloupce. Priklad: vychozi razeni je podle ID
. Ja kliknu na
Name
a seradim ASC
, dalsim kliknutim DESC
(a ze sve praxe ocekavam po dalsim kliknuti ASC
, DESC
,
ASC
, …). Pokud se chci vratit k razeni podle ID
,
tak jednoduse kliknu na sloupec ID
a seradim ho.
Namatkou nejake priklady na netu: datatables.net, demos.devexpress.com, datatables.net
- elring
- Člen | 6
Ahoj.
Funguje někomu group action (select) s Nette 3 a aktuálním datagridem
6.2.3? S Nette 2.4 vše fungovalo, po upgradu přestalo. Nezobrazí se mi to
tlačítko pro provedení akce (po výběru nějaké položky ze selectu).
Detekoval jsem, že je (asi) chyba v kombinaci datagrid.latte a nové
netteForms.js. Na počátku má to tlačítko v šabloně nastaveno
display:none s tím, že se později zobrazí. Jenže netteForms.js (funkce
Nette.toggle) to dříve dělalo pomocí smazání/nastavení atributu display,
ale nově to dělá pomocí property hidden, což jsou jiné věci. Takže se
nikdy nezobrazí…
Buď je chyba v datagridu nebo v mé kombinaci assets Nette nebo Datagridu,
proto se ptám, jestli to někomu jinému funguje.
- Pavel Janda
- Člen | 977
@suwer A co když chceš řadit dle více sloupců?
Rozumím ti, že jsi zvyklý na nějaké chování. Měnit to te'd u datagridu
nebudu, bo jsou na to lidé zvyklí. Ale pokud někdo pošle pr s nasatvítkem,
které takové chování bude enablovat, nejsem proti. 👍
@elring Máš nejnovější assety datagridu?
- elring
- Člen | 6
Mám. Aktuální assets od Datagridu, i od Nette/Forms. Mám někde zkusit připravit demo?
Jinak v datagrid.latte je (ř. 78):
{input $form_control, class => 'btn btn-primary btn-sm', style => 'display:none'}
V NetteForms.js je (ř. 648):
elems[i].hidden = !visible;
Dříve (ve verzi 2.4) tam ale bylo:
elem.style.display = visible ? '' : 'none';
Takže pokud to má spolu fungovat, buď by v šabloně mohlo být:
{input $form_control, class => 'btn btn-primary btn-sm', hidden => 'true'}
nebo to úplně (kvůli kompatibilitě s oběma verzemi NetteForms) vynechat,
protože se to stejně „samo“ skryje (což ale nemám 100% otestované):
{input $form_control, class => 'btn btn-primary btn-sm'}
- Pavel Janda
- Člen | 977
@elring Pokud bys s tím byl ok, mohl bys připravit PR? Já to otestuji jak se starou verzí tak s novou, kterou dáš ro PR. Díky moc! :)
- Šaman
- Člen | 2659
suwer napsal(a):
Priklad: vychozi razeni je podleID
. Ja kliknu naName
a seradimASC
, dalsim kliknutimDESC
(a ze sve praxe ocekavam po dalsim kliknutiASC
,DESC
,ASC
, …). Pokud se chci vratit k razeni podleID
, tak jednoduse kliknu na sloupecID
a seradim ho.Namatkou nejake priklady na netu: datatables.net, demos.devexpress.com, datatables.net
To jsou ale všechno jen JS knihovny k řazení obyčejné HTML tabulky. A neumí řazení podle více sloupců. Výhoda Datagridu ja v tom, že se dá řadit podle více sloupců (proto je nutné jiné UI) a on opravdu položí dotaz do databáze kde si vyžádá seřazená data (a ta pak třeba stránkuje a vrátí opravdu jen data pro aktuální stránku).
Tedy stručná odpověď – UI je jiné kvůli možnosti řazení podle více sloupců. Nicméně je to UI pro tuto věc běžné používané. (Třeba Grido.)
- galab
- Backer | 74
@suwer I u tebou uváděného datatables.net se to při řazení podle více sloupců chová jako tenhle datagrid – https://datatables.net/…ol_sort.html