Versions Compared

Key

  • This line was added.
  • This line was removed.
  • Formatting was changed.
Appanvil karma designer
summary Dashboard Release January 20252025_01 BackUp & Restore     Download Now     Ken Miller CTO I'm pleased to share with you our latest dashboard release, which is available to download now - pi.2025_01 In this release, we've taken the opportunity to address lots of our little bug fixes, introduced changes on features such as multilingual, exporting improvements and tackled a series of vulnerabilities too.As always, have a read through the notes in full to learn of all the changes before you upgrade, just to make sure its right for you and your end users. 5 New Features 39 Changes & Maintainance 3 Schema Changes 2 Key Notifications
page{"premium":true,"id":"FMkTud2JrHXMpzIylO0bD","name":"page","children":[{"name":"section","params":{"backgroundSize":"cover","gap":10,"background":"#2d2f4cd4","padding":8,"image":{"value":"https://images.unsplash.com/photo-1491582325207-80d06869fb3d?crop=entropy&cs=tinysrgb&fit=max&fm=jpg&ixid=MnwzMzg3MzF8MHwxfHNlYXJjaHwxMnx8bmV3JTIweW9ya3xlbnwwfDB8MXxibGFja19hbmRfd2hpdGV8MTY2MjEyNDU2MA&ixlib=rb-1.2.1&q=80&w=1080","target":"_self","type":"link"}},"children":[{"children":[{"children":[{"name":"text","children":[],"params":{"value":[{"type":"paragraph","children":[{"letterSpacing":0,"fontSize":20,"fontWeight":700,"fontFamily":"Poppins, sans-serif","text":"","lineHeight":"10px","color":"#ffffff"}]}]},"id":"rNX3qXaG8Q4ewjRCBgZcx"},{"params":{"value":[{"type":"paragraph","children":[{"text":"Dashboard Release ","letterSpacing":0,"fontWeight":700,"fontFamily":"Poppins, sans-serif","color":"#ffffff","lineHeight":"90px","fontSize":64}]}]},"children":[],"name":"text","id":"nr3C5FnGCNgZlayR21QHV"},{"children":[],"params":{"value":[{"type":"paragraph","children":[{"children":[{"fontFamily":"Poppins, sans-serif","letterSpacing":0,"text":"January 2025","lineHeight":"unset","color":"#ffffff","fontSize":24,"fontWeight":700}],"type":"paragraph"},{"type":"paragraph","children":[{"fontFamily":"Poppins, sans-serif","letterSpacing":0,"lineHeight":"unset","color":"#ffffff","text":"2025_01","fontSize":16}]}]}]},"name":"text","id":"DmpJb_rO3Qj4l9Aj66HdK"},{"name":"divider","params":{"templateId":"solid long","color":"#ef5693","alignment":"start","fontSize":24,"fontColor":{"light":"#000000","dark":"#ffffff"},"height":1,"borderStyle":"solid"},"children":[],"id":"TAZcq3EgP-1KdJ2bsdXuE"},{"name":"button","params":{"templateId":"regular button","label":"BackUp & Restore ","size":"medium","shape":"circular","alignment":"start","states":{"idle":{"colors":{"background":"#1181F8"}},"hover":{"colors":{}}},"link":{"value":"https://panintelligence.atlassian.net/wiki/spaces/PD/pages/376307765/Backup+and+Restore+of+the+Dashboard","target":"_blank","type":"link"}},"children":[],"id":"hfpGR1FJxGFfePSJR4g7T"},{"name":"button","params":{"templateId":"regular button","label":"   Download Now    ","size":"medium","shape":"circular","alignment":"start","states":{"idle":{"colors":{"background":"#1181F8"}},"hover":{"colors":{}}},"link":{"value":"https://panintelligence.atlassian.net/wiki/spaces/PD/pages/1258652085","target":"_blank","type":"link"}},"children":[],"id":"ImDnaOMj9XpCxaDqyPZPk"}],"params":{"verticalAlignment":"center","borderRadius":{"btl":0,"btr":0,"bbl":0,"bbr":0,"all":0,"isIndividualCorners":false},"padding":0,"gap":20},"name":"column","id":"jm4mo6d7GzYx3hUB4l-F0"},{"name":"column","children":[],"params":{"gap":20,"padding":0,"borderRadius":{"isIndividualCorners":false,"all":0,"bbl":0,"bbr":0,"btr":0,"btl":0},"verticalAlignment":"center"},"id":"yBKq_7TPH5d1DV8hFdhLu"},{"children":[],"name":"column","params":{"gap":20,"padding":0,"verticalAlignment":"center","borderRadius":{"bbl":0,"all":0,"btl":0,"bbr":0,"btr":0,"isIndividualCorners":false}},"id":"fH6MHBuk3I0R4it7BRCGP"},{"children":[],"params":{"verticalAlignment":"center","borderRadius":{"btl":0,"bbl":0,"bbr":0,"isIndividualCorners":false,"all":0,"btr":0},"padding":0,"gap":20},"name":"column","id":"_FPGEp6mQPRJJvPIB6VPD"},{"name":"column","params":{"borderRadius":{"bbr":0,"isIndividualCorners":false,"btl":0,"all":0,"btr":0,"bbl":0},"verticalAlignment":"center","gap":20,"padding":0},"children":[],"id":"mJWfn1yDf0yleGusTvyDV"},{"name":"column","params":{"verticalAlignment":"center","gap":20,"borderRadius":{"bbl":0,"btr":0,"bbr":0,"all":0,"btl":0,"isIndividualCorners":false},"padding":0},"children":[],"id":"3WBEHbIwEeCHcL3oWU6bg"}],"name":"row","params":{"gap":100,"padding":10,"minHeight":200,"borderRadius":0,"layout":[1]},"id":"mbQy4dSTfKlyYK-9k0_SM"}],"id":"AazdKjV1KYMbgvQPAld6a"},{"id":"iPYoTT8UrrUFlXqDlVg1m","params":{"background":"#ffffff","padding":36,"gap":10},"children":[{"id":"HaE0KXsm3rDEJhjTV7Mjx","name":"row","children":[{"id":"VaA-Y-CIV4m2ogQe_Sqmo","name":"column","children":[{"name":"image","params":{"alignment":"center","height":400,"position":"center center","borderRadius":{"all":5,"bbl":0,"bbr":0,"btl":0,"btr":0,"isIndividualCorners":false},"image":{"value":"att1673265190","target":"_blank","type":"attachment"}},"children":[],"id":"T2bXrsdBHviCyZtS2HZvV"}],"params":{"borderRadius":{"all":0,"btl":0,"bbl":0,"btr":0,"bbr":0,"isIndividualCorners":false},"padding":0,"gap":10,"verticalAlignment":"center"}},{"id":"0HIQC86K7mXpaQnPu4lsM","name":"column","children":[{"name":"text","params":{"value":[{"type":"paragraph","children":[{"text":"Ken Miller","letterSpacing":0,"fontWeight":600,"fontSize":28,"color":"#2c2c2c"}],"align":"left"}]},"children":[],"id":"pHAKnX_bCCwJ0kzgKbWXi"},{"name":"text","params":{"value":[{"type":"paragraph","children":[{"text":"CTO ","letterSpacing":0,"color":"#969696","fontWeight":300,"fontSize":18}],"align":"left"}]},"children":[],"id":"l_VOVkhnKQUZUw-ve2Wf0"},{"name":"text","params":{"value":[{"type":"paragraph","children":[{"type":"paragraph","children":[{"lineHeight":"24px","letterSpacing":0,"text":"I'm pleased to share with you our latest dashboard release, which is available to download now - ","fontFamily":"unset","fontSize":16,"color":"#555555"},{"lineHeight":"24px","letterSpacing":0,"fontFamily":"unset","fontSize":16,"fontWeight":700,"text":"pi.2025_01 ","color":"#ef5693"}],"align":"left"},{"type":"paragraph","align":"left","children":[{"lineHeight":"24px","letterSpacing":0,"fontFamily":"unset","fontSize":16,"color":"#555555","text":""}]},{"type":"paragraph","align":"left","children":[{"lineHeight":"24px","letterSpacing":0,"fontFamily":"unset","fontSize":16,"color":"#555555","text":"In this release, we've taken the opportunity to address lots of our little bug fixes, introduced changes on features such as multilingual, exporting improvements and tackled a series of vulnerabilities too."}]},{"type":"paragraph","align":"left","children":[{"lineHeight":"24px","letterSpacing":0,"fontFamily":"unset","fontSize":16,"color":"#555555","text":""}]},{"type":"paragraph","align":"left","children":[{"lineHeight":"24px","letterSpacing":0,"fontFamily":"unset","fontSize":16,"color":"#555555","text":"As always, have a read through the notes in full to learn of all the changes "},{"lineHeight":"24px","letterSpacing":0,"fontFamily":"unset","fontSize":16,"color":"#555555","text":"before","fontWeight":700},{"lineHeight":"24px","letterSpacing":0,"fontFamily":"unset","fontSize":16,"color":"#555555","text":" you upgrade, just to make sure its right for you and your end users."}]}]}]},"children":[],"id":"3yPpnPcG9Ua1cMKx_-oPx"},{"name":"button","params":{"label":"","size":"medium","shape":"circular","alignment":"start","states":{"idle":{"colors":{"background":"#414141","label":"#ffffff"}},"hover":{"colors":{"background":"#000000","label":"#ffffff"}}},"icon":"linkedin-in","link":{"value":"https://www.linkedin.com/in/ken-miller-bb77975/?originalSubdomain=uk","target":"_blank","type":"link"}},"children":[],"id":"YkQiC1UEdSABfAG30yCAE"}],"params":{"borderRadius":{"all":0,"btl":0,"bbl":0,"btr":0,"bbr":0,"isIndividualCorners":false},"padding":0,"gap":10,"verticalAlignment":"center"}},{"id":"zQPv9B1ZIKSgIEL2-TqyZ","name":"column","children":[{"name":"image","params":{"alignment":"center","height":300,"position":"top center","borderRadius":{"all":5,"bbl":0,"bbr":0,"btl":0,"btr":0,"isIndividualCorners":false},"image":{"value":"att1698562062","target":"_blank","type":"attachment"}},"children":[],"id":"HC2565mrpH6QIPWrXG9rq"}],"params":{"borderRadius":{"all":0,"btl":0,"bbl":0,"btr":0,"bbr":0,"isIndividualCorners":false},"padding":0,"gap":10,"verticalAlignment":"center"}},{"id":"uFI2qIqzCdlp4soZcoFKh","name":"column","children":[{"name":"spacer","params":{"space":10},"children":[],"id":"iLlGX7VLo5DPMdB15Nsu8"},{"name":"spacer","params":{"space":10},"children":[],"id":"CEa3nvn4dCUclBcV0LcGx"}],"params":{"borderRadius":{"all":0,"btl":0,"bbl":0,"btr":0,"bbr":0,"isIndividualCorners":false},"padding":0,"gap":10,"verticalAlignment":"center"}},{"id":"6IYCbdH0yACltgbuUqUsV","name":"column","children":[],"params":{"borderRadius":{"all":0,"btl":0,"bbl":0,"btr":0,"bbr":0,"isIndividualCorners":false},"padding":0,"gap":10,"verticalAlignment":"center"}},{"id":"TC07p_TJiJqkld5i-FtRF","name":"column","children":[],"params":{"borderRadius":{"all":0,"btl":0,"bbl":0,"btr":0,"bbr":0,"isIndividualCorners":false},"padding":0,"gap":10,"verticalAlignment":"center"}}],"params":{"layout":[1,1,1,1],"gap":35,"minHeight":200,"padding":10,"borderRadius":0,"size":"full"}}],"name":"section"},{"params":{"background":"#393d4f","gap":10,"padding":0},"name":"section","children":[{"children":[{"name":"column","children":[{"name":"card","children":[{"children":[],"params":{"value":[{"children":[{"color":"#6fceb4","fontFamily":"Montserrat, sans-serif","fontWeight":700,"text":"5","fontSize":54}],"type":"paragraph","align":"center"}]},"name":"text","id":"x8h3JtbaitH4rONaExd2J"},{"children":[],"name":"text","params":{"value":[{"children":[{"text":"New ","fontSize":20,"fontFamily":"Montserrat, sans-serif","color":"#ffffff"}],"type":"paragraph","align":"center"},{"type":"paragraph","align":"center","children":[{"fontSize":20,"fontFamily":"Montserrat, sans-serif","color":"#ffffff","text":"Features"}]}]},"id":"lSiInwGpA8cK6ew5Fkmlz"}],"params":{"padding":20,"gap":10,"borderRadius":{"bbl":0,"bbr":0,"btr":0,"isIndividualCorners":false,"all":0,"btl":0},"hover":"elevate"},"id":"8sGgpAEhoNbWpufDnX9Is"}],"params":{"padding":0,"verticalAlignment":"center","gap":20,"borderRadius":{"all":0,"btr":0,"isIndividualCorners":false,"btl":0,"bbl":0,"bbr":0}},"id":"vxQl8_xUTLUeSdy6Zj667"},{"name":"column","children":[{"name":"card","children":[{"params":{"value":[{"type":"paragraph","children":[{"fontWeight":700,"text":"39","color":"#4bb9d2","fontFamily":"Montserrat, sans-serif","fontSize":54}],"align":"center"}]},"children":[],"name":"text","id":"YCgKCdTm1qwKX5q1EuCdr"},{"params":{"value":[{"align":"center","children":[{"fontSize":20,"color":"#ffffff","fontFamily":"Montserrat, sans-serif","text":"Changes & Maintainance"}],"type":"paragraph"}]},"name":"text","children":[],"id":"BR4va-GpZlAJOp2mwMH-1"}],"params":{"borderRadius":{"bbr":0,"isIndividualCorners":false,"btr":0,"btl":0,"bbl":0,"all":0},"gap":10,"hover":"elevate","padding":20},"id":"18AFcFB160BbE0iQeYr8c"}],"params":{"borderRadius":{"bbl":0,"bbr":0,"isIndividualCorners":false,"all":0,"btr":0,"btl":0},"verticalAlignment":"center","gap":20,"padding":0},"id":"l-GJ3YT3H_VJSsOjq70wP"},{"params":{"gap":20,"borderRadius":{"all":0,"bbr":0,"btr":0,"btl":0,"bbl":0,"isIndividualCorners":false},"verticalAlignment":"center","padding":0},"children":[{"name":"card","params":{"gap":10,"borderRadius":{"bbr":0,"isIndividualCorners":false,"all":0,"bbl":0,"btr":0,"btl":0},"padding":20,"hover":"elevate"},"children":[{"params":{"value":[{"type":"paragraph","align":"center","children":[{"fontWeight":700,"color":"#8871f9","fontSize":54,"text":"3","fontFamily":"Montserrat, sans-serif"}]}]},"name":"text","children":[],"id":"OLpC1-Pgjlm5sO19zrQ39"},{"params":{"value":[{"align":"center","type":"paragraph","children":[{"text":"Schema ","fontSize":20,"color":"#ffffff","fontFamily":"Montserrat, sans-serif"}]},{"align":"center","type":"paragraph","children":[{"fontSize":20,"color":"#ffffff","fontFamily":"Montserrat, sans-serif","text":"Changes"}]}]},"children":[],"name":"text","id":"9mMYPgwoc1O74DZkegvHw"}],"id":"r5axRw3H73kS5E_cIjBvm"}],"name":"column","id":"zXI-oq_sWnVXrhI0dB3so"},{"children":[{"params":{"borderRadius":{"bbl":0,"bbr":0,"btr":0,"btl":0,"all":0,"isIndividualCorners":false},"gap":10,"hover":"elevate","padding":20},"name":"card","children":[{"name":"text","children":[],"params":{"value":[{"children":[{"fontFamily":"Montserrat, sans-serif","text":"2","fontSize":54,"fontWeight":700,"color":"#5098fa"}],"type":"paragraph","align":"center"}]},"id":"7DNl9bkskIgNrLnsUqDjN"},{"name":"text","children":[],"params":{"value":[{"align":"center","type":"paragraph","children":[{"fontSize":20,"color":"#ffffff","fontFamily":"Montserrat, sans-serif","text":"Key"}]},{"align":"center","type":"paragraph","children":[{"fontSize":20,"color":"#ffffff","fontFamily":"Montserrat, sans-serif","text":"Notifications"}]}]},"id":"YLmi5VfiWq6zAkHD5bIWH"}],"id":"OWVeUSdsPsJFgJV2KFu6M"}],"name":"column","params":{"verticalAlignment":"center","gap":20,"borderRadius":{"btl":0,"all":0,"bbr":0,"btr":0,"isIndividualCorners":false,"bbl":0},"padding":0},"id":"3eUuDQUJ_7Wt3H0ogN0gG"},{"params":{"borderRadius":{"all":0,"btl":0,"bbl":0,"isIndividualCorners":false,"btr":0,"bbr":0},"gap":20,"verticalAlignment":"center","padding":0},"name":"column","children":[],"id":"LFnVMjeI8jdrjJ5UCbCpq"},{"params":{"borderRadius":{"bbr":0,"isIndividualCorners":false,"bbl":0,"all":0,"btl":0,"btr":0},"verticalAlignment":"center","gap":20,"padding":0},"name":"column","children":[],"id":"FotJeCTUtI5G5on3410IY"}],"params":{"gap":40,"borderRadius":0,"layout":[1,1,1,1],"minHeight":200,"padding":0},"name":"row","id":"d6_mAzNbYQvSXQvqfrwO7"}],"id":"hBpUSNSybAXZlGhjE3HRg"}]}

Table of Contents
minLevel1
maxLevel6
include
outlinefalse
indent
exclude
typelist
class
printablefalse
  • IMPORTANT NOTIFICATIONS

    • Scheme Changes - this 2025_01 release contains x3 schema changes - seeHEREfor more details

    • Feature Deprecation - the old version of the Excel Export feature is no longer available to revert to, having been able to set this through the OLD_EXCELBETA flag previously. By default, only the New Excel Export feature is now available from this version onwards. See HERE for more information.


NEW FEATURES

Multilingual - Ability To Define The Languages Available & Named Display In The Language Selectors

pi#2653

32809

Multilingual

You can now add a ‘languages.properties’ file into your locale directory to dictate what languages appear in the Language Selectors and under what name they are displayed.

The presence of this file disables the auto-generation of languages from the ‘messages*.properties’ filenames and will not provide 'English' as a default. Languages in this file are defined by simple key/value pairs of the ‘language code’ and the display name separated by an equals sign e.g. to define the language associated with files with the ‘en_GB’ language code in their filename and have it appear as “British” in the Language Selectors I would have the following on its own line within the file: en_GB=British.

Multilingual - Ability To Use Languages Without A Locale

pi#2653

32809

Multilingual

Previously, translation files uploaded through the UI had to include both a language and locale as part of their ‘language code’ e.g. ‘messagesStatic_en_GB.properties' was accepted but the language only version of ‘messagesStatic_en.properties’ would have failed validation.

If not using the 'languages.properties’ file detailed in the release note above, languages defined without the locale will appear in the Language Selectors without the parenthetical locale i.e. “English” rather than “English (United Kingdom)”

Magic Variables - New Date/Period Based Variables Added

pi#2651

31388 & 32934

Magic Variables

The following magic variables relating to Date have been added to the system:

START_OF_NEXT_WEEK
END_OF_NEXT_WEEK
START_OF_NEXT_MONTH
END_OF_NEXT_MONTH
START_OF_LAST_YEAR
END_OF_LAST_YEAR
START_OF_NEXT_YEAR
END_OF_NEXT_YEAR
START_OF_QUARTER
END_OF_QUARTER
START_OF_LAST_QUARTER
END_OF_LAST_QUARTER
START_OF_NEXT_QUARTER
END_OF_NEXT_QUARTER
CURRENT_DAY_SHORT_NUMBER
CURRENT_DAY_WITH_SUFFIX
CURRENT_MONTH_SHORT_NUMBER
CURRENT_WEEKDAY_SHORT_NAME
LAST_MONTH_SHORT_NUMBER
NEXT_YEAR
NEXT_MONTH_YEAR
NEXT_MONTH
NEXT_MONTH_NAME
NEXT_MONTH_SHORT_NAME
NEXT_MONTH_SHORT_NUMBER

The full description of these magic variables can be found HERE

Exporting To PDF - Added Footer For Browser PDF Exports

#2535

-

Exporting To PDF

A footer detailing the ‘generation date’ and ‘pages’ has been added to Browser PDF exports, to maintain consistency with the previous Renderer export.

The formatting of the date can be adjusted with the Global Variable PDF_DATE_FORMAT, whilst the following CSS styles can be used to customise the three footer related classes defined in the Themes > PDF tab (.pi-style__pdf-footer, .pi-style__pdf-footer-date, .pi-style__pdf-footer-pages):

  • background-color: The alpha channel of RGBA values will be ignored

  • color

  • text-align

  • font-size: Only supports ‘px’ values or numeric values with no unit specified

  • font-weight: Only “bold” has any effect

  • font-style: Only “italic” has any effect

  • margin: Only supports ‘px’ values or numeric values with no unit specified. Both specific margins (e.g. margin-right) and ‘margin’ value/array are supported

  • display: Only supports ‘none’ to remove specific parts of the footer (.pi-style__pdf-footer-date, .pi-style__pdf-footer-pages) or the entirety of it if applied to `.pi-style__pdf-footer`

Below is an example of the generated footer with some applied styling as mentioned above:

image-20241206-155407.png

Embedding - Wildcard Support Added For Embed Actions - Trusted Hosts Settings

pi#2865

-

Embedding

Embed actions (used to handle post message front-end actions when embedding) now supports a wildcard '*' in the trusted hosts setting, and will allow a post message from any subdomain if the wildcard is provided.

FEATURE CHANGES

Chart Editor - Ability To Edit In Full Screen Mode

pi#2533

28243

Chart Editor

Previously, you would be unable to edit a chart in full screen view. Now, you can freely edit the chart, and it will return you to full screen view once you have made your changes.

Screenshot from 2024-11-25 10-49-51.png

Exporting To Excel - Switch All Users To New Excel Export Functionality

pi#2697

33680

Exporting To Excel

All users will now be moved across to the new version of the Excel export functionality, this version is significantly improved over the older version.

As part of this work vulnerability CVE-2024-47554 in commons-io library has been removed from the dashboard.

Exporting To Excel - Tables - Excluded Column Snackbar Now Times Out

pi#2635

28990

Exporting To Excel

Previously, you would have to close the snackbar that appears when exporting a table to Excel, when one or more columns was marked as being excluded from export. It now disappears automatically after a few seconds.

Exporting To Excel - Exporting Three Columns & Three Rows On A Rotated Table Made Exports Fail

pi#1541

28835 & 24828

Exporting To Excel

When a Rotatable Table included three columns and three rows of data, when attempting to export this to excel, this would lead to the export failing.

Exporting To PDF - Certain Chart Types Unable To Export

pi#2789

-

Exporting To PDF

Fixed an issue that prevented certain chart types (gauge, flow, treemap) from being successfully exported to PDF format. The issue has been resolved, ensuring all chart types are now exported accurately, matching the visualisations in the UI.

ToolTips - Improved Positioning Of Custom Map Tooltips (Full Screen Mode)

pi#2610

32455

ToolTips

When entering full-screen mode, the custom map will now be completely redrawn to adjust its dimensions, ensuring that tooltips are positioned correctly near the data labels.

ToolTips & Data Labels - Stacked Bar Charts - Totals & Percentages Were Omitting Negative Values

pi#2716

29704

Tooltips & Data Labels

Previously, data labels and tooltips on stacked bar charts would omit negative values from the total value for each bar, which would also affect the percentages displayed for each bar segment. Now, the positive values minus the negative values is used for the total, and percentages for each segment are taken as a percentage of this new total.

Screenshot from 2024-11-26 14-11-26.png

A handful of additional fixes have been made off the back of a series of smaller bugs revealed due to this implementation;

  1. Ensure that ‘NaN%’ does not show when you click on Legend items on Bar Charts and/or Stacked Bar Charts

  2. The percentage labels on the bars within 100% Stacked Bar Charts, are treated similarly to individual pie charts i.e. the percentage of a bar always adds up to 100% - regardless of if the chart consists of 1 dimension and 1 measure, multiple dimensions, or multiple measure,

  3. Negative values are suppressed from data labels and tooltips on 100% Stacked Bar Charts - including regular and percentage data labels

  4. Any of the following charts that have negative values within the measures display a ‘suppressed negatives’ warning indicator on the top left of the chart:

    1. Bar, Stacked Bar, 100% Stacked Bar, Pie, Doughnut, Variable Pie, Variable Doughnut, Sunburst, Doughnut Sunburst, Treemap, Funnel & Pyramid

  5. If only negative values appear on a bar within a regular Bar Chart or Stacked Bar Chart, the percentage values are positive (i.e. the grand total is -30, and a segment is -15, this is 50% - NOT -50%)

Data Labels - Improved Alignment Of Multi-Line X-Axis Labels - Centred Against The Data Point

pi#2814

33153

Data Labels / X Axis

Previously, certain chart sizes would result in multi-line x-axis labels that no longer properly matched the position of their data point. They would appear left-aligned with respect to the axis space reserved for that data point rather than central to it. This positional discrepancy looked particularly bad after zooming. The labels are now properly centrally aligned.

Before:

2814-before.png

After:

2814-after.png

Configuration Tool - New Configuration Tool Directory

configurationt-tool#134

29815

Configuration Tool

To ensure the app launches successfully across all Windows environments, we have modified the build configuration to output the configuration-tool-GUI as an unpackaged directory containing all its files. A new directory named configuration-tool has been created to house both the configuration-tool-GUI and configuration-tool command-line executables, along with all relevant files. The GUI will now launch directly from the configuration-tool directory.

Configuration Tool - Minimum Spare Threads Changes Not Being Upheld Through The GUI

configuration-tool#136

-

Configuration Tool

Previously, changes made to the Advanced Setting ‘Minimum Spare Threads’ through the configuration tool were not being upheld.

Scheduler - Allow The Scheduler To Use New Browser Export Functionality (Single Chart Exports)

pi#2534, pi#2573 & pi#2574

-

Scheduler

The Scheduler service will now utilise the new browser export functionality to generate charts were supported. This relates to PDF, Word and PowerPoint single chart exports.

Scheduler - Encrypted Schedules Failing To Send (Docker)

pi#2810

32130

Scheduler

7-Zip is used to encrypt Schedules that included a password, but was missing from the Scheduler Docker image - which led to the inability to use this feature. Whilst manual workaround were available for this, these are no longer needed.

Scheduler - Modified Schedules With Role Links Failing To Import Due To Unique Constraint

migrations#62

-

Scheduler

It was possible for an import that updates an existing Schedule, that has Roles associated, to fail with a message related to a unique constraint.

Zooming - Y Axis Zooming - On Merged Charts

pi#2803

30898

Zooming / Merged Charts

Previously, when you tried to zoom in on a Merged Chart, with the Y axis zoom feature enabled and then reset the zoom state, the tick intervals on the Y axis would be different from what they were when the chart was in its initial state. The original tick intervals are now retained once you have reset the zoom state.

Zooming - Reset Zoom Button Overlapping Data In Charts

pi#2805

33155

Zooming / Chart Display

In certain scenarios, the ‘Reset Zoom’ button would overlap chart content when zooming in. Additional space has been added to the top of the chart container when zooming in, allowing the zoom button to appear outside the chart body. When zooming out, the space reverts to its original state.

Tables - Decimal Places Attribute Not Working On Tables On 0 (Zero) Values

pi#2695

33190

Tables

When setting the decimal places of a measure for a table which contains a 0 value (within the chart attributes), the decimal places would not apply and the 0 values would fall back to using the decimal places defined in the object definition. The decimal places defined in the chart attributes will now take precedence, and apply to 0 values correctly.

Tables - CrossTab Headings - Prefix/Suffix Incorrectly Being Applied To Measure Headings

pi#2808 & pi#1369

31550, 33844, 32481, 31550 & 22008

Tables

Measures in Crosstab tables (tables with a Header defined) would have their Data Object/Attribute formatting applied (e.g. a prefix) to not only their data values but also their respective headers. This formatting only applies to the Header defined in the Chart Configuration as those headers are now generated from the data values of that object.

Observability - Docker Healthcheck - Default Dashboard Healthcheck Changed To A Single Ping

pi#2655

-

Observability / Docker

The healthcheck script that runs on Docker would ping both ‘/version’ and ‘/pi’ to ascertain the health of the container. The '/pi' ping was causing a repeated WARN log message to be produced, which has been removed. The ‘/version’ ping has been changed to include a --max-wait of 5s and hit the ‘/health’ endpoint instead.

Observability - Collect Migration Errors & Log Them At The End

#60

-

Observability / Logging

When performing migration processing, should SQL failures be encountered, these are now added to the end of logs to aid the triage process.

Logging - Remove Catalina WARNING Logs On Startup

pi#2816

29963

Logging / Tomcat

When starting up the Dashboard the catalina{date}.log file would show some warnings messages, related to attempting to set ‘maximumSpareThreads’ and ‘proxyName’. These messages will no longer appear.

Logging - Enhanced Logging Feedback On Editable Table Feature

pi#2793

Logging / Editable Tables

Logging around the Editable Tables feature have been improved to assist with debugging of issue, with the full outbound request details along with success and failure details now being captured.

Logging - Errors Appearing In Console When Zooming On A Map With Null Values

pi#2811 & pi#2846

32903

Logging / Maps

Maps with null values would display errors in the console when zooming in and out. Furthermore, maps with legends with null values would not render at all, which has also been addressed.

Multilingual - Subtotal Labels Not Being Translated

pi#2821

34224

Multilingual

Subtotal labels were previously not being translated.

Multilingual - Data Elements Staying With The Old Language After Changing The Language In The GUI

pi#2828

29637

Multilingual

When selecting a new language in the GUI, not all translations were being performed, specifically around where [[VARIABLES]] were being used in queries. When the language is now changed through the GUI, the category/page will be refreshed to ensure all aspects of the charts are translated using the newly selected language.

Multilingual - New Config Items Labels Not Respecting Translated Language Until Save Performed

pi#2762

34016

Multilingual

During the process of creating a new Category, User, Role, Data Connection, Theme, API, Organisation, Report or Schedule, the new item would be described as 'No Title' (see the image below) until it was saved. The software now respects the language in use without the need to save it first.

image-20250203-172316.png

Category Objects - The Model Popup Category Object Was Unable To Be Resized

pi#2827

33571 & 34300

Category Objects

When both the Category List Panel and Category Object Panel were pinned, it was possible for the Category Object Selection popup (model) to be partially obscured by the Category List panel.

Category Objects - Drop Down Data Out Of Sync

pi#2807

34411

Category Objects

Drop down data in Category Object filters could become out of sync if a user removes a preceding temporary category object filter value.

Magic Variables - Financial Year - Start Calculation

pi#2649

34769

Magic Variables

The start of the financial year was incorrectly calculated when the currentMonth was earlier than the START_OF_FINANCIAL_YEAR_MONTH. The logic has been updated to ensure that in such cases, the start of the financial year is correctly determined as belonging to the previous calendar year. This change applies to both the financial environment variables and the values in the ‘Financial’ tab in the category objects date range panel.

Linux - Issues With Tomcat Base Directory When Running Linux Dashboard Through Systemd

pi#2855

34380

Linux / Tomcat

Due to changes introduced in the November 24, related to how we initialise JDBC drivers in a more isolated way, an incorrect Tomcat base directory was being used for jdbc_drivers when using systemd. Similar issues were discovered due to this issue, related to the dynamic drivers functionality and the location of the ‘out.{date}.log’ file (rotating Dashboard log file). Both issues have been addressed.

Data Connections - Exporting - Missing Categories & Charts

deployment#116 & pi#2791

34273 & 34965

Data Connections - Exporting

The API request for exporting a data connection now includes the associated Categories & ChartsWhen making an API call to the get_exportImportConnection endpoint, the includeAllRelatedChartsAndCategories value was not defaulting to true or being respected, which resulted in Categories and Charts not working.

Data Connections (Linked) - Need For Parent Connection Access When Using A Child Connection

pi#2786

34137

Data Connections - Linked

Previously, Users not only had to have User Access in Org2 to link to Category2, they also needed to subscribe to Org1, and have User Access in Org1 to link to Category1. Now Users only needs to have User Access in Org2 to link to Category2, and subscribes to Org1. They no longer need to be linked to Category1 via User Access.

Code Block
This shows the structure of configuration in order for User to Edit Chart2

Org1 - Category1 - ParentOrgConn             <--- user subscribes to Org1 as a viewer without any permission
 ^               ^
 |               |
Org2 - Category2 - ChildOrgConn <-- Chart2   <--- [user is here in Org2]

This provides the ability to hide ParentOrgConn from this User. Because if User has access to Category1, they can use ParentOrgConn, or an admin can edit ParentOrgConn. We don’t want to give people access to ParentOrgConn any time we want to give them ChildOrgConn.

Data Connections (Linked) - Parent Connection Details Variable Replacement Failing

pi#2888

35123

Data Connections - Linked

When the parent connection had variables, they were not correctly being replaced. For example, where the connection is in Org1, and User has an Org1 subscription, the system now uses the Org1 subscription’s variables to replace the connection variables.

API

Embedding -

Call To Return Exported Data Connection Returning Categories & Charts Not Working

deployment#116

34273

API

When making an API call to the get_exportImportConnection endpoint, the includeAllRelatedChartsAndCategories value was not defaulting to true or being respected, which resulted in Categories and Charts not working.

Unable To Use Post Message With New Category Objects (Category Embedding)

pi#2859

34816

Embedding

The Category Panel would not open when attempting to use post messages under the following embedding scenario;

  • New Category Objects feature is enabled

  • Embedded Category modes 1, 2 or 3 defined

  • The embedded category has a category object, however the panel is unpinned

MAINTENANCE

Vulnerability - CVE-2024-47535 - Denial Of Service Attack On Windows App (Netty)

pi#2745

33940

Vulnerability / Library Upgrade

Updated Netty framework from version 4.1.100 to 4.1.115

Vulnerability - CVE-2024-56337 & CVE-2024-50379 (Tomcat)

pi#2835, pi#2837 & pi#2838

34751, 34753, 34784 & 34785

Vulnerability / Library Upgrade

Minor Tomcat upgraded from 9.0.97 to 9.0.98 and the useCanonCaches Tomcat property explicitly set to false - resolves CVE-2024-56337 & CVE-2024-50379.

Vulnerability - CVE-2024-29025 - Allocation of Resources Without Limits or Throttling (Lettuce)

pi#2389

30738

Vulnerability / Library Upgrade

Updated the Lettuce library from version 6.1.10 to 6.5.1.

Vulnerability - CVE-2024-45337 - ServerConfig.PublicKeyCallback Authorization Bypass (Crypto & Net)

scheduler#94

34466

Vulnerability / Library Upgrade

Updated the Crypto and Net packages to the most recent versions. This addressed vulnerabilities around the Scheduler and Excel Reader modules.

Vulnerability - CVE-2024-43382 - Incorrect Security Setting (Snowflake JDBC)

pi#2720

33846

Vulnerability / JDBC Driver

Updated the Snowflake JDBC driver from version 3.14.1 to 3.20.0 (latest).

Library Upgrade - 7 Zip

scheduler#93

-

Library Upgrade

Updated the 7 zip library from version 23.01 to 24.09. This library is used for encryption within the Scheduler.


SCHEMA CHANGES

 

Description

Columns / Items

GitLab

ZenDesk

Index Added

mis_audits.audit_date_time and mis_audits.user_code

migrations#62

31663

Foreign Key Added

between pi_schedule_user_links.schedule_id and pi_schedules.id

migrations#62

31663

Unique Constraint Added

on pi_schedule_user_link between user_id and schedule_id

migrations#62

31663