Table performance issue on selecting row

Hi!
It seems the selection on a row on a table containing more than 50 columns is very slow.
Here is my test code :

import com.vaadin.Application;
import com.vaadin.data.Item;
import com.vaadin.data.util.IndexedContainer;
import com.vaadin.ui.Table;
import com.vaadin.ui.VerticalLayout;
import com.vaadin.ui.Window;

public class FormApp extends Application{

	/**
	 * 
	 */
	private static final long serialVersionUID = 1L;
	int i;
	
	@Override
	public void init() {
		setMainWindow(new Window("Form"));
		VerticalLayout layout = new VerticalLayout();
		layout.setWidth("100%");
		layout.setHeight("100%");
		
		IndexedContainer container = new IndexedContainer();
		for(i=0; i<10; i++){
			container.addContainerProperty(i, String.class, null);
		}
		Table table = new Table();
		table.setContainerDataSource(container);
		table.setSelectable(true);
				
		for(i=0; i<100; i++){
			Item item = container.addItem(i);
			if(item != null){
				for(int j=0; j<10; j++)
					item.getItemProperty(j).setValue(j+"");
			}
		}
		layout.addComponent(table);
		getMainWindow().setContent(layout);
	}

}

Is there a workaround for this limitation on table?

Julie

50 columns sounds like a lot. Do you need to have them visible all the time or could some of the columns be hidden by default (and to be shown from the column popup menu)?

Am I right if I guess that you are using Table for creating some kind of reservation matrix, calendar or some of visualization? In those cases you should consider creating your own widget for the purpose - it is a lot easier than it sounds - take a look at: Overview | Client-Server Integration | Framework | Vaadin 8 Docs

At the moment, our customers are working on an other application which display all the informations they need in a table. And they need quickly access to it by using the horizontal scrollbar. theses informations are some kind of address informations, technicals informations and so on…

We are attempting to migrate from our application to a vaadin application and are about to think seriously into purchasing a licence with you if it generates incomes :wink:

We thought that it would be possible to display all the column quickly but seems it a bit slower with Vaadin althought I found it fast on an other framework based on GWT (smartGWT).

Vaadin add a layer on GWT, is it because of that ?

ps : Julie and me are working in the same company, that why I answer you directly :wink:

Development team is currently doing client-side rendering optimizations. If you could submit this problem (with test-case) as a (optimization request) ticket to dev.vaadin.com, they might be able to help with it.

From client-side Vaadin is implemented in GWT - so it should be as fast as GWT. So there is no “extra layer” that would slow things down. The real performance differences are related to DOM structures and other internals of the widgets in different frameworks. Implementations and feature sets of table widgets in SmartGWT and Vaadin are very different even though they both relate to GWT. Thus it might be that smartgwt is faster for having a lot of columns. I hope we can optimize Vaadin to match the performance in this use case.

How about splitting the view in two parts. At the top you have a table with only the essentials, like five columns, and at the bottom you get a nicely formatted form with all the info when you click on one row at the table.

I personally would like this better as you wouldn’t have to scroll horizontally and would get user-friendlier output of the info.

A little bit like the
Address book
, but you would just add all the extra fields in the bottom part that wouldn’t be visible in the table.

Thx for all theses advices !

But we are adapting an existing project and don’t want (yet) to loose our backend users on the interface. That why we try to replicate the UI as better as the original.

We will post a screen of our application as soon as it’s deployed :wink:

So what you’re saying is you’re trying to make the UI better by making it exactly like the old one, right? :wink:

Jokes aside, I realize the problem, and I would like to see our table performance improve to meet your needs.

But if you really wish to impress the current users with the new interface, you have an opportunity here to carefully redesign some aspects of the workflow, assuming there is room for improvement, and that way make users see other benefits of the new system, more than just the updates looks.

I know the way they are working and, they definitly want all the information in a table (as it can be sortable also !)

And I forgot… We are working with french customers… some of them are … uhm how do we say that in english … “changes allergic” ? :wink: