Skip to main content

Changelog

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.

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.
  • The Content Editor throws when a hierarchy or measure is not in the cube: "The hierarchy was not found in the data model of cube." This can occur when measures and hierarchies are renamed on the server side.
  • 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.
  • 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.

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#