Dashboard is an ordered list of indicators and indicator drill pairs.
...
Code Block | ||
---|---|---|
| ||
{ "name": "customer_intelligence_dashboard", "type": "dashboard", "content": { "blockRows": [ { "type": "indicator", "indicator": "/rest/projects/$projectId/md/indicators?name=online_turnover_indicator", "indicatorDrill": "/rest/projects/$projectId/md/indicatorDrills?name=online_turnover_indicator_drill", "layout": "primary", "itemId": "78d0d5553ee924d8532515b521fa70f1" }, { "type": "indicator", "indicator": "/rest/projects/$projectId/md/indicators?name=offline_turnover_indicator", "indicatorDrill": "/rest/projects/$projectId/md/indicatorDrills?name=offline_turnover_indicator_drill", "layout": "primary", "itemId": "019ad374af348531dae3b6dae90de923" }, { "type": "indicator", "indicator": "/rest/projects/$projectId/md/indicators?name=customers_indicator", "indicatorDrill": "/rest/projects/$projectId/md/indicatorDrills?name=customers_indicator_drill", "layout": "primary", "itemId": "05f174e2300cee630980bdc3166cce7f" }, { "type": "indicator", "indicator": "/rest/projects/$projectId/md/indicators?name=purchases_indicator", "indicatorDrill": "/rest/projects/$projectId/md/indicatorDrills?name=purchases_indicator_drill", "layout": "primary", }, "itemId": "cb9742a903269413edda25e0400a5ec1" }, { "type": "indicator", "indicator": "/rest/projects/$projectId/md/indicators?name=average_purchase_indicator", "indicatorDrill": "/rest/projects/$projectId/md/indicatorDrills?name=average_purchase_indicator_drill", "layout": "primary", "itemId": "dd172a51be2b1de46bfbd025eaf87137" }, { "type": "indicator", "indicator": "/rest/projects/$projectId/md/indicators?name=purchases_customer_indicator", "indicatorDrill": "/rest/projects/$projectId/md/indicatorDrills?name=purchases_customer_indicator_drill", "layout": "primary", "itemId": "69c1e3e090da9681de740157d9214a60" } ] } } |
Code Block | ||||
---|---|---|---|---|
| ||||
{ "url": "/rest/projects/yufqzxkbiecj7jot/md/dashboards/fbvund7hls1s5a5s", "dumpTime": "2018-01-25T14:19:34Z", "version": "0", "content": { "id": "fbvund7hls1s5a5s", "name": "customer_intelligence_dashboard", "type": "dashboard", "content": { "blockRows": [ { "type": "indicator", "indicator": "/rest/projects/$projectId/md/indicators?name=online_turnover_indicator", "indicatorDrill": "/rest/projects/$projectId/md/indicatorDrills?name=online_turnover_indicator_drill", "layout": "primary", "itemId": "78d0d5553ee924d8532515b521fa70f1" }, { "type": "indicator", "indicator": "/rest/projects/$projectId/md/indicators?name=offline_turnover_indicator", "indicatorDrill": "/rest/projects/$projectId/md/indicatorDrills?name=offline_turnover_indicator_drill", "layout": "primary", "itemId": "019ad374af348531dae3b6dae90de923" }, { "type": "indicator", "indicator": "/rest/projects/$projectId/md/indicators?name=customers_indicator", "indicatorDrill": "/rest/projects/$projectId/md/indicatorDrills?name=customers_indicator_drill", "layout": "primary", "itemId": "05f174e2300cee630980bdc3166cce7f" }, { "type": "indicator", "indicator": "/rest/projects/$projectId/md/indicators?name=purchases_indicator", "indicatorDrill": "/rest/projects/$projectId/md/indicatorDrills?name=purchases_indicator_drill", "layout": "primary", "itemId": "cb9742a903269413edda25e0400a5ec1" }, { "type": "indicator", "indicator": "/rest/projects/$projectId/md/indicators?name=average_purchase_indicator", "indicatorDrill": "/rest/projects/$projectId/md/indicatorDrills?name=average_purchase_indicator_drill", "layout": "primary", "itemId": "dd172a51be2b1de46bfbd025eaf87137" }, { "type": "indicator", "indicator": "/rest/projects/$projectId/md/indicators?name=purchases_customer_indicator", "indicatorDrill": "/rest/projects/$projectId/md/indicatorDrills?name=purchases_customer_indicator_drill", "layout": "primary", "itemId": "69c1e3e090da9681de740157d9214a60" } ] }, "accessInfo": { "createdAt": "2017-10-05T08:27:11Z" }, "links": [ { "rel": "self", "href": "/rest/projects/yufqzxkbiecj7jot/md/dashboards/fbvund7hls1s5a5s" } ] } } |
...
Code Block | ||||
---|---|---|---|---|
| ||||
{ "name": "customer_intelligence_dashboard", "type": "dashboard", "content": { "blockRows": [ { "type": "blockRow", "blocks": [ { "type": "indicator", "indicator": "/rest/projects/$projectId/md/indicators?name=online_turnover_indicator", "indicatorDrill": "/rest/projects/$projectId/md/indicatorDrills?name=online_turnover_indicator_drill", "layout": "primary", "itemId": "8ac314a472a91c42bfbeac9cf90a30aa" }, }, { { "type": ""type": "indicator", "indicator": "/rest/projects/$projectId/md/indicators?name=offline_turnover_indicator", "indicatorDrill": "/rest/projects/$projectId/md/indicatorDrills?name=offline_turnover_indicator_drill", "layout": "primary", "itemId": "45417c00d9b5d52936b8d2b8300eda63" } ], "itemId": "44b154f493ffb6195f253232446beef7" }, { "type": "blockRow", "blocks": [ { "type": "indicator", "indicator": "/rest/projects/$projectId/md/indicators?name=customers_indicator", "indicatorDrill": "/rest/projects/$projectId/md/indicatorDrills?name=customers_indicator_drill", "layout": "secondary", "itemId": "8d053723cb9372574ceeae9bd0c360ba" }, { "type": "indicator", "indicator": "/rest/projects/$projectId/md/indicators?name=purchases_indicator", "indicatorDrill": "/rest/projects/$projectId/md/indicatorDrills?name=purchases_indicator_drill", "layout": "secondary", "itemId": "6a1e11b1795f90b5170da6143e770816" } ] } }, ], { "itemId": "94014766357838ab645158538ddc6ed0" }, { ""type": "indicator", "indicator": "/rest/projects/$projectId/md/indicators?name=average_purchase_indicator", "indicatorDrill": "/rest/projects/$projectId/md/indicatorDrills?name=average_purchase_indicator_drill", "layout": "primary", "itemId": "b465747d2a26239f1168e7a6cf250231" }, { "type": "indicator", "indicator": "/rest/projects/$projectId/md/indicators?name=purchases_customer_indicator", "indicatorDrill": "/rest/projects/$projectId/md/indicatorDrills?name=purchases_customer_indicator_drill", "layout": "secondary", "itemId": "d13d5b44990292a6c1b051c018410053" } ] } } |
It is possible to split two indicators in half and display them in one row. This is a good way to squeeze more indicators on one dashboard.
...
Code Block | ||||
---|---|---|---|---|
| ||||
{ "name": "indicator_groups_dashboard", "type": "dashboard", "content": { "blockRows": [ { "type": "indicatorGroup", "title": "Catchment Area Analysis", "blockRows": [ { "type": "indicator", "indicator": "/rest/projects/$projectId/md/indicators?name=turnover_indicator", "indicatorDrill": "/rest/projects/$projectId/md/indicatorDrills?name=turnover_indicator_drill", "layout": "primary", "itemId": "78d0d5553ee924d8532515b521fa70f1" }, { "type": "indicator", "indicator": "/rest/projects/$projectId/md/indicators?name=customers_indicator", "indicatorDrill": "/rest/projects/$projectId/md/indicatorDrills?name=customers_indicator_drill", "layout": "primary", "itemId": "9403698a1ed0cc2e55fcc27762faa1a3" }, { "type": "indicator", "indicator": "/rest/projects/$projectId/md/indicators?name=purchases_customer_indicator", "indicatorDrill": "/rest/projects/$projectId/md/indicatorDrills?name=purchases_customer_indicator_drill", "layout": "primary", "itemId": "8d053723cb9372574ceeae9bd0c360ba" } ], "itemId": "ccf504abece40ed0bbe992f4931ddae3" }, { "type": "indicatorGroup", "title": "Customer Intelligence", "blockRows": [ { "type": "indicator", "indicator": "/rest/projects/$projectId/md/indicators?name=online_turnover_indicator", "indicatorDrill": "/rest/projects/$projectId/md/indicatorDrills?name=online_turnover_indicator_drill", "layout": "primary", "itemId": "b465747d2a26239f1168e7a6cf250231" }, { "type": "indicator", "indicator": "/rest/projects/$projectId/md/indicators?name=offline_turnover_indicator", "indicatorDrill": "/rest/projects/$projectId/md/indicatorDrills?name=offline_turnover_indicator_drill", "layout": "primary", "itemId": "ccf504abece40ed0bbe992f4931ddae3" }, { "type": "indicator", "indicator": "/rest/projects/$projectId/md/indicators?name=purchases_indicator", "indicatorDrill": "/rest/projects/$projectId/md/indicatorDrills?name=purchases_indicator_drill", "layout": "primary", "itemId": "9403698a1ed0cc2e55fcc27762faa1a3" }, { "type": "indicator", "indicator": "/rest/projects/$projectId/md/indicators?name=average_purchase_indicator", "indicatorDrill": "/rest/projects/$projectId/md/indicatorDrills?name=average_purchase_indicator_drill", "layout": "primary", "itemId": "ee2069d8ebd36700690adbf9875111f1" } ], "itemId": "9403698a1ed0cc2e55fcc27762faa1a3" }, { "type": "indicatorGroup", "title": "Market Potential", "blockRows": [ { "type": "indicator", "indicator": "/rest/projects/$projectId/md/indicators?name=market_potential_indicator", "indicatorDrill": "/rest/projects/$projectId/md/indicatorDrills?name=market_potential_indicator_drill", "layout": "primary", "itemId": "d13d5b44990292a6c1b051c018410053" }, { "type": "indicator", "indicator": "/rest/projects/$projectId/md/indicators?name=market_penetration_indicator", "indicatorDrill": "/rest/projects/$projectId/md/indicatorDrills?name=market_penetration_indicator_drill", "layout": "primary", "itemId": "8d053723cb9372574ceeae9bd0c360ba" }, }, { { "type": ""type": "indicator", "indicator": "/rest/projects/$projectId/md/indicators?name=potential_customers_indicator", "indicatorDrill": "/rest/projects/$projectId/md/indicatorDrills?name=potential_customers_indicator_drill", "layout": "primary", "itemId": "f954ba0708d2a87832469e97d00dac7a" } ], "itemId": "ee2069d8ebd36700690adbf9875111f1" }, { "type": "indicatorGroup", "title": "Demography", "blockRows": [ { "type": "indicator", "indicator": "/rest/projects/$projectId/md/indicators?name=residents_indicator", "indicatorDrill": "/rest/projects/$projectId/md/indicatorDrills?name=residents_indicator_drill", "layout": "primary", "itemId": "6a1e11b1795f90b5170da6143e770816" }, { "type": "indicator", "indicator": "/rest/projects/$projectId/md/indicators?name=households_indicator", "indicatorDrill": "/rest/projects/$projectId/md/indicatorDrills?name=households_indicator_drill", "layout": "primary", "itemId": "b465747d2a26239f1168e7a6cf250231" } } ] } ], ] } "itemId": "d13d5b44990292a6c1b051c018410053" } ] } } |
...
}
|
It is possible to group a number of indicators in an indicatorGroups
array. This is a good way to display high number of indicators in a compact way.
...
Code Block | ||||
---|---|---|---|---|
| ||||
{ "name": "indicator_groups_dashboard", "type": "dashboard", "content": { "blockRows": [ { "type": "indicatorGroup", "title": "Catchment Area Analysis", "blockRows": [ { "type": "indicator", "indicator": "/rest/projects/$projectId/md/indicators?name=turnover_indicator", "indicatorDrill": "/rest/projects/$projectId/md/indicatorDrills?name=turnover_indicator_drill", "layout": "primary", "itemId": "9403698a1ed0cc2e55fcc27762faa1a3" }, { "type": "blockRow", "blocks": [ { "type": "indicator", "indicator": "/rest/projects/$projectId/md/indicators?name=customers_indicator", "indicatorDrill": "/rest/projects/$projectId/md/indicatorDrills?name=customers_indicator_drill", "layout": "primary", "itemId": "ccf504abece40ed0bbe992f4931ddae3" }, { "type": "indicator", "indicator": "/rest/projects/$projectId/md/indicators?name=purchases_customer_indicator", "indicatorDrill": "/rest/projects/$projectId/md/indicatorDrills?name=purchases_customer_indicator_drill", "layout": "primary", "itemId": "78d0d5553ee924d8532515b521fa70f1" } } ] ], } "itemId": "b465747d2a26239f1168e7a6cf250231" } ], "itemId": "6a1e11b1795f90b5170da6143e770816" }, { "type": "indicatorGroup", "title": "Customer Intelligence", "blockRows": [ { "type": "blockRow", "blocks": [ { "type": "indicator", "indicator": "/rest/projects/$projectId/md/indicators?name=online_turnover_indicator", "indicatorDrill": "/rest/projects/$projectId/md/indicatorDrills?name=online_turnover_indicator_drill", "layout": "primary", "itemId": "6a1e11b1795f90b5170da6143e770816" }, { "type": "indicator", "indicator": "/rest/projects/$projectId/md/indicators?name=offline_turnover_indicator", "indicatorDrill": "/rest/projects/$projectId/md/indicatorDrills?name=offline_turnover_indicator_drill", "layout": "primary", "itemId": "b465747d2a26239f1168e7a6cf250231" } } ] ], }, "itemId": "78d0d5553ee924d8532515b521fa70f1" { }, { "type"type": "blockRow", "blocks": [ { "type": "indicator", "indicator": "/rest/projects/$projectId/md/indicators?name=purchases_indicator", "indicatorDrill": "/rest/projects/$projectId/md/indicatorDrills?name=purchases_indicator_drill", "layout": "primary", "itemId": "d13d5b44990292a6c1b051c018410053" }, { "type": "indicator", "indicator": "/rest/projects/$projectId/md/indicators?name=average_purchase_indicator", "indicatorDrill": "/rest/projects/$projectId/md/indicatorDrills?name=average_purchase_indicator_drill", "layout": "primary", "itemId": "ee2069d8ebd36700690adbf9875111f1" } } ] ], } "itemId": "9403698a1ed0cc2e55fcc27762faa1a3" ] }, ],{ "itemIdtype": "ccf504abece40ed0bbe992f4931ddae3indicatorGroup", }, "title": "Market Potential", { "type": "indicatorGroup", "title": "Market Potential", "blockRows": "blockRows": [ { "type": "blockRow", "blocks": [ { "type": "indicator", "indicator": "/rest/projects/$projectId/md/indicators?name=market_potential_indicator", "indicatorDrill": "/rest/projects/$projectId/md/indicatorDrills?name=market_potential_indicator_drill", "layout": "primary", "itemId": "110041ea130fb3cb2b8e6ef4d3925184" }, { "type": "indicator", "indicator": "/rest/projects/$projectId/md/indicators?name=market_penetration_indicator", "indicatorDrill": "/rest/projects/$projectId/md/indicatorDrills?name=market_penetration_indicator_drill", "layout": "primary", "itemId": "3fb652df72521f04ea030cd7e5be4f14" } } ] ], }, "itemId": "24855bd309326c03f9517aa26c1585ce" { }, { "type": "indicator"type": "indicator", "indicator": "/rest/projects/$projectId/md/indicators?name=potential_customers_indicator", "indicatorDrill": "/rest/projects/$projectId/md/indicatorDrills?name=potential_customers_indicator_drill", "layout": "primary", "itemId": "08a28d47c1b25b25b69ba304bf286257" } ], "itemId": "1973df870007c4fc349b855b75d8711d" }, { "type": "indicatorGroup", "title": "Demography", "blockRows": [ { "type": "indicator", "indicator": "/rest/projects/$projectId/md/indicators?name=residents_indicator", "indicatorDrill": "/rest/projects/$projectId/md/indicatorDrills?name=residents_indicator_drill", "layout": "primary", "itemId": "100ba488ab6b56196d1641b4cd86101c" }, { "type": "indicator", "indicator": "/rest/projects/$projectId/md/indicators?name=households_indicator", "indicatorDrill": "/rest/projects/$projectId/md/indicatorDrills?name=households_indicator_drill", "layout": "primary", "itemId": "a5708f7570f330a1d470bbf2eaaed1ed" } ], "itemId": "d13d5b44990292a6c1b051c018410053" } ] } } |
This example combines the use of indicatorGroups
and blockRow
objects.
...
Code Block | ||||
---|---|---|---|---|
| ||||
{ "name": "catchment_area_dashboard", "type": "dashboard", "content": { "blockRows": [ { "type": "indicator", "indicator": "/rest/projects/$projectId/md/indicators?name=turnover_indicator", "indicatorDrill": "/rest/projects/$projectId/md/indicatorDrills?name=turnover_indicator_drill", "layout": "primary", "itemId": "79079ad528a0317b574dc6c0c8f5f4d1" }, { "type": "indicator", "indicator": "/rest/projects/$projectId/md/indicators?name=customers_indicator", "indicatorDrill": "/rest/projects/$projectId/md/indicatorDrills?name=customers_indicator_drill", "layout": "primary", "itemId": "40909dd2f0596eab4dfdbc534e1b4c11" }, { "type": "indicator", "indicator": "/rest/projects/$projectId/md/indicators?name=purchases_customer_indicator", "indicatorDrill": "/rest/projects/$projectId/md/indicatorDrills?name=purchases_customer_indicator_drill", "layout": "primary", }, "itemId": "9bfe29429a3cdc14c23d1f4571964379" { }, {"type": "categories", "typeindicator": "categories", "indicator": "/rest/projects/$projectId/md/indicators?name=turnover_indicator", "title": "Total Turnover value by channel", "description": "Total Turnover value by channel", "splitProperty": "baskets.on_off_name", "orderBy": { "property": "baskets.on_off_name", "direction": "asc" }, "itemId": "fffb087fa92f979eae3a70cd357dc52c" }, { "type": "categories", "indicator": "/rest/projects/$projectId/md/indicators?name=customers_indicator", "title": "Number of Customers by channel", "description": "Number of Customers by channel", "splitProperty": "baskets.on_off_name", "orderBy": { "property": "baskets.on_off_name", "direction": "asc" }, "itemId": "e802510371745be32fcd1bfa92cb5604" } ] } } |
It is possible to display the categories
block (from indicator drill) directly on a dashboard. In that case, a block with corresponding indicator must be specified. For the block description, see content.blocks.categories
.
...
Code Block | ||||
---|---|---|---|---|
| ||||
{ "name": "catchment_area_dashboard", "type": "dashboard", "content": { "blockRows": [ { "type": "indicator", "indicator": "/rest/projects/$projectId/md/indicators?name=turnover_indicator", "indicatorDrill": "/rest/projects/$projectId/md/indicatorDrills?name=turnover_indicator_drill", "layout": "primary", "itemId": "2134bead33528991273f6ae3b76b2acd" }, { "type": "indicator", "indicator": "/rest/projects/$projectId/md/indicators?name=customers_indicator", "indicatorDrill": "/rest/projects/$projectId/md/indicatorDrills?name=customers_indicator_drill", "layout": "primary", "itemId": "b1049a5fac09e793928340811686e326" }, { "type": "indicator", "indicator": "/rest/projects/$projectId/md/indicators?name=purchases_customer_indicator", "indicatorDrill": "/rest/projects/$projectId/md/indicatorDrills?name=purchases_customer_indicator_drill", "layout": "primary", "itemId": "0c20c60783f36e3596b026f38f9a1304" } ], "datasetProperties": [ { "dataset": "/rest/projects/$projectId/md/datasets?name=shops", "featureAttributes": [ { "type": "property", "value": "manager_name" }, { "type": "property", "value": "opening_hours" }, { "type": "property", "value": "contact_phone" }, { "type": "property", "value": "contact_mail", "format": { "type": "email" } }, { "type": "property", "value": "employees" }, { "type": "property", "value": "monthly_rent", "format": { "type": "number", "fraction": 0, "symbol": "£" } } ], "itemId": "74fe1a6b0d620af9108bfaf5ea910512" } ] } } |
It is also possible to define (but not display) the dataset.properties.featureAttributes
on a dashboard. This way, attributes can be defined per view, in case you want to see the properties of a dataset in one view, but not the other. When defined in dataset, the attributes are active per the whole project.
...
Key | Type | Optionality | Description | Constraints | |||||||||
---|---|---|---|---|---|---|---|---|---|---|---|---|---|
type | string |
| type identifier, always indicator | [indicator] | |||||||||
indicator | string |
| URL link to the indicator object | /rest/projects/$projectId/md/indicators?name={indicatorName} | |||||||||
indicatorDrill | string |
| URL link to the indicator drill object | /rest/projects/$projectId/md/indicatorDrills?name={ | |||||||||
layout | string |
| layout of the indicator when not specified, the indicator's layout is | [primary, secondary] | |||||||||
collapsed | boolean |
| determines if the indicator should be collapsed when entering the view | itemId | string | Status | | ||||||
colour | Red | title | requiredGenerated ID for this item to be used for matching it within a parent array while rebasing share objects. For more details see
content
...
.
...
content.blockRows.blockRow
blockRows.blockRow
An object defining one row in a dashboard. Can contain a maximum of 2 indicators, which will be split in half and displayed in one row.
Key | Type | Optionality | Description | Constraints | ||||||
---|---|---|---|---|---|---|---|---|---|---|
type | string |
| type identifier, always blockRow | [ | ||||||
blocks | array |
| array of indicator and indicator drill pairs | size = 2 | ||||||
itemId | string |
| Generated ID for this item to be used for matching it within a parent array while rebasing share objects. For more details see content.**.itemId section. | [a-z0-9]{32} |
content.
blockRows.
indicatorGroup
blockRows.
A number of indicators in a named collapsible group.
...
content.
blockRows.
indicatorGroup
blockRows.
A number of indicators in a named collapsible group.
Key | Type | Optionality | Description | Constraints | ||||||||||||||||
---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|
type | string |
| type identifier, always indicatorGroup | [indicatorGroup] | ||||||||||||||||
title | string |
| title of the indicator group | (*) | ||||||||||||||||
description | string |
| description of the indicator group | (*) | ||||||||||||||||
collapsed | boolean |
| determines if the group should be collapsed when entering the view | [true, false] | ||||||||||||||||
blockRows | array |
| array of either:
see the syntax example above itemId | string |
| Generated ID for this item to be used for matching it within a parent array while rebasing share objects. For more details see content.**.itemId section. | [a-z0-9]{32} |
content.
blockRows.categories
blockRows.categories
...
Key | Type | Optionality | Description | Constraints | ||||||
---|---|---|---|---|---|---|---|---|---|---|
dataset | string |
| URL link to the dataset, whose properties will be set | /rest/projects/$projectId/md/datasets?name={datasetName} | ||||||
defaultSearch | string |
| specifies if the dataset will be enabled in Refine search enable = dataset will be enabled disable = dataset will be disabled auto = dataset will be enabled if its features are visible in the map | [enable, disable, auto] | ||||||
featureAttributes | array |
| array of | |||||||
itemId | string |
| Generated ID for this item to be used for matching it within a parent array while rebasing share objects. For more details see content.**.itemId section. | [a-z0-9]{32} |
content.**.itemId
Generated ID for this item to be used for matching it within a parent array while rebasing share objects. itemId is genrated as hash from random UUID when given item is being created - either an entire dashboard is being created or an item is being added to MD object content via update. Once itemId is generated it is not supposed to be modified.
IMPORTANT: When interacting with REST API do not provide own generated values as itemId;
...
Visual representation
Dashboard with blockRows
...