Skip to main content

Changelog

5.2.6

2025-02-28

Added

  • 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 using useModal. Refer to the Add a modal documentation page for more details
  • UI-9896 configuration.modals, useModal, ModalsProvider, ModalNotFoundError, and ModalsNotFoundError.
  • UI-9993 "headers" attribute in the payload of websocket messages sent to Atoti Server containing information about the application (Atoti UI), the dashboardId and the widget 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 the register method of atotiClient, allowing to provide the headers 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 to CellProps. When true, 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 editor, and then deleting the areFiltersDrivenByMdx attribute in the State editor, 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 editor.
  • 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.
  • Inability to create, delete or import files and folders inside other folders in Atoti Admin UI when connected to an Atoti server whose version is less than 6.0.0.
  • "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 and Enter 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 its doesContextMenuCloseOnClick 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.
  • Faster initial loading time of the Content tab of Atoti Admin UI.

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 in configuration.higherOrderComponents, the user is automatically logged out upon any uncaught UnauthorizedError.
  • 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 Content editor is closed.
  • Submitting a drillthrough query in the Query editor 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 type AxisName.
  • 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 to atoti-ui-${version}-licenses.csv.
    • activeui.jar and activeui-initial-content.jar are renamed respectively to atoti-ui.jar and atoti-ui-initial-content.jar, and their groupId is changed from com.activeviam.activeui to com.activeviam.atoti-ui.
    • admin-ui.jar is renamed to atoti-admin-ui.jar.
  • ActivePivotClient hook is renamed to AtotiClient.
  • createActivePivotClient hook is renamed to createAtotiClient.
  • The useActivePivotClients hook is renamed to useAtotiClients.
  • The useActivePivotClient hook is renamed to useAtotiClient.
  • The ActivePivotClientNotFoundError error is renamed to AtotiClientNotFoundError.
  • The QueryError type is renamed to ErrorInQueryResult, as a new QueryError class is introduced, representing JS errors thrown when Atoti server responds with an error in a query result. The QueryError name is used for a new actual error class.
  • The type for member property values is changed from any to unknown. See Member.properties.
  • The Whitelist type is renamed to Allowlist.
  • getSelectedLeafKey requires the dashboard active page key as second argument.
  • The useMenuItemExportFolder hook is renamed to useMenuItemExportFilesAndFolders
  • 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 from string 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 a lowerOrGreaterMode of Equal or NotEqual.

Removed

  • DISPLAY_INFO value in the CellProperty enum. Indeed, it is a member property, not a cell property.
  • contentTree argument in the deleteFolder method of ContentClient.
  • 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, and ContentClient.removeTreeListener.
  • ActivityListener, SettingListener, and TreeListener.
  • addDrillthroughColumn, removeDrillthroughColumn, and moveDrillthroughColumn.
  • ActivePageChangedAction Redux action.
  • getActivePageKey Redux selector. Use useActivePageKeyFromUrl 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.
  • "Cannot fetch data from database tables, because window.env.atotiServers is not defined. Check your env.js file" error in Atoti Admin UI when reloading the page on the Database tab.
  • Upon closing a file with unsaved changes in Atoti Admin UI, clicking the Save button in the confirmation popup does not actually save the changes.