Skip to main content

Changelog

5.0.4#

2021-10-22

Added#

  • The AFilter type accepts an isExclusionFilter property allowing to create filters that "invert" inclusion logic. e.g. If a filter shows the top 3 values, when isExclusionFilter is set to true the filter will show everything except the top 3 values.
  • Support for multiple filters on a same hierarchy.
  • Ability to configure the initial set of columns used when opening a drillthrough table. This can be done with the drillthrough.defaultSelectedColumns setting.
  • pluginMenuItemFilterOnEverythingButSelection, a menu-item plugin allowing to filter a widget and/or its siblings by showing everything except what is selected.

Changed#

  • The Edit/Present button at the top right of the application when on a dashboard is renamed to always read "Present" and is highlighted when presenting.

Fixed#

  • Blank screen and Missing theme. Remember to add
    at the top of your application.
    error in the console when an unhandled rejection occurs.
  • "Hide subtotals" table context menu item incorrectly present on columns representing a member of the last level of the last non-measure hierarchy expressed in the table, when this hierarchy is followed by measures.
  • The "Last editor" and "Last edited" columns in the home page sometimes show incorrect values.
  • Sometimes unable to remove a hierarchy from the content editor if the tile representing all the measures had been removed.
  • A "No plugin of type "widget" was found" error replaces the whole dashboard in case it contains a widget referring to an unregistered widget plugin. With this fix, the error message only replaces the problematic widget while the rest of the dashboard remains usable.

5.0.3#

2021-10-05

Added#

  • The application menu can be configured by modifying the values of the leftApplicationMenu and rightApplicationMenu attributes in the configuration.
  • The name input is automatically focused when the user creates a new folder from the home page.
  • The "Rename" menu item was added to the folders visible in the home page (in both list and grid layout). It used to only be accessible in the tree on the left of the home page.
  • smartFiltering.ignoredHierarchies setting allowing to ignore some hierarchies from the smart filtering context. It can be used to produce a more user-friendly behavior when the default list of members shown when adding a filter appears as empty or incomplete. This can typically be needed when analysis hierarchies or factless hierarchies are involved in the filtering.
  • setDrillthroughColumns function, allowing to set the columns in an MdxDrillthrough.

Changed#

  • When the user adds a new drillthrough table widget plugin to a dashboard, all columns are initially selected instead of none.

Fixed#

  • Sorting a stacked charts alphabetically based on the captions on the axis unexpectedly sorts numerically instead.
  • Sorting charts on a time dimension does not work.
  • Smart filtering does not work when the user expands members in the Filter on hierarchy popover.
  • The context menu fails to appear when the user right clicks on a widget. This bug only occurred on widgets displayed outside of a dashboard (for instance in an atoti notebook).
  • An infinite "Loading your dashboard…" message is displayed instead of an error message, when the user:
    • clicks a link to an inexistent dashboard,
    • tries to access a folder she is not allowed to see.
  • A different folder is unexpectedly displayed instead of an error message when the user clicks a link to an inexistent folder.
  • The Content Editor throws when a dimension, hierarchy, or measure is not found in the cube: "The hierarchy was not found in the data model of cube." This is frequently due to them being renamed on the server side.
  • The word "Total" fails to be copied when the user presses Ctrl+C on a pivot table.
  • Table static headers show the technical name of the corresponding level instead of its caption.
  • Copying and pasting a table static header yields the corresponding hierarchy name instead of the level caption.
  • The All dashboards section of the Filters Editor is unexpectedly visible when the setting userFilters.areEnabled is not set, or turned to false.

5.0.2#

2021-09-03

Added#

  • Confirmation message after using the Copy query to clipboard menu item.
  • The application name can be set in the configuration.
  • traverseMdx, a function useful to iterate over an Mdx AST.
  • Multiple folders and dashboards can be selected and deleted at the same time on the home page.

Changed#

  • pluginWidgetPivotTable and pluginWidgetTable are lazy-loaded. Only a small chunk of data corresponding to the top-left corner of the table is initially loaded into the client. New chunks of data are then loaded as the user scrolls. You can configure the size of these chunks by updating pluginWidget.lazyLoading.chunkSize, as follows:
    pluginWidgetPivotTable.lazyLoading.chunkSizes = {  rows: 10000,  columns: 100}
    You can turn off lazy loading for a given widget by deleting pluginWidget.lazyLoading.

Fixed#

  • Selecting a folder from the home page search fails to expand this folder's ancestors in the tree on the left.
  • Inability to collapse nested expanded members in a table, logging error: "Uncaught Error: The compound identifier does not represent a member".
  • Inability to collapse an expanded member in a table after expanding another one, logging error: "Uncaught TypeError: Cannot read property elementType of undefined".
  • Nothing happens when clicking the Retry with 30s button, displayed when widgets queries timeout.
  • Endless flooding of ping endpoint when the server is down.
  • Incorrect links in the API documentation when the URL contains a trailing slash.
  • Deleting the current folder in the home page throws an error.
  • Unexpected usage error thrown when using the State Editor drawer.
  • Sorting a pivot table column from a non-leaf header yields a wrong order.

5.0.1#

2021-08-04

Added#

  • Smart filtering: in the Filter on hierarchy popover, only the members contributing to the view are displayed for selection.
  • Ability to easily create calculated measures. Note that to see this feature, you must set the calculatedMeasures.areEnabled setting to true.
  • Ability to save and reuse calculated measures. Note that to see this feature, you must:
    • Set the calculatedMeasures.areEnabled setting to true.
    • Add the calculated_measures folder and its content and structure subfolders on the content server, under /ui. See how to initialize your content server.
  • State Editor drawer, allowing to view and edit the state of the selected widget. In particular, this drawer can be handy in order to manually update the configuration of charts. Note that this drawer is not part of the ActiveUI starter. To see it, you must add the following to your activate function:
    configuration.drawers.push(drawerStateEditor);

Changed#

  • More specific icons in the Widgets drawer.
  • Menu icon on the top left corner of dashboard cards in the home page, hinting that these cards have a context menu.

Fixed#

  • Using wrong permissions when creating a thumbnail while updating an existing dashboard.
  • Button to create a dashboard sometimes does not appear on empty folders.
  • Tooltip for disabled move action has incorrect caption.
  • Useless expansion carets are unexpectedly displayed on grand totals in pivot tables after users use the Expand by menu item.
  • Error: [409] An entry already exists at /ui/dashboards/thumbnails/[dashboard-id] when saving a dashboard.
  • The Create new dashboard button sometimes does not appear on empty folders, in the home page.
  • Users are unexpectedly able to create folders under saved widgets.
  • The Copy link button wrongly produces a link to an unexisting dashboard, when the user attempts to share a folder.
  • Empty folders in trees are not sorted correctly.

5.0.0#

2021-07-07

Added#

  • Icons for the home page search results.
  • Ability to save and reuse filters.

Changed#

  • The name of the optional content server file for the organization-wide settings is changed from organization-settingsto organization_settings.
  • The FolderChooser component has been renamed to FileExplorer.

Fixed#

  • Error in the Content Editor and Filters Editor when the selected widget's query contains a filter on a measure.
  • Error when dragging a cube filter into another section of the Filters Editor.
  • User can attempt to rename read-only dashboards.
  • Error when filtering on an empty cell.

5.0.0-rc3#

2021-06-18

Fixed#

  • Enabling Real-time mode causes an error.
  • The Move to popup unexpectedly allows to move a dashboard or a folder at the location where it already is.
  • The Show/Hide totals menu items do not work if the cube contains a default context value for mdx.hiddengrandtotals or mdx.hiddensubtotals.
  • Programmatic context values updates fail to be reflected in the Query context editor.
  • Errors in the dashboard tree when dashboards or folders are created or removed.
  • "Save as" on a dashboard sometimes fails to redirect to the new dashboard.

Removed#

  • contentClient.fetchTree, in favor of contentClient.loadTree (see ContentClient).

5.0.0-rc2#

2021-06-01

Added#

  • Ability to duplicate a dashboard page.
  • Tooltips to built-in titlebar-button plugins.

Changed#

  • Button to create a new dashboard is the first item of the list of dashboards in a folder.

Fixed#

  • Error when submitting MDX involving a measure in the slicer filters of a subselect.
  • Nothing happens when clicking on a search result in the homepage.
  • Error when a query context value has no definition in the data model.
  • Hiding totals/sub-totals fails to take the cube's defaults into account.
  • "Copy Link" button in share popup does not always copy the dashboard's URL.

5.0.0-rc1#

2021-05-31

Added#

  • Ability to horizontally resize the filter popup.
  • pluginSelectionListenerFilterOtherWidgets: a SelectionListener plugin automatically filtering other widgets in the dashboard page whenever the selection of its target widget changes.
  • The Share feature is hidden, unless the user has the ROLE_SHARE user role.
  • Query context editor, formerly known as the context values editor.
  • Text widget.

Changed#

  • Default select query includes the most commonly used cell properties.
  • CSV export includes totals.
  • configuration.initialPageState is renamed configuration.initialDashboardPageState and is optional. In both this interface and the initialPageState prop of <Dashboard />, the page name is omitted.
  • Access logs are now part of the user's Activity.
  • Quick Filter widgetState.
const quickFilterWidgetState = {- hierarchyCoordinates: {+ levelCoordinates: {    dimensionName: "myDimension",    hierarchyName: "myHierarchy",+   levelName: "myLevel"  },- query: {-   mdx: ...- },+ cubeName: "myCube",  serverKey: "myServer"};
  • widgetState.query.context is moved to widgetState.queryContext, and is now an array of entries:
const widgetState = {  query: {    mdx: ...-   context: {-     queriesTimeLimit: 40,-   }  },+ queryContext: [+   {+     key: "queriesTimeLimit",+     value: 40,+   }+ ],  ...};

Fixed#

  • Error thrown when leaving a dashboard with an empty data visualization widget.
  • Delete confirmation dialog is displayed behind the delete menu.
  • Incomplete hint for unsupported widget switch.
  • Sometimes share popup does not apply change to correct users.
  • Page counter not being incremented when adding a new page to a dashboard.
  • Shrinked header menus don't expand again when the window is resized.
  • Share popup waits for successful permissions update before closing.
  • Widget title not resizing when the widget width is resized.
  • onLoaded prop of Widget being called before the widget is painted.
  • Unable to collapse drawers.

Removed#

  • contentClient.fetchAccessLogs, in favor of contentClient.loadActivity (see ContentClient).
  • contentClient.updateAccessLogs, in favor of contentClient.updateActivity and useActivity.

5.0.0-beta#

2021-05-03

Added#

  • Cube selection on quick filter widget.
  • Cube filters.
  • The table widget (previously known as Tabular view).

Changed#

- getSort(mdx)+ getSort(mdx, {cube})
- getFilters(mdx)+ getFilters(mdx, {cube})
- setFilters(mdx, {filters})+ setFilters(mdx, {filters, cube})

Fixed#

  • Custom drillthrough column types fail to be listed in the available drillthrough column tree.
  • Measures with captions different from their names are missing from the CSV export.
  • Selecting a folder in the homepage search results does not redirect to that folder.

5.0.0-alpha4#

2021-04-21

Added#

  • Selection statistics on tables.

Fixed#

  • Error thrown when rendering the filters wizard when targeting a widget whose MDX query involves custom filters.
  • Caption of repeated pivot table header cells of different tuples wrongly omitted.
  • Error thrown when in the home page when the user has restricted access to a dashboard.

5.0.0-alpha3#

2021-03-24

Added#

  • Submitting MDX from the Query Editor also updates the state of the target widget. This is meant to work for MDX that has the same structure as the one generated by the GUI. In the long term, improvements will be made to support MDX more generically.
  • addPage, a function to add a page to a dashboard.
  • addWidget, a function to add a widget to a dashboard page.
  • mdx.doesIncludeCalculatedMembers setting to enable the inclusion of calculated members in MDX queries.
  • doesIncludeCalculatedMembers argument of addLevel, allowing to control whether calculated members of the level should be returned (optional and false by default).
  • doesIncludeCalculatedMembers argument of expand, allowing to control whether the expansion result should include calculated members (optional and false by default).
  • getNewPageKey, a function returning a key available to add a new page to a dashboard.
  • removeSort, a function removing the sort on a given mdx query.
  • getExpandedTuples can be called on an MdxAxis.
  • response attribute on ForbiddenError, InternalServerError, ResourceNotFoundError, UnauthorizedError, containing the server response and allowing for more specific error handling.
  • useActivePivotClients, a hook returning the map of all registered ActivePivotClients.
  • useConnectionStatus, a hook returning the overall status of the connection with the registered ActivePivot clients.
  • Ability to hide and show the totals on a pivot table.
  • Confirmation popup when reloading, closing, or navigating away from a page with unsaved changes.
  • Pivot table cells flash during real time updates. Increases are highlighted in green and decreases in red.
  • "tree table" widget plugin, pivot table whose row header is squashed into a single column, displayed as a tree.

Changed#

  • ActivePivotClient and ContentClient are exported as interfaces and not classes. As a consequence:
- const activePivotClient = new ActivePivotClient({-   url,-   version,-   requestInit,- });+ const activePivotClient = createActivePivotClient({+   url,+   version,+   requestInit,+ });

Tip: by creating your own createClient function, you are free to return an object with more attributes than the clients we provide, as long as its type extends the relevant client interface, such as ActivePivotClient.

  • The format for KPI properties in the mapping of serialized widgets has changed:
- KPIGoal('MyKpi')+ KPIGoal(MyKpi): pnl.SUM

Note that the KPI name is not wrapped with single quotes anymore, and that the underlying measure name is included after a semicolon and a space.

  • Pivot tables no longer display a column with the default measure, unless it is actually chosen by the user.
  • Pivot tables always display their header even when no measures are present.
  • The constructor of DataModelNotFoundError now takes its arguments as an object, in which serverKey is optional:
- new DataModelNotFoundError(serverKey, existingServerKeys);+ new DataModelNotFoundError({serverKey, existingServerKeys});
- throw new CubeNotFoundError(dataModel, cubeName);+ throw new CubeNotFoundError(cubeName, availableCubeNames);

Fixed#

  • Duplicate tile when moving a hierarchy from Rows or Columns into the Comparison section of the KPI Content Editor.
  • The wrong server is sometimes targeted when performing a drillthrough on a tuple in a widget.
  • Drillthrough context menu item unexpectedly showing on headers.
  • Error when having no drillthrough columns of a specific type.
  • Context menu unexpectedly available on pivot table skeleton.
  • Mixed up pivot table columns content after expanding a tuple onto another hierarchy and then adding another hierarchy below the yielded composite hierarchy, on rows.
  • "Trying to update a query that is not in the state" error, thrown after breaking a widget's query using the Query Editor and then removing the widget.
  • Titlebar button and menu item plugins do not receive their selection prop when used in a widget titlebar.
  • Quick filter sometimes targets the wrong cube or server.
  • Drillthrough queries are unexpectedly unregistered when errors occur.
  • Dates appearing in the wrong order in the filter popup.
  • Removing a selected tab throws an error if the tab of key "p-0" has been removed.
  • Moving a tab swaps it with the tab at destination instead of inserting it in place.
  • Measure identifier generated with dimension and hierarchy names when used as filter.
  • Widget fails to call its onLoaded prop when used with widgetKey="plugin-widget-drillthrough-table".
  • "Starts with..." and "Ends with..." filters based on member captions do not work with more than one letter.
  • Selection not updated when the data within an existing selection is modified.
  • Copying a pivot table to clipboard by pressing Ctrl/Cmd + C does not work if the selection was made by pressing Ctrl/Cmd + A .
  • Empty tile in the measures section of the Content Editor after expanding a tuple involving a measure in a Pivot Table.
  • Subplots do not work on scatter plots.
  • Selection on a pivot table is not cleared when pressing the Esc key.
  • Context menu throws an error on a pivot table's static header with measures on rows.

Removed#

  • createPluginRegistry and plugin presets: create your own object of type PluginRegistry instead.
  • Dropdown, Menu, Modal, notification, Select, Tooltip: use the corresponding antd components instead.
  • fetchVersions: the versions object is now defined statically in the project code (this means that in the ActiveUI application, the VersionsContext and the associated Redux state have been removed). You can perform a simple REST call on your ActivePivot server or Content server to adapt it.
  • PaletteProvider.
  • throwIfResponseNotHttpOk: use your own error handling for network calls instead.
  • usePalette.
  • KPI properties are no longer supported in widgets MDX. Use the underlying measure directly instead. The related functions addKpiProperty, removeKpiProperty, and moveKpiProperty are removed, as well as type MdxKPIProperty.
  • TupleCoordinate: use MemberCoordinates

5.0.0-alpha2#

2021-02-03

Added#

Changed#

  • addLevel accepts mdx as a first argument and everything else as a second argument.
  • addMeasure accepts mdx as a first argument and everything else as a second argument.
  • Client is renamed to ActivePivotClient.
  • collapse accepts mdx as a first argument and everything else as a second argument. It requires a Cube, in order to make collapsing a tuple expanded onto a level of a different hierarchy possible.
  • createContentFile is renamed to createFile and becomes a method of ContentClient.
  • createContentFolder is renamed to createFolder and becomes a method of ContentClient.
  • deleteContentFile is renamed to deleteFile and becomes a method of ContentClient.
  • deleteContentFolder is renamed to deleteFolder and becomes a method of ContentClient.
  • expand accepts mdx as a first argument and everything else as a second argument. It requires a Cube and its toLevel argument was changed from a LevelName to a LevelCoordinates, in order to make expanding onto a level of a different hierarchy possible.
  • fetchContentFile is renamed to fetchFile and becomes a method of ContentClient.
  • fetchContentTree is renamed to fetchTree and becomes a method of ContentClient.
  • fetchDataModel is part of ActivePivotClient.
  • fetchRecentlyOpenedDashboards is renamed to fetchAccessLogs, accepts a type argument (either "dashboard" or "widget") and is part of ContentClient.
  • findContentNodes is renamed into findContentRecords.
  • getExpandedTuples requires a Cube and returns the coordinates of the level expanded onto, on top of the coordinates of the expanded tuple.
  • getMeasures returns only the main set of measures expressed on the axes of the input MDX, instead of all native measures.
  • getMeasuresAxis is renamed to getMeasuresAxisName.
  • Kpi titles use proper mdx compound identifiers as keys. Previous titles will be lost.
  • moveAllMeasures accepts mdx as a first argument and everything else as a second argument.
  • moveLevel accepts mdx as a first argument and everything else as a second argument.
  • moveMeasure accepts mdx as a first argument and everything else as a second argument.
  • moveWidget accepts dashboardState instead of dashboard as an argument.
  • parseDashboardMdx is renamed to deserializeDashboardState.
  • parseWidgetMdx is renamed to deserializeWidgetState.
  • removeAllMeasures accepts mdx as a first argument and everything else as a second argument.
  • removeLevel accepts mdx as a first argument and everything else as a second argument.
  • removeMeasure accepts mdx as a first argument and everything else as a second argument. It requires a Cube, in order to collapse the potential tuple relying on the removed measure and expanded onto a level of a different hierarchy.
  • setCubeName accepts mdx as a first argument and everything else as a second argument.
  • setFilters accepts mdx as a first argument and everything else as a second argument.
  • setSort accepts mdx as a first argument and everything else as a second argument.
  • stringifyDashboardMdx is renamed to serializeDashboardState.
  • stringifyWidgetMdx is renamed to serializeWidgetState.
  • updateContentFile is renamed to updateFile and becomes a method of ContentClient.
  • updateRecentlyOpenedDashboards is renamed to updateAccessLogs, accepts a type argument (either "dashboard" or "widget") and is part of ContentClient.
  • useQueryResult accepts a single object as an argument, regrouping previous arguments.

Removed#

  • getPluginsTranslations.
  • isWidgetLoaded.
  • Keyboard.

Fixed#

  • Selecting root folder during Save as causes improper folder path creation.

5.0.0-alpha1#

2020-11-02

Added#