ublaboo/datagrid: mocný, rychlý, rozšiřitelný, hezký, anglicky dokumentovaný datagrid
- Pepino
- Člen | 256
@Čamo střílím od boku, ale neslouží k tomu setCondition (https://examples.contributte.org/…eton/filters) ?
- Čamo
- Člen | 798
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 | 256
- Pavel Janda
- Člen | 977
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 | 14
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 | 24
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. 2023 14:42)
- tom
- Člen | 171
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 | 1197
👋 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 | 1195
@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 | 54
@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 (27. 1. 2023 9:28)
- igi
- Člen | 24
Zdravím, rád bych jako zdroj pro zobrazení použil něco takového:
Nette\Database\Connection $database;
$database->query('SELECT * FROM tabulka WHERE neco = ?', $nejakaHodnota);
na to by nejspíše mělo být:
contributte/datagrid-nette-database-data-source
zkoušel jsem přes composer stáhnout, ale píše mi to:
Could not find a matching version of package
contributte/datagrid-nette-database-data-source. Check the package spelling,
your version cons
traint and that the package is available in a stability which matches your
minimum-stability (stable)
Zkoušel jsem jestli už to není zahrnuto přímo v datagridu, ale pravděpodobně (pokud to dělám správně) tam není. Poradíte někdo prosím jak na to? Děkuji.
- Petr Parolek
- Člen | 455
https://packagist.org/…-data-source . Chyba je v readme.
Správný název balíčku
je ublaboo/datagrid-nette-database-data-source
Editoval Petr Parolek (13. 2. 2023 14:05)
- igi
- Člen | 24
Petr Parolek napsal(a):
https://packagist.org/…-data-source . Chyba je v readme. Správný název balíčku je
ublaboo/datagrid-nette-database-data-source
Díky, bylo to tím.. nakonec jsem si ale uvědomil, že se dá použít i přímo nette database explorer a použít metodu table s přidáním metody where… otázkou co je efektivnější, jestli použití té table nebo použití nette database core a datagrid-nette-database-data-source…
- igi
- Člen | 24
Zdravím, používám inline big edit. V podstatě dle příkladu v skeletonu, tj.
$grid->getInlineEdit()->onSubmit[] = function ($id, Nette\Utils\ArrayHash $values): void {
$this->myModel->someMethod($id, $values['aa'], $values['bb']);
$this->flashMessage("nejaky text", 'success');
$this->redrawControl('flashes');
};
avšak flash zpráva se mi nezobrazí, je potřeba tam ještě něco dalšího nebo v čem mám chybu? Mám tam i action v tom gridu, kde se volá handle metoda přímo v presenteru a tam mi flash zpráva normálně funguje. Děkuji.
- Petr Parolek
- Člen | 455
igi napsal(a):
Zdravím, používám inline big edit. V podstatě dle příkladu v skeletonu, tj.
$grid->getInlineEdit()->onSubmit[] = function ($id, Nette\Utils\ArrayHash $values): void { $this->myModel->someMethod($id, $values['aa'], $values['bb']); $this->flashMessage("nejaky text", 'success'); $this->redrawControl('flashes'); };
avšak flash zpráva se mi nezobrazí, je potřeba tam ještě něco dalšího nebo v čem mám chybu? Mám tam i action v tom gridu, kde se volá handle metoda přímo v presenteru a tam mi flash zpráva normálně funguje. Děkuji.
Ahoj, zkus otestovat vykreslení flash mimo datagid přímo v presenteru
přes signál handle*
, zda-li vše funguje správně. Pokud máš
datagrid v komponentě, kod má být:
$grid->getInlineEdit()->onSubmit[] = function ($id, Nette\Utils\ArrayHash $values): void {
$this->myModel->someMethod($id, $values['aa'], $values['bb']);
$this->getPresenter()->flashMessage("nejaky text", 'success');
$this->getPresenter()->redrawControl('flashes');
};
Editoval Petr Parolek (17. 2. 2023 13:38)
- igi
- Člen | 24
Petr Parolek napsal(a):
igi napsal(a):
Zdravím, používám inline big edit. V podstatě dle příkladu v skeletonu, tj.
$grid->getInlineEdit()->onSubmit[] = function ($id, Nette\Utils\ArrayHash $values): void { $this->myModel->someMethod($id, $values['aa'], $values['bb']); $this->flashMessage("nejaky text", 'success'); $this->redrawControl('flashes'); };
avšak flash zpráva se mi nezobrazí, je potřeba tam ještě něco dalšího nebo v čem mám chybu? Mám tam i action v tom gridu, kde se volá handle metoda přímo v presenteru a tam mi flash zpráva normálně funguje. Děkuji.
Ahoj, zkus otestovat vykreslení flash mimo datagid přímo v presenteru přes signál
handle*
, zda-li vše funguje správně. Pokud máš datagrid v komponentě, kod má být:$grid->getInlineEdit()->onSubmit[] = function ($id, Nette\Utils\ArrayHash $values): void { $this->myModel->someMethod($id, $values['aa'], $values['bb']); $this->getPresenter()->flashMessage("nejaky text", 'success'); $this->getPresenter()->redrawControl('flashes'); };
Ahoj, zkoušel jsem to, flash zpráva přes handle normálně funguje, ale z toho datagridu to nějak nechce fungovat, ani s tím tvým kódem.Používám Nette 3.1 – jestli to třeba nemá vliv. A pak bych měl ještě jeden dotaz. Když mám v datagridu big inline editaci, kde edituji i id daného řádku, tak vše funguje jen javascript gridu pak neví kterému řádku má schovat tlačíka pro editaci, dá se to nějak jednoduše vyřešit? Ten případ kdy to takto používám opravdu nepotřebuje žádné další id, jedná se o seznam jedinečných zařízení, které každé má své sériové číslo a je právě potřeba možnost editaci jejich sériových čísel.
- iru
- Člen | 110
Felix napsal(a):
👋 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
Jak prosím nainstaluji? Mám:
"require": {
"php": ">= 8.0",
"nette/application": "^4.0",
"nette/bootstrap": "^3.2 || ^4.0",
"nette/caching": "^3.2 || ^4.0",
"nette/database": "^4.0",
"nette/di": "^3.2 || ^4.0",
"nette/forms": "^4.0",
"nette/http": "^4.0",
"nette/mail": "^4.0",
"nette/php-generator": "^4.0",
"nette/robot-loader": "^4.0",
"nette/safe-stream": "^3.0",
"nette/security": "^4.0",
"nette/utils": "^4.0",
"latte/latte": "^3.0",
"tracy/tracy": "^2.10 || ^3.0",
"ublaboo/datagrid": "dev-next"
},
"require-dev": {
"nette/tester": "^2.0"
},
"autoload": {
"psr-4": {
"App\\": "app/"
}
},
"minimum-stability": "dev"
}
C:\..........>composer update
Loading composer repositories with package information
Updating dependencies
Your requirements could not be resolved to an installable set of packages.
Problem 1
- Root composer.json requires ublaboo/datagrid dev-next -> satisfiable by ublaboo/datagrid[dev-next].
- ublaboo/datagrid dev-next requires nette/forms ^3.1.3 -> found nette/forms[v3.1.3, ..., v3.1.x-dev] but it conflicts with your root composer.json require (^4.0).
Use the option --with-all-dependencies (-W) to allow upgrades, downgrades and removals for packages currently locked to specific versions.
Na serveru mám PHP 8.2, Pokusila jsem se změnit nette/forms ze 4 na 3.1,
ale to zase nefungovalo s PHP 8.2. Tak nevím, jak se k tomu datagridu
dostat. Když jsem měla Nette 3.2 a PHP 7.2, nefungovalo, tak jsem přešla na
nette 4, ale zase mi to nejde :-(
Composer pro nette4 jsem sestavila viz: https://github.com/…ommit/master
Děkuji.
Editoval iru (27. 3. 2023 6:00)
- akmt
- Člen | 20
Ahoj, nenašel jsem tuto informaci ani v dokumentaci, ani v ukázkách,
proto se ptám zde:
Umím vytvořit ToolbarButton s odkazem na filtr podle
nějakého ze sloupečků Datagridu?
Toto je z dokumentace:
$grid->addToolbarButton('this', 'Button', ['foo' => 'bar']);
ale možnost tam nějak „narvat“ filtr jsem nenašel ani nedokázal
odvodit.
Něco jako:
$grid->addToolbarButton('this', 'Show category 10', ['category' => 10]);
Díky za pomoc.
Editoval akmt (10. 4. 2023 19:08)
- pp
- Člen | 50
Ahoj, peru se tu s problemem kdy mam v gridu sloupec ‚stav‘ ktery chci upravit malou inline editaci. Pole $values je napr. [ 1 ⇒ ‚ano‘, 2 ⇒ ‚ne‘ ].
$grid->addColumnText('stav', 'Stav')
->setEditableCallback(function($id, $value) { .. }
->setEditableInputTypeSelect($values)
->setReplacement($values)
Pokud pouziju tohle tak se ve sloupci zobrazuji spravne hodnoty (ano/ne).
Kdyz vyvolam inline editaci, prepne se na typ select (obsah je v poradku) ale
nevybere aktualni hodnotu jako defaultni.
Bez „Replacementu“ je ten vyber defaultni hodnoty OK ale pak mam ve sloupci
jek klice.
dik za radu
- igi
- Člen | 24
Zdravím, nevíte někdo jestli je následující bug nebo vlastnost? Když u nějakého sloupečku použiji filtr, tak funguje. Poté se rozhodnu, že u daného sloupečku filtr nepotřebuji, tak odstraním daný kód filtru. Poté se mi ale objeví chyba session, že daný filtr neexistuje. Jak se toto řeší? Prozatím jsem to vyřešil tak, že jsem natvrdo smazal všechny session. Poté už fungovalo. Děkuji.
- igi
- Člen | 24
@radas: díky moc, pomohlo to.
Jinak bych se chtěl zeptat ještě na jednu věc, v dokumentaci to nemůžu
najít. Mám v gridu tabulkou kde bych chtěl v jednom sloupečku podbarvovat
určité řádky dle hodnoty v jiném sloupci v databázi, ale tuto samotnou
hodnotu v gridu zobrazovat nechci. Stejně tak dle této hodnoty bych chtěl
v big edit gridu mít různý validační pattern, dá se to prosím nějak
jednoduše udělat? Děkuji.
- wojtishek
- Člen | 1
Snažím se buildnout z next větve assety, ale nemám moc zkušeností s frontend buildery a .docs/assets.md mi nepomohlo. Dokázal by mi s tím někdo pomoci, pls?
Dostal jsem se zatím k:
- vytvoření package.json
- vytvoření vite.config.js
- npm i
- npm run build
poslední mi končí tímhle:
Could not resolve entry module (./assets/js/main.js).
error during build:
Error: Could not resolve entry module (./assets/js/main.js).
Editoval wojtishek (6. 7. 2023 17:47)
- n.u.r.v.
- Člen | 485
Ahoj, chtěl bych se naučit používat tento datagrid abych přestal být závislý jen na nextras-datagrid, který používáme leta, ale již není moc udržovaný…
Akorát nevím jestli půjde to samé, jako jsme dělali v nextras/datagridu, že jsme v Repository měli metodu pro načtení dat z db (psali jsem si vlastní sql dotazy) a ta měla mimo jiné parametry pro order pro řazení (dostávala z datagridu typ a název sloupce podle kterého má řadit) a parametry limit a offset (teď jsem našel že možná tohle půjde pomocí $grid->getPaginator()->getPaginator()->getOffset() a getLength).
Můžete mi prosím poradit jak při kliku v datagridu na řazení získat typ řazení a dle kterého sloupce?
Dále jsem zatím nepřišel na to, jak definovat vlastní hlavičku a patičku tabulky
např. takto:
{define table-open-tag}
<table id="tblList" class="table">
{/define}
{define table-close-tag}
<tfoot>
<tr>
<tdcolspan="5">...</td>
<td>...</td>
</tr>
</tfoot>
</table>
{/define}
Díky za radu a trpělivost, asi se tu teď budu ptát častěji…
- matronator
- Člen | 38
Pavel Janda napsal(a):
A ještě jedna věc: přibyl nový datasource:
ApiDataSource
. Je experimentální a netestoval jsem ho. Pokud ho někdo využije, piště, co přidat/zlepšit. Moc tam toho asi nebude. ApiDataSource prostě forwarduje filtrování, sortění a pod na remote api.
Sorry, vim že je to starý příspěvek, ale mám dotaz k tomu
ApiDataSource
. Chci přidat filtr, který nebude filtrovat
v databázi, ale pošle tu zadanou hodnotu na remote API a z té se mi pak
vrátí objekt, ze kterého bych chtěl vytáhnout jednu property a tu
následně použít pro filtrování výsledků datagridu.
Je tam asi víc věcí, které mi teď ještě nejsou úplně jasné jak
udělat, ale prvně jsem se zasekl na tom, že když chci zavolat
$grid->setFilterText(function ($dataSource, $item))
, tak jak
mám nastavit tomu $dataSource
URL té API, která u
ApiDataSource
lze nastavit pouze v konstruktoru?
Editoval matronator (14. 9. 2023 13:53)
- LmErs
- Člen | 3
Ahoj, asi jsem slepý ale nemohu přijít na jednu věc (a nemohu to ani nikde dohledat).
Mám tyto dvě tabulky
CREATE TABLE `meetings_points_tasks` (
`id` int(11) NOT NULL AUTO_INCREMENT,
`point` int(11) DEFAULT NULL,
`task` text NOT NULL,
`task_anonym` text DEFAULT NULL,
`datetime` datetime NOT NULL,
`status` varchar(255) DEFAULT NULL,
`now` int(2) DEFAULT NULL,
`continuously` int(2) DEFAULT NULL,
`custom` varchar(255) DEFAULT NULL,
PRIMARY KEY (`id`),
KEY `point` (`point`),
CONSTRAINT `meetings_points_tasks_ibfk_2` FOREIGN KEY (`point`) REFERENCES `meetings_points` (`id`) ON DELETE CASCADE ON UPDATE CASCADE
) ENGINE=InnoDB DEFAULT CHARSET=utf8mb3 COLLATE=utf8mb3_czech_ci;
CREATE TABLE `meetings_points_tasks_users` (
`id` int(11) NOT NULL AUTO_INCREMENT,
`task` int(11) DEFAULT NULL,
`user` int(11) NOT NULL,
PRIMARY KEY (`id`),
KEY `user` (`user`),
KEY `task` (`task`),
CONSTRAINT `meetings_points_tasks_users_ibfk_2` FOREIGN KEY (`user`) REFERENCES `users` (`id`),
CONSTRAINT `meetings_points_tasks_users_ibfk_3` FOREIGN KEY (`task`) REFERENCES `meetings_points_tasks` (`id`) ON DELETE CASCADE ON UPDATE CASCADE
) ENGINE=InnoDB DEFAULT CHARSET=utf8mb3 COLLATE=utf8mb3_czech_ci;
K tomu mám datagrid (jako datasource mám Nextras/Orm):
protected function createComponentTasksGrid($name)
{
$grid = new DataGrid($this, $name);
$grid->setDefaultPerPage(20);
$grid->setDataSource($this->meetingsPointsTasksFacade->findAllTasksByEntityId($id));
...
$grid->addColumnText('users', 'Řešitelé')
->setRenderer(function ($row) {
$resitele = '';
foreach ($row->users as $u) {
$resitele .= $u->user->getFullName() . ', ';
}
return rtrim($resitele, ', ');
});
$grid->addFilterSelect('users', 'Řešitelé', ['' => 'Vše'] + $this->usersFacade->findByEntityForForm($id))
->setCondition(function ($collection, $value) {
if (!$value) {
return $collection;
}
// Vyhledávání v Nextras/Orm
$qb = $collection->getQueryBuilder();
$qb->leftJoin('meetings_points_tasks', 'users', 'users', 'users.id')->andWhere('[users.id] = %i', $value)
->andWhere('users.id = %i', $value);
return $collection;
});
Vše se zdá, že je korektní a zobrazuje to data tak jak má. Problém je ve chvíli, kdy chci vyhledávat pomocí toho custom filtru users. I když v Tracy vidím, že dotaz proběhl, tak DataGrid na to nijak nereaguje. Zobrazuje stále stejná data.
Nevíte někdo proč? Koukám do toho už několik hodin a na nic jsem nepřišel :(
Mnohokrát děkuji za jakoukoliv odpověď.
- mskocik
- Člen | 61
A čo ti vracia
$this->meetingsPointsTasksFacade->findAllTasksByEntityId($id)
?
EDIT: Btw ten left join sa mi zdá nejaký divný, viď domukentácia:
$builder->joinLeft('[books] AS [b]', '[a.id] = [b.authorId] AND [b.title] = %s', $title);
A btw setCondition()
nemusí vraciať kolekciu.
Editoval mskocik (11. 10. 2023 12:16)
- LmErs
- Člen | 3
mskocik napsal(a):
A čo ti vracia
$this->meetingsPointsTasksFacade->findAllTasksByEntityId($id)
?EDIT: Btw ten left join sa mi zdá nejaký divný, viď domukentácia:
$builder->joinLeft('[books] AS [b]', '[a.id] = [b.authorId] AND [b.title] = %s', $title);
A btw
setCondition()
nemusí vraciať kolekciu.
Moc děkuji za odpověď. Samozřejmě máš pravdu. Ten leftJoin byl
špatně. Jen jsem to už neviděl.
Mockrát díky!
- raketoplan2005
- Člen | 147
Jde prosím nějak rozumně nastavit šířka sloupce? Mám teď sloupec s datetimerange filtrem široký přes půl gridu :-(
- adam_frajer
- Člen | 14
pp napsal(a):
Ahoj, peru se tu s problemem kdy mam v gridu sloupec ‚stav‘ ktery chci upravit malou inline editaci. Pole $values je napr. [ 1 ⇒ ‚ano‘, 2 ⇒ ‚ne‘ ].
$grid->addColumnText('stav', 'Stav') ->setEditableCallback(function($id, $value) { .. } ->setEditableInputTypeSelect($values) ->setReplacement($values)
Pokud pouziju tohle tak se ve sloupci zobrazuji spravne hodnoty (ano/ne).
Kdyz vyvolam inline editaci, prepne se na typ select (obsah je v poradku) ale nevybere aktualni hodnotu jako defaultni.
Bez „Replacementu“ je ten vyber defaultni hodnoty OK ale pak mam ve sloupci jek klice.
dik za radu
Ahoj, vyřešil jsi to nějak? Já to vyřešil javascriptovým workaroundem, že před načtením scriptu pro grid si uložím hodnotu, co je ve sloupci:
<script>
var selectedText = null;
document.addEventListener('click', e => {
if(e.target.getAttribute('data-datagrid-editable-type') == 'select'){
selectedText = e.target.innerText
}
})
</script>
A po načtení scriptu si pro option attribut selected podle uložené hodnoty
<script>
document.addEventListener('click', e => {
if(e.target.getAttribute('data-datagrid-editable-type') == 'select'){
selectElement = e.target.firstElementChild;
var optionToSelect = Array.from(selectElement.options).find(function(option) {
return option.text.trim() === selectedText.trim();
});
if (optionToSelect) {
optionToSelect.setAttribute('selected', 'selected');
}
}
})
</script>
->setReplacement() nepoužívám
Uvědomoji si, že to není moc dobrý způsob, ale nic jiného mě bohužel nenapadlo… kdyby někdo znal lepší způsob, budu moc vděčný!
- iru
- Člen | 110
iru napsal(a):
Felix napsal(a):
👋 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/168Jak prosím nainstaluji? Mám:
"require": { "php": ">= 8.0", "nette/application": "^4.0", "nette/bootstrap": "^3.2 || ^4.0", "nette/caching": "^3.2 || ^4.0", "nette/database": "^4.0", "nette/di": "^3.2 || ^4.0", "nette/forms": "^4.0", "nette/http": "^4.0", "nette/mail": "^4.0", "nette/php-generator": "^4.0", "nette/robot-loader": "^4.0", "nette/safe-stream": "^3.0", "nette/security": "^4.0", "nette/utils": "^4.0", "latte/latte": "^3.0", "tracy/tracy": "^2.10 || ^3.0", "ublaboo/datagrid": "dev-next" }, "require-dev": { "nette/tester": "^2.0" }, "autoload": { "psr-4": { "App\\": "app/" } }, "minimum-stability": "dev" }
C:\..........>composer update Loading composer repositories with package information Updating dependencies Your requirements could not be resolved to an installable set of packages. Problem 1 - Root composer.json requires ublaboo/datagrid dev-next -> satisfiable by ublaboo/datagrid[dev-next]. - ublaboo/datagrid dev-next requires nette/forms ^3.1.3 -> found nette/forms[v3.1.3, ..., v3.1.x-dev] but it conflicts with your root composer.json require (^4.0). Use the option --with-all-dependencies (-W) to allow upgrades, downgrades and removals for packages currently locked to specific versions.
Na serveru mám PHP 8.2, Pokusila jsem se změnit nette/forms ze 4 na 3.1, ale to zase nefungovalo s PHP 8.2. Tak nevím, jak se k tomu datagridu dostat. Když jsem měla Nette 3.2 a PHP 7.2, nefungovalo, tak jsem přešla na nette 4, ale zase mi to nejde :-(
Composer pro nette4 jsem sestavila viz: https://github.com/…ommit/master
Děkuji.
Stále bych ten datagrid chtěla používat a nedaří se mi ho nainstalovat, Nevíte prosím někdo jak zprovoznit na PHP 8 a nette4?
- Tomáš Vodička
- Člen | 28
iru napsal(a):
iru napsal(a):
Felix napsal(a):
👋 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/168Jak prosím nainstaluji? Mám:
"require": { "php": ">= 8.0", "nette/application": "^4.0", "nette/bootstrap": "^3.2 || ^4.0", "nette/caching": "^3.2 || ^4.0", "nette/database": "^4.0", "nette/di": "^3.2 || ^4.0", "nette/forms": "^4.0", "nette/http": "^4.0", "nette/mail": "^4.0", "nette/php-generator": "^4.0", "nette/robot-loader": "^4.0", "nette/safe-stream": "^3.0", "nette/security": "^4.0", "nette/utils": "^4.0", "latte/latte": "^3.0", "tracy/tracy": "^2.10 || ^3.0", "ublaboo/datagrid": "dev-next" }, "require-dev": { "nette/tester": "^2.0" }, "autoload": { "psr-4": { "App\\": "app/" } }, "minimum-stability": "dev" }
C:\..........>composer update Loading composer repositories with package information Updating dependencies Your requirements could not be resolved to an installable set of packages. Problem 1 - Root composer.json requires ublaboo/datagrid dev-next -> satisfiable by ublaboo/datagrid[dev-next]. - ublaboo/datagrid dev-next requires nette/forms ^3.1.3 -> found nette/forms[v3.1.3, ..., v3.1.x-dev] but it conflicts with your root composer.json require (^4.0). Use the option --with-all-dependencies (-W) to allow upgrades, downgrades and removals for packages currently locked to specific versions.
Na serveru mám PHP 8.2, Pokusila jsem se změnit nette/forms ze 4 na 3.1, ale to zase nefungovalo s PHP 8.2. Tak nevím, jak se k tomu datagridu dostat. Když jsem měla Nette 3.2 a PHP 7.2, nefungovalo, tak jsem přešla na nette 4, ale zase mi to nejde :-(
Composer pro nette4 jsem sestavila viz: https://github.com/…ommit/master
Děkuji.Stále bych ten datagrid chtěla používat a nedaří se mi ho nainstalovat, Nevíte prosím někdo jak zprovoznit na PHP 8 a nette4?
s nette/forms 3.1.14
by ti to mělo fungovat, to je
kompatibilní i s PHP 8.3 (nette/forms
ještě nemá
čtyřkovou verzi)