Dashboard File Format

Last modified by Aurelie Bertrand on 2024/12/09 17:09

Dashboards are persisted in a dashboard.xml file (or dashboard_<roleId>.xml for a role). Each one of the file lists all the pages and portlets of the dashboard for the role or user.

At the moment we describe the most important parts of the file that would be mandatory for integrating DigDash Metadata. Other fields are not considered important for this purpose. We reserve the right to modify the file format and this document as we need it. 

XML Sample

<?xml version="1.0" encoding="UTF-8" standalone="no"?>
<Dashboards authoriseOtherFlowRoles="false" displayGuideLines="true" lastedit="1600673599427" roleId="Retail_2d6e0f1e" version="2020B0910" visible="true">
<Dashboard accessible="true" displayMode="1" id="Summary" lastedit="1583942595275" personalizable="false" personalized="false" position="0" protected="false" uid="1719390234" visible="true">
 <Base name="Titre Ventes" portletId="Retail_Summary_Titre_Ventes" type="htmleditor" uid="551219930">
  <Parameter name="x" value="5%"/>
  <Parameter name="y" value="0"/>
  <Parameter name="width" value="200"/>
  <Parameter name="height" value="95"/>
  <Parameter name="maximize" value="false"/>
  <Parameter name="z-index" value="1"/>
  <Parameter name="margintop" value="60"/>
  <Parameter name="border" value="false"/>
  <Parameter default="false" name="content_en">
   <Content>&lt;p&gt;&lt;span class="synthese" style="font-size: 16px; font-family: 'Open Sans', arial;"&gt;Sales&lt;/span&gt;&lt;/p&gt;</Content>
  </Parameter>
  <Parameter default="true" name="content_fr">
   <Content>&lt;p&gt;&lt;span class="synthese" style="font-size: 16px; font-family: 'Open Sans', arial;"&gt;Ventes&lt;/span&gt;&lt;/p&gt;</Content>
  </Parameter>
  <Parameter default="false" name="content_es">
   <Content>&lt;p&gt;&lt;span class="synthese" style="font-size: 16px; font-family: 'Open Sans', arial;"&gt;Ventas&lt;/span&gt;&lt;/p&gt;</Content>
  </Parameter>
  <SpeakableNames global="true" id="Titre Ventes"></SpeakableNames>
 </Base>
 <Base name="filters" portletId="Retail_Summary_filters" type="filter" uid="1957622933">
  <Parameter name="x" value="69%"/>
  <Parameter name="y" value="0%"/>
  <Parameter name="width" value="28%"/>
  <Parameter name="height" value="50%"/>
  <Parameter name="maximize" value="false"/>
  <Parameter name="z-index" value="2"/>
  <Parameter name="margintop" value="90"/>
  <Parameter name="displaydimension" value="false"/>
  <Parameter name="displayhierarchy" value="false"/>
  <Parameter name="displaylevel" value="true"/>
  <SpeakableNames global="true" id="filters"></SpeakableNames>
 </Base>
 <Base name="comment" portletId="Retail_Summary_comment" type="comment" uid="1241755708">
  <Parameter name="x" value="69%"/>
  <Parameter name="y" value="50%"/>
  <Parameter name="width" value="28%"/>
  <Parameter name="height" value="50%"/>
  <Parameter name="maximize" value="false"/>
  <Parameter name="z-index" value="3"/>
  <Parameter name="margintop" value="40"/>
  <Parameter name="marginbottom" value="30"/>
  <Parameter name="datamodels" value="all"/>
  <Parameter name="flows" value="all"/>
  <Parameter name="filtertype" value="all"/>
  <Parameter name="filter" value="0"/>
  <Parameter name="displaytype" value="displaytypelist"/>
  <SpeakableNames global="true" id="comment"></SpeakableNames>
 </Base>
 <Base name="button" portletId="Retail_Summary_button" type="dd-button" uid="1602497727">
  <Parameter name="x" value="0%"/>
  <Parameter name="y" value="2"/>
  <Parameter name="width" value="145"/>
  <Parameter name="height" value="25"/>
  <Parameter name="showborder" value="false"/>
  <Parameter name="showheader" value="false"/>
  <Parameter name="maximize" value="false"/>
  <Parameter name="z-index" value="4"/>
  <Parameter name="margintop" value="1"/>
  <Parameter name="marginright" value="5"/>
  <Parameter name="xalignment" value="right"/>
  <Parameter name="type" value="button"/>
  <Parameter name="text" value="Download PPT"/>
  <Parameter name="text_en" value="Download PPT"/>
  <Parameter name="text_fr" value="Télécharger le PPT"/>
  <Parameter name="text_es" value="Descargar PPT"/>
  <JsAction func="customFunction">
   <JsArg>exploreExportPPT()</JsArg>
  </JsAction>
  <SpeakableNames global="true" id="button"></SpeakableNames>
 </Base>
 <Base flowId="11517a0bd" name="Chiffre d'affaire" portletId="Retail_Summary_1517a0bd" subtype="flow_datamodelwrapper.xml" type="flow" uid="1837724824">
  <Parameter name="x" value="5%"/>
  <Parameter name="y" value="0%"/>
  <Parameter name="width" value="15%"/>
  <Parameter name="height" value="50%"/>
  <Parameter name="showheader" value="false"/>
  <Parameter name="maximize" value="false"/>
  <Parameter name="css" value="radius revenues"/>
  <Parameter name="z-index" value="6"/>
  <Parameter name="margintop" value="90"/>
  <Parameter name="styleJSON" value=""/>
  <Parameter name="tableLinesJSON" value=""/>
  <Parameter name="exportPDF" value="false"/>
  <Parameter name="exportPPT" value="false"/>
  <Parameter name="exportXLS" value="false"/>
  <Parameter name="exportXLSWithoutStyles" value="false"/>
  <Parameter name="exportCSV" value="false"/>
  <description>Montant du chiffre d'affaire</description>
  <SpeakableNames global="true" id="Chiffre d'affaire"></SpeakableNames>
 </Base>
 <Base name="Filtres" portletId="Retail_Summary_Filtres" type="portletcontainer" uid="516816476">
  <Parameter name="x" value="5%"/>
  <Parameter name="y" value="2"/>
  <Parameter name="width" value="95%"/>
  <Parameter name="height" value="60"/>
  <Parameter name="showborder" value="false"/>
  <Parameter name="showheader" value="false"/>
  <Parameter name="maximize" value="false"/>
  <Parameter name="z-index" value="14"/>
  <Parameter name="margintop" value="1"/>
  <Parameter name="marginright" value="150"/>
  <Parameter name="marginbottom" value="-1"/>
  <Base name="Date" portletId="Retail_Summary_Filtres_Date" type="dimension" uid="1160275708">
   <Parameter name="x" value="0%"/>
   <Parameter name="y" value="0%"/>
   <Parameter name="width" value="35%"/>
   <Parameter name="height" value="30"/>
   <Parameter name="showborder" value="false"/>
   <Parameter name="showheader" value="false"/>
   <Parameter name="maximize" value="false"/>
   <Parameter name="z-index" value="15"/>
   <Parameter name="hierarchy" value=""/>
   <Parameter name="level" value=""/>
   <Parameter name="dim" value="Date"/>
   <Parameter name="continuous" value="true"/>
   <Parameter name="oldorlast" value=""/>
   <Parameter name="datasource" value="4ed0efaf2746ec7c60593590bf140d59"/>
   <Parameter name="viztype" value="SlicerDatePicker"/>
   <Parameter name="hideall" value="false"/>
   <Parameter name="hideempty" value="false"/>
   <Parameter name="multiselect" value="false"/>
   <Parameter name="range" value="true"/>
   <Parameter name="forbidemptyselection" value="false"/>
   <Parameter name="hideheader" value="true"/>
   <Parameter name="displayemptyvaluesatend" value="false"/>
   <Parameter name="showsearch" value="false"/>
   <Parameter name="authorizereversefilter" value="false"/>
   <Parameter name="sorttype" value="-1"/>
   <Parameter name="sortreverse" value="false"/>
   <Parameter name="filter" value=""/>
   <Parameter name="min" value=""/>
   <Parameter name="max" value=""/>
   <SpeakableNames global="true" id="Date"></SpeakableNames>
  </Base>
  <Base name="search" portletId="Retail_Summary_Filtres_search" type="globalfilter" uid="434030534">
   <Parameter name="x" value="0%"/>
   <Parameter name="y" value="0%"/>
   <Parameter name="width" value="35%"/>
   <Parameter name="height" value="30"/>
   <Parameter name="maximize" value="false"/>
   <Parameter name="z-index" value="17"/>
   <Parameter name="xalignment" value="right"/>
   <Parameter name="border" value="false"/>
   <SpeakableNames global="true" id="search"></SpeakableNames>
  </Base>
  <Base name="Géographie" portletId="Retail_Summary_Filtres_Geography" type="dimension" uid="1233162622">
   <Parameter name="x" value="0%"/>
   <Parameter name="y" value="30"/>
   <Parameter name="width" value="20%"/>
   <Parameter name="height" value="30"/>
   <Parameter name="maximize" value="false"/>
   <Parameter name="z-index" value="18"/>
   <Parameter name="hierarchy" value="Géographique"/>
   <Parameter name="level" value="continent"/>
   <Parameter name="border" value="false"/>
   <Parameter name="dim" value="Geography"/>
   <Parameter name="continuous" value="false"/>
   <Parameter name="viztype" value="SlicerCombo"/>
   <Parameter name="hideall" value="false"/>
   <Parameter name="forbidemptyselection" value="false"/>
   <Parameter name="hideempty" value="true"/>
   <Parameter name="hideheader" value="true"/>
   <Parameter name="multiselect" value="false"/>
   <Parameter name="displayemptyvaluesatend" value="false"/>
   <Parameter name="showsearch" value="false"/>
   <Parameter name="range" value="false"/>
   <Parameter name="sorttype" value="-1"/>
   <Parameter name="sortreverse" value="false"/>
   <Parameter name="filter" value=""/>
   <Parameter name="authorizereversefilter" value="false"/>
   <Parameter name="oldorlast" value=""/>
   <Parameter name="datasource" value="1781c50bf6c311a5c34bbb3451641351"/>
   <Parameter name="dimlabel" value="${level}"/>
   <SpeakableNames global="true" id="Géographie"></SpeakableNames>
  </Base>
  <SpeakableNames global="true" id="Filtres"></SpeakableNames>
 </Base>
 <SpeakableNames global="false" id="Summary">
  <SpeakableName DisplayName="Sommario" Lang="es"></SpeakableName>
  <SpeakableName DisplayName="Synthèse" Lang="fr"></SpeakableName>
 </SpeakableNames>
</Dashboard>
 <SpeakableNames global="true" id="Retail"></SpeakableNames>
</Dashboards>

Dashboards Node

AttributeTypeDescription
roleIdIdentifier Identifier of the role of the dashboard as it is defined in LDAP. This value is empty for a user wallet.
lasteditTimestampLast time this dashboard was modified
versionVersionVersion of DigDash Enterprise that last wrote this file
authoriseOtherFlowRolesBoolean

true: flows from other roles can be displayed in this dashboard. false: only flow of this role can be displayed in this dashboard (default)

displayGuideLinesBooleanTODO
visibleBooleanThe dasshboard tab is visible (true), or hidden (false). The dashboard's content can still be displayed using a specific URL or ddCtrl JS API.
Child NodesCountDescription
DashboardNDescriptor of a Dashboard page
SpeakableNames1Name for this dashboard localized with SpeakableNames

Dashboard Node

A Dashboard node is a page of the dashboard. It can refer to other child pages.

AttributeTypeDescription
idIdentifierUser-friendly identifier of the page. This can be used in various ddCtrl JS API calls.
lasteditTimestampLast time this flow was modified
accessibleBooleanTODO
uidIdentifierTechnical Identifier of the page (generated)
displayModeBooleanTODO
personalizableBooleanTODO
positionIntegerPosition of the page tab in the tabs at this level
protectedBooleanTODO
Child NodesCountDescription
SpeakableNames1List of localized names for this element
BaseNA portlet

Base Node

A Base node is a portlet displayed in a Dashboard page. It can be of different types which have their own sets of Parameter.

AttributeTypeDescription
nameNameDefault user-friendly name of the portlet
typeEnumType of the portlet
portletIdIdentifierTechnical Identifier of the portlet (generated). This can be used in ddCtrl JS API
uidIdentifierInternal Identifier of the portlet (generated)
flowIdIdentifier(Optional, only if the type of the portlet is "flow") Identifier of the flow displayed in this portlet (Flow node / uid attribute, in wallet: Wallet File Format)
subtypeEnum(Optional, only if the type of the portlet is "flow") Type of the flow displayed in this portlet (Flow node / file attribute, in wallet: Wallet File Format)
Child NodesCountDescription
SpeakableNames1List of localized names for this element
ParameterNPortlets parameter. Each portlet type have its own set of Parameter, described below
description0 or 1Description of the portlet (TODO localized?)

Parameter Node

AttributeTypeDescription
nameNameName of the parameter
valueString(Optional) Value of the parameter

Common Portlets Parameters

Here is a list of possible parameters per type of portlet (Base).

Common Parameter NameValue TypeDescription
xInteger/PercentageHorizontal position of the portlet
yInteger/PercentageVertical position of the portlet
widthInteger/PercentageWidth of the portlet
heightInteger/PercentageHeight of the portlet
maximizeBooleantrue: portlet can be maximized. false: portlet can not be maximized
z-indexIntegerLayer depth of the portlet: lower value are in the background, higher values are in the foreground
marginTopInteger/PercentageVertical top margin of the portlet
marginBottomInteger/PercentageVertical bottom margin of the portlet
marginLeftInteger/PercentageHorizontal left margin of the portlet
marginRightInteger/PercentageHorizontal right margin of the portlet
border / showborderBooleantrue: border is displayed, false: border is hidden
protectedBooleanTODO
cssNameCSS stylesheet name to use for this portlet
showheaderBooleantrue: portlet header is displayed, false: portlet header is hidden

HTML portlet (Base@type=htmleditor) Parameters

Parameter NameValue TypeDescription
content_<language>-The Content child node contains the text to be displayed by this portlet for the <language>. An additional Parameter default attribute tells if this content is the default to be displayed in case the content is not translated in the current user's language.
Specific Child NodesCountDescription
Content1HTML content to be displayed

Filters portlet (Base@type=filter) Parameters

Parameter NameValue TypeDescription
displaydimensionBooleanShould we display the dimension name (true) or not (false)
displayhierarchyBooleanShould we display the hierarchy name (true) or not (false)
displaylevelBooleanShould we display the level name (true) or not (false)

Comments portlet (Base@type=comment) Parameters

Parameter NameValue TypeDescription
datamodelsTODOTODO
flowsTODOTODO
filtertypeTODOTODO
filterTODOTODO
displaytypeTODOTODO

Button portlet (Base@type=dd-button) Parameters

Parameter NameValue TypeDescription
typeTODOTODO
textTODOTODO
text_<language>TODOTODO
Specific Child NodesCountDescription
JsAction1JS code to call when the button is clicked. Code is in the JsArg child Node.

Flow portlet (Base@type=flow) Parameters

Parameter NameValue TypeDescription
styleJSONTODOTODO
tableLinesJSONTODOTODO
export<Format>BooleanShould we allow exporting this flow in the specified format: PDF, PPT, XLS, XLSWithoutStyles, CSV (true), or not (false)

Container portlet (Base@type=portletcontainer) Parameters

This contains other portlets (Base).

Parameter NameValue TypeDescription
TODOTODOTODO
Specific Child NodesCountDescription
BaseNPortlet inside the container

Search portlet (Base@type=globalfilter) Parameters

Parameter NameValue TypeDescription
TODOTODOTODO

Slicer portlet (Base@type=dimension) Parameters

Parameter NameValue TypeDescription
dimIdentifierId of the dimension to filter (see Dimension Node, Name attribute, in Data Models File Format)
hierarchyTODOTODO
levelTODOTODO
continuousBooleantrue: dimension is continuous, false: dimension is discrete
viztypeEnumTODO
hideallBooleantrue: "All" members option is hidden, false: "All" members option is visible
forbidemptyselectionBooleanTODO
hideemptyBooleanTODO
hideheaderBooleanTODO
multiselectBooleanTODO
displayemptyvaluesatendBooleanTODO
showsearchBooleanTODO
rangeBooleanTODO
sorttypeEnumTODO
sortreverseBooleanTODO
filterTODOTODO
authorizereversefilterBooleanTODO
oldorlastTODOTODO
datasourceIdentifierIdentifier of the data model where this dimension is defined (see TableDataModel Node, id attribute, in Data Models File Format)
dimlabelStringTODO

SpeakableNames Node

This is used in different part and defines the localization for the name of the node where it is included.

Note : if the localization global attribute is set to true, then the translated string are stored in a properties files. If it is false the localized string are defined in SpeakableName child nodes, one for each language.

We will not describe this node for each place where it can be used. Instead we will only mention it.