PDA

View Full Version : No "high-performance" grid planned?



dbassett74
29 Sep 2009, 8:25 AM
I'm a little disappointed to see that the roadmap makes no mention of an improved grid. As we all know, the current Grid implementation falls flat on its face with more than several hundred records, due to the fact that it is using a table for each row. I know that Animal has created an alternative single table grid. But, I really think this should be a core offering in ExtJs to be more competitive.

So my question for the ExtJs team, have you decided to just let this be a third party fix, or do you ever plan on taking a serious look at improving the performance of the grid? After all, the purpose of a grid is to show data and as we all know, this world is producing more and more data, not less. So a grid is expected to be able to easily handle hundreds, if not thousands of items. I see that there is a TreeGrid planned for the next release, which is WAY cool and something we can very much use. I just hope the performance is up to par.

evant
29 Sep 2009, 8:26 AM
Have you looked at the ListView component?

dbassett74
29 Sep 2009, 8:30 AM
Doesn't work for me as it is lacking a lot of the functionality that the GridPanel, such as grouping, horizontal scrolling, editing, column moving, etc.

evant
29 Sep 2009, 8:31 AM
That's kind of the point. The grid is so complex ~because~ it supports features like that. The ListView was intended as a compromise for simple read-only data.

dbassett74
29 Sep 2009, 8:36 AM
But do these features necessitate the use of a table for each row? Why can't the same features be accomplished with a single table? I guess I could see that Grouping may require the use of individual tables for each group, by why a table for each and every row? Seems like it may have been a time to market issue as it was probably much easier to implement this way, but in the end, the impact on performance is tangible.

Animal
29 Sep 2009, 9:35 AM
I think that a lighterweight DOM structure using just a <table> is possible for a GridView BoxComponent which may then have all the capabilities of the Ext.GridPanel added as individual plugins.

Grouping should be possible using a row with a single <td colspan="total no of columns">

I've made a start, but I don't have time to add everything.

dbassett74
29 Sep 2009, 10:17 AM
Okay Animal, maybe we can just run with yours. I will hopefully have time to contribute to the effort as time goes on.

mrsunshine
29 Sep 2009, 10:22 AM
I'm a little disappointed to see that the roadmap makes no mention of an improved grid. As we all know, the current Grid implementation falls flat on its face with more than several hundred records, due to the fact that it is using a table for each row. I know that Animal has created an alternative single table grid. But, I really think this should be a core offering in ExtJs to be more competitive.
.
Do you test the bufferGridview in ext 3 where only the grid view + buffer is rendert in the dom?

an other approach is the livegrid.

dbassett74
29 Sep 2009, 10:31 AM
I don't like the behavior of the buffered grid view as it constantly loads data as you scroll up/down. I haven't tried the live view yet though. What I would REALLY like to see is something like what Yahoo Mail does. Essentially, they seed the grid with the total number of rows for each email, but only actually load a certain amount. As you scroll, you can then see some rows being dynamically populated from the server. These rows then remain static in the grid, and don't get removed, as it does in the ExtJs buffered view. I think the way the buffered view was implemented is completely unusable. Sorry, just MO....

mrsunshine
29 Sep 2009, 10:42 AM
I don't like the behavior of the buffered grid view as it constantly loads data as you scroll up/down.
thats the behavoir off a livegrid http://www.ext-livegrid.com/

the bufferd view (grid) loads like in the example 500 rows but only render the 10 rows in the view (http://extjs.net/deploy/dev/examples/grid/buffer.html)

but i share your opinion that buffer grid view which reloads data and keep it in the store would be also useful.

dbassett74
29 Sep 2009, 12:56 PM
Okay, maybe I got it backwards. It must have been the LiveGrid that I tried. I don't like it.

Okay, just tried the buffered view. Seems much better than LiveGrid, however, what I don't like is the delay in rendering is very visible when scrolling up and down. It almost makes it look like its fetching data live, just like the LiveGrid, but without the annoying "buffering..." mask of LiveGrid.

I guess there are two issues I have with the current GridPanel with regard to performance. 1) Initial load time of large amount of records, and 2) Scrolling/column resizing/row navigation/etc once data has been loaded.

What would really be better I think is if it only buffers it once. Meaning, once a portion of the grid (> 500) has been rendered, it stays rendered. This would fix problem 1 for initial load time because its very fast loading just the initial 500 records. But, we still have the problem of once everything has been loaded, the rendering is the problem. This is still a result of the underlying architecture of a table per row.

So while the buffered view certainly helps with initial load time, I don't like the side affect of continuing to dynamically render every time you scroll up and down and it be very visible, at least in Firefox. In Chrome, the rendering is not noticeable, but the scrolling jumps and is not fluid.

I think the best approach is using initial load buffering AND a single table design. I can see how this would take some engineering, but would certainly be worth it in the end.

dbassett74
30 Sep 2009, 12:43 PM
Another benefit of a single table design, would be the elimination of the doubled-up horizontal row lines which I can't stand.