Knowledge Base Article

Dashboard Design Guard - A plugin for enforcing dashboard best practices and organizational standards

The Dashboard Design Guard plugin enforces dashboard design best practices and organizational policies by placing configurable guardrails directly into the dashboard creation experience.

Overview

Dashboard Design Guard is a plugin that enforces dashboard design best practices and organizational policies. It's built to help maintain clean, performant, and user-friendly dashboards by placing configurable guardrails directly into the dashboard creation experience.

Dashboard designers often unintentionally overload dashboards with too many widgets, deep filter hierarchies, or multiple heavy pivot tables. While this might seem like a way to provide rich insights, it can lead to slow load times, rendering issues, and a confusing user experience. Over time, these design patterns contribute to poor adoption, performance bottlenecks, and increased maintenance overhead. This plugin helps address these challenges by allowing admins to define three design thresholds:

  • number of widgets
  • number of pivot tables
  • depth of cascading filter levels

and enforce them automatically. Instead of relying solely on documentation or training to drive best practices, the plugin warns or restricts certain UI actions (create new widget, duplicate existing widget, etc) when limits are reached. This add-on can be set to either display a warning message, disable (grey out) or hide the UI controls depending on the configuration.

Disable
Remove
Warn

The Dashboard Design Guard plugin acts as a lightweight governance layer that:

  • Prevents overly complex dashboards that degrade performance
  • Reduces manual oversight by automatically enforcing design standards
  • Promotes consistent, performance-aware design across the organization
  • Provides visual feedback when limits are exceeded

Additionally, when the "warn" mode is used, the warning pop-up follows the same color and font settings as defined in your Look & Feel configurations. This ensures that the pop-up integrates seamlessly with your theme, keeping a consistent and visually cohesive experience.

Limitations

The Dashboard Design Guard is a client-side plugin and works entirely within the user's browser. This means that:

  • The plugin does not enforce restrictions at the server level or during REST API calls.
  • Users with technical knowledge (e.g., developers, users with some experience in DOM manipulation) could potentially bypass some restrictions by modifying the DOM through the browser console.
  • Hiding the UI elements may offer stronger deterrence for more technical users than greying them out (see the Configurations section below), although neither method fully prevents client-side overrides.

It should be seen as a helpful UX guardrail, not a security mechanism.

Installation instructions

  1. Download and unzip the plugin zip file. Extract the files directly (do not extract into a new folder); the plugin files are already organized within a folder in the zip file.

  2. Upload the DashboardDesignGuard folder to the plugins directory on your Sisense server (/opt/sisense/storage/plugins).

  3. Check the Add-ons page in the Admin tab (under Server & Hardware) and make sure the new plugin is listed and enabled.

  4. Edit the configuration config.js file to match your dashboard governance policies.
    This can be done before or after uploading the plugin.

Configurations

Threshold Settings

These configurations define the limits you want to enforce on dashboard design:

  • maxNumberOfWidgets: The maximum number of widgets allowed on a single dashboard. This helps prevent overcrowded layouts that can negatively impact performance.
    • The default value is 10 (Sisense-recommended limit on widget count).

  • excludeWidgetTypeList: A list of widget types that should not count toward the widget total. To ensure performance-related limits are effective, only non-querying widgets (e.g., Text Widget, Tabber) should be excluded.
    • The default values are ['richtexteditor', 'WidgetsTabber'], which are both non-querying widget types.

  • maxNumberOfPivots: The maximum number of pivot tables allowed per dashboard. Pivot tables are the most resource-intensive widget type, so setting a limit helps maintain optimal dashboard performance.
    • The default value is 2 (Sisense-recommended limit for pivot tables).

  • maxNumberOfCascadingFilterLevels: The maximum number of fields allowed in a set of cascading/dependent filters. This prevents excessive nesting in filters, which can degrade dashboard interactivity.
    • The default value is 10 (Sisense-recommended limit for dependent filters).

Enforcement behavior settings

These configurations determine what happens when a threshold is reached and how restrictions are communicated, whether by hiding the options entirely, greying them out with informative tooltips, or simply displaying a pop-up warning (no UI restrictions). For each of the following options, set to "disable" to grey out the button or menu item, "remove" to hide it entirely, or "warn" to display a warning message, when the corresponding limit is reached:

  • widgetButtonMode: Controls the “+ Widget” button in the dashboard toolbar.
  • duplicateOptionMode: Controls the “Duplicate” option in the widget menu.
  • pivotOptionMode: Controls the “Pivot” option in the widget type dropdown.
  • createButtonMode: Controls the “Create” and “Advanced Configuration” buttons in the "New Widget" pop-up window, and the “Apply” button in the widget editor.
  • filterAddButtonMode: Controls the “+” button used to add dependent filter levels.

Best Practice: For most users, greying out UI elements with an informative tooltip is the preferred approach. It clearly communicates why an action is unavailable, providing a more user-friendly and less disruptive experience. For more technical users, hiding the control altogether offers a stronger visual deterrent, as hidden elements are less likely to be discovered or restored using browser developer tools (see the Limitations section above).

Additional settings for "Warn" mode

If you prefer to use the "warn" mode, these additional configurations can be used to define the frequency and the content of the pop-up message:

  • guardConfig.showWarningOnEveryClick: determines whether the pop-up warning will appear every time the user clicks the relevant button or menu option, even if the threshold has already been reached. Note: The “shown” flag is reset when the page is refreshed, so warnings can appear again on a new page load.
  • guardConfig.widgetCountWarningMessage: defines the message displayed when the widget limit is reached or exceeded.
  • guardConfig.pivotCountWarningMessage: defines the message displayed when the pivot table limit is reached or exceeded.
  • guardConfig.filterLevelWarningMessage: defines the message displayed when the nested filter level limit is reached or exceeded.

For the content of the warning messages, placeholders can be used to dynamically display relevant values. These special keywords are replaced with actual values at runtime:

  • reachedOrExceeded → replaced with "reached" when the threshold is met, or "exceeded" when it is surpassed.
  • currentWidgetCount → replaced with the current number of widgets on the dashboard.
  • currentPivotCount → replaced with the current number of pivot tables on the dashboard.
  • currentFilterLevelCount → replaced with the current number of nested filter levels.

You can also reference the policy thresholds defined in the config object using these variables:

  • ${guardConfig.maxNumberOfWidgets} → the maximum allowed number of widgets per dashboard.
  • ${guardConfig.maxNumberOfPivots} → the maximum allowed number of pivot tables per dashboard.
  • ${guardConfig.maxNumberOfCascadingFilterLevels} → the maximum allowed depth of dependent filter levels.

Note: HTML tags are supported in all messages.

Guardrail explanations and examples

When the widget count threshold is reached.

1. The "+ Widget" button is greyed out (with an explanatory tooltip on hover), hidden, or shows a warning message when clicked.

Disable
Remove
Warn

2. Widgets' "Duplicate" button is greyed out (with an explanatory tooltip on hover), hidden, or shows a warning message when clicked.

Disable
Remove 
Warn

When the pivot tables threshold is reached.

1. When creating a new widget, the "Advanced Configuration" link and the "Create" button in the "New Widget" pop-up window are greyed out (with an explanatory tooltip on hover), hidden, or show a warning message, when Pivot table is selected as the new widget's type.

Disable
Remove
Warn

2. Existing Pivot tables' "Duplicate" button is greyed out (with an explanatory tooltip on hover), hidden, or shows a warning message when clicked.

Disable
Remove
Warn

3. The "Pivot" option is greyed out or hidden in the widget type dropdown, preventing users from changing an existing widget into a Pivot table, or shows a warning message when clicked.

Disable
Remove
Warn

When either or both the widget or pivot table thresholds are reached.

If users try to create a new widget or Pivot table using the new widget direct URL, the "Apply" button is greyed out (with an explanatory tooltip on hover) or hidden, preventing them from saving the widget, or shows a warning message when clicked.

Disable
Remove
Warn

When the dependent filter's threshold is reached.

The “+” button used to add dependent filter levels is greyed out (with an explanatory tooltip on hover), hidden, or shows a warning message when clicked.

Disable
Remove

 

Warn

Disclaimer

This post outlines a potential custom workaround for a specific use case or provides instructions regarding a specific task. The solution may not work in all scenarios or Sisense versions, so we strongly recommend testing it in your environment before deployment. If you need further assistance with this, please let us know.

Updated 09-08-2025

6 Comments

  • HamzaJ's avatar
    HamzaJ
    Data Integration

    Hey TriAnthony​ ,

    This looks amazing and is something we were looking for. Would it also be possible to give a warning-popup instead of grey-ing/removing buttons? I want to inform/warn our designers about best practices and the results of not following them, but I do not want to limit their design proces.

    Hamza

    • TriAnthony's avatar
      TriAnthony
      Admin

      Hi HamzaJ​,

      Thanks for the feedback! That’s a great idea, I’ll make sure to include it in the next version of the plugin. Let me know if you have any other suggestions!

      -Tri

      • TriAnthony's avatar
        TriAnthony
        Admin

        Hi HamzaJ​,

        I've updated the plugin to allow a third mode "warn", which will show a pop-up warning instead of disabling/removing the UI elements. I'll update the article soon, but I thought I’d send you a copy of the plugin in advance (attached below).

        There are a few more configurations that I added, all of them are documented in the config.js file.

        Please let me know if you have any feedback. Thank you!

        Example of the pop-up warning: