Comments (31)
@Daaarkling @juniwalk: Můžete se inspirovat zde:
- https://github.com/mesour/sources/blob/master/src/Mesour/Sources/DoctrineSource.php
- https://github.com/mesour/filter/blob/master/src/Mesour/Filter/Sources/DoctrineFilterSource.php
- https://github.com/mesour/DataGrid/blob/devel/src/Mesour/DataGrid/Sources/DoctrineGridSource.php
V nové verzi jsem to rozdělil na více souborů, ale v podstatě je tam veškerá logika, která je potřeba, jenom to vykuchat a odladit :)
Ale myslím, že nyní už je lepší si počkat na stable a sáhnout rovnou verzi 3.0
from datagrid.
Dobrý den,
no ArrayDataSource má ale omezené nastavení podmínek. Nejdou zanořovat.
getColumnNames bych mohl přidat, bylo by to čistější :-)
Jinak DoctrineDataSource už vytvořila jedna firma. Sešel jsem se s nimi a
říkali, že pošlou pull request, ale už je to dost dlouho a nic, tak se jich
zeptám a když nic, tak na ně kašlu a něco dáme dohromady ;-)
M.
Dne 9. března 2015 15:27 Martin Procházka [email protected]
napsal(a):
Dobrý den,
je v plánu přidat podporu pro doctrinu?Povedlo se mi rozjet data z doctriny prez ArrayDataSource data source ale
musel jsem udělat par uprav do BaseGrid.php, bylo by dobré vytáhnout
získávání názvů sloupců do IDataSource abych mohl pracovat s objektem
implementujícím ArrayAccess.Pokud by jste zvážil tuto úpravu IDataSource, mohl bych se pokusit DS pro
Doctrinu napsat a poslat PR.—
Reply to this email directly or view it on GitHub
#26.
from datagrid.
Dobře, děkuji za rychlou odpověď a za zvážení.
from datagrid.
@mesour Dobrý den, je nějaké info ohledně toho DataSource pro Doctrine?
from datagrid.
Dobrý den,
koukal jsem zběžně na ten náhled a určitě by tam bylo potřeba udělat nějaké
úpravy. Nejdůležitější bude, aby to prošlo testy, které jsou zatím napsané
jenom pro DataSourcy. Tohle bylo někdy kolem toho, když jste mi psal.
Nedávno jsem se na to chtěl mrknout, ale už jsem nenašel ten váš náhled,
takže z toho zatím sešlo. Do nové desetinkové verze bych jí už chtěl dát.
Budu rád, když mi pošlete znovu ten náhled. Starý link zdá se nefunguje.
M.
Dne 19. května 2015 14:41 Martin Procházka [email protected]
napsal(a):
@mesour https://github.com/mesour Dobrý den, je nějaké info ohledně
toho DataSource pro Doctrine?—
Reply to this email directly or view it on GitHub
#26 (comment).
from datagrid.
To protože jsem jej smazal, bylo to velice špatně napsané. Já s Doctrine pořádně neumím, takže asi nebude nejlepší nápad, abych to implementoval já.
from datagrid.
No koukal jsem na to a ideálně bych to asi udělal přes query builder. Já Doctrine nepoužívám na žádném projektu. Takže kdyby k tomu měl někdo nějaký komentář, tak určitě uvítám jakékoliv nápady, připomínky a kritiku :-)
@juniwalk Jak to myslíš s tím vytáhnutím získávání názvů sloupců do IDataSource? A k čemu je to důležité?
from datagrid.
Ják jsem udělal ten DataSource
, používal jsem tam přímo entity, tedy objekty ale DataGrid si s objekty nerozumí.
Pravděpodobně to není potřeba, protože bych měl vracet array z QueryBuilder
-u.
from datagrid.
Tak tohle jsem trochu nepochopil. V čem je problém s entitami tedy
objekty... Proč by si s tím Grid jako neměl rozumnět?
Ideální by samozřejmě bylo kdyby to bylo pres entity aby se to pak dalo
plně vyuzit :-) Stejně tak nette data source bude vracet ActiveRow ;-)
On Jun 5, 2015 4:17 PM, "Martin Procházka" [email protected] wrote:
Ják jsem udělal ten DataSource, používal jsem tam přímo entity, tedy
objekty ale DataGrid si s objekty nerozumí.Pravděpodobně to není potřeba, protože bych měl vracet array z
QueryBuilder-u.—
Reply to this email directly or view it on GitHub
#26 (comment).
from datagrid.
Nejde to, protože by ta entita musela implementovat ArrayAccess :)
from datagrid.
Jo takhle už to chápu. Grid s daty pracuje jako s polem. Tak se to bude muset nějak upravit a sjednotit, aby bylo možné výsledné data plně využít.
Kdyby někdo měl nápad, jak na to, tak uvítám vše :-) Mě napadlo akorát, že by všechny na fetchAll vracely pole objektů ActiveRow nebo Entit. Akorát pro ArrayDataSource by se to navíc muselo hodit do nějakého ArrayHashe, aby se to sjednotilo.
from datagrid.
Ano, sjednocení by to chtělo. Když jsme u toho, k čemu je IDataSource::fetch()
metoda? Vím co to dělá a k čemu se to používá, jen nevím proč je to vytaženo do metody zvlášť.
from datagrid.
Používá se pouze pro zjištění názvů sloupců, pokud nenastavím žádný sloupec, tak si z fetch()
vezme array_keys
a udělá TextovéSloupce.
Od v2.1 by měl fetch()
jít pryč a měla by ho nahradit přímo getColumnNames()
nebo něco podobného.
from datagrid.
Rozumím, u Doctriny je problém, že potřebuje mit property nastavené jako protected, aby entity fungovali jak měli a potom nejde udělat jednoduché array_keys((array) $entity);
, funkce get_object_vars($object)
je specifická na scope, takže by se musela volat uvnitř entity.
Jediná možnost, jak tohodle docílit bude asi reflection.
from datagrid.
Jasně, přes reflection to nebude problém. Tuhle logiku by v sobě měl mít ideálně ten source :-)
Napadlo mě rovnou udělat dva DataSourcy, jeden pro Entitu a druhý pro QueryBuilder ;-) Využije se to?
Vzhledem k tomu, že grid by měl časem být nezávislý na Nette (pouze budou bridge pro Nette). Tak si myslím, že Doctrine DataSource bude potřeba mnohem víc než do teď ;-)
from datagrid.
Jak je myšlen ten pro entitu? QueryBuilder je jasný, bez něj se to v podstatě neobejde.
from datagrid.
Mimochodem, já pak zkusil začít dělat na novém DataSource využívajícím QueryBuilder, ale ještě jsem pořádně neměl čas k tomu sednout.
Mam jen toto: https://gist.github.com/juniwalk/0d1b71e35742d19afb8f
from datagrid.
No v podstatě, když nad tím přemýšlím, tak je to blbost. Jak jsem říkal, s Doctrine nepracuji a vím jen základy. Takže byl ten můj komentář asi dost mimo :-D
No asi jinak. QueryBuilder umí nějak vracet výsledky jako pole Entit nebo nějaký ResultSet? Nebo pouze jako pole?
K tvému rozdělanému DataSourcu. Nemám čas to teď podrobněji procházet. Ale třeba pro fetchAll potřebuješ limity i whery, ale pro fetchForExport už potřebuješ jenom whery. Ty třeba v applyLimit nastavuješ limit přímo query builderu. V fetchForExport by limit byl taky, protože se může volat klidně až po tom co grid aplikuje limit. Proto mám třeba zde metodu getSelection, které řeknu, zda chci limity a whery a ona vždy udělá klon a nastaví to co potřebuji ;-)
from datagrid.
ve fetchForExport bych udělal clon QB a vymazal z něj limity, není problém. :) QueryBuilder může vracet pole Entity nebo pole Array dat, záleží na té Hydrataci kterou tam uvidíš.
Já tam dal array, protože DataGrid teď nezvládá pracovat přímo s entitami, háže to errory.
from datagrid.
Aha, pokud z něj lze mazat, tak je to pak vyřešené :-) Ale počítej s tím, že někde budeš chtít vymazat whery, které přidal filtr, ale budeš chtít zachovat ty, které uživatel nastavil ještě před tím, než QueryBuilder poslal DataSourcu.
Nutnost ArrayAccessu odstraním, ale kdy se k tomu dostanu vážně nechci slibovat, mám toho teď nějak moc...
from datagrid.
Nic se neděje, též nevím, kdy se dostanu k tomu dodělat ten DataSource.
Tak jako tak to pak bude chtít nechat projít někým zkušeným, napadá mně @fprochazka, když bude tak hodný.
from datagrid.
Jasně :-)
Myslíš nechat projít vnitřek toho sourcu? To už bychom pak nějak s někým domluvili :-)
from datagrid.
Ano, já mám málo zkušeností s Doctrine na to, aby se to dalo považovat za stable.
from datagrid.
Tak jsem dnes zkusil napojit ten kód co jsem posílal sem na jeden z mých projektů a byl jsem mile překvapen, že se mi povedlo to zprovoznit s pouze jedinou úpravou do dataSourcu. :D
Filtrování sice ještě nepůjde, ale to je jasný, není to ani z daleka hotové, :)
from datagrid.
@juniwalk kdybys to otevřel jako pullrequest aby se to rozumě komentovat, tak klidně kouknu, jestli tam neuvidím nějaké problémy :)
Btw, hodnoty z Doctrine entity číst buď pomocí ClassMetadata nebo https://github.com/symfony/PropertyAccess.
from datagrid.
@fprochazka Tak PR vytvořeno :)
EDIT: Není to ani zdaleka hotové, s QueryBuilderem se stále seznamuji, hlavně tvoření WHERE podmínek.
from datagrid.
Ahoj, jak to vypadá s Doctrine datasource?
from datagrid.
Zdravím, narazil jsem na menší problém přímo v DataGridu, bude to vyžadovat trochu větší úpravy.
from datagrid.
Ahoj, nějaký pokrok? Potřebuješ s něčím pomoct?
from datagrid.
Ahoj, bohužel nn, makám teď na obrovském projektu a tahám si práci aj domů, vůbec na tohle nemám čas.
from datagrid.
DoctrineDataSource je již dostupný ve verzi 3.0, která má stable release. Tento issue už nemá moc smysl.
from datagrid.
Related Issues (20)
- Filter broken HOT 2
- Strip html tags when exporting HOT 1
- DateColumn does not accepts 'null' HOT 2
- Undefined variable key
- 2.1.0 issues
- Escaping output data
- Added column mapping for nette data source
- After setDefaultOrdering not highlights sort icon on right side by column header
- Prevent disabling filter checkers if have more rows for status column
- Optimize javascript size and performance HOT 1
- Update cache image file name in column image
- Keep the height of the grid from first page if im on last page with fewer records
- Add method addStatusText and StatusTextItem for StatusColumn
- Add method setTranslated for enable translating values for all cells on TextColumn
- Filtering with doctrine
- NetteDBDataSource - group by
- Add some themes HOT 1
- Kořenová úroveň u GridTree HOT 2
- setLineId HOT 1
Recommend Projects
-
React
A declarative, efficient, and flexible JavaScript library for building user interfaces.
-
Vue.js
🖖 Vue.js is a progressive, incrementally-adoptable JavaScript framework for building UI on the web.
-
Typescript
TypeScript is a superset of JavaScript that compiles to clean JavaScript output.
-
TensorFlow
An Open Source Machine Learning Framework for Everyone
-
Django
The Web framework for perfectionists with deadlines.
-
Laravel
A PHP framework for web artisans
-
D3
Bring data to life with SVG, Canvas and HTML. 📊📈🎉
-
Recommend Topics
-
javascript
JavaScript (JS) is a lightweight interpreted programming language with first-class functions.
-
web
Some thing interesting about web. New door for the world.
-
server
A server is a program made to process requests and deliver data to clients.
-
Machine learning
Machine learning is a way of modeling and interpreting data that allows a piece of software to respond intelligently.
-
Visualization
Some thing interesting about visualization, use data art
-
Game
Some thing interesting about game, make everyone happy.
Recommend Org
-
Facebook
We are working to build community through open source technology. NB: members must have two-factor auth.
-
Microsoft
Open source projects and samples from Microsoft.
-
Google
Google ❤️ Open Source for everyone.
-
Alibaba
Alibaba Open Source for everyone
-
D3
Data-Driven Documents codes.
-
Tencent
China tencent open source team.
from datagrid.