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

Failips
Člen | 54
+
+1
-

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
+
0
-

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
+
+1
-

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
+
0
-

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
+
+1
-

@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
+
0
-

@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
+
0
-

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>
?>
dTTb
Člen | 30
+
0
-

Ahoj,
neplanuje se moznost pouzit outerFilterRendering jenom pro nejake filtry?
Ze by nejcastejsi zustaly v zahlavi tabulky a min pouzivany bych moh schovat pod tlacitko.

Pavel Janda
Člen | 977
+
0
-

@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
+
0
-
  1. 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?
  2. 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
+
0
-

@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?

Failips
Člen | 54
+
0
-

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?

Dík za tip, preskúmam to. Čo je PR?? :D

Gappa
Nette Blogger | 208
+
0
-

Dík za tip, preskúmam to. Čo je PR?? :D

Pull request :)

dTTb
Člen | 30
+
0
-

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 ;)

Pavel Janda
Člen | 977
+
0
-

@dTTb Viz setRenderer()

minimal
Člen | 12
+
0
-

@PavelJanda Zdravím prosím ťa nefunguje mi setTreeView a nie som si istý či to robím správne.

https://pastebin.com/9CnDhxDJ

https://ibb.co/rHDfHbP

Správa sa to ako keby to tam ani nebolo. Cache som zmazal.

dTTb
Člen | 30
+
0
-

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
+
0
-

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,

  1. 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)
  2. 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
+
0
-

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
+
0
-

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
+
0
-

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
+
0
-

@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
+
0
-

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
+
0
-

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
+
0
-

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
+
0
-

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
+
0
-

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
+
0
-

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
+
0
-

@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
+
0
-

Bohužial, tento problém sa mi v inom gride nedarí nasimulovať a formulár sa mi stále odošle aj keď tam chýba hodnota (je tam NULL). Opísaný problém sa vyskutuje iba v danom gride.

Failips
Člen | 54
+
0
-

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 :)

Pavel Janda
Člen | 977
+
0
-

@Failips Yes, to dává smysl 👍 dík za share

andros
Člen | 145
+
0
-

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
+
+1
-

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
+
0
-

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
+
0
-

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.

  1. Muzes ji vest u konkretniho balicku, to predtim neslo a nemel jsi moznost ji vylepsit.
  2. Kdykoli ji upravis, automaticky se v cyklu nasadi (trva to hodiny, max jednotky dni). Predtim jsi musel manualne.
  3. Cela je na jednom webu. To predtim sice bylo, ale nedalo se tam hledat.
  4. Je indexovana do Algolie, takze mas super hledani included.
  5. 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
+
0
-

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

andros
Člen | 145
+
0
-

Existuje způsob jak přetížit šablonu column_multi_action.latte která vykresluje addMultiAction() ? Potřebuji docílit toho, aby se drodown menu zarovnalo vlevo (a ne v pravo), tedy do <ul class=„dropdown-menu“> přidat třídu dropdown-menu-right. Díky za rady.

suwer
Člen | 33
+
0
-

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
+
0
-

@suwer

  1. Ano, to je požadované chování a momentálně to nelze vypnout
  2. Nope, to se teď nedá nastavit. Ale líbil by se mi PR, který by to umožnil. 👍
suwer
Člen | 33
+
0
-

Pavel Janda napsal(a):

@suwer

  1. Ano, to je požadované chování a momentálně to nelze vypnout
  2. 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
+
+2
-

@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, 👍

Šaman
Člen | 2659
+
+2
-

Taky bych řekl, že pokud se řadi nad více sloupci, je ASC, DESC, reset běžné řešení.

suwer
Člen | 33
+
0
-

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
+
0
-

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
+
0
-

@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
+
0
-

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
+
0
-

@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
+
+1
-

suwer napsal(a):
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

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
+
0
-

@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