UI performance issues

Hi,

Our application contains tables with a lot of columns and we seem to run into issues with performance.

  1. If a page with table is displayed and all the columns are displayed and we try to deselect all the columns (click “Deselect all” option in context menu),
    then columns become deselected slowly.
  2. If 2 tabs with tables are open, switching between then is slow.

I’ve attached a simple app to demonstrate issues with UI performance:
example.zip (89.5 KB)

Could you please clarify how this problem can be fixed?

Thanks.

Hello,

Thank you for the demo project!

  1. Unfortunately, there is no way to improve the performance of DeselectAll out of the box. You can try to split your data into smaller entities or tables.
  2. Take a look at cuba.web.mainTabSheetMode. You can configure your screen to do not unload UI. For instance, add the following property to your web-app.properties:
    cuba.web.mainTabSheetMode=MANAGED
    
    And in your screen do the following:
    @Subscribe
    public void onInit(InitEvent event) {
        Window window = getWindow();
        if (window instanceof TabWindow) {
            ((TabWindow) window).setContentSwitchMode(Window.ContentSwitchMode.HIDE);
        }
    }
    
    If you want to apply it globally for all screens define: cuba.web.managedMainTabSheetMode.

Hello Roman,

Thank you for your help.

cuba.web.mainTabSheetMode=MANAGED has helped to improve performance, tabs load quickly.
We only noticed that in dark mode with helium theme the background of tabs was white so we had to redefine “background-color” property for “.c-managed-tabsheet” class for helium theme.

Regarding “DeselectAll” performance, could you please clarify if it is planned to be improved? Is there any bug/ticket on this?

Thanks.

We don’t have any plans to improve it because this is a part of Vaadin code when all deselected columns are calculated and sent to the server-side.