[addon datagrid] DataGrid

Upozornění: Tohle vlákno je hodně staré a informace nemusí být platné pro současné Nette.
cmelis
Člen | 26
+
0
-

Nemáte tu prosím již někdo hotovou konverzi z PHP 5.2 na PHP 5.3? Pustil jsem se do ní sám, jelikož jsem na ní nikde nenašel nějaký odkaz, všechno mi běhá jak má ale pouze bez Ajaxu, ten se mi bohužel zatím nedaří nějak zprovoznit. Takže pokud by to již někdo měl hotové, byl bych mu vděčný, případně budu rád i za typy čím by to mohlo být (zavináče v šablonách používám).

JakubJarabica
Gold Partner | 184
+
0
-

Nepomoze ti DEV vetva na githube? https://github.com/…rid/tree/dev

Aurielle
Člen | 1281
+
0
-

Nestačí ti Gridito?

cmelis
Člen | 26
+
0
-

Díval jsem se na to Gridito a nejspíše využiji jeho služeb, každopádně díky :)

tom
Člen | 171
+
0
-

Je možné grid navázat na tabulku, jejíž primární klíč je složený …

Něco takového?

<?php
$grid->keyName = 'id_contact, id_role';
?>

Díky

fak
Člen | 48
+
0
-

Ahoj, úplně náhodou jsem kouknul na generovaný HTML kód DataGridem a zjistil jsem, že diakritika je kodovaná pomocí html entit, to je pro vyhledávání špatné. Pokud je to chyba v DataGridu – nešlo by to napravit?
Díky!

JakubJarabica
Gold Partner | 184
+
0
-

Rozbehal som si Datagrid pre Doctrine 2 a mám problém s filtrovaním: http://www.jam3son.sk/exception.html.

Má niekto šajn čo s tým môže byť? V call stacku je toto:

<?php
"_dql" private => "SELECT a.id, a.title, a.slug, a.added, c.id FROM iStavbar\ORM\Entities\Article a INNER JOIN a.category c WHERE c.id LIKE ?1" (123)
      "_params" private => array(1) ▼ {
         1 => "%1%" (3)
      }
?>

..takže tá chybová hláška mi príde trošku uhnutá.

Takú istú chybu dostanem, keď nahradím pôvodný datasource:

<?php
$grid = new \Datagrid\DataGrid;
        $dataSource = new \DataGrid\DataSources\Doctrine\QueryBuilder(
                                $this->em->createQueryBuilder()
                                ->select('a.id, a.title, a.slug, a.added, c.id')
                                ->from('iStavbar\ORM\Entities\Article', 'a')
                                ->join("a.category", 'c')
        );

        $dataSource->setMapping(array(
            'id' => 'a.id',
            'title' => 'a.title',
            'slug' => 'a.slug',
            'added' => 'a.added',
            'category' => 'c.id',
        ));
        $grid->setDataSource($dataSource);
        $grid->keyName = 'id';
?>

.. týmto s Where:

<?php
$dataSource = new \DataGrid\DataSources\Doctrine\QueryBuilder(
                                $this->em->createQueryBuilder()
                                ->select('a.id, a.title, a.slug, a.added, c.id')
                                ->from('iStavbar\ORM\Entities\Article', 'a')
                                ->join("a.category", 'c')
                ->where("a.slug = :slug")
                ->setParameter('slug', 'asd')
        );
?>
sinacek
Člen | 23
+
0
-

Ahoj,
v addons je odkaz na Demo, které nefunguje. Nemáte někdo jinde fungující demo?

Unable to write to directory ‚/hosting/www/romansklenar.cz/demo.datagrid/app/temp‘. Make this directory writable.

MilanLempera
Člen | 11
+
0
-

JAM3SoN napsal(a):

Rozbehal som si Datagrid pre Doctrine 2 a mám problém s filtrovaním: http://www.jam3son.sk/exception.html.

Má niekto šajn čo s tým môže byť? V call stacku je toto:

<?php
"_dql" private => "SELECT a.id, a.title, a.slug, a.added, c.id FROM iStavbar\ORM\Entities\Article a INNER JOIN a.category c WHERE c.id LIKE ?1" (123)
      "_params" private => array(1) ▼ {
         1 => "%1%" (3)
      }
?>

Nedávno jsem to řešil
 – Datagrid Doctrine byl psanej na beta verzi Doctrine – tuším BETA3
problém je v tomhle volání clone

v novějších verzích Doctrine (2.0.0-BETA4+) metoda __clone maže $this->_params, které pak chybí při vytváření dotazu na celkový počet záznamů (což říká ta chybová hláška)

vyřešil jsem to takhle

	public function count()
	{
		//\Nette\Debug::barDump(debug_backtrace());
		$query = clone $this->qb->getQuery();
		$query->setParameters($this->qb->getQuery()->getParameters());
		...

viz github

Editoval MilanLempera (7. 4. 2011 10:47)

JakubJarabica
Gold Partner | 184
+
0
-

Awesome!!! Díky moc. Ušetril si mi kopu času kým by som si to celé vykrokoval a našiel chybu.

Tomikuk
Člen | 10
+
0
-

Prosím jak se aktivuje tlačítko pro inverzi vybraných položek pro hromadné akce?

Ikony akcí jako na obrázku na stránce https://componette.org/search/?… by se měly zobrazit implicitně, a nebo se pro ně musí explicitně dovytvořit css? Mě se při použití tohoto kódu nezobrazí žádná ikona:

$grid->addAction('Smaž', 'customerDelete!', Html::el('span')->class('icon icon-del'), $useAjax = TRUE);
Ja
Člen | 260
+
0
-

Ahoj, ja vim, ze uz se tu neco podobneho resilo, ale ja bych potreboval jeste radu pro trochu specifictejsi pripad,

da se v akcich ukazat ikonka na zaklade stavu (tzn. ziskat data z KONKRETNIHO radku datagridu)? Pokud je clanek publikovan, tak zelena, pokud neni, tak seda?

<?php
$grid->addAction('Publikovat', 'publikovat!', ($KonkretniHodnotaKonkretnihoRadku == 0 ? clone $icon->class('icon icon-flag-silver') : clone $icon->class('icon icon-flag-green')), $useAjax = TRUE);
?>
MzK
Člen | 127
+
0
-

vím, že nette ještě není finální, přesto bych potřeboval poradit jak to udělat kompatibilní..
Dostal jsem se na tuto chybu:
InvalidStateException
Component ‚gridArticles‘ is not attached to ‚Nette/Application/Control‘
…/app/components/DataGrid/DataGridAction.php:74

<?php
71:        public function generateLink(array $args = NULL)
72:        {
73:            $dataGrid = $this->lookup('DataGrid', TRUE);
74:            $control = $dataGrid->lookup('Nette/Application/Control', TRUE); //zde je chyba.
75:
76:            switch ($this->key) {
77:            case self::WITHOUT_KEY:
78:                $link = $control->link($this->destination); break;
79:            case self::WITH_KEY:
?>

Zkoušeno na nette Nette Framework 2.0-beta (revision d5b50dc released on 2011–06–03) noprefix.

Díky za radu…

EDIT:
Vyřešeno:
Aby nette fungovalo s poslední verzí nette, je třeba místo (mimo jiné)

<?php
- $control = $dataGrid->lookup('Nette/Application/Control', TRUE);
+ $control = $dataGrid->lookup('Control', TRUE);
?>

Editoval zacatecnik (3. 6. 2011 22:55)

tom
Člen | 171
+
0
-

Ahoj,
chci se zeptat na jednu vec. Pouzivam DataGrid na vice strankach jednoho webu a stava se mi, ze pokud na jednom z tech DataGridu zapnu filtrovani a pak si pres menu zobrazim jinou stranku kde je jiny DataGrid tak mi to spadne na chybe, protoze se chce aplikovat filtr, ktery v te druhe komponente neni … Nutno dodat, ze ty komponenty mam persistentni stejne jako presentery. Mozna ze v tom bude ten zadrhel. Poradil by mi nekdo, co s tim, kde hledat chybu? Diky moc

venus
Člen | 14
+
0
-

Chtěl bych se dotázat, zda bude Datagrid upraven pro použití s Nette 2.0 Beta. V současné chvíli není funkční ani dev (https://github.com/…rid/tree/dev) verze.

MartyIX
Člen | 217
+
0
-

@venus: Vezmi si dev verzi a prozen ji class-updater.php skriptem, ktery je v distribuci Nette 2.0 beta. Pak staci tusim {Snippet:grid} nahradit {Snippet grid} (ladenka ti ukaze, kde je chyba) a melo by vse bezet.

Lopo
Člen | 277
+
0
-

venus napsal(a):

ja prave finisujem s portovanim … mam dorobenu cast podpory pre selectbox filtre cez doctrine … este nieco niekde haluzi ale dufam ze to co najskor doriesim

len neviem ci to pustim von v ramci mojho forku alebo v ramci BailIff-u do ktoreho som to robil

Lopo
Člen | 277
+
0
-

tak som dorobil port na posledne nette

presnejsie je to port do BailIff-u, ale malo by to fungovat aj v cistom nette – jedine co treba spravit je na 1 mieste zmenit triedu pre form – NS zmenit z BailIff\… na Nette\… a malo by to fungovat

oproti originalu som dorobil implementaciu DataSources\Doctrine\QueryBuilder::getFilterItems() – bol to trosku zahul (vlastny AST walker hned druhy den co som zacal s doctrine) ale podarilo sa a funguje (aspon co som testoval)

https://github.com/…437e91c8bae5

enjoy :)

PS: ak budem mat trochu cas a naladu tak to cele backportnem

Lopo
Člen | 277
+
0
-

este som vlastne zabudol napisat ze jedna z vacsich zmien je zrusenie povodneho css a presun k jQuery-UI … :)

oudzej
Člen | 4
+
0
-

MartyIX napsal(a):

@venus: Vezmi si dev verzi a prozen ji class-updater.php skriptem, ktery je v distribuci Nette 2.0 beta. Pak staci tusim {Snippet:grid} nahradit {Snippet grid} (ladenka ti ukaze, kde je chyba) a melo by vse bezet.

Upgradoval jsem z Nette 2.0 alpha na betu, stahnul posledni dev verzi Datagridu a projel ho tim class updaterem … nicmene, hazi to tuhle chybu, nevite co s tim?

Declaration of DataGrid\DataGrid::createTemplate() should be compatible with that of Nette\Application\UI\Control::createTemplate()`
Aurielle
Člen | 1281
+
0
-

Přidej do createTemplate() nepovinný parametr $class = NULL.

hchkrdtn
Člen | 2
+
0
-

brýden,
mohu se zeptat, jestli existuje byť jen náznak dokumentace, ze které by bylo možné vyčíst jak se chová SelectboxFilter vzhledem k sestavení db query?

dostala se mi do rukou cizí aplikace k opravě, kde je použit číselník pro SelectboxFilter nabývající těchto hodnot:

<script>
$pole = array(
   1 => 'prvni',
   2 => 'druha',
   ...
   8 => 'osma',
  105 => 'o105',
  106 => 'o106',
   ...
);
</script>

a při filtrování na 1-první se do výsledků hledání (řádku datagridu) promítají i řádky s hodnotami 105, 106 apod. což je pochopitelně nesmysl a zatím jsem nepřišel na příčinu ani jak to „ohnout“.

děkuji za jakýkoliv hint předem :)

hch

voda
Člen | 561
+
0
-

Příčinou je podle mě to, že v db se to hledá pomocí LIKE.

MartyIX
Člen | 217
+
0
-

oudzej: https://github.com/…id/tree/dev/ – ja mam ted tuto verzi, ktera je kompatibilni s Nette 2 beta a jeste umi:

//...
$backlink = $this->getService('application')->storeRequest();
$link = array('view', "backlink" => $backlink); // prvni parametr je link destination a zbyle jsou pak parametry, ktere se pridaji navic do odkazu
$grid->addAction('view', $link, clone $icon->setClass("icon icon-cart"), true, 'id');
// tzn. link bude obsahovat id a backlink v tomhle pripade
//...
Ja
Člen | 260
+
0
-

Neni nekde v Datagridu moznost pridat tlacitko na zruseni vsech aktualnich filtru? Abych ty hodnoty nemusel odmazavat rucne?

A pokud neni, jak byste tento problem resili?

hchkrdtn
Člen | 2
+
0
-

Ja: ze by to bylo totok?
<?php $form->addSubmit(‚resetSubmit‘, ‚Reset state‘); ?>

voda: ano, to ze je to via LIKE nebylo tezke zjistit :)
zajimalo me, proc se to sklada a vyhodnocuje v TextColumn (kde je pouzita konstrukce LIKE ‚%value%‘), kdyz je to Selectbox, ktery v mnou uvedenem pripade nemuze takto logicky fungovat spravne.
Takze jsem si pro potreby tohoto konkretniho pripadu ‚osetril‘ TextColumn a zatim mam problem vyreseny.

Ja
Člen | 260
+
0
-

hchkrdtn: Coze co? Jak se to definuje primo v tovarnicce?

Ja
Člen | 260
+
0
-

A navic funguje pro obnoveni stavu z rememberState, coz nepotrebuju. Ja bych potreboval jen vycistit vsechny filtry. Neresil jste to nekdo?

colek
Člen | 59
+
0
-

chtěl bych se zeptat – funguje vám ajaxové chování?

stáhnul jsem si dev verzi z gitu (používám stále nette 1 alpha) a vše funguje, krom ajaxu…

díky moc

Kurtas
Člen | 109
+
0
-

Ahoj,

chci se zeptat funguje datagrid s Nette 2.0 resp s Nette\Database?
Hledal jsem ale nějak nenacházím :(

EDIT: vyřeseno přesel jsem na Dibi

PS: Potřeboval bych přidat do datagridu checkbox „Označit vše“, čili značí všechny checkboxy (řádky) pokud jsou použity Operations. Už se tu někdo na to ptal bohužel nedostal odpověd, neříkejte mi že to nikdo neřešil? :)

Diky za pomoc
Mira

Editoval Kurtas (8. 8. 2011 17:53)

Kurtas
Člen | 109
+
0
-

Ahoj,

tak jsem si dopsal checkBox ktery označí všechny checkboxy pro operations, je to uprava datagridu od MartyIX #324 kdyby někdo měl zájem tak napište pm

Mirek

Lopo
Člen | 277
+
0
-

pred chvilkou som do mojho forku backportol nejake veci z Lohini

spominal som ich tu uz skor, vid #318

https://github.com/…8d2f0f1c1f81

Majkl578
Moderator | 1364
+
0
-

Koukám, že DataGrid pořád ještě někdo používá (sám už ho nepoužívám). :)
Když budu mít v následujících dnech chvíli (a když už to je rok od doby co jsme přestali dělat na dev branchi) a DataGrid bude pořád funkční s novým Nette (mergnout tohle? a možná něco od Lopa), mergnu dev větev do master.
Pokud někdo máte něco, co byste tam rádi viděli a ještě to tam není, forkujte, editujte a posílejte pull requesty. :)

MartyIX
Člen | 217
+
0
-

Majkl578: IF používáš nějakou alternativu THEN co to je? :-))

jeremy13
Člen | 18
+
0
-

Nemá někdo prosím upravený DataGrid pro aktuálně stáhnutelnou 5.3 stable verzi nette?
Pokouším se rozchodit různé verze, ale zatím neúspěšně …

Lopo
Člen | 277
+
0
-

jeremy13 napsal(a):

Nemá někdo prosím upravený DataGrid pro aktuálně stáhnutelnou 5.3 stable verzi nette?
Pokouším se rozchodit různé verze, ale zatím neúspěšně …

pokial viem tak dev verzia z githubu by mala fungovat … ak nefunguje tak napis problemy a urcite to niekto (kludne aj ja ak budem vediet) pofixuje

teoreticky by mala fungovat aj moja postnuta verzia co mam v Lohini – treba tam len na jednom mieste upravit pouzity extendovany form (ako som uz niekde tuna na fore pisal)

vladimir
Člen | 11
+
0
-

Ahoj,
Když si u DataGridu pomocí allowOperations zaregistruju callback pro obsluhu operací (s povoleným Ajaxem)

<?php
$grid = new DataGrid\DataGrid;
...
$grid->allowOperations($ops, callback($this, "handleOperations"));
?>

je nějak možné z metody handleOperations, která obsluhuje akce, invalidovat jiný widget na stránce?

zkoušel jsem do šablony

{widget basketStatus}
Polozek ve vasem kosiku: {$basket->count}
{/widget}

a následně

<?php
public function handleOperations(Nette\Forms\Controls\SubmitButton $button)
{
	$this->invalidateControl('basketStatus');
}
?>

ale daný widget se nepřekreslí.

Existuje nějaký jednoduchý fígl, jak toho překreslení widgetu docílit z obsluhy akcí? Kromě vypnutí Ajaxu…

Díky!

Editoval vladimir (3. 11. 2011 22:38)

zuhla
Člen | 33
+
0
-

Ahoj, tvořím teď projekt na PHP 5.3 a Nette 2.0 betta a bohužel se mi nelíbí ani gridito ani tabella, protože sem byl zvyklí až doteď ho používat na PHP 5.2.

Mám stáhlou dev verzi na PHP 5.3, ale ještě neexistovalo pár tříd, které měli změněný název atd. To sem vše upravil, ale teď při vykreslování mi naskočí toto:
Nette\UnexpectedValueException

Method AdminModule\ContentPresenter::createComponentGrid() did not return or create the desired component.

36:    <?php $_ctrl = $control->getWidget("grid"); if ($_ctrl instanceof Nette\Application\UI\IPartiallyRenderable) $_ctrl->validateControl(); $_ctrl->render() ?>

Díky za pomoc!

Michal Vyšinský
Člen | 608
+
0
-

Budeš mít nějakou chybu v továrničce. Sama chyba ti to říká, že továrnička nevrací nebo netvoří potřebnou komponentu. Dej sem kód té továrničky na grid komponentu.

zuhla
Člen | 33
+
0
-
protected function createComponentGrid($name) {
$ds = \dibi::getConnection()->dataSource('
            SELECT [pages.id]
            FROM [pages]
            ');
$dataSource = new \DataGrid\DataSources\Dibi\DataSource($ds);
// Configure data grid
        $grid = new \DataGrid\DataGrid;

        $grid->setDataSource($dataSource);

// Configure columns
        $grid->addNumericColumn('id', 'ID')->addFilter();
    }
MartyIX
Člen | 217
+
0
-

zuhla: chybi ti na konci metody radek:

return $grid;
zuhla
Člen | 33
+
0
-

Omlouvám se. Moje hloupost. Ale díky moc. Až vše rozchodím, tak na github nahodím moji funkční verzi datagridu na php 5.3 a nette 2.0 betta

MartyIX
Člen | 217
+
0
-

https://github.com/…78a5dc878f2a – nejsou nahodou ty upravy pro Nette 2 beta zde?

matoni555
Člen | 40
+
0
-

Nemá někdo náhodou verzi upravenou pro aktuální Nette\Database místo Dibi?

Díky

darthcz
Člen | 113
+
0
-

Zdravím,

chtěl bych se zeptat, zda někdo neznáte jednoduchý způsob, jak přidat v datagridu nový záznam. Nejradši bych to dělal přímo v datagridu, ne v externím formuláři. Tzn. javascriptem přidat prázdný řádek a ten pak přes akci odeslat.

Děkuji.

klip
Člen | 11
+
0
-

Jen pro info… zkusil sem teď s Nette 2 v PHP 5.3 verzi DataGrid od MartyIXe: https://github.com/…cad69c20c6ef
a změnil sem DataGrid/DataGrid.php:826

<?php
$form->onSubmit[] = array($this, 'formSubmitHandler');
?>

na

<?php
$form->onSuccess[] = array($this, 'formSubmitHandler');
?>

protože mi to křičelo, že se chování onSubmit změnilo.

Jinak se zdá, že to chodí.

Nemáte někdo funkční DataSource k Nette\Database\Connection? Není to tak nutné. Když mě bude vadit paralelní připojení přes dibi, tak si to třeba napíšu sám, ale zatím je to detail, kterej mě zas tolik netrápí. Zas to ale nechci psát zbytečně, jestli už to někdo psal. Díky.

Lopo
Člen | 277
+
0
-

klip napsal(a):

Nemáte někdo funkční DataSource k Nette\Database\Connection? Není to tak nutné. Když mě bude vadit paralelní připojení přes dibi, tak si to třeba napíšu sám, ale zatím je to detail, kterej mě zas tolik netrápí. Zas to ale nechci psát zbytečně, jestli už to někdo psal. Díky.

https://github.com/…tteDB/DB.php

klip
Člen | 11
+
0
-

Lopo napsal(a):

klip napsal(a):

Nemáte někdo funkční DataSource k Nette\Database\Connection?

https://github.com/…tteDB/DB.php

moc dík.

Bendergast
Člen | 8
+
0
-

Zdravím,
Marně se pokoušim rozjet DataGrid na nette 2.0 beta. Pokaždé když zapnu filtry tak mi to vyhodí Component '' is not attached to ‚Nette\Forms\Form‘.

Poradí prosím někdo?

tmysik
Člen | 16
+
0
-

Tuší někdo, kdy vyjde oficiální verze DataGridu pro Nette 2.0? Díky.