Add event handling
Events allow an embedded dashboard to communicate with the container page. You can listen to these events and provide event handler functions to respond to them. You use helper methods in the Embedding SDK to add event handlers. For example, you can add code to capture selection events from one dashboard and apply them as a filter to a second dashboard.
To help you get started, we have provided an example in the Embedding SDK Playground that embeds a dashboard and adds event handling, as well as a description of events, event handlers, and wrapper functions you can use to handle additional events.
Once you have used the dossier.create(props)
method to embed a dashboard into a third-party web page, you can use the methods described below to communicate between the dashboard and the container page. You can register event handlers for the events that are automatically raised when a visualization is selected or when a page or filter is changed. Wrapper functions are provided to make it easy to register event handlers for specific events.
Events
Each supported event is described in the table below. You get the EventType from microstrategy.dossier.EventType
.
onGraphicsSelected
Event enumeration
EventType.ON_GRAPHICS_SELECTED
Description
Raised when a graphic in the visualization is selected. This event is raised only if the visualization supports "use as filter".
Content
Attribute element list for each selected graphic.
Code example
embedDossier.registerEventHandler(EventType.ON_GRAPHICS_SELECTED, graphicsSelectedHandler);
Content example
{
"vizKey": "K52",
"graphics": [
//an array containing all the selected graphics info, each item is one graphic
[
// an array containing the attribute combination for one graphic
//n: attribute name, v: attribute value
{ "n": "Category", "v": "Electronics" },
{ "n": "Quarter", "v": "2009 Q4" }
],
[
{ "n": "Category", "v": "Electronics" },
{ "n": "Quarter", "v": "2009 Q3" }
]
]
}
onPageSwitched
Event enumeration
EventType.ON_PAGE_SWITCHED
Description
Raised when the page is switched.
Content
Object containing the key of the page you switched to.
Code example
embedDossier.registerEventHandler(EventType.ON_PAGE_SWITCHED, pageSwitchedHandler);
Content example
{
"key": "K52"
}
onFilterUpdated
Event enumeration
EventType.ON_FILTER_UPDATED
Description
Raised when a filter is changed.
Content
Object containing changed filter information.
Code example
embedDossier.registerEventHandler(EventType.ON_FILTER_UPDATED, filterUpdatedHandler);
Content example
{
"filterInfo": [
{
"filterKey": "W132",
"filterName": "Year",
"isExclude": false,
"filterType": "attributeSelector",
"filterDetail": {
"items": [
{
"name": "2014",
"value": "h2014;8D679D5111D3E4981000E787EC6DE8A4",
"selected": false
},
{
"name": "2015",
"value": "h2015;8D679D5111D3E4981000E787EC6DE8A4",
"selected": true
},
{
"name": "2016",
"value": "h2016;8D679D5111D3E4981000E787EC6DE8A4",
"selected": false
}
],
"supportMultiple": false
}
}
]
}
onPageLoaded
Event enumeration
EventType.ON_PAGE_LOADED
Description
Raised when the page is loaded for the first time.
Content
None
Code example
embedDossier.registerEventHandler(EventType.ON_PAGE_LOADED, onPageLoadedHandler);
onLayoutChanged
Event enumeration
EventType.ON_LAYOUT_CHANGED
Description
Raised when the layout changes.
Content
Object containing layout changed information.
Code example
embedDossier.registerEventHandler(EventType.ON_LAYOUT_CHANGED, layoutChangedHandler);
Content example
{
"layoutMode": 2,
"dimension": {
"height": 600,
"width": 716,
"offsetTop": 0
}
}
onPromptAnswered
Event enumeration
EventType.ON_PROMPT_ANSWERED
Description
Raised when a prompt is answered.
Content
Object containing prompt answers information.
Code example
embedDossier.registerEventHandler(EventType.ON_PROMPT_ANSWERED, promptAnsweredHandler);
Content example
{
"messageName": "Sales Dashboard (w/ Attribute Element Prompt)",
"answers": [
{
"key": "3ECF2592C947B909B01624BCF690D6EA@0@10",
"values": ["8D679D4F11D3E4981000E787EC6DE8A4:14~1048576~Books - Miscellaneous"],
"useDefault": false
}
]
}
onPromptLoaded
Event enumeration
EventType.ON_PROMPT_LOADED
Description
Raised when a prompt is loaded.
Content
None
Code example
embedDossier.registerEventHandler(EventType.ON_PROMPT_LOADED, promptLoadedHandler);
onVizSelectionChanged
Event enumeration
EventType.ON_VIZ_SELECTION_CHANGED
Description
Raised when a visualization selection is changed. Need visualization selection to be enabled.
Content
Object containing visualization selection information.
Code example
embedDossier.registerEventHandler(EventType.ON_VIZ_SELECTION_CHANGED, vizSelectionChangedHandler);
Content example
{
"K36": {
"K52": true,
"visualizationLocation": {
"K52": {
"pageKey": "K53"
}
}
}
}
onVisualizationElementsChanged
Event enumeration
EventType.ON_VIZ_ELEMENT_CHANGED
Description
Raised when a visualization element is changed.
Content
Array of objects containing visualization element changed information.
Code example
embedDossier.registerEventHandler(EventType.ON_VIZ_ELEMENT_CHANGED, vizElementChangedHandler);
Content example
[
{
"visualizationKey": "K52",
"attributeElements": [
{
"attribute": {
"id": "70BACB0C3844364E12D005B61DC8C718",
"name": "Product"
},
"elements": [
{
"id": "h20129;70BACB0C3844364E12D005B61DC8C718",
"name": "Sebixtex"
},
{
"id": "h20114;70BACB0C3844364E12D005B61DC8C718",
"name": "Ecin"
}
]
}
]
}
]
onVisualizationResized
Event enumeration
EventType.ON_VISUALIZATION_RESIZED
Description
Raised when a visualization changes size.
Content
Object containing the visualization that changed size information.
Code example
embedDossier.registerEventHandler(EventType.ON_VISUALIZATION_RESIZED, vizResizedChangedHandler);
Content example
{
"visualizationKey": "W367",
"size": "normal"
}
onLibraryItemSelected
Event enumeration
EventType.ON_LIBRARY_ITEM_SELECTED
Description
Raised when a library item selected. Need library item select mode to be enabled.
Content
Object containing library item selection information.
Code example
embedDossier.registerEventHandler(EventType.ON_LIBRARY_ITEM_SELECTED, libraryItemSelectionHandler);
Content example
[
{
"id": "A7B1C43C4ABA7E499D4E1789A2EBCD55",
"docId": "BFB749B340572473A1288E9A2F6EDDA6",
"projectId": "B19DEDCC11D4E0EFC000EB9495D0F44F",
"name": "Distribution Center & Brands",
"type": 55,
"subtype": null
}
]
onLibraryMenuSelected
Event enumeration
EventType.ON_LIBRARY_MENU_SELECTED
Description
Raised when a library menu selected.
Content
Object containing library menu selection information.
Code example
embedDossier.registerEventHandler(EventType.ON_LIBRARY_MENU_SELECTED, libraryMenuSelectionHandler);
Content example
{
"menuKey": "myContent",
"groupId": null
}
onLibraryItemSelectionCleared
Event enumeration
EventType.ON_LIBRARY_ITEM_SELECTION_CLEARED
Description
Raised when a library item selection cleared.
Content
None
Code example
embedDossier.registerEventHandler(
EventType.ON_LIBRARY_ITEM_SELECTION_CLEARED,
libraryItemSelectioClearnHandler
);
onDossierInstanceIDChange
Event enumeration
EventType.ON_DOSSIER_INSTANCE_ID_CHANGE
Description
Raised when the embedded dashboard instance id changes.
Content
String of the new instance id.
Code example
embedDossier.registerEventHandler(EventType.ON_DOSSIER_INSTANCE_ID_CHANGE, dossierChangedHandler);
Content example
"003EB6548141F191CC73308269BB2635"
onDossierAuthoringSaved
Event enumeration
EventType.ON_DOSSIER_AUTHORING_SAVED
Description
Raised when a dashboard is saved after authoring or editing.
Content
None
Code example
embedDossier.registerEventHandler(
EventType.ON_DOSSIER_AUTHORING_SAVED,
dossierAuthoringSavedHandler
);
onDossierAuthoringClosed
Event enumeration
EventType.ON_DOSSIER_AUTHORING_CLOSED
Description
Raised when the authoring or edit mode of dashboard is closed.
Content
None
Code example
embedDossier.registerEventHandler(
EventType.ON_DOSSIER_AUTHORING_CLOSED,
dossierAuthoringClosedHandler
);
onPageRenderFinished
Event enumeration
EventType.ON_PAGE_RENDER_FINISHED
Description
Raised when the dashboard consumption page finishes rendering.
Content
None
Code example
embedDossier.registerEventHandler(EventType.ON_PAGE_RENDER_FINISHED, pageRenderFinishedHandler);
onDossierInstanceChanged
Event enumeration
EventType.ON_DOSSIER_INSTANCE_CHANGED
Description
Raised when the a new dashboard instance is created on a dashboard consumption page.
Content
The event callback parameters contain the project id, dashboard id and the instance id.
Code example
embedDossier.registerEventHandler(EventType.ON_DOSSIER_INSTANCE_CHANGED, (content) => {
// Use the content here
});
Content example
{
"projectId": "B19DEDCC11D4E0EFC000EB9495D0F44F",
"dossierId": "D9AB379D11EC92C1D9DC0080EFD415BB",
"instanceId": "EC003BC7A046E75DE83373A254824F20"
}
onComponentSelectionChanged
Event enumeration
EventType.ON_COMPONENT_SELECTION_CHANGED
Description
Raised when the dashboard consumption page finishes rendering.
Content
The information of the selected components.
Code example
embedDossier.registerEventHandler(EventType.ON_COMPONENT_SELECTION_CHANGED, (content) => {
// Use the content here
});
Content example
{
"projectId": "B19DEDCC11D4E0EFC000EB9495D0F44F",
"dossierId": "EC5441154009D3C39D5BD6AD75865EF4",
"selectedComponents": [
{
"key": "K52",
"type": "visualization",
"chapterKey": "K36",
"pageKey": "K53",
"dimensions": {
"width": 300.45,
"height": 400.45
}
},
{
"key": "53ACF03646491B5F5F5A7B83EB1BB0BE",
"type": "group",
"chapterKey": "K87",
"pageKey": "K67",
"dimensions": {
"width": 700,
"height": 1000
}
}
]
}
Event handlers
There are two methods for registering and removing an event handler.
registerEventHandler(evtName, handler)
Class
Dossier
Description
Register the event handler handler
on evtName
.
removeEventHandler(evtName, handler)
Class
Dossier
Description
Remove the event handler handler
on evtName
.
Wrapper functions
The following wrapper functions make it easy to register event handlers for specific events.
registerGraphicsSelectEventHandlerToViz(vizKey, handler)
Class
Dossier
Description
Wrapper function for registerEventHandler
for EventType.ON_GRAPHICS_SELECTED
on certain visualizations (whose node key is equal to vizKey
).
registerFilterUpdateHandler(handler)
Class
Dossier
Description
Wrapper function for registerEventHandler
for EventType.ON_FILTER_UPDATED
.
Equal to registerEventHandler(EventType.ON_FILTER_UPDATED, filterUpdatedHandler)
.
registerPageSwitchHandler(handler)
Class
Dossier
Description
Wrapper function for registerEventHandler
for EventType.ON_PAGE_SWITCHED
.
Equal to registerEventHandler(EventType.ON_PAGE_SWITCHED, pageSwitchedHandler)
.
Because the Map visualization can have multiple map layers, the selected graphics can come from different map layers. As a result, the event raised for EventType.ON_GRAPHICS_SELECTED
for the Map visualization is different from the event raised for other visualizations. See the following example.
{
//primary key for the map visualization
"vizKey": "W99",
"graphics": [
//each object represent the selected graphics info for one layer
{
//layer key
"key": "W99",
//layer name
"name": "Layer 1",
"graphics": [
[
{ "n": "Category", "v": "Electronics" },
{ "n": "Quarter", "v": "2009 Q4" }
],
[
{ "n": "Category", "v": "Electronics" },
{ "n": "Quarter", "v": "2009 Q3" }
]
]
},
{
"key": "W100",
"name": "Layer 2",
"graphics": [
[
{ "n": "Category", "v": "Books" },
{ "n": "Year", "v": "2009" }
],
[
{ "n": "Category", "v": "Movies" },
{ "n": "Year", "v": "2008" }
]
]
}
]
}
registerDossierInstanceIDChangeHandler(handler)
Class
Dossier
Description
Wrapper function for registerEventHandler
for EventType.ON_DOSSIER_INSTANCE_ID_CHANGE
.
Equal to registerEventHandler(EventType.ON_DOSSIER_INSTANCE_ID_CHANGE, dossierInstanceIdChangeHandler)
.