holubj / NiftyGrid

DataGrid for Nette Framework
34 stars 34 forks source link

Doctrine2 DataSource #4

Closed echo511 closed 12 years ago

echo511 commented 12 years ago

Based on QueryBuilder. First try, certainly contains bugs, use with caution. Tested on single entity (no joins) Filtering and ording seem to be working although MySQL's HAVING not tested.

Requires aliases for columns. Commented in constructor().

holubj commented 12 years ago

Budu psát už česky v komentářích, angličtinu zrovna moc neovládám :) Super práce, jsem rád, že se o to někdo zajímá. S Doctrine jsem ale nikdy nedělal, tak to nemůžu vyzkoušet. Zkus to hodit na fórum k doplňku a až se trochu doladěj bugy, tak to mergnu. Díky!

echo511 commented 12 years ago

Přidal jsem JS podporu pro doubleclick a enter při řádkové editaci. S Gitem začínám, tak se mi to commitnulo k DataSource.

Můžeš to z toho vyčlenit a mergnout? (za předpokladu, že s řešením souhlasíš)

holubj commented 12 years ago

No s Gitem taky teď začínám, tak to bude zajímavé :D Dvojklik v normálním gridu funguje skvěle, ale v subGridu to nějak problikává :) Je to kvůli selektoru. V tr je totiž obsažen celý další subgrid a když se tam klikne na cokoliv, tak se to aktivuje. Správný selektor je takto: $("table.grid tbody tr:not(.grid-subgrid-row)") Ještě to bude chtít doladit pár detailů, např kursor bych dal text, aby bylo zřetelné, že to jde editovat. A možná bych tu aktivaci nedával na celý řádek, ale pouze na datové sloupce (tzn. vynechat buňku na checkbox na hromadnou akci, buňku na subGrid a buňku na řádkové akce). Pokud by se ti to nechtělo dělat, tak to klidně dodělám. Jinak skvělá práce, díky.

echo511 commented 12 years ago

Mrknu na to, subgridy jsem ještě nezkoušel, selektor upravím. S kurzorem bych si nelámal hlavu, na klikání je podle mě nejlepší hand/pointer, ale pak by to uživatele mohlo mást (divil by se, že s tím kurzorem může vybrat text). Takže bych to nechal tak, jak to je.

S tím omezením na datové typy máš pravdu, ještě to předělám.

echo511 commented 12 years ago

Hotovo, mělo by to být ok. Kdyžtak to commitni i s tím DataSourcem, bugy se vychytají.

Dotaz: Kdy se používá HAVING? V jakých situacích?

holubj commented 12 years ago

HAVING se používá vždy, když je daný sloupec označen jako alias (tím pádem je i sloupec v SQL vybírán jako alias). Ale momentálně přemýšlím, jestli to trochu nepředělat, viz: https://github.com/Niftyx/NiftyGrid/issues/1#issuecomment-6364717

echo511 commented 12 years ago

Tím pádem bude HAVING pro Doctrine asi zbytečné, protože se používá DQL a všechny sloupce, které gridu přidáš používají prefix. Viz. na http://forum.nette.org/cs/11168-niftygrid-datagrid-pro-nette-2-s-velkou-skalou-funkci#p81481

holubj commented 12 years ago

To asi ano, v tom případě můžeš v DoctrineDataSource v metodě filterData ignorovat $filter['type'] a používat pouze where. Funguje to i pro připojené tabulky?

echo511 commented 12 years ago

V tom je kouzlo Doctrine, o tabulky se nestarám. Řeknu načti tuhle a tuhle entitu a SQL se vygeneruje samo.

echo511 commented 12 years ago

Testoval jsem připojení tabulky pomocí leftJoin a fungovalo to dle očekávání.

holubj commented 12 years ago

Vypadá to všechno v pořádku, díky :)