In this article
The Dashboard engine has been upgraded to compat level 5. By default, this level is used for all new dashboards.
- Compat level 5: Supports the latest version of Highcharts (v8.0.4).
- Compat level 4: Improves responsiveness for larger and smaller screens. Allows grouping of charts and tables.
- Compat level 3: Combines local filters with global filters for charts and tables.
- Compat level 2: Uses the Crosstabs engine to provide substantially faster performance over the legacy system.
Note: You may assign any compat level to any dashboard using the drop-down menu located in the dashboard editor.
1: Performance
Upon creation, all dashboards will default to using the latest compat level. Dashboards created using previous compat engines will remain at those compat levels.
1.1: Compat Level 5
Dashboard compat level 5 supports the latest version of Highcharts (v8.0.4), and includes the following chart updates:
- Chart legend keys are displayed as circles instead of squares.
- Hovering over an item in a multi-series chart highlights the item.
- Hovering over an item in the legend key for a multi-series chart highlights the item in the chart.
- Pie Gauge charts are displayed as pies instead of doughnuts.
1.2: Compat Level 4
Dashboard compat level 4 allows for the following:
- The dashboard is more responsive for larger and smaller screens.
- Grouping of charts and tables is possible using
groupandendgrouptags. All the charts/table enclosed with thegrouptag are shown in one container. - The display of grouped elements within a container can be altered using the
layoutattribute. - Elements can be moved together across columns using the
keepwith=[id]attribute.
1.3: Compat Level 3
In compat level 3, global filters work with local filters to filter data. If you add global filters and then create a chart or table with a local filter, the dashboard shows the result of the global and local filters combined.
1.4: Compat Level 2
With compat level 2 dashboards, you can apply per-record weighting both locally (to a specific segment) and globally (to all segments).
Per-record weighting means that each participant has a Float type question that contains a weight to be applied to their particular record. If you are using Crosstabs, you may have already uploaded a file with one or more weights. You can access the contents of that file in the "nweight" question, but you can still use any question you want for the weighting.
1.4.1: Applying Global Weighting
To apply weighting to all segments within your dashboard, use the following command, where r5 is the segment and val is the weighting value:
weight vweight.r5.val
This command applies global weighting to any segment that does not have an explicit weight parameter.
1.4.2: Applying Local Weighting
To apply weighting to only a specific segment within your dashboard, use the following command:
banner Weighted versus Unweighted segment weight=Unweighted segment weight=vweight.r1.val Weighted (algorithm 1) segment weight=vweight.r2.val Weighted (algorithm 2)
Note: Weighting an individual segment overrides any global weighting configuration for that segment. It is a convenient way to compare weighted vs. unweighted data for the same survey.
1.4.3: Compat Level 2 Limitations
The Crosstabs engine compiles expressions (e.g., q3.r1.any) into instructions and sends them to a virtual machine. In contrast, the Dashboard engine (compat 1) first evaluates the code in Python.
In general, any logic condition that is created in the Survey Editor is supported by compat level 2. See Crosstabs Technical Considerations to learn more about the logic that is supported by the Crosstabs engine.
2: Upgrading Existing Dashboards
To upgrade an existing dashboard, open the dashboard in edit mode and change the compat level using the "Compat" drop-down menu. Then save the dashboard, run it, and review any errors.
2.1: Updating Expressions
If an existing dashboard included complex Python expressions at the time it was upgraded, those may generate an error. You can change those expressions into virtual questions to remove the error.
A few Python expressions still may not work as intended and changes may be required.
For example, if "q1" is a two-dimensional radio question grouped by columns, then the condition q2.c1 would be true if the answer was non-zero. This means that "None" (not answered) or "0" (row r1 selected) are both false answers.
For compat 2 dashboards, this is false only if q2.c1 is not answered and is true if the column is answered. To be compatible with both systems, use q2.c1.any for it to evaluate to true if "c1" is answered in any way.