ContributionsMost RecentNewest TopicsMost LikesSolutionsRe: Dashboard Design Guard - A plugin for enforcing dashboard best practices and organizational standards Hi HamzaJ, Just wanted to let you know that I've updated the article and uploaded an updated version of the plugin (the link in both the article and the comment above has also been updated), which includes a few improvements and bug fixes. -Tri 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. Re: Dashboard Design Guard - A plugin for enforcing dashboard best practices and organizational standards 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: Re: Colored labels in table Hi MikeGre, I just tested the script on L2025.3.0.226 and it is working for me. Could you try increasing the delay (line 26 in the code above) from 10 to 30 (or more)? If it still doesn't work, would you be able to send a copy of your dashboard? -Tri Re: Column chart with full range x-axis Hi jameshaid, I just sent the file to your registered email. If you're still unable to import the notebook, you can create a new one instead. In the "Create a new Notebook" window, give it a name and add two additional input parameters (located at the bottom of the window). All the other fields are optional. Here are the Additional Input Parameters configurations: WeekNumberFieldName parameter: BreakByFieldName parameter: Next, open the code editor (Jupyter Notebook) and delete all existing cells. Paste the below code into the first empty cell: # Test Cell # When the notebook is executed by the widget, this cell is ignored. # See the `Test Cell` section below for further details. from init_sisense import sisense_conn df_input = sisense_conn.get_debug_data() additional_parameters = '{\"WeekNumberFieldName\":\"Week Number\", \"BreakByFieldName\":\"Age Range\"}' Then paste the below into the next cell: import json import pandas as pd # Load the additional_parameters JSON string try: data = json.loads(additional_parameters) except json.JSONDecodeError as e: print(f"Failed to parse outer JSON: {e}") raise week_number_field_name = data["WeekNumberFieldName"] break_by_field_name = data["BreakByFieldName"] week_numbers = range(1, 53) # Get unique values for break_by_field_name break_by_field = df_input[break_by_field_name].unique() # Build full cartesian product of week_number_field_name and break_by_field_name full_index = pd.MultiIndex.from_product( [week_numbers, break_by_field], names=[week_number_field_name, break_by_field_name] ) # Rebuild the data frame df_result = ( df_input.set_index([week_number_field_name, break_by_field_name]) .reindex(full_index, fill_value=0) .reset_index() ) df_result Save the code and switch back to the widget tab. Click Next, enter the names of your Week Number and Break By columns in the input fields. Click Done to close the window, then save the widget. Re: Column chart with full range x-axis Hi jameshaid, You can use Python code to add the missing records via Custom Code Transformation. I have attached a notebook below that contains the Python code for adding missing weeks (based on week numbers) to charts. Note that the community site doesn’t currently support .ipynb files. Please change the file extension from .txt to .ipynb after downloading it. For instructions on how to import and use a Custom Code notebook, please refer to the Custom Code Transformation documentation. The notebook requires two inputs: Week Number Field Name and Break By Field Name. Use the names of the corresponding columns as they appear in the widget editor: the week number column for Week Number Field Name, and the Break By column (in your example, the column that contains KEHE, RAINFOREST DISTRIBUTION, and UNFI) for Break By Field Name. Please see the screenshots below for reference. Let me know if you have any follow-up questions. Custom Code configurations: Result Re: Dashboard Design Guard - A plugin for enforcing dashboard best practices and organizational standards 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 Plugin - Enable Multicolor Legend Items for Conditional and Range Overview Legend items come with colored boxes that represent the data points in the chart. The color of each box matches the bar/column/bubble in the chart, as long as the measure is set to a single color, and not conditional or range. When conditional or range is used, the legend item's box becomes grey (or the palette's default color for Scatter Charts), because the box cannot natively accommodate multiple colors. This plugin solves this limitation by: splitting the box into smaller strips to accommodate multiple colors, for conditional, or creating a gradient of two colors in the box, for range. Limitations This plugin is only relevant to Bar Charts, Column Charts, and Scatter Charts. Other chart types either do not support conditional/range or have their own version of legends (e.g., Area Map). If there are too many legend items, wider boxes might affect spacing and cause certain items to be cut off. See the Configuration section below for more details. Installation Instructions 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. Upload the multiColorLegendItems folder to the plugins directory on your Sisense server (/opt/sisense/storage/plugins). Check the Add-ons page in the Admin tab (under Server & Hardware) and make sure the new plugin is listed and enabled. Modify the config file as needed (this can be done before of after the upload). Configurations This plugin comes with a configuration file that can be updated as needed. The four configuration settings in the file are: numberOfColorsForWiderBoxes . If there are too many conditions, the box may be too small to accommodate all colors, so the width may need to be increased. In this case, specify the threshold for the number of colors. For example, a threshold of 5 means the box width will be increased if there are five or more colors assigned to it. Otherwise, the original width will be kept. Note: Wider boxes might affect spacing and cause certain legend items to be cut off if there are too many of them. To work around this, the verticalLayout setting can be set to true. The default value is 5. widthMultiplierForConditional . For wider boxes, specify the multiplier. For example, a multiplier of 1.5 means the new width will be 1.5 times the original width for boxes that have more colors than the numberOfColorsForWiderBoxes threshold. The default value is 1.5. widthMultiplierForGradient . If wider boxes are needed for range as well, specify the multiplier. Otherwise, leave the default value of 1. The original width is generally sufficient for range. verticalLayout . Specify whether legend items should be laid out vertically. This is useful when wider boxes are needed and there are too many legend items to fit correctly horizontally. The default value is false. Examples 1. Conditional with 4 colors (less than the numberOfColorsForWiderBoxes threshold) [ALT Text: A comparison of two column charts labeled "Before" and "After," displaying sales and costs data by sales associates. The "Before" chart shows the "Sales" legend item box in grey despite conditional formatting being applied, while the "After" chart correctly displays the four conditional colors.] 2. Conditional with 11 colors (greater than the numberOfColorsForWiderBoxes threshold, the legend item box width is increased) [ALT Text: A comparison of two scatter charts labeled "Before" and "After," displaying sales and costs data by sales associates. The "Before" chart shows the "Sales" legend item box in blue (the palette's default color) despite conditional formatting being applied, while the "After" chart correctly displays all eleven conditional colors, with a wider box to fit them.] 3. Range Auto (both the min and max colors are auto-selected) [ALT Text: A comparison of bar scatter charts labeled "Before" and "After," displaying sales and costs data by sales associates. The "Before" chart shows the "Sales" legend item box in grey despite automatic range (gradient) being applied, while the "After" chart correctly displays a gradient between the automatically selected minimum and maximum colors.] 4. Range Manual with Min Max range type (both the min and max colors are manually selected) [ALT Text: A comparison of bar scatter charts labeled "Before" and "After," displaying sales and costs data by sales associates. The "Before" chart shows the "Sales" legend item box in grey despite manual range (gradient) with Min/Max mode being applied, while the "After" chart correctly displays a gradient between the user-selected minimum and maximum colors.] 5. Range Manual with Min range type (only the min color is manually selected) [ALT Text: A comparison of bar scatter charts labeled "Before" and "After," displaying sales and costs data by sales associates. The "Before" chart shows the "Sales" legend item box in grey despite manual range (gradient) with Min mode being applied, while the "After" chart correctly displays a gradient between the user-selected minimum color and the automatically selected maximum color.] 6. Range Manual with Max range type (only the max color is manually selected) [ALT Text: A comparison of bar scatter charts labeled "Before" and "After," displaying sales and costs data by sales associates. The "Before" chart shows the "Sales" legend item box in grey despite manual range (gradient) with Max mode being applied, while the "After" chart correctly displays a gradient between the automatically selected minimum color and the user-selected maximum color.] User Parameters - What They Are and What They're For (Example Use Cases) User Parameters - What They Are and What They're For (Example Use Cases) User Parameters, or simply Parameters are user and user group-specific values that can be assigned to live database connections and queries. These values are resolved during query runtime and change dynamically depending on the current logged-in user. This means that we can manage a single Live Data Model with varying connection details and queries. By eliminating the need for multiple identical copies of data models and dashboards, parameters provide increased design flexibility and reduce maintenance complexity without compromising your data security restrictions. Parameters are managed by Admins and Data Admins. There are two types of parameters: Live Connection Parameters are used to personalize connection details, such as database connection string, location, username, and password. Custom Live Query Parameters are used to customize parts of live SQL queries, such as column names, calculations, and filter conditions. For more information on how to create Parameters, refer to this documentation: Personalization Parameters for Live Data Sources. Here are a few example use cases for User Parameters: Federating multiple isolated, structurally identical databases into a single model (parameterized database location or name) Enforcing row-level security rules already defined in the source database to Sisense queries (parameterized username and password) Automatic localization such as time zone conversion and currency conversion (parameterized formula or join condition) Personalized filter requirements (parameterized WHERE clause condition, e.g. history depth) Column-level security (parameterized column selection) Query tracking/audit (parameterized comment text) Let us know in the comments if you have other use cases of Parameters you'd like to share! Re: Input Parameters using BloX for What-If Analysis Hi Astroraf They are created in the formula editor and can be reused in widgets. They are essentially hard coded numbers saved as starred formulas. The video linked below shows how the levers are created. Please let me know if you have any follow-up questions. Setting Up Swap Levers.mov -Tri