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

Pavel Janda
Backer | 925
+
0
-

:) Díky!
Okey, pokud by se ti to nepovedlo, zařadím to do roadmapy, jen se k tomu nedostanu asi úplně hned. Uvidíme.

Roman Halaxa
Člen | 57
+
0
-

Ahoj,

měl bych dotaz. Jak jednoduše vymažu všechny filtry programaticky?

Use case:
pokud uživatel příjde z presenteru xyz, nechat filtry co jsou zapamatované, jinak smazat a zobrazit grid bez filtru.

Vím že je můžu mazat jednotlivě metodou removeFilter(), ale jde to jednodušeji? Hrabu se ve zdrojáku a nemůžu nic takového najít.

jikki
Člen | 54
+
+1
-

Ahoj lidi,

v datagridu chci používat ty nové happy-inputs 2.x instalované z NPM. Nicméně zlobí to.

Při načtení stránky se happy inputy nezobrazí. Zobrazí se a fungují až poté co stránkuji.

<link rel="stylesheet" type="text/css" href="{$basePath}/node_modules/happy-inputs/src/happy.css">
<script src="{$basePath}/node_modules/happy-inputs/src/nomodule-es5-fallback.js"></script>
<script>
	var happy = new Happy;
	happy.init();
</script>

Došel jsem do fáze kdy se mi zobrazovaly i při načtení, zobrazily se i při stránkování, ale nebylo možné je zaškrtnout.
Také se mi povedla varianta, kdy se zobrazovaly při načtení stránky, ale při stránkování zmizly.
Nejvtipnější byla varianta kdy se mi zobrazovaly při načtení i při stránkování, ale nešly zaškrtnou na všech stránkách :)

Poradí někdo co dělám špatně?

Děkuji

EDIT: zjistil jsem, že to funguje správně, když block s JS dám nakonec <body>.

Editoval jikki (2. 10. 11:33)

marky_v
Člen | 1
+
0
-

Ahoj, mám dotaz. Nefunguje mi funkce setRendererOnCondition na sloupci columnStatus, callbacky v ní se vůbec nezavolají. Na jiných sloupcích to funguje normálně. Čím to může být? Nebo dělám něco špatně?

$this->addColumnStatus('state', "Stav")
			->addOption('active', "aktivní")
			->setClass('btn-primary')
			->endOption()
			->addOption('closed', "uzavřená")
			->setClass('btn-danger')
			->endOption()
			->setRendererOnCondition(function () {return 'xxx';}, function () {return true;})
			->onChange[] = [$this, 'changeState'];

Díky.

Failips
Člen | 54
+
0
-

Ahoj,

pri pouziti pola ako zdroja dat (ArrayResource) sa mi nechce zobrazovat itemDetail. Ako to mozem vyriesit??

Vdaka, Filip.

Zdeno1981
Člen | 97
+
0
-

Ahoj,

začal jsem používat tento doplněk a nevím jestli jsem to někde přehlédnul, je nějaká možnost jak si upravit třídy u tabulky?
potřeboval bych vyhodit třídu: table-striped table-bordered a přidat table-light tak aby nám to grafický ladilo s ostatními tabulky v systému.

Pavel Janda
Backer | 925
+
+1
-

@Zdeno1981 Jasně! Najdeš to zde: https://contributte.org/…emplate.html#…

Zdeno1981
Člen | 97
+
0
-

@PavelJanda děkuju

kralik
Člen | 198
+
0
-

Ahoj,
rád bych se zeptal.
přešel jsem na Nette v3.0.6 a datagrid v6.2.28 a bohužel dostávám chybu.
Na stařsím Nette v2.4.x jsem si předávat ID přes URDL do datagridu. To mi teď již nejde.

Přes url jsem si předal ID takto
https://localhost/…/uzivatele/9

Componenta datagridu

...
 $urlId = (int) $this->request->getParameter('id');
...
if($urlId > 0) {
 $grid->setDefaultFilter(['id' => $urlId]);
}

DataGrid bez ID v URL funguje v pořádku. Jakmile přidám do URL ID dostanu chybu.

TypeError
explode() expects parameter 2 to be string, integer given

Údajně problém zde: Ublaboo\DataGrid\DataSource\NetteDatabaseTableDataSource
Hledám problém už asi 3 hodiny a nemůžu na to přijít.

Mooc díky za radu

Pavel Janda
Backer | 925
+
0
-

@kralik Zkusil bys možná $grid->setDefaultFilter([‚id‘ ⇒ (string) $urlId]);?

kralik
Člen | 198
+
+1
-

Pavel Janda napsal(a):

@kralik Zkusil bys možná $grid->setDefaultFilter([‚id‘ ⇒ (string) $urlId]);?

Ahoj,
tak to jsem fakt LAMA.
Tohle mne nenapadlo…

Moc díky.

Zdeno1981
Člen | 97
+
0
-

Ahoj,

chci se zeptat, jakým způsobem můžu zarovnat text v th vlevo u datumu? který se zarovnává vpravo.

aktuálně to mám takto:

$grid->addColumnDateTime('date', 'training.date')
	->addCellAttributes(['class' => 'text-left'])
	->setFilterDate()
	->setAttribute('type', 'date')
	->setTemplate(__DIR__ . '/../templates/trainingEmployees/grid.date.latte');

Třída se tam sice vloží ale výsledek je takový, že třída text-left je vložená před původní třidu text-right.

Editoval Zdeno1981 (22. 10. 12:14)

Pavel Janda
Backer | 925
+
0
-

@Zdeno1981 setAlign dělá zarovnání obojího. Nevím, jestli to jde separátně, myslím, že ne.

Zdeno1981
Člen | 97
+
+1
-

@PavelJanda tak opět děkuji, v dokumentaci jsem to přehlídnul.

kolsi
Člen | 131
+
0
-
$grid->addColumnStatus('color', 'Color')->setOptions($colors);

Co vše je potřeba k tomu, aby tento typ sloupce fungoval? Nezobrazí mi to selectbox s textem, ale pouze číslo, které je uložené v databázi. Skripty i CSS mám všechny.

pp
Člen | 30
+
0
-

Ahoj,
pouzivam tento datagrid se zdrojem dat NetteDatabaseDataSource. Bohuzel jsem nenalezl v dokumentaci jak se v tom pripade odkazovat na propojene tabulky – predpokladam ze ref a related lze pouzit pouze u Nette Database Explorer (to ale kvuli slozitejsimu dotazu s JOINy nemuzu pouzit).

Query mam ted zadanou takto (otazka zda ty JOINy s tabulkou c resp. d musi byt hned pri definici datasource) protoze by se pouzily az na vyzadani (viz DOTAZ 3)

$query = 'SELECT a.*,c.essid,d.system_cfg,d.modified AS system_cfg_modified FROM `ubnt_sta` a
            INNER JOIN ( SELECT `lastip`, MAX(`modified`) AS max_modified FROM `ubnt_sta` GROUP BY `lastip` ) b
                ON a.lastip = b.lastip AND b.max_modified = a.`modified`
            LEFT JOIN `ubnt_ap` c
                ON a.ap_ip = c.deviceIP
            LEFT JOIN `ubnt_cfg` d
                ON  a.lastip = d.lastip'
        ;

Pokud si ale zobrazim napr. ItemDetail tak se prida ke query „WHERE id = ‚123‘“ a koncim na

SQLSTATE[23000]: Integrity constraint violation: 1052 Column 'id' in where clause is ambiguous

Pokud se pokusim upresnit ve sloupci

$grid->addColumnText('id', 'ID', 'a.id') nebo $grid->addColumnText('id', 'ID', 'ubnt_sta.id')

koncim :

Cannot read an undeclared column 'a.id', did you mean 'id'?

Kudy na to ?

2. DOTAZ
lze mit u kazdeho radku ItemDetail vicekrat (s ruznou sablonou) ? (napr. pro zobrazeni poznamek, konfigurace atd)

3. DOTAZ
Jak na bunku v gridu navazat rozsirujici dotaz se zobrazenim vysledku prave v ItemDetail popr. v POPUP okne – napr. najetim mysi na polozku spustit vyhledani v DB a dotazeni hodnot. Mohl by mi nekdo poskytnout nejakou kostru mozneho reseni. Dekuji

jAkErCZ
Člen | 300
+
0
-

Zdravím,
narazil jsem na chybu v datagriu

Ublaboo\DataGrid\Exception\DataGridFilterNotFoundException

Session filter: Filter [_grid_per_page] not found

A za boha nemohu najít kde by mohla být chybka.

Díky

kekw
Člen | 1
+
0
-

Ahoj, mohl by se někdo prosím podělit o kousek kódu, který používá v handleSort metodě na ukládání výsledků drag'n'drop sortu? Něco mám, ale ne a ne to odladit na 100%

pesMamlas
Člen | 7
+
0
-

Ahoj

jedu na Nette 2.4.4 (DataGrid 5.7) projekt a snažím se rozchodit paginator a itemdetail.Bohužel jsem u obou pohořel:

Paginator:

Nastavení mám následující:

$grid->setPagination(TRUE);
$grid->setItemsPerPageList([10, 20, 50, 100, 1000], TRUE);
$grid->setDefaultPerPage(100);

Zobrazí dropdown s hodnotami, ale při změně se nic nezmění (ani AJAX neprojde).

Item Detail

U itemdetailu se zobrazí button, při najetí se zobrazí „dataTable-id=21&SEQ=23do=dataTable-getItemDetail“. Při kliknutí projde AJAX (Tracy), ale nic se nezobrazí. (*id je záznam a SEQ je předek záznamu pro potřeby editace)

$grid->setItemsDetail()->setTitle('Info');
$grid->setTemplateFile(__DIR__ . '\templates\CustomTemplates\dataGridTemplates\item_detail.latte');
{extends $original_template}

{block detail}
	<p>Lorem ipsum ...</p>
{/block}

Můžete mě prosím trošku nakopnout?

Díky moc

martin28
Člen | 29
+
0
-

AHoj, prosim jak to resite?

Pouzivam tento datagrid a super jen jsem na zacatku sveho projektu a casto menim sloupce. Jde o to ze kdyz si nejaky uzivatel filtruje nebo srovnava podle uvedeneho sloupce, ktery ja pak odeberu tak mu to spadne- Jasny je to ulozeny v session a proste se podle toho hleda. Staci pak vymazat cookies ale to asi nejde psat zakaznikum. Nebo pak staci vymazat atresar /temp? Dekuji Martin

ppar
Backer | 326
+
+2
-

@martin28 Zřejmě hledáš https://contributte.org/…filters.html#… .

jikki
Člen | 54
+
0
-

Ahojte lidi,

měl bych 2 dotazy:

  • lze nějak nastavit, aby konkrétní sloupce nebylo možné skrýt a jiné ano? pokud povolím $grid->setColumnsHideable(); tak se dají skrývat všechny. Nicméně hodila by se možnost, aby se skrývání dalo povolit pouze pro určité sloupce.
  • tlačítko s ozubeným kolečkem pro zobrazení/skrytí sloupců zobrazí nabídku sloupců. Při každém kliknutí nabídka zmizí. Lze to udělat tak, aby nabídka zůstala zobrazená dokud se neklikne mimo? tedy chování stejné jako filter multiselect.

Děkuji

dTTb
Člen | 23
+
0
-

@PavelJanda V dokumentaci https://contributte.org/…columns.html#… asi chybi hranate zavorky, je tam

$grid->setDefaultSort('id' => 'DESC', FALSE);

misto

$grid->setDefaultSort(['id' => 'DESC'], FALSE);
Pavel Janda
Backer | 925
+
0
-

@dTTb Cool, díky, poslal bys, pls, PR? Díky!

Gogokt
Člen | 14
+
0
-

Zdravím,

mám dva dotazy:

  1. při small line edit jak kontrolovat vstup uživatele (isRequired atd.) ideálně na straně prohlížeče.
  2. Nezobrazují se mi flashMessage při zpracování handle metod. Vím asi proč ale nevím jak řešit.

    Mám použité Nittro a předpokládám, že to buje v té ajaxizaci.

public function columnNameEdited($id,$value){
            $this->flashMessage("Uloženo", 'success');
            if ($this->isAjax()) {
                    $this->redrawControl('flashes');
                    $this['uzivateleGrid']->reload();
            } else {
                    $this->redirect('this');
            }

        }

Děkuji za pomoc…

Roman Halaxa
Člen | 57
+
0
-

Ahoj,

měl bych asi jednu připomínku k dokumentaci. Možná by nebylo od věci uvést u inline add, že při použití array datasource je nutné při překreslení znovu získat datasource? Alespoň myslím že tomu tak je. Vždycky hledám proč se mi to nechce překreslit a pak si na to vzpomenu :D Jestli je jiná cesta budu rád když se podělíte. Díky

Pavel Janda
Backer | 925
+
0
-

@RomanHalaxa Pošleš pls pr na github? :) Máme tam adresář s dokumentací: https://github.com/…master/.docs Dííky

Roman Halaxa
Člen | 57
+
+1
-

@PavelJanda máš ho tam

Beru zpet, nemáš. Musim zjistit jak se to dělá :D :D

EDIT 2 : tak snad

Editoval Roman Halaxa (27. 11. 14:34)