Skip to main content
Skip table of contents

Configure Settings for Large Tables

SuperWEB2 will automatically switch to large table mode if a user attempts to create a table containing more than a certain number of cells.

By default, the thresholds for large table mode are set at 8,000 rows, 1,000 columns, 100,000 total cells excluding wafers and 1,000,000 total cells including wafers.

For performance reasons, we do not recommend increasing the table cell threshold above 100,000. (Performance is unaffected by the number of items in wafers.)

You can choose to either configure a global set of large table mode thresholds that apply to all datasets and users, or you can configure specific settings for particular datasets and particular groups.

Configure Large Table Threshold - Global Settings

To configure the global thresholds for large table mode:

  1. Open <tomcat_home>\webapps\webapi\WEB-INF\classes\configuration.properties in a text editor.
  2. Locate the following section:

    XML
    #================================================================================================================
    # TABLE.LARGETABLEMODE
    #================================================================================================================
    
    # Integer.  Default 3.
    # Defines the number of values at each nesting level to show when you fall into large table mode.
    table.largeTableMode.previewDataSize=
    
    # Integer.  Default 1000000.
    # SW2 will enter large table mode if the entire table (rows, columns and wafers) has more than this number of cells.
    # This is primarily used to assist with tabulation performance and download size on the server side. For client
    # rendering performance, thresholdRendered should be used.
    # A value of -1 will disable the limit.
    table.largeTableMode.thresholdTotal=
    
    # Integer.  Default 100000.
    # SW2 will enter large table mode if the visible part of the table (rows and columns, excluding wafers) exceeds this
    # number of cells. This is used primarily for rendering performance on the client side. To assist with tabulation
    # performance and download size on the server side, thresholdTotal should be used.
    # A value of -1 will disable the limit.
    table.largeTableMode.thresholdRendered=
    
    # Integer.  Default 8000.
    # SW2 will enter large table mode if the table has more than this number of rows.
    # A value of -1 will disable the limit.
    table.largeTableMode.thresholdRow=
    
    # Integer.  Default 1000.
    # SW2 will enter large table mode if the table has more than this number of columns.
    # A value of -1 will disable the limit.
    table.largeTableMode.thresholdColumn=
  3. There are four settings that determine when large table mode will be activated:

    ParameterEnter large table mode if the table contains...
    table.largeTableMode.thresholdTotal

    More than this number of cells for the entire table.

    table.largeTableMode.thresholdRendered

    More than this number of cells, excluding wafers.

    table.largeTableMode.thresholdRow
    More than this number of rows.
    table.largeTableMode.thresholdColumn
    More than this number of columns.

    To disable any of the above options, set the value to -1.

  4. You may also want to configure the previewDataSize setting. This controls the number of cells to show at each level in the table when SuperWEB2 is in large table mode.

    By default, this is set to 3 (as shown here, SuperWEB2 displays the first two values of the field and .. to indicate that there are more items at this level):

  5. Save your changes to the file and restart Tomcat or the SuperWEB2 service.

Configure Large Table Mode - Per-Group and Per-Dataset

If you want to configure different settings for specific datasets or for groups of users, then you can use the following commands in the SuperADMIN configuration server. 

Replace <index> with the index value of the group of settings (starting from 0) and replace <limit>  or <list_of_groups> with the limit or groups you want this to apply to (see Configuration Server Overview for more details on how to use the SuperADMIN configuration server):

Global Settings

CODE
cfg global superweb2.largeTableMode[<index>].thresholdTotal set <limit>
cfg global superweb2.largeTableMode[<index>].thresholdRendered set <limit>
cfg global superweb2.largeTableMode[<index>].thresholdRow set <limit>
cfg global superweb2.largeTableMode[<index>].thresholdColumn set <limit>
cfg global superweb2.largeTableMode[<index>].excludeGroups set <list_of_groups>
cfg global superweb2.largeTableMode[<index>].includeGroups set <list_of_groups>

Per-Dataset Settings

CODE
cfg db <dataset_id> superweb2.largeTableMode[<index>].thresholdTotal set <limit>
cfg db <dataset_id> superweb2.largeTableMode[<index>].thresholdRendered set <limit>
cfg db <dataset_id> superweb2.largeTableMode[<index>].thresholdRow set <limit>
cfg db <dataset_id> superweb2.largeTableMode[<index>].thresholdColumn set <limit>
cfg db <dataset_id> superweb2.largeTableMode[<index>].excludeGroups set <list_of_groups>
cfg db <dataset_id> superweb2.largeTableMode[<index>].includeGroups set <list_of_groups>

You only need to specify settings that you specifically want to override. If a setting is not defined for a particular dataset, then SuperWEB2 will fall back to the global value of that setting. If it is not defined in the global settings either, it will fall back to the one from the configuration.properties file.

The excludeGroups and includeGroups settings allow you to specify that a particular group of settings apply to specific groups of users:

excludeGroups

If a user belongs to one of the groups listed in exclude groups, then this set of threshold settings will not apply to that user. The user will either be subject to:

  • Another group of dataset-level settings (if there is one defined and the user is not excluded from those either).
  • The corresponding global settings (if there are no other dataset-level settings that apply).
  • The settings from configuration.properties (if there are no local or global settings). 
includeGroups

If you use includeGroups then the threshold settings configured here will only apply to users within those listed groups. Users not in the specified groups will either be subject to other dataset-level settings (if defined) or the corresponding global settings (if defined) or the configuration.properties settings instead. 

If you specify both excludeGroups  and includeGroups and there are overlaps between the groups (i.e., if a user is in both an included and and excluded group) then the excludeGroups take precedence.

For example, the following configuration would ensure that the following rules apply to the Retail Banking dataset:

  • A row threshold of 500 rows applies to all users.
  • A total threshold of 10,000 cells applies to all users except for users in the administrators or internalusers groups (those users would have the total threshold setting from configuration.properties instead).
  • Other settings fall back to the global settings or (if not set globally) the ones from configuration.properties.
CODE
cfg db bank superweb2.largeTableMode[0].thresholdTotal set 10000
cfg db bank superweb2.largeTableMode[0].excludeGroups set ["administrators","internalusers"]

cfg db bank superweb2.largeTableMode[1].thresholdRow set 500

Check Current Large Table Mode Configuration

You can use the following commands to check the current configuration:

CODE
cfg global superweb2.largeTableMode
cfg db <dataset_id> superweb2.largeTableMode

For example:

CODE
> cfg db bank superweb2.largeTableMode

[
    {
        "excludeGroups":[
            "administrators",
            "internalusers"
        ],
        "thresholdTotal":10000
    },
    {
        "thresholdRow":500
    }
]
>


Other Large Table Mode Configuration

Change the Preview String

You can also change the string that is shown in the last heading for each row and column. By default this is set to ..

  1. Open <tomcat_home>\webapps\webapi\WEB-INF\classes\common_labels.properties.

    There may be multiple copies of this file for different languages and locales, with names like common_labels_en.properties and common_labels_en_AU.properties. Each one contains the text used for different languages. Depending on which languages are in use on your deployment, you may need to make these changes in multiple versions of the file. The properties file that is used will depend on the language settings in the end user's web browser, the set of supported locales defined in the faces-config.xml configuration file, and the language selected by the user from the drop-down list. See Multilingual and Localisation Support for more information about localisation and how SuperWEB2 uses the properties files.

  2. Locate the following property:

    TEXT
     tableView.largeTableMode.dots=..
  3. Change the value to your preferred string.

  4. Save your changes and and restart Tomcat or the SuperWEB2 service.

Configure the Maximum Number of Cells in a Table

To configure the maximum number of cells permitted in a table:

  1. Open <tomcat_home>\webapps\webapi\WEB-INF\data\.repository\RulesEngine.xml in a text editor.

    Make a backup copy of this file before making any changes.

  2. Locate the following section:

    XML
        <rules:EditRule name="TableCellsNumberRule"
                applicableOperations="add;drillup;drilldown"
                implClassName="au.com.str.webapi.services.database.manager.rules.impl.TableCellsNumberRule">
            <rules:impl-class-init>
                <rules:init-param name="maxElementCount" value="40000000"/>
                <rules:init-param name="disableMaxElementCount" value="false"/>
            </rules:impl-class-init>
        </rules:EditRule>
  3. Change the value of maxElementCount to your preferred maximum number of cells.
  4. Save your changes to the file and restart Tomcat or the SuperWEB2 service.

Prevent Guest Users from Accessing Large Table Mode

If you have enabled guest user access on your system, you may also wish to prevent guest users from accessing large table mode. See Prevent Guest Users from Creating Large Tables for more information on this step.

JavaScript errors detected

Please note, these errors can depend on your browser setup.

If this problem persists, please contact our support.