January 2024 - Dashboard Release Notes

 

January 24

Release Name

Release Date

Description

Release Name

Release Date

Description

pi.2024_01

Jan 31, 2024

Initial Release

 

We have several ways that you can get hold of the latest release - see our Download Options page for more details.

Before upgrading, we always recommend that you review ALL release notes, from the version you are considering upgrading from and to. This is essential should there be a material change that could impact you or your customers. We always advise that you take a backup of your repository before beginning an upgrade, and recommend testing out the new software on a test environment first.


Windows Installs - Multilingual Users - prior to performing an update, ensure that your existing 'available-languages' is backed up, as the existing file will be overwritten by the upgrade process


We are pleased to present our latest offering of pi - our January 24 product release! This page helps summarise the areas of the dashboard we have Added, Changed, or Fixed meaning you can make a quick and informed decision on when to upgrade to the latest release.


Product Release

Added

 

New Chart Type - Drill to API (Beta Release)

#2071

28060

Chart Types

We now have a new chart type called Drill to API. This allows you to issue an api request when a user drills and have the response handled. While in Beta only some options are available, others will be added in an upcoming release. See HERE for more information.

image-20240110-081026.png

 

Export filenames - Now defaults to be the Chart Name

#1752, #2086

25470

Chart Exports

Previously, when exporting a file it would default to using the Chart Name - the name it is saved under - but would use the Chart Title set in the Chart’s Attributes section if one had been set. Now, it always uses the Chart Name. The part of the filename derived from the Chart Name is also truncated at 100 characters.

 

Ability to change Language whilst logged in

pi#2087

27412, 26596

Languages

We have added “Change language” option to the ‘More Options’ menu in the top right. This will open a modal that allows you to change the Language of the Dashboard. It will also update any language related magic variables such as ‘LANGUAGE’.

 

New EndPoint - /pi/health

pi#2045

24568

Monitoring

Added a new endpoint /pi/health to the dashboard which returns the dashboard’s status as ‘up’ and some information regarding the licence and memory usage for system administrators.

You have to add a system admin token of at least 15 characters into the config tool under security or a new environment variable called PI_SYSTEM_ADMIN_TOKEN under the dashboard in docker.

You provide this as an authorization bearer token header when attempting to access the /pi/health endpoint to be able to access the licence and memory information.

 

Added ClickHouse JDBC driver and Data Connection Driver Type

pi#1986

23178

Data Connections / Drivers

There is now a ClickHouse option available in the Data Connections. ClickHouse Data Source Type connections will be made using the ‘clickhouse-jdbc-0.5.0-all.jar’ that is now shipped alongside other JDBC drivers (tomcat/jdbc_drivers)

 

Theme Styling - Options to style login panel error messages

pi#2125

27154

Themes

Two new options have been added under the ‘Login’ tab to the classes available for Theme level styling. These new options are shown below with the one on the right relating to failed validation in the input fields (e.g. not entering a Username) and the one on the left being error messages that the Dashboard raises after the fields have been validated (e.g. attempting to login with an unknown username)

There have also been a couple of style improvements to this section with the class name now being able to span the entire ‘block’ and all of the properties being indented as opposed to just the first one.

 

Added user IP address to MIS_AUDITS table

pi#1998

23329

Audit

Added a column to the MIS_AUDITS table to track the user’s IP address. The correct address will even be picked up behind a reverse proxy or load balancer using the X-Forwarded-For or X-Real-IP header (in that order of priority) provided that they have been set in the reverse proxy / load balancer config.

 

Add extra auditing for admin actions, when using external API

pi#2184

27122

Auditing

Added extra auditing for the following admin actions when using the external API : adding category to user, removing category from user, adding category to role, removing category from role, adding role to user, removing role from user, adding/updating/removing user variables, adding/updating/removing role variables, adding/updating/removing user restrictions, adding/updating/removing role restrictions, adding/updating/removing global variables, making changes to security settings, making changes to server settings.

 

Gold.sql Repository update

migrations-jar#27

-

Migrations

gold.sql for Dashboard Repository has been brought up to date to include new database changes. A new view v_precanneddates that deals with date formatting has also been added.

These changes will only be available for the fresh dashboard installations.

 

Additional translation fields - messagesStatic.properties file

pi#2177

25175

Multilingual

Additional messages have been added to localisation (messagesStatic.properties file) , covering different areas of the dashboard, including user access, category access, reporting and scheduling screen, data connections editor and more.

data.connection.connection.tab.label=Connection
data.connection.data.tab.label=Data
data.connection.organise.tab.label=Organise
data.connection.excel.tab.label=Excel
default.term.clear.filters=Clear Filters
data.connection.columns.filter.panel.help.label=Diagram Filters:
data.connection.columns.filter.title=Filters for the table relationship diagram
data.connection.columns.show.related.tables.title=Show Related Tables
data.connection.data.table.generation.from.schema.label=Select from Schema
data.connection.data.table.generation.manual.label=Manual Creation
data.connection.data.table.generation.from.schema.expand.label=Expand schemas for available tables
data.connection.data.table.generation.from.schema.filter.label=Filter available table names ...
data.connection.status.is.valid.label=Connection is valid
data.connection.status.is.invalid.label=Connection is invalid
data.connection.status.is.unknown.label=Connection status is unknown
data.connection.export.button.label=Export data source
data.connection.column.select.value.label=Select Value
data.connection.import.show.object.list.label=Show Object List
data.connection.import.add.table.label=Add Table
data.connection.open.button.label=Open data source item
data.connection.column.style.value=Value
data.connection.column.style.colour=Colour
data.connection.column.style.add.item=Add item
data.connection.column.style.value.not.present=The value is not present
data.connection.column.panel.header.name=Name
data.connection.column.panel.header.object.type=Object Type
data.connection.column.panel.header.data.type=Data Type
data.connection.column.panel.header.cumulation=Cumulation
data.connection.add.column.button.title=Add column
data.connection.table.column.total.label=This table has {0} columns in total
data.connection.sample.data.out.of.date.label=Data out of date. Refresh to update
data.connection.sample.data.refresh.data.label=Refresh sample data
data.connection.sample.data.rotate.button.title=Rotate sample data
data.connection.organising.column.move.to.folder.label={0} needs to be moved into a folder. Otherwise it's not available to be used
data.connection.table.join.refresh.button.title=Refresh
data.connection.table.join.clear.selection.button.label=Clear Selected
data.connection.table.join.append.button.label=Append to SQL
data.connection.table.join.test.join.sql.button.title=Test join SQL
data.connection.table.join.sample.data.load.result.label=Result
data.connection.table.join.sql.field.label=Join SQL
data.connection.table.joined.table.label=Joined Table
data.connection.table.join.type.label=Join Type:
data.connection.table.join.add.button.title=Add table join
data.connection.sample.data.peek.background.button.title=Peek the background
data.connection.sample.data.display.button.title=Display sample data
data.connection.table.hide.button.title=Hide Table
data.connection.sample.data.sql.label=Sample Data SQL
data.connection.organising.more.options.label=More Options
data.connection.organising.search.items.label=Type to search items to move
data.connection.organising.more.options.rename.label=Rename
data.connection.organising.more.options.rename.folder.title=Rename this folder
data.connection.organising.more.options.new.parent.folder.label=New parent folder
data.connection.organising.more.options.new.parent.folder.title=Create a new parent folder
data.connection.organising.more.options.delete.label=Delete
data.connection.organising.more.options.delete.title=Remove this empty folder
data.connection.organising.more.options.select.same.level.items.label=Select same level items
data.connection.organising.more.options.deselect.same.level.items.label=Deselect same level items
data.connection.organising.more.options.new.sub.folder.label
data.connection.organising.more.options.new.sub.folder.title
data.connection.organising.more.options.select.direct.children.label=Select direct children
data.connection.organising.more.options.deselect.direct.children.label=Deselect direct children
data.connection.organising.move.label=Move
data.connection.organising.move.title=Move into this folder
data.connection.organising.instruction.or.label=Or
data.connection.table.details.tab.label=Details
data.connection.table.objects.tab.label=Objects
data.connection.sample.data.data.tab.label=Data
data.connection.sample.data.sql.tab.label=SQL
data.connection.sample.data.sql.tab.label
data.connection.column.panel.details.tab.label=Details
data.connection.column.panel.colours.tab.label=Colours
chart.temp.filter.edit.filter.tab.label=Edit Filters
chart.temp.filter.save.filter.tab.label=Save Filters
excel.reader.add.button.label=Add
excel.reader.config.title=Excel Files
default.button.close.label=Close
user.access.panel.manage.by.label=Manage by:
user.access.panel.manage.by.category.label=Category
user.access.panel.manage.by.role.label=Role
user.access.panel.manage.by.user.label=User
user.access.panel.manage.by.category.title=Manage by Category
user.access.panel.manage.by.role.title=Manage by Role
user.access.panel.manage.by.user.title=Manage by User
user.access.filter.user.permission.placeholder=Type to Filter Permission
user.access.filter.category.name.placeholder=Type to Filter Category Name
category.access.panel.child.categories.label=Child Categories
category.access.panel.charts.label=Charts
category.access.panel.data.connections.label=Data Connections
category.access.panel.data.objects.label=Objects
category.access.panel.reports.label=Reports
category.access.panel.schedules.label=Schedules
category.access.type.chart.name=Type Chart Name
category.access.type.data.connection.name=Type Data Connection Name
category.access.type.object.name=Type Object Name
category.access.type.report.name=Type Report Name
category.access.type.schedule.name=Type Schedule Name
category.access.to.move.button.label=To Move
category.access.to.delete.button.label=To Delete
category.access.cancel.button.label=Cancel
user.editor.user.privileges.select.all.label=All
user.editor.user.privileges.select.none.label=None
user.editor.user.privileges.select.all.title=Select all and their related permissions
user.editor.user.privileges.select.none.title=Select none and remove their related permissions
reporting.screen.designer.panel.reports.tab.label=Reports
reporting.screen.designer.panel.schedules.tab.label=Schedules
reporting.screen.designer.panel.monitoring.tab.label=Monitoring
schedule.panel.status.waiting.label=Waiting
schedule.panel.status.active.label=Active
schedule.panel.status.cancel.label=Cancel
schedule.panel.status.complete.label=Complete
schedule.panel.status.failed.label=Failed
default.value.is.required=This value is required.

 

HTML Allowed List - new elements and attributes added - including ‘mailto’ and ‘tel’ URL protocols

1922

27655, 28478, 26408

HTML Sanitisation

A summary of the main changes can be found below but for a comprehensive guide to what is currently permitted please view the updated documentation page regarding Allowed HTML Tags:

  • The ‘mailto’ and ‘tel’ URL protocols have been allowed

  • The ‘title’ and ‘aria-label’ attributes have been added and can be applied globally

  • The ‘class’ attribute is no longer restricted to specific elements and can be globally applied

  • Many table related elements and attributes have been added to the allowed

 


 

Changed

pi#1703

27230

Reverse Proxy

Improvement have been made to resolve the dashboard URL when behind a reverse proxy. We made changes of how we resolve the host, protocol and port for the dashboard URL to ensure the consistency when using different dashboard components and authentication methods.

 

3rd Party Library - Tomcat Upgraded to 8.5.97

pi#2162

29000

Library

In response to recently publicised Tomcat vulnerabilities we have upgraded Tomcat to 8.5.97.

 

Super Admin User - no longer possible to set an expiry date

pi#2168

25558

User Access

Previously it was possible to set an expiry date on the user admin despite it not being possible to disable them. It is now no longer possible to do this as the super admin shouldn’t be disabled.

The system will also now force the super admin to be enabled and have no expiration date when editing users through the API. This ensures the super admin is always enabled.

 

Exporting Charts - export buttons is disabled while export requests are in progress

pi#2052

-

Chart Exports

Now, when exporting a chart, all of the export buttons will become temporarily disabled until the export is complete. This is to stop people from repeatedly selecting the export buttons, causing the Renderer service to take on more processing requests/load.

 

Multipicker ‘Select All’ button visible when long object name are used

pi#2180

24327

Category Object / Filters

Previously you could not always see the ‘select all’ button on Category Object/Filter multipickers, if the Object name was long.

 


 

Fixed

 

Headers & Footers on Reports - Sizing and Positioning Improvements

pi#2224

29267, 29262, 29609

Reports

Report headers and footers displayed page numbers and text etc in incorrect positions, with unexpected sizing. This was introduced as a consiquence of a recent security upgrade in the October 2023 release. The positioning and sizing now replicates the information as it did prior to the security fix being introduced.

 

Excel Exports - Special characters displayed encoded for Chart Title and Subtitle

pi#2150

-

Excel Export

Special characters are no longer encoded for the exported file name, chart title and subtitle when exporting tables in Excel.

 

Error showing in the ‘edit SQL’ tab when the chart is broken

pi#1230

20973

Chart Editor

An error message was thrown in the ‘edit SQL’ tab (within the Chart Editor) when 'Edit SQL to build the chart or table' was clicked to display the SQL. A user who has the relevant ‘Can Edit Chart SQL’ permissions is now able to view and amend the SQL even when the chart is in a broken state.

 

Spelling of ‘Colour’ being spelt as ‘Color’

#1344

21699

UI

A few places in the Dashboard used the American English spelling for colour, which have been updated

 

Version Information - for Excel Reader, Renderer, Scheduler and PiPredict returned correctly

#1882

26804

Excel Reader, Renderer, Scheduler and PiPredict

Previously when going to the ‘/version’ endpoint for the Excel Reader, Renderer, Scheduler and PiPredict modules (e.g. http://localhost:9915/version ) the version returned did not correspond correctly with the version of the dashboard in use.

 

User Accounts Containing an Apostrophes - issues with Categories loading

#2148

28748

User Account Creation

Previously when you created a user with an apostrophe in their username, it would lead to issues with categories loading when the user logged in. This has been fixed so that categories that the user has access to load as expected.

 

Disabled users were being redirected to change their password when logging in

#2165

25276

User Access

Previously when you tried to log in a disabled user it would redirect you to the “change password” screen. Now, an error message is displayed stating that the user has been disabled and the user is not able to log in.

 

Expired users were not being automatically disabled

#2169

25554

User Access

Previously, the dashboard was not disabling users when they reached their expiry date. This has now been resolved so users that reach their expiry date are automatically disabled and will receive an error message saying so when they attempt to log in.

 

Unable to use Tomcat HTTPS

config-tool#125

-

Tomcat

Updated the list of ciphers used by Tomcat server in order to fix the issue of not being able to use Tomcat HTTPS.

 

Sanitised CSS entries not being removed from the theme.css file

#1832, #1920

27070

Themes

Theme CSS properties that were removed due to sanitisation are no longer saved to the corresponding theme.css file

 

Schedules - Only admin users can preview and select themselves for schedule

#2024

26602

Scheduler

Fixed an issue when only the admin user was able to see themselves in the user recipients list when scheduling. Now, providing the user has the 'Can be Email Recipient' permission either from User Permission or Role Permission, the user will see themselves in the recipients list and will be able to send emails to themselves.

 

#2167

25910

Chart Links

Previously, if the chart was used in the chart link and if its name was updated, the changes to the name were not reflected in the chart links.

The same applies to the changes made to the names of the categories that are used for the category links. All related category links will be updated with the category name if changed.

 

Linux path containing spaces or brackets, preventing the Dashboard from starting

mariadb#3

-

Linux Scripts

Linux paths that contains spaces and/or brackets no longer lead to script failures and the Dashboard failing to start.

 

Incorrect status message for UUID licences in the Configuration Tool GUI

Config-Tool#131

23935

Configuration Tool / UUID Licence

Previously when adding a UUID licence in the configuration tool GUI, the GUI would show a status message declaring that the licence was either not there or invalid. This will now state that there is a UUID licence file present.

 

Dashboard failing to start when an inaccessible directory is present in the Themes folder

#530

15738

Themes,

Startup

Previously, the Dashboard would fail to start if there was a directory in the ‘Themes’ folder that the Dashboard installation user did not have permission to read/write - for example, a ‘lost+found’ directory that had been created as part of a filesystem corruption check. Now, these directories are ignored and the Dashboard starts up as expected.

 

Additional Data Colour Rules being removed when adding or removing other Data Objects

#2181

25825

Colours

Previously, if you had set a Colour Rule for an Additional Data Object and then added/removed a different Data Object that Colour Rule would have been lost. Now, adding/removing Data Objects other than the one in question won’t affect the Colour Rule.

 

Colour Rules - Trailing decimal zeroes leading to unexpected chart colouring

#2000

27509

Colour Rules

Resolved an issue where comparisons between data values and user defined Colour Rules for Charts would fail to show measures as equal, if there was a trailing zero in the Colour Rule decimal e.g. 2.50 and 2.5 would not be considered equal.

 

Colour Rules - attempting to use custom Decimal Separators would fail

#2000

27509

Colour Rules

Previously, entering a decimal value for a Colour Rule using a Decimal Separator other than “.” would cause the colour comparison to fail. Now, providing the Decimal Separator you are trying to use is the one defined in the corresponding Data Object the comparison will work as expected.

 

Data Connections verification - showing incorrect status

#1875

27064

Data Connection

Previously, Data Connections could appear valid through the introspection tool despite the current configuration leading to no connection being established. Now, unless a valid connection is able to be established the Data Connection will not appear as valid.

 

Data Connections Editor - becoming unresponsive when certain Data Connections were saved with invalid details

#1876

27063

Data Connections

Previously, certain Data Connections such as Athena would, when saved with incorrect details, lead to the Data Connection Editor becoming unresponsive. This was due to it incorrectly validating the connection as active and therefore timing out waiting for the data.

 

Clicking Warning symbol shows the Chart Info panel, not the Notifications panel

#1341

21732

Chart Editor

If the chart displays the Warning icon (as per the screenshot below), once clicked, the notifications panel will pop up listing the warnings and alerts associated with this chart. Previously, it displayed the chart info tab by default.

 

Editing Users - Performance issues for editing users when there are many users in the system

pi#2179

29076

User Maintainance

When the system has thousands of users, it can taken longer than expected to open a user when editing of attempting to save. This occurred as there is a permission check to make sure the logged in user is allowed to do so.

The logic has been improved so that it is more performant when it processes such requests. This improves the UI and the API call to save users.

 

Performance issues for refreshing the dashboard and logging in

pi#2164

23836
28801
27109
23616

Logging in

Resolved performance issues for refreshing the dashboard and logging in. This is done by removing unnecessary requests to resolve default category filters for the first category, which was used as a redirect target when the URL is incorrect. This has now been changed to request the data on demand.

Excel Reader - does not work when you use messagesStatic.properties file Variable Replacement in the Data Connection

pi#2188

22975

Excel Reader

Previously, when using variable replacement for the user and password for the data connection, the Excel Reader service would not function as the variables were not replaced. This has been resolved and the correct variable values will be picked up as long as the correct syntax is used i.e. [[USER]].

 

Fonts - some fonts not appearing thin/faded

pi#2186

29111

Fonts

Previously, when using the Montserrat, Catamaran, Josefin Sans, Red Hat Text, Red Hat Display and Source Code Pro fonts as part of the dashboard, the text would appear very thin and faded. This was due to an issue with the hosted files for the font. This has now been corrected and the fonts will appear correctly.

 

Parent Chart always displaying its ‘reset button’ even when there is nothing to reset

pi#1374

22014

Parent Charts

Previously, even if there was no filter active from a Parent Chart, it would show the ‘reset button’ on the bottom left of the chart. This button will now only appears when a filter originating from the Parent Chart has been applied.

 

Language - the Português option in the default ‘Available Languages’ list sometimes being displayed as Português

pi#1991

27390

Multilingual

The available-languages.properties file is ISO-8859-1encoded, so extended characters like ê could have issues retaining their UTF-8 presentation. Now, the file has been updated to use the Unicode escape sequence equivalent of \u00EA instead which will not get re-encoded and displays consistently as expected.

 

Drill To Category - the dashboard hangs when Drilling to a Category from a Full Screen chart

pi#2174

27755

Drill to Category

Drilling to a Category (from a Full Screen chart) would cause the Dashboard to appear to hang as the ‘Drilled From Chart’ would remain on the screen along with the loading icon until the chart was manually closed.

 

Themes - can delete themes allocated to users

pi#2191

27184

Themes

Previously, you were allowed to deleted themes that were allocated to users. Now, the dashboard blocks you from doing so. It also returns an error if you attempt to do so through the API. You must first un-assign that theme from that user.

 

Anonymous Charts - opening an anonymous chart in the same session causes the chart editor to stop working

pi#1282

21304

Anonymous Charts

Previously, if you were to open an anonymous chart in the same browser session as your main dashboard, it would cause all of charts within the main dashboard to be treated as anonymous charts, removing the ability to edit them. Now, opening an anonymous chart no longer causes the charts in the dashboard to become un-editable.

 

The logout redirect page should display readable text

#1813

27010, 26557

Logout, Themes

Previously, when logging out, the page prompting you to log back in would display un-readable text depending on the background colour & theme. Now, the ‘log back in’ text is readable and has a button and background, configurable by the same CSS classes as that within the login screen in the themes.

 

Report PDFs generating extra blank page

renderer#102

29421, 29520

Renderer, Reports

In a recent upgrade, a bug was introduced where PDF reports were generating an extra blank page at the end. This has been resolved the report PDFs are now of the correct length.

 


Schema Changes

 

No changes to report

 


Known Issues

 

Windows Installs - Multilingual Users - Pre Upgrade ‘available-languages’ file

Prior to performing an update, ensure that your existing 'available-languages' is backed up, as the existing file will be overwritten by the upgrade process