🚀 go-pugleaf

RetroBBS NetNews Server

Inspired by RockSolid Light RIP Retro Guy

Thread View: pl.comp.lang.java
9 messages
9 total messages Started by J-23 Mon, 19 Nov 2012 21:46
LiveGrid EXT-GWT
#153645
Author: J-23
Date: Mon, 19 Nov 2012 21:46
36 lines
2320 bytes
Witam,
Do tej pory gdy pisałem z użyciem EXT-GWT korzystałem ze zwykłej siatki 
(BeanModel) teraz chciałbym skorzystać z LiveGrid i mam pytanie

  JsonPagingLoadResultReader<PagingLoadResult<ModelData>> reader = new 
JsonPagingLoadResultReader<PagingLoadResult<ModelData>>(
         type);
     final PagingLoader<PagingLoadResult<ModelData>> loader = new 
BasePagingLoader<PagingLoadResult<ModelData>>(proxy,
         reader);
     loader.addListener(Loader.BeforeLoad, new Listener<LoadEvent>() {
       public void handleEvent(LoadEvent be) {
         BasePagingLoadConfig m = be.<BasePagingLoadConfig> getConfig();
         m.set("start", m.get("offset"));
         m.set("ext", "js");
         m.set("lightWeight", true);
         m.set("sort", (m.get("sortField") == null) ? "" : 
m.get("sortField"));
         m.set("dir", (m.get("sortDir") == null || (m.get("sortDir") != 
null && m.<SortDir> get("sortDir").equals(
             SortDir.NONE))) ? "" : m.get("sortDir"));
       }
     });

Czy parametry start, offset są to jakieś stałe parametry bo nigdzie ich 
nie ma zdefiniowanych?

Czy też może one są zaszyte w 
http://www.sencha.com/forum/topics-browse-remote.php

Bo ogólnie zasadę rozumiem jest to odpowiednio przygotowany format JSON 
i domyślam się że jakbyśmy pobierali te dane z bazy, trzeba skorzystać z 
LIMIT w zapytaniu tylko jak przekazać parametr dla limit to już nie 
bardzo kojarzę.

Pozdrawiam
Re: LiveGrid EXT-GWT
#153646
Author: William Bonawentura
Date: Tue, 20 Nov 2012 06:37
7 lines
1354 bytes
1) Przesiądź się na Ext3.0 BeanModel to straszna proteza i wcześniej czy 
później będziesz żałował :)

2) To loader wpisuje do BasePagingLoadConfig parametry offset i limit 
Powinny one "pójść" do zapytania json dla serwera, więc dublowanie ich :
         m.set("start", m.get("offset"));
chyba nie jest konieczne. 
Re: LiveGrid EXT-GWT
#153647
Author: J-23
Date: Tue, 20 Nov 2012 14:00
21 lines
1743 bytes
W dniu 20.11.2012 07:37, William Bonawentura pisze:
> 1) Przesiądź się na Ext3.0 BeanModel to straszna proteza i wcześniej czy
> później będziesz żałował :)

To zrobie w kolejnym etapie niestety teraz musze przejsc w miare szybko 
na LiveGrid

>
> 2) To loader wpisuje do BasePagingLoadConfig parametry offset i limit
> Powinny one "pójść" do zapytania json dla serwera, więc dublowanie ich :
>          m.set("start", m.get("offset"));
> chyba nie jest konieczne.


Kod ktory podałem był zaczerpnięty z przykładu (sam go nie pisałem)
http://www.sencha.com/examples-2/#livegrid

Czy mogłbyś podać malutki przyklad jak to ma wyglądać bo nie bardzo nogę 
to wydedukować sobie?

Pozdrawiam
Re: LiveGrid EXT-GWT
#153653
Author: J-23
Date: Tue, 20 Nov 2012 23:26
17 lines
1748 bytes
W dniu 20.11.2012 07:37, William Bonawentura pisze:
> 1) Przesiądź się na Ext3.0 BeanModel to straszna proteza i wcześniej czy
> później będziesz żałował :)
>
> 2) To loader wpisuje do BasePagingLoadConfig parametry offset i limit
> Powinny one "pójść" do zapytania json dla serwera, więc dublowanie ich :
>          m.set("start", m.get("offset"));
> chyba nie jest konieczne.

Znalazłem coś takiego
http://www.sencha.com/forum/showthread.php?119486-Data-loading-into-live-grid-via-RPCProxy-does-not-work

Wypróbuje rano. Ale czy ja dobrze rozumiem że wystarczy użyć zwykłego 
SELECT (bez limit) wypełniając fasolę a już potem mi to samo będzie 
odczytywać konkretne porcje danych?

Pozdrawiam
Re: LiveGrid EXT-GWT
#153648
Author: William Bonawentura
Date: Wed, 21 Nov 2012 09:16
17 lines
1814 bytes
>>          m.set("start", m.get("offset"));
>> chyba nie jest konieczne.


> Kod ktory podałem był zaczerpnięty z przykładu (sam go nie pisałem)
> http://www.sencha.com/examples-2/#livegrid

Podejrzyj np. firebugiem jakie zapytania są wysyłane na serwer w tym 
przykładzie:

http://www.sencha.com/forum/topics-browse-remote.php?callback=transId1&sortField=lastpost&sortDir=DESC&offset=4584&limit=200&start=4584&ext=js&lightWeight=true&sort=lastpost&dir=DESC

Kopiowanie "offset" do "start" nie było konieczne - do skryptu php 
przechodzą one podwójnie. Obsługa pola limit jest obowiązkowa - jeśli 
odeślesz tysiąc rekordów to z "live grid" zrobi się na wolniejszym 
komputerza "zwis".
Re: LiveGrid EXT-GWT
#153649
Author: J-23
Date: Wed, 21 Nov 2012 18:52
54 lines
3213 bytes
W dniu 21.11.2012 10:16, William Bonawentura pisze:
>
>>>          m.set("start", m.get("offset"));
>>> chyba nie jest konieczne.
>
>
>> Kod ktory podałem był zaczerpnięty z przykładu (sam go nie pisałem)
>> http://www.sencha.com/examples-2/#livegrid
>
> Podejrzyj np. firebugiem jakie zapytania są wysyłane na serwer w tym
> przykładzie:
>
> http://www.sencha.com/forum/topics-browse-remote.php?callback=transId1&sortField=lastpost&sortDir=DESC&offset=4584&limit=200&start=4584&ext=js&lightWeight=true&sort=lastpost&dir=DESC
>
>
> Kopiowanie "offset" do "start" nie było konieczne - do skryptu php
> przechodzą one podwójnie. Obsługa pola limit jest obowiązkowa - jeśli
> odeślesz tysiąc rekordów to z "live grid" zrobi się na wolniejszym
> komputerza "zwis".
>
>

Witam,
Na początek powiem tyle że jestem bardzo wdzięczny za chęć wytłumaczenia 
mi tego. Wrócę do początku i powiem co rozumiem a co jest dla mnie nie 
jasne, da to jaśniejszy obraz sytuacji. Bo mam wrażenie że tłumaczysz mi 
troszkę dalej niż zaszedłem :)

Rozumiem że musi być:
1. JSON o odpowiedniej strukturze
2. Przy pobieraniu danych z bazy muszę to pobierać partiami
3. Rozumiem że takie rzeczy jak "sortField", "sortDir", "limit", 
"offset", "ext", "lightWeight", "lastpost", są to parametry przekazywane 
do skryptu i według nich są pobierane odpowiednio dane

Nie rozumiem:
1. Jak są uzupełnianie parametry skryptu. Domyślam się ze jakoś przez
m.set("start", m.get("offset")); //faktycznie bo wytarciu tego są 
pobieranie dopowiednio dane, ale jaka jest zasada tego co podstawimy pod 
"m,set"  skąd on wie które jak podstawić limit?

2. Załóżmy ze mam zapytanie SELECT * FROM test LIMIT 0,10

Wiemy zę zapytanie wyswietli 10 rekordów (zakładam ze już jest 
odpowiedni JSON)

Jak to napisać tak by po przesunięciu suwakiem LiveGrid wczytala sie 
odpowiednia ilość?

3. po stronie serwera będzie metoda getSQL(Integer Start, Integer Stop) 
gdzie start i stop będzie zakresem jaki ma wyświetlić tylko jak to 
odpowiednio zapisać?

Pozdrawiam
Re: LiveGrid EXT-GWT (Częściowe rozwiązanie)
#153650
Author: J-23
Date: Wed, 21 Nov 2012 23:26
21 lines
1905 bytes
W dniu 21.11.2012 19:52, J-23 pisze:

Tutaj jest częściowe rozwiązanie moich problemów
http://www.sencha.com/forum/showthread.php?119614-Updating-Data-in-live-grid-store-is-not-displayed-on-the-grid

>
> 2. Załóżmy ze mam zapytanie SELECT * FROM test LIMIT 0,10
>
> Wiemy zę zapytanie wyswietli 10 rekordów (zakładam ze już jest
> odpowiedni JSON)
>
> Jak to napisać tak by po przesunięciu suwakiem LiveGrid wczytala sie
> odpowiednia ilość?
>
> 3. po stronie serwera będzie metoda getSQL(Integer Start, Integer Stop)
> gdzie start i stop będzie zakresem jaki ma wyświetlić tylko jak to
> odpowiednio zapisać?

Już wiem jak ma to wyglądać po stronie serwera. Tylko jak obsłużyć LIMIT?

Pozdrawiam
Re: LiveGrid EXT-GWT (Częściowe rozwiązanie)
#153644
Author: J-23
Date: Thu, 22 Nov 2012 18:27
27 lines
2096 bytes
W dniu 22.11.2012 00:26, J-23 pisze:
> W dniu 21.11.2012 19:52, J-23 pisze:
>
> Tutaj jest częściowe rozwiązanie moich problemów
> http://www.sencha.com/forum/showthread.php?119614-Updating-Data-in-live-grid-store-is-not-displayed-on-the-grid
>
>
>>
>> 2. Załóżmy ze mam zapytanie SELECT * FROM test LIMIT 0,10
>>
>> Wiemy zę zapytanie wyswietli 10 rekordów (zakładam ze już jest
>> odpowiedni JSON)
>>
>> Jak to napisać tak by po przesunięciu suwakiem LiveGrid wczytala sie
>> odpowiednia ilość?
>>
>> 3. po stronie serwera będzie metoda getSQL(Integer Start, Integer Stop)
>> gdzie start i stop będzie zakresem jaki ma wyświetlić tylko jak to
>> odpowiednio zapisać?
>
> Już wiem jak ma to wyglądać po stronie serwera. Tylko jak obsłużyć LIMIT?
>

Temat zamknięty za try-biłem jak to zrobić. Bonawetura 100 krotne dzięki 
za pomoc

Pozdrawiam
Re: LiveGrid EXT-GWT
#153651
Author: William Bonawentura
Date: Fri, 23 Nov 2012 06:43
22 lines
2386 bytes
> Nie rozumiem:
> 1. Jak są uzupełnianie parametry skryptu. Domyślam się ze jakoś przez
> m.set("start", m.get("offset")); //faktycznie bo wytarciu tego są 
> pobieranie dopowiednio dane, ale jaka jest zasada tego co podstawimy pod 
> ,set"  skąd on wie które jak podstawić limit?

Po stronie przeglądarki pracuje u ciebie kilka komponentów:

Grid, który organizuje pracę całej kontrolki
GridView, który odpowiada za sposób prezentacji danych
Store, który przechowuje dane
Loader, który odpowiada za proces pobierania danych
Proxy, które dopasowuje proces ładowania np. z JSON, GWT-RPC itp. do Loadera

Gdy przesuniesz suwakiem GridView wysyła zdarzenie akcji użytkownika w 
interfejsie. Jego obserwatorem jest Grid, który stwierdza, że z tak 
przesuniętym suwakiem chce dociągnąć nowe dane. Wywołuje na loaderze metodę 
load przekazując jej limit i offset. Loader buduje obiekt LoadConfig 
(zawierający limit, offset, sort) i wywołuje Proxy. Proxy uruchamia np. 
usługę JSON. Gdy serwer odpowie, Proxy wywoła metodę zwrotną z Loadera. 
Loader da znać do Store. Store poinformuje zdarzeniem, że dane się zmieniły, 
GridView odświeży widok.
Thread Navigation

This is a paginated view of messages in the thread with full content displayed inline.

Messages are displayed in chronological order, with the original post highlighted in green.

Use pagination controls to navigate through all messages in large threads.

Back to All Threads