contributte / datagrid

:muscle: DataGrid for Nette Framework: filtering, sorting, pagination, tree view, table view, translator, etc
https://contributte.org/packages/contributte/datagrid/
MIT License
288 stars 193 forks source link

Rozsiahlejšie možnosti vlastného renderu #38

Closed romanmatyus closed 8 years ago

romanmatyus commented 8 years ago

Aktuálne je možné definovať vlastný render iba pre obsah bunky v štandardnom stave.

{define col-id}
    :)
{/define}

Bolo by fajn rozšíriť možnosti o:

paveljanda commented 8 years ago

Hlavičku - souhlas.

Ale i šablonu inline editace? Myslíš, že když už někdo bude chtít inline editovat, napadne ho ještě měnit šablonu pro tu "textareu"?

romanmatyus commented 8 years ago

Využil som to v inom gride (TwiGrid) konkrétne včera.

V jednom stĺpci som potreboval vykresliť viac formulárových prvkov s vlastnými triedami, toggle a pod.

{define body-cell-portal_fee}
    <td class="text-center">
        {if $record->portal_fee_active}
            {$record->portal_fee_price|number:2,',',' '} € {_activationGrid.season.$record->portal_fee_season}
        {else}
            -
        {/if}
    </td>
{/define}
{define body-cell-portal_fee-inline}
<td n:class='body-inline-cell, "body-inline-cell-{$column}"'>
    <div class="input-group">
        <span class="input-group-addon">
            <input n:name="inline-values-portal_fee-portal_fee_active" class="dark">
            <label n:name="inline-values-portal_fee-portal_fee_active"><span></span> {_$_input->caption}</label>
        </span>
        {input inline-values-portal_fee-portal_fee_price, class => 'form-control'}
        <span id="portal-fee-season" class="input-group-addon">
            {input inline-values-portal_fee-portal_fee_season, class => 'form-control'}
        </span>
    </div>
</td>
{/define}
paveljanda commented 8 years ago

To je spíš o tom, jestli se bude inline editace vytvářet skrze nette formy a tudíž propracovaněji (možná napříč více sloupci, nebo jednoduše a rychle pomocí jednoho pole a basta - tak je to teď.

Zamyslím se nad tím.

romanmatyus commented 8 years ago

Predvolene by to mohlo zostať tak ako to je - proste input, ktrorý sa onchange odošle.

Voliteľne by malo byť možné vykresliť na tom mieste aj vlastnú komponentu - Form/FormContainer, ktorého spracovanie je ponechané na programátorovi.

paveljanda commented 8 years ago

Implementoval jsem definici column headeru pomocí latte blocku.

S tím širším inline editem se mi to moc nelíbí. Tedy líbí, ale nese to s sebou bohužel dost problémů:

Uživatel by měl vytvořit formulář, kde by byly všechny sloupce definované. Těžko pak říct, kde jak se mají sloupce vypisovat a které inputy se mají použít pro který sloupec, pokud je uživatel všechny nedefinuje. Dále: datagrid by měl umět v takovém případě vytvořit alespoň základní sadu inputů. Nemá ale podle čeho poznat, jaký prvek formuláře zvolit. A podle "reflexe" databázových tabulek to nejde, i to je prasárna.. Mohl bych pokračovat dál.. Kvůli hodně důvodům si myslím, že takováto fíčura by měla být zatím ponechána do rukou cílového programátora. Třeba se to do datargidu jednou dostane. A třeba hodně brzy, uvidíme.

romanmatyus commented 8 years ago

Myslel som to tak, že by to fungovalo ako doteraz, iba to kontrolovalo existenciu col-<id>-inline.

Ak existuje, vypíše sa. Ak tam vykreslím vlastnú komponentu, je to na mne, rovnako aj spracovanie.

Faktom ale je, že som to neskúšal implementovať a neviem nakoľko by to bolo zložité.

paveljanda commented 8 years ago

No to je přesně ono. Komponentu by musel vytvářet datagrid. Jakmile by ji vytvářel, musel by vytvořit nějaké výchozí pole a podobně - už můžu pokračovat v předchozím commentu. Je to dost složité.

Třeba mě časem napadne jednodušší. Řešení..