Actually, the performance problem was in the first row, well actually the 
header that 
was rendering all days in a week/month/year.

Each data row itself has a lot less items.
Each row has items that are absolutely positioned within the relatively 
positioned row.
Each item can span over multiple days/week/months or even years, depending on 
the 
task duration.

Doing this instead of rendering divs for each day saves a lot of calculation on 
the 
server side and a whole lot less html on the client side.
And this creates other nifty possibilities like making the item divs resizable 
and 
draggable in that row with bound ajax calls to those actions.
For showing a grid I've done some background images that match the zoom level, 
since each day is static in width.

I've thought about lazy loading the rows that where outside of the scrollable 
view, 
since I indeed have a scrollable view.
But that's something for the future.

Rendering the 287 years, e.g. 104k~ ish days, did render eventually and the 
server 
and browser didn't choke, but the div with was about 5M px width wide, so that 
was 
nonsense :P

On Wednesday 27 March 2013 05:25:40 Bernard wrote:
> Hi,
> 
> AFAIK the solutions for large numbers of cells in GUI frameworks are:
> 
> 1) Do not render cells that are not in the scrollable view
> 2) Create components only per once row or column and provide cell
> renderers. See javax.swing.table.TableCellRenderer
> 
> With these approaches there is basically no limit to the amount of
> data that can be displayed on the screen.
> 
> The current architecture seems to be here that the entire view is
> "rendered" on the server irrespective of how much of it is displayed
> in the client. This rules out 1)
> 
> Still the current architecture allows to exploit 2) which would solve
> your performance problem if applicable to your use case. But that is
> theory until someone creates TableCellRenderer for Wicket.
> 
> Kind Regards,
> 
> Bernard
> 
> On Tue, 26 Mar 2013 16:07:17 +0100, you wrote:
> >Hi,
> >
> >Lets say I have about ~100.000 of MarkupContainer objects that I want to
> >put into a ListView or RepeatingView.
> >This works fine functional wise... It's rather slow though.
> >
> >It boils down to:
> >MarkupContainer:
> >1309 private Component put(final Component child)
> >1310         {
> >1311                 int index = children_indexOf(child);
> >1312                 if (index == -1)
> >1313                 {
> >1314                         children_add(child);
> >1315                         return null;
> >1316                 }
> >1317                 else
> >1318                 {
> >1319                         return children_set(index, child);
> >1320                 }
> >1321         }
> >
> >and the call to "children_indexOf(child)" where it loops over all it's
> >existing children and compares the id's until a match is found.
> >With an increasing amount of children this can get rather slow...
> >
> >I though off overruling some functionality in the MarkupContainer class
> >since I'm sure that for this list of items the children will be unique in
> >their id and don't need that lookup, and overruling the "put" or
> >"children_indexOf" function would give me enough power to skip that
> >performance impacting part. But most functions have private access,
> >leaving me nothing to control the adding of child components to a
> >MarkupContainer.
> >
> >Does anyone else have experience with adding rather large quantities to
> >something like the ListView and/or RepeatingView?
> >Or is there another way of rendering this large amount of containers?
> >
> >Thanks in advance.
> >
> >Kind regards,
> >Marco
> 
> ---------------------------------------------------------------------
> To unsubscribe, e-mail: [email protected]
> For additional commands, e-mail: [email protected]

Reply via email to