Storytelling Table Context Menu

Overview

Plugin key BAS Setting key
accelerator_story-telling-action bas-plugin-menu-item-storytelling

Storytelling allows you to move between dashboards and bookmarks and maintain the filters of the cell you clicked on in your pivot table. Storytelling brings two new actions to your table context menus: Create Storytelling and Manage Storytelling.

Storytelling - 1

Building a drilldown dashboard

To begin, build and save a dashboard that contains a pivot table with all necessary levels and measures for your desired KPI. This will be the target dashboard for your custom action.

Drilldown dashboard

Example MDX query for sensitivity adjustments:

SELECT
  NON EMPTY Hierarchize(
    Crossjoin(
      [Booking].[Trades].[TradeId].Members,
      [Sensitivities].[Sensitivity].[SensitivityName].Members,
      [Risk].[Moneyness].[Moneyness].Members,
      [Risk].[Tenor Dates].[Tenor Date].Members,
      [Risk].[Risk Factors].[RiskFactor].Members,
      [Risk].[Risk Factors Secondary].[RiskFactor2].Members,
      [Risk].[Maturity Dates].[Maturity Date].Members,
      [Risk].[Maturities].[Maturity].Members,
      [Risk].[Tenors].[Tenor].Members,
      [Currencies].[Currencies].[Ccy].Members
    )
  ) ON ROWS,
  NON EMPTY Crossjoin(
    Hierarchize(
      [Epoch].[Epoch].[Branch].Members
    ),
    {
      [Measures].[Delta Native],
      [Measures].[Gamma Native]
    }
  ) ON COLUMNS
  FROM [Sensitivity Cube]
  CELL PROPERTIES VALUE, FORMATTED_VALUE, BACK_COLOR, FORE_COLOR, FONT_FLAGS

Create Storytelling

With Create Storytelling you can create your very own table context menu action to allow you to move between bookmarks and dashboards while maintaining the filters of the table cell you clicked on.

  1. On your primary dashboard, right-click in the cell where you want to add storytelling, and from the context menu, select Storytelling > Create storytelling.

    This opens the following dialog:
    

    Drilldown dashboard

  2. Enter a Name, associate a bookmark, then click Create Action.

  3. Save your primary dashboard.

The action is now available on right-click from the defined cell.

note

In this version of UI Components, the storytelling action will only open the first page of your target bookmark.

Below is a visual walkthrough:

Manage Storytelling

Manage Storytelling helps you manage all your previously created storytelling actions.

Storytelling - 4

Availability

Solution Enabled
FRTB
Market risk
SIMM
CVARC
Limits
Sign-off

Settings

None: an empty object signals that the widget is enabled for the given server.

How to disable it

Disable universally

To disable this feature for all solutions, add this line at the end of your extension’s activate function to unregister the plugin:

const extension: ExtensionModule = {
  activate: async (configuration: Configuration) => {
    ...
+    delete configuration.pluginRegistry["menu-item"]["accelerator_story-telling-action"];
+    Object.values(configuration.pluginRegistry["widget"]).forEach(widgetPlugin => {
+        widgetPlugin.contextMenuItems = widgetPlugin.contextMenuItems.filter( menuItem => menuItem.key !== "accelerator_story-telling-action")
+    })
  }
}

Disable for specific servers

To disable this feature for a given server, delete this feature’s settings for that server key by altering the basSettings parameter before calling the activate function.

Example
Disabling this feature for the FRTB server only:

+ import {produce} from "immer";
- import {activate as activateFrtb} from "@activeviam/frtb-sdk";
+ import {activate as activateFrtb, basSettings as frtbBASSettings} from "@activeviam/frtb-sdk";
 import {activate as activeMarketRisk} from "@activeviam/mr-sdk";

 const extension: ExtensionModule = {
  activate: async (configuration: Configuration) => {
    ...
+    const frtbBASSettingsWithFeatureDisabled = produce(frtbBASSettings, draft => {
+      delete draft["FRTB"]["bas-plugin-menu-item-storytelling"];
+    });

-   activateFrtb({configuration});
+   activateFrtb({configuration, basSetttings: frtbBASSettingsWithFeatureDisabled})
    activeMarketRisk({configuration});
  }
}