Nový Nette DataGrid pro Bootstrap s možností vypsat strom
- kralik
- Člen | 230
Ahoj,
trochu mě začal zlobit DataGrid a vůbec nevím proč.
Trápí mne to, že když chci použít custom filtr a nebo rozkliknout subgrid
tak se grid chová tak, že napíší nějaké jmnéno do filtru příjmení a
kliknu na Filtr.
Nic se nestane, ani žádnou chybu do konzole nedostanu, resp. do konzoli
dostanu GET … 200 OK
Ale až Stisknutím F5(nebo dám refresh stránky) se správně
vyfiltrují data.
Nesetkali jste se s tímto chováním?
Zápasím s tím už dva dni a zatím nevím co s tím je. Řekl bych, že se mi asi budou někde prát JS mezi sebou…
Moc díky
Tom
Editoval kralik (15. 7. 2015 12:10)
- mesour
- Nette Blogger | 236
kralik napsal(a):
Ahoj,
trochu mě začal zlobit DataGrid a vůbec nevím proč.
Trápí mne to, že když chci použít custom filtr a nebo rozkliknout subgrid tak se grid chová tak, že napíší nějaké jmnéno do filtru příjmení a kliknu na Filtr.
Nic se nestane, ani žádnou chybu do konzole nedostanu, resp. do konzoli dostanu GET … 200 OK
Ale až Stisknutím F5(nebo dám refresh stránky) se správně vyfiltrují data.Nesetkali jste se s tímto chováním?
Zápasím s tím už dva dni a zatím nevím co s tím je. Řekl bych, že se mi asi budou někde prát JS mezi sebou…
Moc díky
Tom
Stáhni si dev-master už se to tu s custom filtrem řešilo, zatím je to fixnuté pouze tam.
- jEhLa
- Člen | 70
Zdravím,
jde nějak nastavit text Buttonu ve sloupci actions, podle proměnné právě
zobrazovaného řádku? Jako u addText třeba callback?
$actions = $grid->addActions('');
$actions->addButton()
->setClassName('btn-default')
->setText('Zpracovat') //tento text potřebuji změnit podle toho jestli $row['status'] je 1,2,nebo 3
->setIcon('right glyphicon-triangle-right') //tady to stejné
->setAttribute('href', new \Mesour\DataGrid\Components\Link('Requests:show', array(
'id' => '{id}'
)));
Dalo by se to vyřešit třeba takto:
$grid->addText('')
->setOrdering(false)
->setCallback(function($row){
$button = \Nette\Utils\Html::el('a')
->addAttributes(
array(
'href'=>$this->link('Requests:show',array('id'=>$row['id'])),
'class'=>'btn btn-default'
)
);
if($row['request_status'] == 3){
$button->setText('Upravit');
}
else {
$button->setText('Zpracovat');
}
return $button;
});
Ale to se mi nezdá jako moc dobrý řešení. Nebo jo?
Editoval jEhLa (21. 7. 2015 11:21)
- mesour
- Nette Blogger | 236
kralik napsal(a):
Ahoj,
právě že jsem zkoušel dev-master verzi, ale grid se chová stejně.
Tak nevím čím by to ještě mohlo být.
Všechny JS jsem zneplatnil abych vyloučil nějaké problémy a grid se cová stejně, tedy zobrazí správná data až po refresh.Díky
Dořešeno v mailu :-) Pro úplnost se jednalo o to, že @kralik používal nette.ajax.js od @VojtěchDobeš. Tyhle problémy už nebudou nastávat s verzí 2.0.7, která bude zveřejněná už zanedlouho ;-)
Editoval mesour (25. 7. 2015 20:51)
- mesour
- Nette Blogger | 236
jEhLa napsal(a):
Zdravím,
jde nějak nastavit text Buttonu ve sloupci actions, podle proměnné právě zobrazovaného řádku? Jako u addText třeba callback?$actions = $grid->addActions(''); $actions->addButton() ->setClassName('btn-default') ->setText('Zpracovat') //tento text potřebuji změnit podle toho jestli $row['status'] je 1,2,nebo 3 ->setIcon('right glyphicon-triangle-right') //tady to stejné ->setAttribute('href', new \Mesour\DataGrid\Components\Link('Requests:show', array( 'id' => '{id}' )));
Dalo by se to vyřešit třeba takto:
$grid->addText('') ->setOrdering(false) ->setCallback(function($row){ //... });
Ale to se mi nezdá jako moc dobrý řešení. Nebo jo?
Asi jedině, akorát klidně můžeš použít Button místo toho dělat všechno z Nette\Utils\Html ;-) Asi takto:
$grid->addText('')
->setOrdering(false)
->setCallback(function($row) {
$button = new Mesour\Components\Button;
$button->setPresenter($this); // předpokládám, že v $this je Nette\..\UI\Presenter a verze PHP je vyšší nebo rovna 5.4
//další nastavení na $button, ikona atp
if ($row['request_status'] == 3) {
$button->setText('Upravit');
} else {
$button->setText('Zpracovat');
}
return $button;
});
Editoval mesour (25. 7. 2015 21:03)
- mesour
- Nette Blogger | 236
Zdravím všechny :-)
Takže do dev-master jsem hodil nové úpravy ;-) Jedná se o dlouho očekávané nové featury. Zatím to je pouze v dev-master, není tam žádný BC break. Takže to nechám do konce příštího týdne pouze takto, prosím testujte a pokud vás napadne ještě nějaká vychytávka, kterou tam přidat, tak dejte vědět. Kolem toho konce příštího týdne z toho udělám 2.0.7 ;-)
Co je nového a co testovat:
1. Přidal jsem možnost nastavit relace plus k nim také inline edit (select s daty z číselníku). Pro info, DibiDataSource to neumí, kvůli tomu, že se posílá pouze \DibiDataSource a ne \DibiFluent :( Názorně se používá takto, pouze nastavím na DataSourcu, ostatní vše už se vyřeší automaticky:
//\Mesour\DataGrid\IDataSource::setRelated($table, $key, $column, $as = NULL, $primary = 'id')
$source->setRelated('group', 'group_id', 'name', 'group_name');
Ta relace tam přidá sloupec „group_name“, ale kdyby se nespecifikovaly ostatní, tak by vybral jen ten „group_name“ a grid by řval, že ID v datech neexistuje. Už jsem tam i pro ten případ upravil exceptionu, aby řekla že se mají nastavit sloupce v SELECTu, pokud jsou nastavené nějaké relace, pokud nejsou, tak řve to samé jako dřív.
$source = new NetteDbDataSource(
$this->db->table('user')
->select('user_id,user.name,action,surname,email')
->select('last_login,amount,avatar,order,timestamp,group_id'),
$this->db
);
Také je potřeba poslat v konstruktoru jako druhý parametr \Nette\Database\Context. U ArrayDataSource je to zase trochu jiné, pak popíši v dokumentaci. Pokud by bylo hodně požadavků, aby toto uměl DataSource pro DIBI, tak by bylo možné udělat něco jako DibiFluentDataSource, tím by se zachovala zpětná kompatibilita a bylo by možné to mít i pro DIBI.
2. Pořád jste chtěli implementovat nette.ajax.js od @VojtěchDobeš. Nakonec jsem ale místo nějakého nastavení a dalších blbostí udělal to, že reload snippetů je nyní součástí gridu, takže už nebude potřeba mít jakýkoliv nette.ajax nebo jquery.nette, ale vše bude fungovat samo. Tím jsem také odstranil jednu položku z required ;-)
3. Protože přibyly relace, tak nastal problém s tím, že třeba tabulka group měla sloupec name a tabulka user také. Na sloupcích, které dědí od \Mesour\Column\Filter přibyla metoda setRealColumnName.
$grid->addText('name', 'Name')
->setRealColumnName('user.name');
Editoval mesour (6. 8. 2015 21:47)
- cecko
- Člen | 1
mesour napsal(a):
Zdravím všechny :-)
Takže do dev-master jsem hodil nové úpravy ;-) Jedná se o dlouho očekávané nové featury. Zatím to je pouze v dev-master, není tam žádný BC break. Takže to nechám do konce příštího týdne pouze takto, prosím testujte a pokud vás napadne ještě nějaká vychytávka, kterou tam přidat, tak dejte vědět. Kolem toho konce příštího týdne z toho udělám 2.0.7 ;-)
Co je nového a co testovat:
1. Přidal jsem možnost nastavit relace plus k nim také inline edit (select s daty z číselníku). Pro info, DibiDataSource to neumí, kvůli tomu, že se posílá pouze \DibiDataSource a ne \DibiFluent :( Názorně se používá takto, pouze nastavím na DataSourcu, ostatní vše už se vyřeší automaticky:
//\Mesour\DataGrid\IDataSource::setRelated($table, $key, $column, $as = NULL, $primary = 'id') $source->setRelated('group', 'group_id', 'name', 'group_name');
Ta relace tam přidá sloupec „group_name“, ale kdyby se nespecifikovaly ostatní, tak by vybral jen ten „group_name“ a grid by řval, že ID v datech neexistuje. Už jsem tam i pro ten případ upravil exceptionu, aby řekla že se mají nastavit sloupce v SELECTu, pokud jsou nastavené nějaké relace, pokud nejsou, tak řve to samé jako dřív.
$source = new NetteDbDataSource( $this->db->table('user') ->select('user_id,user.name,action,surname,email') ->select('last_login,amount,avatar,order,timestamp,group_id'), $this->db );
Také je potřeba poslat v konstruktoru jako druhý parametr \Nette\Database\Context. U ArrayDataSource je to zase trochu jiné, pak popíši v dokumentaci. Pokud by bylo hodně požadavků, aby toto uměl DataSource pro DIBI, tak by bylo možné udělat něco jako DibiFluentDataSource, tím by se zachovala zpětná kompatibilita a bylo by možné to mít i pro DIBI.
2. Pořád jste chtěli implementovat nette.ajax.js od @VojtěchDobeš. Nakonec jsem ale místo nějakého nastavení a dalších blbostí udělal to, že reload snippetů je nyní součástí gridu, takže už nebude potřeba mít jakýkoliv nette.ajax nebo jquery.nette, ale vše bude fungovat samo. Tím jsem také odstranil jednu položku z required ;-)
3. Protože přibyly relace, tak nastal problém s tím, že třeba tabulka group měla sloupec name a tabulka user také. Na sloupcích, které dědí od \Mesour\Column\Filter přibyla metoda setRealColumnName.
$grid->addText('name', 'Name') ->setRealColumnName('user.name');
Ahoj,
zkousel jsem pouzit propojeni na relaci dle tveho navodu:
<?php
// relacni klic sloupec vlastni primarni
// tabulka nazev klic
$source->setRelated('pokoje', 'pokoj_id', 'nazev','pokoj_nazev','pokoj_id');
?>
nette my ovsem vraci exception
No reference found for $rezervace->pokoje
pritom, kdyz se podivam do debuggeru, tak dotaz
SELECT CONSTRAINT_NAME, COLUMN_NAME, REFERENCED_TABLE_NAME,
REFERENCED_COLUMN_NAME
FROM information_schema.KEY_COLUMN_USAGE
WHERE TABLE_SCHEMA = DATABASE() AND REFERENCED_TABLE_NAME IS NOT NULL AND
TABLE_NAME = ‚rezervace‘
skutecne vraci referenci:
constraint_name rezervace_ibfk1
column_name pokoj_id
referenced_table_name pokoje
referenced_column_name pokoj_id
obe tabulky jsou ulozeny na INNODB a z composeru mam stazeny dev-master
Muzes mi prosim poradit, co delam spatne? Mockrat dekuji
- mesour
- Nette Blogger | 236
cecko napsal(a):
mesour napsal(a):
Zdravím všechny :-)
Takže do dev-master jsem hodil nové úpravy ;-) Jedná se o dlouho očekávané nové featury. Zatím to je pouze v dev-master, není tam žádný BC break. Takže to nechám do konce příštího týdne pouze takto, prosím testujte a pokud vás napadne ještě nějaká vychytávka, kterou tam přidat, tak dejte vědět. Kolem toho konce příštího týdne z toho udělám 2.0.7 ;-)
Co je nového a co testovat:
1. Přidal jsem možnost nastavit relace plus k nim také inline edit (select s daty z číselníku)…
Ahoj,
zkousel jsem pouzit propojeni na relaci dle tveho navodu:
<?php // relacni klic sloupec vlastni primarni // tabulka nazev klic $source->setRelated('pokoje', 'pokoj_id', 'nazev','pokoj_nazev','pokoj_id'); ?>
nette my ovsem vraci exception
No reference found for $rezervace->pokoje…Muzes mi prosim poradit, co delam spatne? Mockrat dekuji
Ahoj, to je zvláštní. Můžeš mi prosím poslat create scripty i s altery? Ať to můžu otestovat na tvém schématu :-) Klidně na http://mesour.com/contact/
- George
- Člen | 8
Zdravim,
vzhledem k potrebe subgridu jsem sahl po tomto datagridu, ale hned na zacatku jsem narazil na nekolik bugu (tedy doufam, ze to nejsou moje bugy ;) )
Jako datasource pouzivam ArrayDataSource.
Data ziskavam v JSON formatu a nasledne je prevadim na Array.
Na test mam v presenteru takovyto zakladni grid
protected function createComponentGridTest($name)
{
$json = '{ "status":1,
"data":[
{"id":1,"value1":"1111","value2":"2222","value3":true,"value4":false},
{"id":2,"value1":"3333","value2":null,"value3":false,"value4":true}
]
}';
$arr = json_decode($json, true)['data'];
$source = new ArrayDataSource($arr);
$source->setPrimaryKey('id');
$grid = new Grid($this, $name);
$grid->setDataSource($source);
$grid->enablePager(20);
$grid->enableFilter();
$grid->enableExport(__DIR__ . '/../../temp/cache');
return $grid;
}
Prvni bug spociva v tom, ze jakmile data obsahuji hodnotu
null, tak pri nacteni gridu dostanu do javascript konzole hlasku „Uncaught
TypeError: Cannot read property ‚replace‘ of null“ a nefunguje
dropdown menu filtru.
Napr. s daty ktere jsem zde pouzil funguje filtr pro polozky ‚id‘ a
‚value1‘, ale pro polozku ‚value2‘, ‚value3‘ a ‚value4‘ jiz
nejde filtr rozkliknout.
Mohu to samozrejme resit zamenou null za "", ale myslim, ze by si to mel
osetrit grid.
Druhy bug se tyka exportu. V dev-master verzi dostanu po kliknuti na button „Export to csv“ chybove hlaseni
Call to a member function fetchAll() on a non-object
File: mesour/datagrid/src/DataSources/ArrayDataSource.php:68
68: return $this->getExportSelect()->fetchAll();
Teprve pokud aktivuji filtr, tak export funguje.
Ve verzi 2.0.6 export funguje i bez filtru, takze chybka v devel verzi.
Treti bug nevim jestli je bug nebo jen delam neco spatne. Pokud je v datech hodnota true nebo false, napr. v mem pripade value3:true, tak Grid misto true zobrazi 1 a misto false 0 coz beru jako ok. Filtr mi da ale na vyber hodnoty true a false a at vyberu kteroukoliv, tak nevrati zadna data a grid je prazdny.
Dalsi a zatim posledni co me zajima je pouziti custom filtru.
Pokud si nadefinuji vlastni filtr, tak mi nevyhledava zadany retezec case
insensitive a take vyhledava jen cely retezec. Stacilo by mi kdyby na retezec
pouzil CONTAINS a case insensitive.
Snad jsem to popsal srozumitelne :)
Jsou to bugy nebo delam neco spatne ?
Jinak pekny grid.
Diky
Editoval George (24. 8. 2015 21:18)
- Phalanx
- Člen | 310
Ahoj, dnes jsem přešel v verze 2.0.5 na 2.0.6 a custom filtry mi nefiltrují (standartní ano).
Uncaught TypeError: Cannot set property ‚filterValues‘ of undefined
<script>mesour.dataGrid[„grid“].filterValues = [];</script>
Chci na tuto chybu jen upozornit. Přešel jsem zpět k verzi 2.0.5
- roman.campula
- Člen | 60
Zdravím,
potvrzuji, že ve verzi 2.0.6 nefunguje standardní filtr, vyhazuje hlášku
Uncaught TypeError: Cannot read property ‚replace‘ of null
- roman.campula
- Člen | 60
Kromě toho, je možné nějak získat data z řádku DB, která pak použiji v zobrazení tlačítka?
Níže uvedený PHP kód funguje, vygeneruje to cca:
<a data="123"></a>
$actions->addButton()
->addAttribute("data", "{id}")
Níže uvedený PHP kód však funguje, vygeneruje to cca:
<a data="Text {id}"></a>
$actions->addButton()
->addAttribute("data", "Text {id}")
Já právě potřebuji to číslo ID dále zpracovávat (zjistit podle něho něco z DB) a pak zobrazit ne ID, ale něco jiného. Jakmile však použiji druhý uvedený tvar, k ID už se nemohu dostat, a to jak v prostém výpise, tak i třeba ho použít jako parametr funkce.
- kralik
- Člen | 230
Ahoj,
snažím se zprovoznit novou feature ve verzi 2.0.7, resp. verzi dev, ale
nedaří se mi.
Jedná se o inline editaci FK do tabulky.
<?php
$source->setRelated('group', 'group_id', 'name', 'group_name');
?>
Podařilo se vám to někomu zprovoznit?
Nevím kam přesně s tím databse context
Chyba: „Related require set Nette database context in constructor.“
Super by byl příklad přímo v dokumentaci.
Moc díky
- kralik
- Člen | 230
Ahoj,
ještě bych rád požádal o radu.
Je možné nějak dostat do Presenteru info, že je použit ten a ten filtr
s hodnotou?
třeba $filtr[‚CreateName‘] = ‚Svoboda‘;
Na základě tohoto bych pak potřeboval provést $this->redrawControl(‚infoSnippet‘);
Je toto možné nějak provést?
Moc díky
- kralik
- Člen | 230
cecko napsal(a):
mesour napsal(a):
Zdravím všechny :-)
Takže do dev-master jsem hodil nové úpravy ;-) Jedná se o dlouho očekávané nové featury. Zatím to je pouze v dev-master, není tam žádný BC break. Takže to nechám do konce příštího týdne pouze takto, prosím testujte a pokud vás napadne ještě nějaká vychytávka, kterou tam přidat, tak dejte vědět. Kolem toho konce příštího týdne z toho udělám 2.0.7 ;-)
Co je nového a co testovat:
1. Přidal jsem možnost nastavit relace plus k nim také inline edit (select s daty z číselníku). Pro info, DibiDataSource to neumí, kvůli tomu, že se posílá pouze \DibiDataSource a ne \DibiFluent :( Názorně se používá takto, pouze nastavím na DataSourcu, ostatní vše už se vyřeší automaticky:
//\Mesour\DataGrid\IDataSource::setRelated($table, $key, $column, $as = NULL, $primary = 'id') $source->setRelated('group', 'group_id', 'name', 'group_name');
Ta relace tam přidá sloupec „group_name“, ale kdyby se nespecifikovaly ostatní, tak by vybral jen ten „group_name“ a grid by řval, že ID v datech neexistuje. Už jsem tam i pro ten případ upravil exceptionu, aby řekla že se mají nastavit sloupce v SELECTu, pokud jsou nastavené nějaké relace, pokud nejsou, tak řve to samé jako dřív.
$source = new NetteDbDataSource( $this->db->table('user') ->select('user_id,user.name,action,surname,email') ->select('last_login,amount,avatar,order,timestamp,group_id'), $this->db );
Také je potřeba poslat v konstruktoru jako druhý parametr \Nette\Database\Context. U ArrayDataSource je to zase trochu jiné, pak popíši v dokumentaci. Pokud by bylo hodně požadavků, aby toto uměl DataSource pro DIBI, tak by bylo možné udělat něco jako DibiFluentDataSource, tím by se zachovala zpětná kompatibilita a bylo by možné to mít i pro DIBI.
2. Pořád jste chtěli implementovat nette.ajax.js od @VojtěchDobeš. Nakonec jsem ale místo nějakého nastavení a dalších blbostí udělal to, že reload snippetů je nyní součástí gridu, takže už nebude potřeba mít jakýkoliv nette.ajax nebo jquery.nette, ale vše bude fungovat samo. Tím jsem také odstranil jednu položku z required ;-)
3. Protože přibyly relace, tak nastal problém s tím, že třeba tabulka group měla sloupec name a tabulka user také. Na sloupcích, které dědí od \Mesour\Column\Filter přibyla metoda setRealColumnName.
$grid->addText('name', 'Name') ->setRealColumnName('user.name');
Ahoj,
zkousel jsem pouzit propojeni na relaci dle tveho navodu:
<?php // relacni klic sloupec vlastni primarni // tabulka nazev klic $source->setRelated('pokoje', 'pokoj_id', 'nazev','pokoj_nazev','pokoj_id'); ?>
nette my ovsem vraci exception
No reference found for $rezervace->pokojepritom, kdyz se podivam do debuggeru, tak dotaz
SELECT CONSTRAINT_NAME, COLUMN_NAME, REFERENCED_TABLE_NAME, REFERENCED_COLUMN_NAME
FROM information_schema.KEY_COLUMN_USAGE
WHERE TABLE_SCHEMA = DATABASE() AND REFERENCED_TABLE_NAME IS NOT NULL AND TABLE_NAME = ‚rezervace‘skutecne vraci referenci:
constraint_name rezervace_ibfk1
column_name pokoj_id
referenced_table_name pokoje
referenced_column_name pokoj_idobe tabulky jsou ulozeny na INNODB a z composeru mam stazeny dev-master
Muzes mi prosim poradit, co delam spatne? Mockrat dekuji
Ahoj, prosím tě mohl by si poskytnou část kódy kde používáš
$source->setRelated(‚…‘).
Nějak se mi nedaří to rozjet. Nevím co a kam s tím konstrukterem.
Moc díky.
Tom
- esorimer
- Člen | 114
Zdravím,
existuje nějaká podpora pro editaci enum sloupců? (Aby si uživatel mohl
vybrat ze selectu …)
PS: A ještě jeden dotaz. Když se nepodří editace editovatelné cell, jak zobrazit chybu?
PSS: Jak můžu nastavit třídění podle více sloupců? Jde něco jako
$grid->setDefaultOrder('IF(price IS NULL, 0, 1)', 'ASC')->setDefaultOrder('price','ASC');
?
Editoval esorimer (16. 10. 2015 14:04)
- mesour
- Nette Blogger | 236
kralik napsal(a):
Ahoj,
ještě bych rád požádal o radu.
Je možné nějak dostat do Presenteru info, že je použit ten a ten filtr s hodnotou?
třeba $filtr[‚CreateName‘] = ‚Svoboda‘;Na základě tohoto bych pak potřeboval provést $this->redrawControl(‚infoSnippet‘);
Je toto možné nějak provést?
Moc díky
Ahoj,
Updatuj na 2.0.7 a takto:
$filter = $grid->enableFilter();
$defaultFilterValues = $filter->getDefaultFilterValues();
Na starších verzích:
$grid->enableFilter();
$defaultFilterValues = $grid['filter']->settings;
Editoval mesour (2. 11. 2015 16:49)
- mesour
- Nette Blogger | 236
kralik napsal(a):
cecko napsal(a):
mesour napsal(a):
Zdravím všechny :-)
…
Ahoj,
zkousel jsem pouzit propojeni na relaci dle tveho navodu:
<?php // relacni klic sloupec vlastni primarni // tabulka nazev klic $source->setRelated('pokoje', 'pokoj_id', 'nazev','pokoj_nazev','pokoj_id'); ?>
nette my ovsem vraci exception
No reference found for $rezervace->pokojepritom, kdyz se podivam do debuggeru, tak dotaz
SELECT CONSTRAINT_NAME, COLUMN_NAME, REFERENCED_TABLE_NAME, REFERENCED_COLUMN_NAME
FROM information_schema.KEY_COLUMN_USAGE
WHERE TABLE_SCHEMA = DATABASE() AND REFERENCED_TABLE_NAME IS NOT NULL AND TABLE_NAME = ‚rezervace‘skutecne vraci referenci:
constraint_name rezervace_ibfk1
column_name pokoj_id
referenced_table_name pokoje
referenced_column_name pokoj_idobe tabulky jsou ulozeny na INNODB a z composeru mam stazeny dev-master
Muzes mi prosim poradit, co delam spatne? Mockrat dekuji
Ahoj, prosím tě mohl by si poskytnou část kódy kde používáš $source->setRelated(‚…‘).
Nějak se mi nedaří to rozjet. Nevím co a kam s tím konstrukterem.
Moc díky.
Tom
Ahoj, na zdrojáky se můžeš podívat na GitHubu :-)
- mesour
- Nette Blogger | 236
kralik napsal(a):
Ahoj,
snažím se zprovoznit novou feature ve verzi 2.0.7, resp. verzi dev, ale nedaří se mi.
Jedná se o inline editaci FK do tabulky.<?php $source->setRelated('group', 'group_id', 'name', 'group_name'); ?>
Podařilo se vám to někomu zprovoznit?
Nevím kam přesně s tím databse context
Chyba: „Related require set Nette database context in constructor.“Super by byl příklad přímo v dokumentaci.
Moc díky
Do konstruktoru toho data sourcu, když ho vytváříš :-)
Už jsem přidal ten příklad do dokumentace: http://grid.mesour.com/…on2/related/ :-)
Editoval mesour (3. 11. 2015 12:28)
- mesour
- Nette Blogger | 236
roman.campula napsal(a):
Kromě toho, je možné nějak získat data z řádku DB, která pak použiji v zobrazení tlačítka?
Níže uvedený PHP kód funguje, vygeneruje to cca:
<a data="123"></a>
$actions->addButton() ->addAttribute("data", "{id}")
Níže uvedený PHP kód však funguje, vygeneruje to cca:
<a data="Text {id}"></a>
$actions->addButton() ->addAttribute("data", "Text {id}")
Já právě potřebuji to číslo ID dále zpracovávat (zjistit podle něho něco z DB) a pak zobrazit ne ID, ale něco jiného. Jakmile však použiji druhý uvedený tvar, k ID už se nemohu dostat, a to jak v prostém výpise, tak i třeba ho použít jako parametr funkce.
Tohle už se tu řešilo, ideálně použít sloupec text a v callbacku vytvořit a vrátit instanci Buttonu :-)
- mesour
- Nette Blogger | 236
Re4DeR napsal(a):
Ahoj, perfektní. Můžu se zeptat: je možné, aby se editable buňka uložila i při kliknutí jinam (=bez entru) ?
s js se moc nekamarádím :(
Myslím, že tohle by nebyl moc dobrý nápad. Někdo by to třeba nechtěl uložit a jen by se překlikl vedle no a ono by se mu to uložilo…
- mesour
- Nette Blogger | 236
Phalanx napsal(a):
Ahoj, dnes jsem přešel v verze 2.0.5 na 2.0.6 a custom filtry mi nefiltrují (standartní ano).
Uncaught TypeError: Cannot set property ‚filterValues‘ of undefined
<script>mesour.dataGrid[„grid“].filterValues = [];</script>Chci na tuto chybu jen upozornit. Přešel jsem zpět k verzi 2.0.5
Přejdi na 2.0.7 :-) Mezi 2.0.6 a 2.0.7 jsou jenom bug fixy a nové featury :)
- mesour
- Nette Blogger | 236
petak23 napsal(a):
Pekný deň,
chcem sa opýtať. Mám Gride aj sub-grid. Ale niektoré položky hlavného gridu neobsahujú obsah pre sub-grid. Je možné pre tieto konkrétne riadky výpis sub-grid-u vypnúť? T.j. aby sa mi tam nezobrazovalo ani to +.
Vďaka.
Ahoj, přidal jsem v 2.0.7 :-) V callbacku metody setCheckCallback na SubItemu a následně přes setDisabled.
http://grid.mesour.com/…ms/settings/#…
Editoval mesour (2. 11. 2015 16:57)
- mesour
- Nette Blogger | 236
George napsal(a):
Zdravim,
vzhledem k potrebe subgridu jsem sahl po tomto datagridu, ale hned na zacatku jsem narazil na nekolik bugu (tedy doufam, ze to nejsou moje bugy ;) )
Jako datasource pouzivam ArrayDataSource.
Data ziskavam v JSON formatu a nasledne je prevadim na Array.Na test mam v presenteru takovyto zakladni grid
protected function createComponentGridTest($name) { $json = '{ "status":1, "data":[ {"id":1,"value1":"1111","value2":"2222","value3":true,"value4":false}, {"id":2,"value1":"3333","value2":null,"value3":false,"value4":true} ] }'; $arr = json_decode($json, true)['data']; $source = new ArrayDataSource($arr); $source->setPrimaryKey('id'); $grid = new Grid($this, $name); $grid->setDataSource($source); $grid->enablePager(20); $grid->enableFilter(); $grid->enableExport(__DIR__ . '/../../temp/cache'); return $grid; }
Prvni bug spociva v tom, ze jakmile data obsahuji hodnotu null, tak pri nacteni gridu dostanu do javascript konzole hlasku „Uncaught TypeError: Cannot read property ‚replace‘ of null“ a nefunguje dropdown menu filtru.
Napr. s daty ktere jsem zde pouzil funguje filtr pro polozky ‚id‘ a ‚value1‘, ale pro polozku ‚value2‘, ‚value3‘ a ‚value4‘ jiz nejde filtr rozkliknout.
Mohu to samozrejme resit zamenou null za "", ale myslim, ze by si to mel osetrit grid.Druhy bug se tyka exportu. V dev-master verzi dostanu po kliknuti na button „Export to csv“ chybove hlaseni
Call to a member function fetchAll() on a non-object File: mesour/datagrid/src/DataSources/ArrayDataSource.php:68 68: return $this->getExportSelect()->fetchAll();
Teprve pokud aktivuji filtr, tak export funguje.
Ve verzi 2.0.6 export funguje i bez filtru, takze chybka v devel verzi.Treti bug nevim jestli je bug nebo jen delam neco spatne. Pokud je v datech hodnota true nebo false, napr. v mem pripade value3:true, tak Grid misto true zobrazi 1 a misto false 0 coz beru jako ok. Filtr mi da ale na vyber hodnoty true a false a at vyberu kteroukoliv, tak nevrati zadna data a grid je prazdny.
Dalsi a zatim posledni co me zajima je pouziti custom filtru.
Pokud si nadefinuji vlastni filtr, tak mi nevyhledava zadany retezec case insensitive a take vyhledava jen cely retezec. Stacilo by mi kdyby na retezec pouzil CONTAINS a case insensitive.Snad jsem to popsal srozumitelne :)
Jsou to bugy nebo delam neco spatne ?Jinak pekny grid.
Diky
Ahoj, vše jsem opravil, stačí upgradovat na 2.0.7 :-)
Pokud používáš custom filter a ArrayDataSource, tak potom koukni na následující dva odkazy, hlavně na ten druhý, jak se dělají podmínky:
Editoval mesour (2. 11. 2015 17:00)
- mesour
- Nette Blogger | 236
vojty napsal(a):
Ahoj,
před časem jsem tady četl, že někdo pracuje na Doctrine data source. Nevíte, jak to s ním vypadá?
Díky.
Ahoj, je to pořád rozpracované. Stojí to na tom, že grid bude muset k datům přistupovat jako k poli objektů a ne dvoudimenzionálnímu poli.
Pořád nemám čas se k tomu dostat. Jsem rád, že stíhám menší úpravy a bug fixy. Ale mám v plánu jednat s jedním člověkem, který by možná měl zájem na tom pracovat :-)
- mesour
- Nette Blogger | 236
Pro info, právě jsem udělal verzi 2.0.7.
Seznam změn zde: https://github.com/…s/tag/v2.0.7
API: http://apis.mesour.com/…taGrid2.0.7/
Snad jsem nikomu nezapomněl odpovědět. Kdyby ano, prosím ozvěte se :-)
- kralik
- Člen | 230
mesour napsal(a):
kralik napsal(a):
Ahoj,
snažím se zprovoznit novou feature ve verzi 2.0.7, resp. verzi dev, ale nedaří se mi.
Jedná se o inline editaci FK do tabulky.<?php $source->setRelated('group', 'group_id', 'name', 'group_name'); ?>
Podařilo se vám to někomu zprovoznit?
Nevím kam přesně s tím databse context
Chyba: „Related require set Nette database context in constructor.“Super by byl příklad přímo v dokumentaci.
Moc díky
Do konstruktoru toho data sourcu, když ho vytváříš :-)
Už jsem přidal ten příklad do dokumentace: http://grid.mesour.com/…on2/related/ :-)
Ahoj,
zkouším a hraji si s „$source->setRelated()“ a narazil jsem na takovou
věc, kdy se mi nedaří provést left join nad jednou tabulkou.
Mám pouze jednu tabulku např. User
<?php
Id,User,SureName,Manager
?>
zde nějaká data
<?php
1,Petr,Novák,2
2,Karel Svoboda,1
3,Pavel Rada,2
?>
V tabulce je nastaven FK pro Manager do stejne tabulky, tedy také tabulky User.
Potřebuji aby setRelated „vygeneroval“ query s LEFT JOIN.
Konkrétně pro tento případ toto
<?php
SELECT us.[Id],us.[Name],us.[SureName],
us2.[SureName] AS [Nadrizeny]
FROM [User] us
left join [User] us2 on us.[Manager] = us2.id
?>
přitom on generuje pouze toto
<?php
SELECT [Id],[Name],[SureName],[User].[SureName] AS [Nadrizeny]
FROM [User]
?>
Prosím projevilo se vám to také někomu?
Moc díky
- mesour
- Nette Blogger | 236
kralik napsal(a):
mesour napsal(a):
kralik napsal(a):
Ahoj,
snažím se zprovoznit novou feature ve verzi 2.0.7, resp. verzi dev, ale nedaří se mi.
Jedná se o inline editaci FK do tabulky.<?php $source->setRelated('group', 'group_id', 'name', 'group_name'); ?>
Podařilo se vám to někomu zprovoznit?
Nevím kam přesně s tím databse context
Chyba: „Related require set Nette database context in constructor.“Super by byl příklad přímo v dokumentaci.
Moc díky
Do konstruktoru toho data sourcu, když ho vytváříš :-)
Už jsem přidal ten příklad do dokumentace: http://grid.mesour.com/…on2/related/ :-)
Ahoj,
zkouším a hraji si s „$source->setRelated()“ a narazil jsem na takovou věc, kdy se mi nedaří provést left join nad jednou tabulkou.
Mám pouze jednu tabulku např. User<?php Id,User,SureName,Manager ?>
zde nějaká data
<?php 1,Petr,Novák,2 2,Karel Svoboda,1 3,Pavel Rada,2 ?>
V tabulce je nastaven FK pro Manager do stejne tabulky, tedy také tabulky User.
Potřebuji aby setRelated „vygeneroval“ query s LEFT JOIN.
Konkrétně pro tento případ toto<?php SELECT us.[Id],us.[Name],us.[SureName], us2.[SureName] AS [Nadrizeny] FROM [User] us left join [User] us2 on us.[Manager] = us2.id ?>
přitom on generuje pouze toto
<?php SELECT [Id],[Name],[SureName],[User].[SureName] AS [Nadrizeny] FROM [User] ?>
Prosím projevilo se vám to také někomu?
Moc díky
Na left join se budu muset podívat, takovou možnost to nepodporuje :/
Nejspíš tady: https://github.com/…taSource.php#L360 přibude šestý parametr (bool), který pokud bude TRUE, tak se bude provádět left JOIN, jinak obyč.
Následně pak bude potřeba upravit tuto řádku: https://github.com/…taSource.php#L367. Obalit do podmínky, pokud bude left join, tak použít stávající, pokud bude, tak udělat left join.
Nevím přesně kdy se k tomu dostanu, můžeš poslat pull request a já to tam hodím ještě během dneška.
- mesour
- Nette Blogger | 236
esorimer napsal(a):
Zdravím,
existuje nějaká podpora pro editaci enum sloupců? (Aby si uživatel mohl vybrat ze selectu …)PS: A ještě jeden dotaz. Když se nepodří editace editovatelné cell, jak zobrazit chybu?
PSS: Jak můžu nastavit třídění podle více sloupců? Jde něco jako
$grid->setDefaultOrder('IF(price IS NULL, 0, 1)', 'ASC')->setDefaultOrder('price','ASC');
?
- Podporu editace pro enum nemá, ale je dobrý point, zapracuji do dalšího updatu :)
- V eventu onEditCell použiješ třeba ->flashMessage a ->invalidateControl :-)
- Tohle jsem nikdy nezkoušel, ale teoreticky by to mohlo jít přes obyčejné MySQL CASE. http://stackoverflow.com/…y-case-issue
Editoval mesour (5. 11. 2015 16:58)
- kralik
- Člen | 230
mesour napsal(a):
kralik napsal(a):
mesour napsal(a):
kralik napsal(a):
Ahoj,
snažím se zprovoznit novou feature ve verzi 2.0.7, resp. verzi dev, ale nedaří se mi.
Jedná se o inline editaci FK do tabulky.<?php $source->setRelated('group', 'group_id', 'name', 'group_name'); ?>
Podařilo se vám to někomu zprovoznit?
Nevím kam přesně s tím databse context
Chyba: „Related require set Nette database context in constructor.“Super by byl příklad přímo v dokumentaci.
Moc díky
Do konstruktoru toho data sourcu, když ho vytváříš :-)
Už jsem přidal ten příklad do dokumentace: http://grid.mesour.com/…on2/related/ :-)
Ahoj,
zkouším a hraji si s „$source->setRelated()“ a narazil jsem na takovou věc, kdy se mi nedaří provést left join nad jednou tabulkou.
Mám pouze jednu tabulku např. User<?php Id,User,SureName,Manager ?>
zde nějaká data
<?php 1,Petr,Novák,2 2,Karel Svoboda,1 3,Pavel Rada,2 ?>
V tabulce je nastaven FK pro Manager do stejne tabulky, tedy také tabulky User.
Potřebuji aby setRelated „vygeneroval“ query s LEFT JOIN.
Konkrétně pro tento případ toto<?php SELECT us.[Id],us.[Name],us.[SureName], us2.[SureName] AS [Nadrizeny] FROM [User] us left join [User] us2 on us.[Manager] = us2.id ?>
přitom on generuje pouze toto
<?php SELECT [Id],[Name],[SureName],[User].[SureName] AS [Nadrizeny] FROM [User] ?>
Prosím projevilo se vám to také někomu?
Moc díkyNa left join se budu muset podívat, takovou možnost to nepodporuje :/
Nejspíš tady: https://github.com/…taSource.php#L360 přibude šestý parametr (bool), který pokud bude TRUE, tak se bude provádět left JOIN, jinak obyč.
Následně pak bude potřeba upravit tuto řádku: https://github.com/…taSource.php#L367. Obalit do podmínky, pokud bude left join, tak použít stávající, pokud bude, tak udělat left join.
Nevím přesně kdy se k tomu dostanu, můžeš poslat pull request a já to tam hodím ještě během dneška.
Ahoj,
tak jsem si zkoušel hrát a v tomto stav mi to funguje i pro spojení do
stejné tabulky.
Níže jsou mé změny.
NetteDbDataSource.php
<?php
public function setRelated($table, $key, $column, $as = NULL, $primary = 'id')
{
if (is_null($this->context)) {
throw new Grid_Exception('Related require set Nette database context in constructor.');
}
$this->related[$table] = array($table, $key, $column, $as, $primary);
$this->nette_table->select($table . '.' . $column . ', '.$key.'.'.$column.' '.(!is_null($as) ? (' AS ' . $as) : ''));
return $this;
}
?>
V Modelu jsem musel doplnit celé ukazatele na sloupce.
<?php
...
public function getAllUsers() {
$res2 = $this->connection->table('User')
->select('User.Id,User.Name,User.SureName')
// místo tohoto // ->select('Id,Name,SureName')
->order('WeekDeadline');
$dat = $res2;
return ($dat) ? $dat : FALSE;
}
...
?>
V Preseteru v komponentě
<?php
...
$selection = $this->spravaModel->getAllUsers();
$source = new NetteDbDataSource($selection, $this->databaseContext);
$source->setRelated('User', 'SupordinateTo_Id', 'SureName','Nadrizeny','Id');
..
?>
Ještě jsem musel upravit funkci pro inline editaci „Related“
sloupce
V Preseteru
<?php
public function saveRowUsers($line_id, $column_name, $new_value, $old_value) {
if($column_name == 'Nadrizeny') { $column_name = 'SupordinateTo_Id'; }
$this->spravaModel->saveUsers($line_id,$column_name,$new_value);
}
?>
Super by bylo kdybych nějakým způsobem dokázal seřadit data
v selectBoxu v inline editaci?
Díky
Editoval kralik (19. 11. 2015 14:07)
- mesour
- Nette Blogger | 236
majky358 napsal(a):
Nazdar,
je nejaká možnosť ako escapovať obsah cellu ? .. výstup datagridu a menší detail, funguje inline editovanie napr. textu ktorý je v containery ? Nejak sa mi nepodarilo k tomu dostať.
Ďakujem
- Escapovat přes callback. Zde použití callbacku http://grid.mesour.com/…column/text/#…
- Jestli tím myslíš sloupec Container, tak pokud do něj přidáš třeba dva sloupce text, tak bude možné je oba editovat zvlášť. V podstatě se to pro JS tváří jako dva samostatné sloupce, protože tam není selector na element, ale pouze na atributy a ty span ve sloupci container dostane také :) Stejně tak tvé nastavené parametry atd.
Editoval mesour (20. 11. 2015 12:00)
- majky358
- Člen | 37
$source = new NetteDbDataSource($this->context->userModel->searchUsers());
$grid = new Grid($this, $name);
$table_id = 'id';
$grid->setTranslator($this->translator);
$grid->setLocale("cs");
$grid->setPrimaryKey($table_id);
$grid->setDataSource($source);
$grid->enablePager(10);
$grid->enableEditableCells();
$grid->onEditCell[] = $this->editGridColumn;
$grid->enableFilter();
$container = $grid->addContainer('name', 'Name');
$container->addText('user_firstname');
$container->addText('user_surename');
return $grid;
Mesour\DataGrid\Grid_Exception
Column with ID user_firstname is not editable or does not exists in DataGrid columns.
To isté aj keď nastavím isEditable explicitne na column v containeri.
Datagrid 2.0.7
jquery, nette.ajax 1.2.2, netteForms nalinkované v dokumente
2. Escaping, hodnota v column sa ošetrí, ale neošetrené dáta zostanú v data-value ak je zapnutý filter nad gridom, konkrétne v checkboxe a z html kódu sa zavolá javascript.
Editoval majky358 (21. 11. 2015 1:43)
- mesour
- Nette Blogger | 236
majky358 napsal(a):
$source = new NetteDbDataSource($this->context->userModel->searchUsers()); //...
Mesour\DataGrid\Grid_Exception Column with ID user_firstname is not editable or does not exists in DataGrid columns.
To isté aj keď nastavím isEditable explicitne na column v containeri.
Datagrid 2.0.7
jquery, nette.ajax 1.2.2, netteForms nalinkované v dokumente2. Escaping, hodnota v column sa ošetrí, ale neošetrené dáta zostanú v data-value ak je zapnutý filter nad gridom, konkrétne v checkboxe a z html kódu sa zavolá javascript.
To vypadá na bug v Extension\Editable. Kontroluje se tam, zda ty sloupce, které se editují existují na DataGridu a zda je možné je editovat. No a sloupec Container tam s největší pravděpodobností není ošetřený.
Editoval mesour (24. 11. 2015 0:15)
- majky358
- Člen | 37
Mám u seba nejaké zmeny, ale nejak mi nefunguje push na git (access denied na repository), že by som vytvoril pull request. Prípadne ti to môžem niekde poslať ? :)
Narazil som na taký trochu bezpečnostný problém, že do dokumentu mesour.dataGrid.list sa vypisujú všetky stĺpce a hodnoty tabuľky.. Pre
NetteDbDataSource->fetchFullData()
som pridal naviac pracu nad samotnými stlpcami gridu a nielen selection.
Editoval majky358 (26. 11. 2015 4:21)
- mesour
- Nette Blogger | 236
majky358 napsal(a):
Mám u seba nejaké zmeny, ale nejak mi nefunguje push na git (access denied na repository), že by som vytvoril pull request. Prípadne ti to môžem niekde poslať ? :)
Narazil som na taký trochu bezpečnostný problém, že do dokumentu mesour.dataGrid.list sa vypisujú všetky stĺpce a hodnoty tabuľky.. Pre
NetteDbDataSource->fetchFullData()
som pridal naviac pracu nad samotnými stlpcami gridu a nielen selection.
Push ti nebude fungovat, musíš si ten repozitář forknout, pushnout změny do toho forku a pak poslat pull request :)
Ano to by tam mělo být, ale určitě to bude potřeba ošetřit, při nejmenším trim a strip_tags.
Editoval mesour (1. 12. 2015 19:28)
- jarekp
- Člen | 2
Ahoj, zkoušel jsem si rozchodit mesour/datagrid v sandboxu pro Nette a narazil jsem na problém s composerem.
Sandbox jsem si stáhl přes composer (podle návodu na nette.org):
composer create-project nette/sandbox nette-blog
Potom jsem přidal do composer.json:
"mesour/datagrid": "~2.0.7"
Celý composer.json pak vypadal následovně:
{
"name": "nette/sandbox",
"description": "The sandbox is a pre-packaged Nette Framework project, basic configured structure for your application.",
"homepage": "https://nette.org",
"type": "project",
"license": ["BSD-3-Clause", "GPL-2.0", "GPL-3.0"],
"authors": [
{
"name": "David Grudl",
"homepage": "https://davidgrudl.com"
},
{
"name": "Nette Community",
"homepage": "https://nette.org/en/contributors?lang=en"
}
],
"require": {
"php": ">= 5.3.7",
"nette/application": "~2.3.6",
"nette/bootstrap": "~2.3.0",
"nette/caching": "~2.3.0",
"nette/database": "~2.3.0",
"nette/di": "~2.3.0",
"nette/finder": "~2.3.0",
"nette/forms": "~2.3.0",
"nette/http": "~2.3.0",
"nette/mail": "~2.3.0",
"nette/robot-loader": "~2.3.0",
"nette/safe-stream": "~2.3.0",
"nette/security": "~2.3.0",
"nette/utils": "~2.3.0",
"latte/latte": "~2.3.0",
"tracy/tracy": "~2.3.0",
"dg/adminer-custom": "~1.6",
"mesour/datagrid": "~2.0.7"
},
"require-dev": {
"nette/tester": "~1.3"
}
}
Následně jsem zavolám composer update
a dostal tento
výstup:
noname@JAREKP-NOT MINGW64 /c/Program Files (x86)/EasyPHP-DevServer-14.1VC11/data/localweb/sandbox_composer/nette-blog
$ composer update
You are running composer with xdebug enabled. This has a major impact on runtime performance. See https://getcomposer.org/xdebug
Loading composer repositories with package information
Updating dependencies (including require-dev)
Your requirements could not be resolved to an installable set of packages.
Problem 1
- nette/nette v2.3.5 requires nette/application 2.3.5 -> no matching package found.
- nette/nette v2.3.4 requires nette/application 2.3.4 -> no matching package found.
- nette/nette v2.3.3 requires nette/application 2.3.3 -> no matching package found.
- nette/nette v2.3.2 requires nette/application 2.3.3 -> no matching package found.
- nette/nette v2.3.1 requires nette/application 2.3.2 -> no matching package found.
- nette/nette v2.3.0 requires nette/application 2.3.1 -> no matching package found.
- nette/nette v2.2.9 requires nette/application 2.2.6 -> no matching package found.
- nette/nette v2.2.8 requires latte/latte 2.2.5 -> no matching package found.
- nette/nette v2.2.7 requires nette/application 2.2.4 -> no matching package found.
- nette/nette v2.2.6 requires nette/application 2.2.3 -> no matching package found.
- nette/nette v2.2.5 requires nette/application 2.2.3 -> no matching package found.
- nette/nette v2.2.4 requires nette/application 2.2.3 -> no matching package found.
- nette/nette v2.2.3 requires latte/latte 2.2.3 -> no matching package found.
- nette/nette v2.2.2 requires nette/application 2.2.1 -> no matching package found.
- nette/nette v2.2.11 requires nette/application 2.2.8 -> no matching package found.
- nette/nette v2.2.10 requires nette/application 2.2.7 -> no matching package found.
- nette/nette v2.2.1 requires nette/application 2.2.0 -> no matching package found.
- nette/nette v2.2.0 requires nette/application 2.2.0 -> no matching package found.
- Conclusion: don't install nette/nette v2.3.6
- mesour/datagrid v2.0.7 requires nette/nette >=2.2.0 -> satisfiable by nette/nette[v2.2.0, v2.2.1, v2.2.10, v2.2.11, v2.2.2, v2.2.3, v2.2.4, v2.2.5, v2.2.6, v2.2.7, v2.2.8, v2.2.9, v2.3.0, v2.3.1, v2.3.2, v2.3.3, v2.3.4, v2.3.5, v2.3.6, v2.3.7].
- mesour/datagrid v2.0.7.1 requires nette/nette >=2.2.0 -> satisfiable by nette/nette[v2.2.0, v2.2.1, v2.2.10, v2.2.11, v2.2.2, v2.2.3, v2.2.4, v2.2.5, v2.2.6, v2.2.7, v2.2.8, v2.2.9, v2.3.0, v2.3.1, v2.3.2, v2.3.3, v2.3.4, v2.3.5, v2.3.6, v2.3.7].
- Conclusion: don't install nette/nette v2.3.7|install nette/nette v2.3.6
- Installation request for mesour/datagrid ~2.0.7 -> satisfiable by mesour/datagrid[v2.0.7, v2.0.7.1].
Potential causes:
- A typo in the package name
- The package is not available in a stable-enough version according to your minimum-stability setting
see <https://groups.google.com/d/topic/composer-dev/_g3ASeIFlrc/discussion> for more details.
Read <https://getcomposer.org/doc/articles/troubleshooting.md> for further common problems.
Nevíte, kde by mohl být problém? S composerem nemám moc zkušeností, ale zkoušel jsem to googlit, ale nenašel jsem žádné dobře fungující řešení. Procházel jsem i odkazy z výstupu composeru, ale nebyl jsem z nich moc moudrý. Pokud tomu dobře rozumím, composer z nějakého důvodu nemůže najít požadované knihovny/závislosti.
Našel jsem ovšem jednu možnost, jak daný problém obejít. Přidáním
"minimum-stability": "dev"
na konec composer.json (našel
jsem to totiž v oficiálním repozitáři nette-sandboxu),
ale pak se mi stahuje vše z dev větve, u niž předpokládám, že
není určena k běžnému nasazení na produkci, ale hlavně pro vývoj
samotného frameworku.
Prosím o radu a případné vysvětlení tohoto problému.
Předem děkuji.
- mesour
- Nette Blogger | 236
jarekp napsal(a):
Ahoj, zkoušel jsem si rozchodit mesour/datagrid v sandboxu pro Nette a narazil jsem na problém s composerem.
Sandbox jsem si stáhl přes composer (podle návodu na nette.org):
composer create-project nette/sandbox nette-blog
Potom jsem přidal do composer.json:
"mesour/datagrid": "~2.0.7"
Celý composer.json pak vypadal následovně:
{ Potential causes: - A typo in the package name - The package is not available in a stable-enough version according to your minimum-stability setting see <https://groups.google.com/d/topic/composer-dev/_g3ASeIFlrc/discussion> for more details. Read <https://getcomposer.org/doc/articles/troubleshooting.md> for further common problems.
Nevíte, kde by mohl být problém? S composerem nemám moc zkušeností, ale zkoušel jsem to googlit, ale nenašel jsem žádné dobře fungující řešení. Procházel jsem i odkazy z výstupu composeru, ale nebyl jsem z nich moc moudrý. Pokud tomu dobře rozumím, composer z nějakého důvodu nemůže najít požadované knihovny/závislosti.
Našel jsem ovšem jednu možnost, jak daný problém obejít. Přidáním
"minimum-stability": "dev"
na konec composer.json (našel jsem to totiž v oficiálním repozitáři nette-sandboxu), ale pak se mi stahuje vše z dev větve, u niž předpokládám, že není určena k běžnému nasazení na produkci, ale hlavně pro vývoj samotného frameworku.Prosím o radu a případné vysvětlení tohoto problému.
Předem děkuji.
Ahoj, vyzkoušel jsem to přímo podle tvého postupu, sandbox, přidat řádek, spustit update a všechno proběhlo OK, nainstalovala se mi verze 2.0.7.1 a nebyly žádné problémy.
Pokud dáš "minimum-stability": "dev"
, pak stahuje dev, to je
jasné. Existuje ale potom ještě jedno nastavení, také do ROOTu
composer.json. Jmenuje se "prefer-stable": true
: https://getcomposer.org/…04-schema.md#…. Takže pak bude
stahovat dev, pouze pokud nebude existovat stable verze :)
V composer.json gridu je nastaveno "nette/nette": ">=2.2.0"
což je OK, to souhlasí i pro verzi 2.3+. Ale napadlo mě, že by nebylo
vůbec špatné to omezit pouze na konkrétní Nette balíčky, které to
používá :) Udělám to, až se k tomu dostanu :) Nemyslím si, že ale
zrovna tohle bude řešit tvůj problém, to je divné, že se ti
tohle děje…
Editoval mesour (4. 12. 2015 1:11)
- dj.kure
- Člen | 70
Ahoj, používám tento GRID a řeším aktuálně problém s URL, které
generuje řazení.
Mám adresu:
http://xxx.xx/zakaznici/detail-zakaznika/podle-id/1
A kliknutí na řazení třeba podle jména generuje:
http://xxx.xx/zakaznici/detail-zakaznika/?gridSluzbyZakaznika-ordering-column_id=sluzba&do=gridSluzbyZakaznika-ordering-ordering
Čili úplně vynechá action a ID. Kde se to dá doplnit?
Díky za radu.
- mesour
- Nette Blogger | 236
dj.kure napsal(a):
Ahoj, používám tento GRID a řeším aktuálně problém s URL, které generuje řazení.
Mám adresu:http://xxx.xx/zakaznici/detail-zakaznika/podle-id/1
A kliknutí na řazení třeba podle jména generuje:
http://xxx.xx/zakaznici/detail-zakaznika/?gridSluzbyZakaznika-ordering-column_id=sluzba&do=gridSluzbyZakaznika-ordering-ordering
Čili úplně vynechá action a ID. Kde se to dá doplnit?
Díky za radu.
Ahoj,
myslím, že ti chybí v presenteru v render metodě pro
.../detail-zákazníka/
ten parametr. Pokud ne, tak dej vědět a
já se na to mrknu až budu mít chvilku :-)
Matouš
- tom
- Člen | 171
Ahojte,
potřeboval bych poradit.
Mám následující datovou strukturu: tabulka Organizace a na ni navázaná tabulka Kontakty (1:N). V gridu si zobrazuji Organizace . Dá se použít Custom Filter tak, že by filtroval Organizace přes Kontakty? Typicky aby se vypsaly jen organizace pro které existuje kontakt např. „Jan Novák“ v tabulce Kontaty?
Používám DibiDataSource
Díky Tom
Editoval tom (17. 2. 2016 9:00)
- tom
- Člen | 171
tom napsal(a):
Ahojte,
potřeboval bych poradit.Mám následující datovou strukturu: tabulka Organizace a na ni navázaná tabulka Kontakty (1:N). V gridu si zobrazuji Organizace . Dá se použít Custom Filter tak, že by filtroval Organizace přes Kontakty? Typicky aby se vypsaly jen organizace pro které existuje kontakt např. „Jan Novák“ v tabulce Kontaty?
Používám DibiDataSource
Díky Tom
tak prozatím to řeším pomocí NetteDbDataSource