Changelog
5.2.9
2025-05-28
5.2.9
Added
- UI-9245 Move menu item on calculated measure nodes in the Data model, allowing to quickly change their folder.
Fixed
- UI-9589 "Duplicate axis specification: ROWS" error when using the ids of axis (i.e. 0, 1) instead of their names (COLUMNS, ROWS) in mdx queries and adding a new hierarchy in the Fields tab.
- UI-10112 The command
atoti-ui-cli build-extension
unexpectedly throws an "InvalidExtensionPackageJsonError: Invalidpackage.json
file of extension@foo/bar
." error in some cases where it should not. - UI-9578 Using axis ids instead of axis names when writing custom MDX in the Query tab yields unexpected fields in the widget.
- UI-10126 In the popover to edit
mdx.measureAliases
in the Query context tab, there is unexpectedly no input to choose the measure to alias. - UI-10185
No user found. Did you forget to provide it with <UserProvider />?
error when running the application in development mode using the commandatoti-ui-cli start-application
and when an extension takes more than 10 seconds to start. - UI-10178 Unexpected The filter is not applied to the selected widget because hierarchy does not exist in cube warning when adding a filter to a widget before adding anything to its rows or columns.
- UI-9853 When changing the date format on a chart in the Style tab, the order on the time axis is sometimes unexpectedly reversed.
- UI-9853 Sorting the time axis of a chart breaks its scaling.
- UI-9853 Dates are sometimes unexpectedly displayed as numbers on charts, depending on their formatting defined on the server-side.
To benefit from this fix, the member names of your time level must be formatted as
ISO-8601
. - UI-9354 When a widget is sorted on a measure, removing a measure fails to remove the sort from the MDX query.
5.2.8
2025-04-30
Added
- UI-8680 Ability to pin default filters.
- UI-9245 Ability to save calculated measures in folders.
- UI-10161 Named sets are draggable in the Data model and the Fields tab.
- UI-9989 Support for MDX font flags in the KPI widget.
- UI-8849 Support for context menus on the Tree map widget. In particular, it is possible to use the Drillthrough menu item from the treemap.
- UI-8721 Auto-completion support for named sets in the Query tab.
- UI-9881 Ability to create previous/next year/quarter/month/week/day filters.
Changed
- UI-10122 Default selection mode to single when creating a filter on a slicing hierarchy.
Fixed
- UI-9793 When searching the data model, matched measures sometimes appear in folders they don't belong to.
- UI-10160 In the Fields tab, named set tiles are unexpectedly not removable.
- UI-10051 Slow search in the Data model.
- UI-10157 The selected members within the Edit filter popover become unexpectedly deselected when real-time mode is toggled.
- UI-8721 Unexpected squiggly line warning in the Query tab on the name of a query-scoped or cube named set.
- UI-10085 Select fields not staying open when clicking them in the Share modal.
- UI-9828 When scrolling a pivot table, the header and body of the table sometimes become desynchronized.
- UI-8888 The status notification unexpectedly disrupts the menu items in the application header.
5.2.7
2025-04-01
Added
- UI-9402 Ability to toggle between displaying all row level names or only the deepest level name in the header of tree tables via the Show names of all levels on rows toggle in the Style tab of the Tree table.
- UI-8385 Ability to set up filtering other widgets on double click in the Behavior tab.
- UI-10034 Ability to move, import, export and make a copy of saved widgets and filters, through context menu items.
- UI-10081 Support for
Katex
in the Measures description tooltip. - UI-10074 Ability to open a dashboard in a new tab by mouse-wheel-clicking on it.
- UI-10069 Open "dashboard name" in a new tab context menu item on dashboards.
- UI-10055
autoFocusSearchInput
andsearchInputRef
props to theTree
component.
Changed
- UI-10056 Hierarchy folders are displayed above hierarchies in the Hierarchies tree.
Fixed
- UI-9879 "Error: The VIRTUAL-MEMBER-SEARCH post-processor can only be used on the grand total" when creating a filter on a virtual hierarchy from a widget that is already sliced on another hierarchy.
- UI-9968 The values in the Tree table rows being misaligned when Measures are on the Rows axis.
- UI-10054 [403] You do not have the permissions to create or update file /ui/dashboards/thumbnails/path/to/file error when updating a dashboard after it has been imported.
- UI-10076 unexpected browser caching issues during Atoti UI upgrades.
- UI-10084 The wrong item is selected when using the keyboard to select a search result in a tree.
- UI-10084 Uncaught TypeError: Cannot read properties of undefined (reading 'isFolder') when using the keyboard to select a search result in a tree.
- UI-10072 unexpected overflow of long usernames in the Last editor column of the dashboards list in the Home page.
- UI-10113 Locally defined calculated measures are unexpectedly displayed in red in the Fields tab.
- UI-9935 When using the Drillthrough menu item on data visualization widgets, the generated Drillthrough table widget sometimes fails to inherit some filters from the widget on which the action was performed.
5.2.6
2025-02-28
Added
- UI-3382 3D surface chart.
- UI-9884 Ability to configure filters to only allow a single member to be selected.
- UI-9990 Ability to trigger an Investigation on a grand total cell.
- UI-10070 Support for ampersand-quoted identifiers in MDX, e.g.
[Geography].[City].&[Berlin]
. - UI-9984 Ability to include member names in data labels on the Pie chart and Donut chart widgets.
- UI-9896 Ability for extensions to register modals in the application using
configuration.modals
, and open them usinguseModal
. Refer to the Add a modal documentation page for more details - UI-9896
configuration.modals
,useModal
,ModalsProvider
,ModalNotFoundError
, andModalsNotFoundError
. - UI-9993
"headers"
attribute in the payload of websocket messages sent to Atoti Server containing information about theapplication
(Atoti UI), thedashboardId
and thewidget
that triggered this query. - UI-9993 WebsocketHeadersProvider context provider allowing to provide the
headers
to attach to websocket messages sent to Atoti server by any React component below. - UI-9993
initialHeaders
argument to theregister
method of atotiClient, allowing to provide theheaders
to attach to the"REGISTER"
websocket message sent the first time this query executed and the"UPDATE"
messages sent upon subsequent re-executions of this query.
Fixed
- UI-10031 Inability to plot multi-level hierarchies correctly on the Line chart widget.
- UI-10007
java.lang.IllegalArgumentException: Invalid character found in the request target
errors in the content server logs when users with names containing the character"\\"
visit dashboards. - UI-10007 The settings of users whose names contain the character
"\\"
fail to be persisted. - UI-10088 Inability to interact with checkboxes in the application header menus.
5.2.5
2025-01-31
Added
- Keyboard navigation in the home page.
- Buttons to open the context menu on dashboards and folders in the home page.
- Ability to add the underlying measure of a KPI property to a calculated measure's expression by clicking this KPI property while the Create a calculated measure popup is open.
- Ability to select search results using the ↑, ↓ and Enter keyboard keys, in the Filter on popup.
isSticky
toCellProps
. Whentrue
, the cell's text stays in the viewport while scrolling horizontally over children of the concerned cell.getWidgetQuery
function allowing to get the query of a widget as it is sent to Atoti Server.getIndexedDataModel
function returning a data model whose properties can be accessed in O(1) through their key.
Changed
- In tables, the text content of header cells overflows to the right when the next cell is empty.
- In tables, parent header cells stick to the left above all their children before leaving room to the next parent header cell when the table is scrolled horizontally to the right.
- When a filter on a date is created in the Calendar tab of the Filter on popover with the Date range option unchecked, if this filter is then pinned, then the pinned filter input is a date picker instead of a date range picker. This allows to change the date of the filter in fewer clicks.
Fixed
- Inability to drillthrough a grand total table cell when a measure is on the slicer and no hierarchies are expressed on the rows or columns.
- Changes in an unsaved dashboard are lost after clicking New dashboard in the File menu, then cancelling in the confirmation prompt.
- Deselecting all default drillthrough columns in settings results in no drillthrough columns when creating a drillthrough table through the context menu.
- After pasting custom MDX in the Query tab, and then deleting the
areFiltersDrivenByMdx
attribute in the State tab, slicer filters are sometimes unexpectedly converted to subselects.
5.2.4
2025-01-03
Added
- Ability to set the colors of members on tree map widgets.
Changed
- Display a warning instead of showing inaccurate statistics at the bottom right of table widgets when the selected cells span beyond the loaded range.
- When creating or editing a filter, the query to fetch the list of available members takes into account the context values defined in the Query context tab.
- Switch widget type context menu item not visible when the Widgets panel is open.
- When using the Duplicate widget menu item for widgets, the new widget is selected.
- The "Select all" option in the Edit filter popover is dynamic (equivalent to not filtering at all).
Fixed
- "The dimension [DIMENSION] was not found in the data model of cube "CUBE"." error displayed when attempting to pin a filter on measures.
- "Cannot read properties of undefined (reading '0')" error displayed when attempting to submit an empty filter on measures.
- "The hierarchy [HIERARCHY] was not found in the data model of cube "CUBE." error when a field in the Fields tab is not found in the cube of the selected widget.
- "Cannot read properties of undefined (reading 'reduce')" error displayed when deleting a dimension or hierarchy name from the Query tab.
- Sorting by Last edited or Last editor in the home page mixes up folders and dashboards.
- "The maximum number of authorized rows (10,000) has been exceeded by a drillthrough" error when dragging an empty Drillthrough table into the dashboard.
5.2.3
2024-12-02
Added
- Ability to expand and collapse hierarchy folders in the Data model and in the Quick Filter widget by clicking anywhere on the folder name, not just the caret.
totals.areAddedByDefault
setting allowing to control whether totals are added by default when a level is added to a widget.
Changed
- Widgets display an alert banner, instead of throwing The dimension [DIMENSION] was not found in the data model of cube "CUBE" error, when there is a filter on a dimension or hierarchy that is not present in the widget's target cube. The alert can be hidden via the new
filters.hideMissingHierarchiesAlert
setting. - The Query tab is part of the starter project.
Fixed
- Inability to resize the Value column in tables when Measures is placed on the Rows axis and the Columns axis is empty.
- Switch widget type menu item opens the Saved widgets panel instead of the Widgets panel.
- "The dimension [DimensionName] was not found in the data model of cube "CubeName"." error in the Filters tab when creating a dashboard or page filter on a dimension or hierarchy that doesn't exist in the target cube of some widget in the scope.
- When editing a calculated measure from the Data model, the changes are unexpectedly not applied to the widgets relying on this measure.
- "HiddenSubtotals: Invalid level unique name: [Dimension].[Hierarchy].[Level]" error thrown when changing a widget's cube after having removed levels with hidden subtotals from the widget.
- Folders tree overflowing on the home page when it contains a large amount of folders.
- "The dimension [Measures] was not found in the data model of cube 'CubeName'." error thrown when attempting to edit a filter on a measure.
5.2.2
2024-10-31
Added
- In calendars, dates for which Atoti Server has data are highlighted.
- Ability to associate conditional style to a calculated measure from the Create a calculated measure popover.
- Ability to navigate through dashboard pages using the keyboard with the
Tab
,Shift + Tab
andEnter
keys. - The Open dashboard popup opens in the folder containing the current dashboard instead of at the root of dashboards.
- Cubes are grouped by catalog in the Data model.
filters.default.hiddenHierarchies
setting allowing to hide specific hierarchies from the Default filters section of the Filters tab.- Opt-in Real-time button in the application header, allowing to toggle real-time mode for all widgets in the dashboard. To add it to your project, include it in the application menus of your configuration:
+ import { applicationMenuItemToggleRealTime } from "@activeviam/atoti-ui-sdk";
+ configuration.rightApplicationMenu.unshift(
+ applicationMenuItemToggleRealTime,
+ );
Fixed
- "Hierarchy appears several times in set1 & set2" error thrown when adding a hierarchy to a query which contains nested crossjoins.
- Pinned filters are labeled "ALL" instead of by their corresponding hierarchy name when they contain no selected members.
MenuItemPlugin
not respecting itsdoesContextMenuCloseOnClick
property.- Inability to import exported folders through the Import content context menu in the home page.
5.2.1
2024-09-30
Added
lastUsedCube.isEnabled
setting allowing to control whether the last cube selected by the user is used as default when creating a new widget.- Ability to toggle between a single scale or two scales for the y-axis of the Columns and lines chart in the Style tab.
- Ability to deselect table cells through Ctrl / Cmd + click / drag within a selected range of cells.
- Hovering over a measure tile will display a description, provided the underlying measure includes one.
- Ability to create empty date range and member filters.
Fixed
- "Uncaught (in promise) TypeError: this._input.match is not a function" error when inserting a saved custom filter.
- Resizing widgets vertically sometimes unexpectedly results in dragging them.
- Glitch when resizing columns in tables, making it hard to double click a column's right border in order to autofit it to the width of its content.
5.2.0
2024-08-30
Added
- When using
withAuthenticatedClientsAndUser
inconfiguration.higherOrderComponents
, the user is automatically logged out upon any uncaughtUnauthorizedError
. - Ability to drill down members in column and bar charts.
- Ability to open/share dashboards with a specific active page.
It can be done thanks to page keys in dashboard URLs, e.g.
https://mywebsite.com/#/dashboard/id0/p-4
. - Ability to add measures and levels to widgets by clicking them in the Data model even when the Fields tab is closed.
- Submitting a drillthrough query in the Query tab of an empty widget switches this widget to a Drillthrough table, if it is not initially one.
- The values
"PAGES"
,"SECTIONS"
and"CHAPTERS"
to the typeAxisName
. - Ability to save member color sets within the Style tab of chart widgets to a
style.members
user setting, allowing to use these colors across all dashboards. - An interactive command palette, giving users access to many Atoti UI functionalities through keyboard usage. It can be opened using the Alt+Q keyboard shortcut, or via the Help > Command palette menu item. Thanks to the command palette, users can:
- add a filter to the selected widget
- add a hierarchy to the selected widget
- add a measure to the selected widget
- open a dashboard
- open the Fields, Style, Behavior, Query, Query context, State tabs
- insert a new page to the dashboard
- insert a new widget to the dashboard
- switch a widget to another one
- save a dashboard
- save a dashboard as
Changed
- The names of several artifacts have changed:
activeui-${version}-licenses.csv
is renamed toatoti-ui-${version}-licenses.csv
.activeui.jar
andactiveui-initial-content.jar
are renamed respectively toatoti-ui.jar
andatoti-ui-initial-content.jar
, and theirgroupId
is changed fromcom.activeviam.activeui
tocom.activeviam.atoti-ui
.admin-ui.jar
is renamed toatoti-admin-ui.jar
.
ActivePivotClient
hook is renamed toAtotiClient
.createActivePivotClient
hook is renamed tocreateAtotiClient
.- The
useActivePivotClients
hook is renamed touseAtotiClients
. - The
useActivePivotClient
hook is renamed touseAtotiClient
. - The
ActivePivotClientNotFoundError
error is renamed toAtotiClientNotFoundError
. - The
QueryError
type is renamed toErrorInQueryResult
, as a newQueryError
class is introduced, representing JS errors thrown when Atoti server responds with an error in a query result. TheQueryError
name is used for a new actual error class. - The type for member property values is changed from
any
tounknown
. SeeMember.properties
. - The
Whitelist
type is renamed toAllowlist
. getSelectedLeafKey
requires the dashboard active page key as second argument.- The
useMenuItemExportFolder
hook is renamed touseMenuItemExportFilesAndFolders
- The list of standard widgets is shown in a panel to the right of the tools panel. The panel can be collapsed by clicking the title bar at the top of the panel or resizing it. The panel can be hidden by clicking the button at the bottom of the panel. To show the widgets panel when it is hidden, click on the button to the bottom right of the tools panel.
- AFilter has a
nonVisualTotals
optional attribute, allowing to save filters with non visual totals and to programmatically add such filters to widget queries. - The type of the keys of
axisIds
fromstring
to"slicer" | "columns" | "rows" | "pages" | "chapters" | "sections"
. - The Create new dashboard and Create new folder buttons on the homepage are in the same position in grid view as in list view, in the top right corner below the navigation bar.
- Improved the captions of the advanced filters, making them more easily understandable both in the wizard and when they are pinned.
- The way to create, edit and rename calculated measures.
Create a calculated measure still by clicking the New calculated measure button.
Edit and rename a calculated measure by clicking the Edit menu item in the context menu of the corresponding Data model node.
From the calculated measure popover, you can either:
- click the Save button: the measure will be saved in the selected cube, and showed directly in the data model
- click the Save and apply button: on top of being saved, the measure will be added to the selected widget
Deprecated
- is alphabetically equal to and is not alphabetically equal to advanced filters. Use filters on members instead.
FilterOnLowerOrGreaterCaptions
with alowerOrGreaterMode
ofEqual
orNotEqual
.
Removed
DISPLAY_INFO
value in theCellProperty
enum. Indeed, it is a member property, not a cell property.contentTree
argument in thedeleteFolder
method ofContentClient
.ActivePivotClient.addCalculatedMembersListener
,ActivePivotClient.removeCalculatedMembersListener
,ActivePivotClient.addConnectionStatusListener
,ActivePivotClient.removeConnectionStatusListener
,ActivePivotClient.addDataModelListener
,ActivePivotClient.removeDataModelListener
,ActivePivotClient.addDrillthroughColumnsListener
,ActivePivotClient.removeDrillthroughColumnsListener
,ActivePivotClient.addQueryListener
,ActivePivotClient.removeQueryListener
,ActivePivotClient.addQueryResultListener
,ActivePivotClient.removeQueryResultListener
,ContentClient.addActivityListener
,ContentClient.removeActivityListener
,ContentClient.addPermissionListener
,ContentClient.removePermissionListener
,ContentClient.addSettingListener
,ContentClient.removeSettingListener
,ContentClient.addTreeListener
, andContentClient.removeTreeListener
.ActivityListener
,SettingListener
, andTreeListener
.addDrillthroughColumn
,removeDrillthroughColumn
, andmoveDrillthroughColumn
.ActivePageChangedAction
Redux action.getActivePageKey
Redux selector. UseuseActivePageKeyFromUrl
instead.- The close icon next to dashboard page names (at the bottom of the screen), allowing to remove them. Users can still remove pages by right-clicking their name and using their Delete context menu item, or by wheel-clicking their name. This prevents from removing pages by mistake.
useOnNewCalculatedMeasureButtonClicked
useOnNewKpiButtonClicked
Fixed
- When the
NON VISUAL
keyword is manually added to a widget's query, editing the widget's filters unexpectedly removes it.