Nextras\Datagrid – datagrid se vsim jak ma byt

před 10 měsíci

Jan Tvrdík
Nette guru | 2526
+
+1
-

@simPod měnit minimum-stability je skoro vždycky chyba; stačí když tam místo dev-master dá @dev

před 10 měsíci

n.u.r.v.
Člen | 414
+
0
-

ahoj, tak po přidání @dev sice composer neřve, ale datagrid nefunguje:
Dostávám chybu Thrown exception ‚Call to undefined method Latte\Compiler::getTemplateId().

když dám
„nextras/datagrid“: „@dev",
"nextras/latte-macros“: „dev-master“

tak tím opravím latte-macros ale datagrid vyhazuje chybu při new Callback()

když dám
„nextras/datagrid“: „dev-master“,
„nextras/latte-macros“: "@dev"

tak datagrid je ok, ale latte-macros vyhazuje Thrown exception‚ Call to undefined method Latte\Compiler::getTemplateId()

  • takže výsledek je že Nextras\Datagrid není kompatibilní s Nette 2.4

před 10 měsíci

Jan Tvrdík
Nette guru | 2526
+
0
-

Zkoušel jsi

"nextras/datagrid": "@dev",
"nextras/latte-macros": "@dev"

?

před 10 měsíci

n.u.r.v.
Člen | 414
+
0
-

ano, composer to sežere, ale dostanu chybu Thrown exception ‚Call to undefined method Latte\Compiler::getTemplateId() jakmile se pokusím nějaký datagrid zobrazit (chyba v nextras/latte-macros)

Edit, ještě jsem schválně stáhl nejdřív samostatné dev-master datagrid a pak ještě dev-master latte-macros a dal to do vendor pak ručně – to jsem se dostal do dalšího „levelu“ → chybu jsem dostal v souboru datagrid-src-Datagrid.latte–ca34421b9a.php přímo v temp/cache/latte/

už si nepamatuju co to bylo přesně – bylo to něco jako že chybí row->ID (zítra nasimuluji znova a upřesním)

Editoval n.u.r.v. (15. 8. 2016 23:33)

před 10 měsíci

simPod
Člen | 371
+
0
-

Ahoj, je mozne nejak jednoduse filtrovat i dle poli, ktera pak nejsou ve vypisu dat? Rekneme, ze vypisuju jen IDs objednavek, ale ja je chci filtrovat podle data vytvoreni, i presto, ze to datum pak uz nezobrazim. Diky

před 10 měsíci

MW
Člen | 537
+
0
-

simPod napsal(a):

Ahoj, je mozne nejak jednoduse filtrovat i dle poli, ktera pak nejsou ve vypisu dat? Rekneme, ze vypisuju jen IDs objednavek, ale ja je chci filtrovat podle data vytvoreni, i presto, ze to datum pak uz nezobrazim. Diky

Já to řeším například takto v modelu prepareDataSource

if ($k == 'name' || is_array($v))
    $filters[$k . ' LIKE ? OR desc LIKE ?'] = array("%$v%", "%$v%");

před 10 měsíci

CZechBoY
Člen | 2390
+
0
-

@MW tam vidim potentionální díru, nemáš tam escapování pro LIKE (které je navíc pro různé databáze různé).

před 10 měsíci

simPod
Člen | 371
+
0
-

diky. tohle mi asi uz doctrine poresi. Jak ale v sablone zobrazim ten input na filtrovani fieldu, u ktereho nezobrazuju sloupec? Automaticky se mi nad sloupci zobrazuji prislusne filter fieldy. U toho datumu vytvoreni ale sloupec neexistuje

před 10 měsíci

MW
Člen | 537
+
+1
-

simPod napsal(a):

diky. tohle mi asi uz doctrine poresi. Jak ale v sablone zobrazim ten input na filtrovani fieldu, u ktereho nezobrazuju sloupec? Automaticky se mi nad sloupci zobrazuji prislusne filter fieldy. U toho datumu vytvoreni ale sloupec neexistuje

Ve filterFormFactory nadefinuješ formulář a pak vykreslíš v šabloně:
např.

{define col-filter-since}
        {input znakod}<br />
        {input since size=>"8"}
{/define}

Editoval MW (1. 9. 2016 8:09)

před 10 měsíci

MW
Člen | 537
+
0
-

Prosím, netvořil někdo něco podobného? Nemá někdo nějaký vzor jak na takové multi-formuláře.
Zkouším to přes Multiplier dle návodu, ale nemůžu tam to itemId dostat.

Form mám jako komponentu samostatně mimo presenter

protected function createComponentClientsServicesForm() {
    return $this->clientServicesFormControlFactory->create();
    }

Moc díky!

Editoval MW (5. 9. 2016 13:14)

před 10 měsíci

hitzoR
Člen | 52
+
+1
-

MW napsal(a):

Prosím, netvořil někdo něco podobného? Nemá někdo nějaký vzor jak na takové multi-formuláře.
Zkouším to přes Multiplier dle návodu, ale nemůžu tam to itemId dostat.

Form mám jako komponentu samostatně mimo presenter

protected function createComponentClientsServicesForm() {
  return $this->clientServicesFormControlFactory->create();
    }

Moc díky!

Presenter:

protected function createComponentClientsServicesForm() {
    return new Multiplier(function ($itemId) {
        return $this->clientServicesFormControlFactory->create($itemId);
    }
}

Šablona:

{control clientServicesForm-$itemId}

Editoval hitzoR (5. 9. 2016 16:14)

před 10 měsíci

MW
Člen | 537
+
0
-

Tak když to takto udělám, žádný parametr $itemId ve formuláři nemám.. Že by se to ztratilo někde v továrně na form?

Jediné co mohu použit ve formu je $this->name, kde je hodnota $itemId uložena..

Takže

Šablona:

{define col-services}
<td nowrap>
    {control $presenter['ikonServicesFormInline-'.$row->id]}
</td>
{/define}

Presenter:

protected function createComponentIkonServicesFormInline() {
    return new \Nette\Application\UI\Multiplier( function($itemId) {
        return $this->ikonServicesFormControlFactory->create($itemId);
    });
    }

Továrnička:

interface IkonServicesFormControlFactory {

    /**
     * @return IkonServicesFormControl
     */
    public function create();

}

a

final class IkonServicesFormControl extends Control {
...
protected function createComponentForm() {
    $form = $this->formFactory->create();
    $form->getElementPrototype()->class('ajax');

    $form->addCheckboxList('ikonservices', 'Služby', $this->getPresenter()->getIkonServices());

    dump($this->name); //tady je to $row->id

    return $form;
    }
...
}

Pokud to udělám přes „$this->name“ tak to formulář vykreslí ale jaksi bez <form> tagu a tedy je nefunkční.. nevim proc..

EDIT: Tak nefunkční je pouze první formulář na stránce! Ostatní jsou v pořádku.. nechapu proc první není obalený do <form></form.

EDIT 2 – Vyřešeno ALE ?
Tak problém je v tom, že formulář pro filtry je ukončen až pod gridem a tedy v době vytvoření dalšího formu není ukončený tag <form>
Prozatím takto.. ale není to ono.

{define col-services}
<td>
</form>
    {control $presenter['ikonServicesFormInline-'.$row->id]}
</td>
{/define}

Editoval MW (6. 9. 2016 13:09)

před 10 měsíci

hitzoR
Člen | 52
+
+1
-

Přesně tak, ztratilo se ti to v továrně, protože jsi tam ten parametr neuvedl.

interface IkonServicesFormControlFactory {

    /**
     * @return IkonServicesFormControl
     */
    public function create($itemId);

}

A do konstruktoru formuláře si ten parametr taky musíš dát a uložit do property.

final class IkonServicesFormControl extends Control {
    /** @var int */
    private $itemId;

    public function __construct($itemId)
    {
        parent::__construct();
        $this->itemId = $itemId;
    }
    ...
}

Tady to máš srozumitelně popsané, jak přesně to funguje. ;)

před 10 měsíci

MW
Člen | 537
+
0
-

Díky!

před 9 měsíci

simPod
Člen | 371
+
0
-

MW napsal(a):

simPod napsal(a):

diky. tohle mi asi uz doctrine poresi. Jak ale v sablone zobrazim ten input na filtrovani fieldu, u ktereho nezobrazuju sloupec? Automaticky se mi nad sloupci zobrazuji prislusne filter fieldy. U toho datumu vytvoreni ale sloupec neexistuje

Ve filterFormFactory nadefinuješ formulář a pak vykreslíš v šabloně:
např.

{define col-filter-since}
        {input znakod}<br />
        {input since size=>"8"}
{/define}

ted jsem to zkousel a nefunguje. koukal jsem do kodu a ani nemuze protoze v kodu se foreachuji columns a k nim dava filtr

{formContainer filter}
        {foreach $columns as $column}
            <th class="grid-col-{$column->name}">
                {if isset($form['filter'][$column->name])}
                    {ifset #col-filter-{$column->name}}
                        {include #"col-filter-{$column->name}" form => $form, column => $column}
                    {else}
                        {include #col-filter form => $form, column => $column}
                    {/ifset}
                {/if}
            </th>
        {/foreach}
        <th class="grid-col-actions">
            {include #global-filter-actions showCancel => $showFilterCancel, form => $form}
        </th>
{/formContainer}

takze to asi uplne jednoduse nejde udelat. Leda ze by se to narvalo do global-filter-actions ale to uz je spis na prepsani celeho bloku row-head-filter

před 9 měsíci

hrach
Člen | 1749
+
0
-

@simPod no, musis mit aspon ten jeden input pojmeneovanej podle toho column, coz vyse zminena ukazka od MW splnuje, ale muzeme vymyslet, ze by se ta podminka splnila, pokud existuje onen block.

před 9 měsíci

n.u.r.v.
Člen | 414
+
0
-

Ahoj, zjistil jsem, že v nové verzi (dev-master) nějak nemůžu upravovat tag <tr>… Ve staré verzi jsem to měl takto a fungovalo to:

{redefine row}
<tr class="{if $iterator->even}even{else}odd{/if}">
    {include #row-inner}
</tr>
{/redefine}

Teď ale {redefine row} nedělá nic… Jak můžu nastavit u tr class a taky zjistit sudost/lichost řádku? díky moc!

před 8 měsíci

n.u.r.v.
Člen | 414
+
0
-

Ahoj, přišel už někdo na to jak redefinovat řádek tabulky (tr)? díky

Editoval n.u.r.v. (17. 10. 2016 15:19)

před 8 měsíci

ondrusu
Člen | 102
+
0
-

Ahojte, měl bych dotaz. Umí tento datagrid i Doctrine 2?
Postupuji podle dokumentace, ale hlásí mi to chybu.

Result row does not have 'name' column. search

public function createComponentRenderCustomerList() {

    $grid = new Datagrid();
    $grid->addColumn('name', 'name')->enableSort();
    $grid->setDataSourceCallback(function($filter, $order) {
        return $this->facade->getList();
    });

    return $grid;
}

a v šabloně mám

<div class="table-responsive">
    {control renderCustomerList}
</div>

Prosím pěkně co dělam špatně?

před 8 měsíci

MW
Člen | 537
+
0
-

Prosím o radu,

Kromě gridu používám i Nextras/FormsExtensions a addDatePicker.

$form->addDatePicker();

Funguje v pohodě, jen ve filtru a tedy v $grid->setFilterFormFactory to nefunguje a musím definovat ručně.

{define col-filter-to}
    {input to class => 'form-control input-small date'}
{/define}

Jinak na všech formulářích i na inline editačním formuláři to funguje dobře. Narazil na to někdo?

Díky!

před 8 měsíci

simPod
Člen | 371
+
0
-

Neresil nekdo problem, kdy ve filtru chci mit textinput + checkbox?
Příklad použití by mohl být, že mám seznam subjektů, někteří mají IČO. Textinput filtruje podle IČO, zakštnutí checkboxu by vyfiltrovalo subjekty bez IČO. To bych si ohandloval v modelu, ale nejdřív tam ty hodnoty potřebuju dostat a to se mi nedaří.

Mám grid column ico. Zkoušel jsem do filter formu přidat 2 inputy

$form->addText('ico');
$form->addCheckbox('ico_none');
{define col-filter-ico}
    {input $column->name}
    {input $column->ico_none}
{/define}

Akorát pak datagrid vyžaduje i column ico_none. Co jsem koukal, tak je to postavený tak, že jeden input je vždy k jedné column

před 6 měsíci

MW
Člen | 537
+
0
-

Jak to prosím vypadá s tímto bugem?

Díky!

před 5 měsíci

Lazius
Člen | 5
+
0
-

Nevíte někdo proč mi nejde definovat vlastní šablona?

Příklad: vložím do vlastního souboru toto

{define table-open-tag}
    <table id="neco">
{/define}

ale nic se nezmění. Když ale smažu tento block v hlavní šabloně Datagrid.latte, tak se použije z mé šablony.

Dík za případné rady

před 5 měsíci

MW
Člen | 537
+
+1
-

Zdravím, věnuje se prosím někdo ještě tomuto gridu nebo je již vývoj ukončen?
Grid je super a je krásně modifikovatelný, ale přecejen má nějaké chybky.

Díky!

Editoval MW (6. 2. 9:25)

před 5 měsíci

n.u.r.v.
Člen | 414
+
0
-

j, taky by mě to zajímalo…

před 5 měsíci

hrach
Člen | 1749
+
0
-

Grid jsem docela dost fixoval, aby fungoval pro Nette 2.4 (https://github.com/…mmits/master, https://github.com/…mmits/master), aktivne a poradne se mu ale, fnuk, nevenuju. Nicmene to neznamena, ze by byl vyvoj ukoncen. Skvele by bylo, kdyby nekdo, kdo ho aktivne pouziva, byl shopen udelat nejaky pull-request.

před 5 měsíci

hrach
Člen | 1749
+
+2
-

Problem s razenim jsem opravil :-)

před 4 měsíci

MW
Člen | 537
+
0
-

hrach napsal(a):

Problem s razenim jsem opravil :-)

Super, moc díky !

před 4 měsíci

n.u.r.v.
Člen | 414
+
0
-

nevím která aktualizace to způsobila, ale najednou mi nefunguje {redefine row-actions}
sloupec se vůbec nevygeneruje

před 4 měsíci

hrach
Člen | 1749
+
0
-

:| @n.u.r.v. to bude asi vcera, dropnul jsem nutnost pro redefine. ale ocividne to je i bc break; kdyz to zamenis za define, tak to funguje? Asi bych to tak nechal, abychom nemuseli porad hackovat latte.

před 4 měsíci

n.u.r.v.
Člen | 414
+
0
-

Myslim ze define taky nešlo, až budu u PC tak vyzkouším…

před 4 měsíci

n.u.r.v.
Člen | 414
+
0
-

nn, tak {define row-actions}…{/define} taky nefunguje… :-(

před 4 měsíci

hrach
Člen | 1749
+
0
-

Aha, spatne jsem cetl, jde jen o row-actions :| Bohuzel az o vikendu muzu na to mrknout.

před 4 měsíci

n.u.r.v.
Člen | 414
+
0
-

dobře díky… dočasně jsem nouzově přidal $grid->addColumn(‚actions‘, ' ');
Když už na tom budeš dělat, mohl by si se podívat zda by tam nešlo vrátit definici <tr>? Občas potřebuji nastavit řádku atribut data-xxx…Zmizelo to po opravě kompatibility s nette 2.4 Díky

před 4 měsíci

hrach
Člen | 1749
+
0
-

mohl by si se podívat zda by tam nešlo vrátit definici <tr>? Občas potřebuji nastavit řádku atribut data-xxx…Zmizelo to po opravě kompatibility s nette 2.4 Díky

Yes, strasne me to stve, ale bohuzel to neni easy ted udelat. Ale zkusim to, to je mj. duvod, proc jeste neni RC na aktualni verzi, ze bych to chtel zkusit vratit.

před 4 měsíci

hrach
Člen | 1749
+
0
-

@n.u.r.v Pokud pridam row-actions treba pro tento datagrid, ktery nema filtering, etc, tak mi to funguje. https://github.com/…resenter.php

Tak uplne nevim, co s tim, hm? Co a kde a kdy ti presne nefunguje?

před 4 měsíci

hrach
Člen | 1749
+
0
-

@n.u.r.v podporu pro block row jsem opet pridal :-) nakonec to slo nejak nahackovat :) jak ted nato:
https://github.com/…blocks.latte#…

před 4 měsíci

n.u.r.v.
Člen | 414
+
+1
-

Ahoj, díky moc za opravy – dnes začalo fungovat {redefine row-actions} i

{redefine row}
<tr data-id="{$row->ID}">
    {include #row-inner row => $row}
</tr>
{/redefine}

před 4 měsíci

hrach
Člen | 1749
+
0
-

@n.u.r.v: jeste je treba pridat atribut id={$rowId}

před 4 měsíci

n.u.r.v.
Člen | 414
+
+1
-

ok, přidám, ale funguje to i tak…

před 4 měsíci

n.u.r.v.
Člen | 414
+
0
-

ahoj, narazil jsem teď na jeden problém – vložil jsem nextras datagrid do v šabloně mezi {form}{/form} a přestalo fungovat odesílání formuláře – místo toho se udělá jen refresh stránky…

Dá se to nějak vyřešit?

Není problém skrytě v html vygenerovat grid a jeho html pak třeba pomocí jquery překopírovat na správné místo do formuláře, ale když se tam vloží přímo {control grid}, tak je problém…

před 4 měsíci

hrach
Člen | 1749
+
0
-

@n.u.r.v no, to teda nevim, problem je hlavne v html, ze mas form ve formu. To podle me moc resit nejde.

před 4 měsíci

n.u.r.v.
Člen | 414
+
0
-

ahoj, tohle je jen jednoduchý grid bez formu – bez editace – pouze výpis dat a řazení… Asi to nahradím nějakou normální html tabulkou protože tady je datagrid zbytečný… jen mi to chování přišlo zvláštní, tak jsem to sem dal…

před 4 měsíci

hrach
Člen | 1749
+
0
-

@n.u.r.v v tom pripade zkus to oddebugovat a poslat PR :-) by se hodilo :) diky

před 3 měsíci

sepo
Člen | 48
+
0
-

Ahoj

prečo datagrid posiela aj prázdne filtre ?

?datagrid-filter%5Bfirstname%5D=&datagrid-filter%5Bsurname%5D=&datagrid-filter%5Bgender%5D=male

před 3 měsíci

hrach
Člen | 1749
+
0
-

muze to byt napriklad proto, ze vychozi hodnota filtru nejakou hodnotu ma, a jeji vynolovani je tedy treba poslat routerem; ale jinak nevim. muzu na to mrknout. verze 3?

před 3 měsíci

sepo
Člen | 48
+
0
-

hrach napsal(a):

muze to byt napriklad proto, ze vychozi hodnota filtru nejakou hodnotu ma, a jeji vynolovani je tedy treba poslat routerem; ale jinak nevim. muzu na to mrknout. verze 3?

verzia 3.0-dev
nie je to týmto ? „:https://github.com/…0f16bc488cc7

před 3 měsíci

H0w4rd
Člen | 67
+
0
-

Tak, dnes jsem se snazil upgradovat na Nette 2.4.

Verze 2.1
Thrown exception ‚Call to undefined method Latte\Compiler::getTemplateId().‘ in …/bootstrap-style/@bootstrap3.datagrid.latte:47
Ale to jsem ani necekal, ze by fungovalo.

Verze 3.0.0.rc1
Ta mi fungovala, ale bohuzel sem nedokazal rozchodit, aby fungoval ajaxove, po kliknuti na strankovani/razeni/filtrovani se sice v ladence objevi radek AJAX, ale grid se neprekresli.

Verze dev-master
Call to undefined method Nette\Forms\Container::getControl(), did you mean getControls()?

Nejak nevim, jak docilit funkcniho stavu. Zatim nase aplikace jedou na 2.3.

Editoval H0w4rd (16. 3. 14:57)

před 3 měsíci

hrach
Člen | 1749
+
0
-

@H0w4rd

  • co pouzivas na ajax? muzes mknout na github.com/nextras/datagrid-demo – tam ajax funguje :X
  • dev-master – a kde se getControl() vola? mozna zaloz issue, ale neni to issue u tebe?
Stránky: Prev 1 … 8 9 10 11 Next RSS tématu