Versions Compared

Key

  • This line was added.
  • This line was removed.
  • Formatting was changed.

Dashboard is an ordered list of indicators and indicator drill pairs.

Indicators on dashboard offer various ways of formatting. It's possible to group them, change their size or font, or display one of its indicator drill blocks directly on dashboard. They can also be collapsed or expanded (using right mouse click).

Dashboards are referenced in views. Each view references exactly one dashboard.

Info

See various setups of a dashboard in action in the Features Catalog for Developers project.

Syntax

This is the syntax of the dashboard located in the Customer Intelligence view of the Retail Solution Demo project.

It's the simplest way to display an array of indicators. Each of them has one row and is primary. For more customized dashboards, see the syntax examples and visual representation below.

...

titleDashboard object syntax

...

Dashboard is an ordered list of indicators and indicator drill pairs.

Indicators on dashboard offer various ways of formatting. It's possible to group them, change their size or font, or display one of its indicator drill blocks directly on dashboard. They can also be collapsed or expanded (using right mouse click).

Dashboards are referenced in views. Each view references exactly one dashboard.

Info

See various setups of a dashboard in action in the Features Catalog for Developers project.

Syntax

This is the syntax of the dashboard located in the Customer Intelligence view of the Retail Solution Demo project.

It's the simplest way to display an array of indicators. Each of them has one row and is primary. For more customized dashboards, see the syntax examples and visual representation below.

Code Block
titleDashboard object syntax
{
    "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"
            },
            {
                "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"
            },
            {
                "type": "indicator",
                "indicator": "/rest/projects/$projectId/md/indicators?name=customers_indicator",
                "indicatorDrill": "/rest/projects/$projectId/md/indicatorDrills?name=customers_indicator_drill",
                "layout": "primary"
            },
            {
                "type": "indicator",
                "indicator": "/rest/projects/$projectId/md/indicators?name=purchases_indicator",
                "indicatorDrill": "/rest/projects/$projectId/md/indicatorDrills?name=purchases_indicator_drill",
                "layout": "primary"
            },
            {
                "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"
            },
            {
                "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"
            }
        ]
    }
}


Code Block
titleExample of a dumped dashboard
collapsetrue
{
    "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"
                },
                {
   {                 "type": "indicator",
                    "indicator": "/rest/projects/$projectId/md/indicators?name=onlineoffline_turnover_indicator",
                    "indicatorDrill": "/rest/projects/$projectId/md/indicatorDrills?name=onlineoffline_turnover_indicator_drill",
                    "layout": "primary"
                },
                {
                    "type": "indicator",
                    "indicator": "/rest/projects/$projectId/md/indicators?name=offline_turnovercustomers_indicator",
                    "indicatorDrill": "/rest/projects/$projectId/md/indicatorDrills?name=offline_turnovercustomers_indicator_drill",
                    "layout": "primary"
                },
                {
                    "type": "indicator",
                    "indicator": "/rest/projects/$projectId/md/indicators?name=customerspurchases_indicator",
                    "indicatorDrill": "/rest/projects/$projectId/md/indicatorDrills?name=customerspurchases_indicator_drill",
                    "layout": "primary"
                },
                {
                    "type": "indicator",,
                    "indicator": "/rest/projects/$projectId/md/indicators?name=purchasesaverage_purchase_indicator",
                    "indicatorDrill": "/rest/projects/$projectId/md/indicatorDrills?name=purchasesaverage_purchase_indicator_drill",
                    "layout": "primary"
                },
                {
                    "type": "indicator",
                    "indicator": "/rest/projects/$projectId/md/indicators?name=averagepurchases_purchasecustomer_indicator",
                    "indicatorDrill": "/rest/projects/$projectId/md/indicatorDrills?name=averagepurchases_purchasecustomer_indicator_drill",
                    "layout": "primary"
                },

            ]
        },
  {      "accessInfo": {
            "typecreatedAt": "indicator",2017-10-05T08:27:11Z"
        },
        "indicatorlinks": "/rest/projects/$projectId/md/indicators?name=purchases_customer_indicator", [
            {
                "indicatorDrillrel": "/rest/projects/$projectId/md/indicatorDrills?name=purchases_customer_indicator_drillself",
                "layouthref": "primary/rest/projects/yufqzxkbiecj7jot/md/dashboards/fbvund7hls1s5a5s"
            }
        ]
    }
}

Additional syntax examples

Code Block
titleExample of a dumped dashboard with blockRow object
collapsetrue
{
    "urlname": "/rest/projects/yufqzxkbiecj7jot/md/dashboards/fbvund7hls1s5a5scustomer_intelligence_dashboard",
    "dumpTimetype": "2018-01-25T14:19:34Zdashboard",
    "versioncontent": "0",{
        "contentblockRows": [
{         "id": "fbvund7hls1s5a5s",  {
      "name": "customer_intelligence_dashboard",         "type": "dashboardblockRow",
           "content": {    "blocks": [
       "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"
                    },
                    {
                        "type": "indicator",
                        "indicator": "/rest/projects/$projectId/md/indicators?name=offline_turnover_indicator",
                        "indicatorDrill": "/rest/projects/$projectId/md/indicatorDrills?name=offline_turnover_indicator_drill"drill",
                        "layout": "primary"
                    }
                ]
            },
            {
       "layout         "type": "primary"blockRow",
                "blocks": [
   },                 {
                        "type": "indicator",
                        "indicator": "/rest/projects/$projectId/md/indicators?name=customers_indicator",
                        "indicatorDrill": "/rest/projects/$projectId/md/indicatorDrills?name=customers_indicator_drill",
                        "layout": "primarysecondary"
                    },
                    {
                        "type": "indicator",
                        "indicator": "/rest/projects/$projectId/md/indicators?name=purchases_indicator",
                        "indicatorDrill": "/rest/projects/$projectId/md/indicatorDrills?name=purchases_indicator_drill",
                        "layout": "primarysecondary"
                },    }
                ]
            },
        {    {
                "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"
   
            },
       
        {    {
                "type": "indicator",
                    "indicator": "/rest/projects/$projectId/md/indicators?name=purchases_customer_indicator",
 
                  "indicatorDrill": "/rest/projects/$projectId/md/indicatorDrills?name=purchases_customer_indicator_drill",
   
                "layout": "primarysecondary"
                }
   
        ]
    }
   },
        "accessInfo": {
            "createdAt": "2017-10-05T08:27:11Z"
        },
        "links": [
            {
                "rel": "self",
                "href": "/rest/projects/yufqzxkbiecj7jot/md/dashboards/fbvund7hls1s5a5s"
            }
        ]
    }
}

...

}

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.

To do that, we have to put them to the blockRow object. We have modified the dashboard from the main syntax example so that its first and second indicator are in a blockRow object, as well as the third and fourth indicator. Please note that a maximum of 2 indicators can be displayed in one row.

You can also notice that some of the indicators have secondary layout. Using this layout, the indicator tile and the font become smaller, allowing you to display yet more indicators on one dashboard. The two indicators in a blockRow should have identical layout, otherwise one tile will be larger than the other and the row will look weird.

-

Code Block
titleExample of a dashboard with blockRow objectindicator groups
collapsetrue
{
    "name": "customerindicator_intelligencegroups_dashboard",
    "type": "dashboard",
    "content": {
        "blockRows": [ [
            {
                 {"type": "indicatorGroup",
                "typetitle": "blockRowCatchment Area Analysis",
                "blocksblockRows": [
                    {
                        "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"
                    },
                    {
                        "type": "indicator",
                        "indicator": "/rest/projects/$projectId/md/indicators?name=offline_turnovercustomers_indicator",
                        "indicatorDrill": "/rest/projects/$projectId/md/indicatorDrills?name=offline_turnovercustomers_indicator_drill",
                        "layout": "primary"
                    },
                ]    {
                         },"type": "indicator",
                  {      "indicator": "/rest/projects/$projectId/md/indicators?name=purchases_customer_indicator",
                        "typeindicatorDrill": "blockRow/rest/projects/$projectId/md/indicatorDrills?name=purchases_customer_indicator_drill",
                "blocks": [       "layout": "primary"
            {        }
                "type": "indicator",]
            },
            "indicator": "/rest/projects/$projectId/md/indicators?name=customers_indicator",
        {
                "indicatorDrilltype": "/rest/projects/$projectId/md/indicatorDrills?name=customers_indicator_drillindicatorGroup",
 
                      "layout"title": "secondaryCustomer Intelligence",
                    },"blockRows": [
                    {
                        "type": "indicator",
                        "indicator": "/rest/projects/$projectId/md/indicators?name=purchasesonline_turnover_indicator",
                        "indicatorDrill": "/rest/projects/$projectId/md/indicatorDrills?name=purchasesonline_turnover_indicator_drill",
              
         "layout": "secondary"              "layout": "primary"
      }              },
  ]             },     {
       {                 "type": "indicator",
                        "indicator": "/rest/projects/$projectId/md/indicators?name=averageoffline_purchaseturnover_indicator",
                        "indicatorDrill": "/rest/projects/$projectId/md/indicatorDrills?name=averageoffline_purchaseturnover_indicator_drill",
                        "layout": "primary"
                    },
                    {
                        "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"
                    },
                "layout": "secondary"   {
         }         ]     } }

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.

To do that, we have to put them to the blockRow object. We have modified the dashboard from the main syntax example so that its first and second indicator are in a blockRow object, as well as the third and fourth indicator. Please note that a maximum of 2 indicators can be displayed in one row.

You can also notice that some of the indicators have secondary layout. Using this layout, the indicator tile and the font become smaller, allowing you to display yet more indicators on one dashboard. The two indicators in a blockRow should have identical layout, otherwise one tile will be larger than the other and the row will look weird.

-

Code Block
titleExample of a dashboard with indicator groups
collapsetrue
{"type": "indicator",
                        "indicator": "/rest/projects/$projectId/md/indicators?name=average_purchase_indicator",
                        "nameindicatorDrill": "/rest/projects/$projectId/md/indicatorDrills?name=average_purchase_indicator_groups_dashboard",drill",
                        "typelayout": "dashboard",primary"
                    }
                ]
 "content": {         "blockRows": [ },
            {
                "type": "indicatorGroup",
                "title": "CatchmentMarket Area AnalysisPotential",
                "blockRows": [
                    {
                        "type": "indicator",
                        "indicator": "/rest/projects/$projectId/md/indicators?name=turnovermarket_potential_indicator",
                        "indicatorDrill": "/rest/projects/$projectId/md/indicatorDrills?name=turnovermarket_potential_indicator_drill",
                        "layout": "primary"
                    },
                    {
                        "type": "indicator",
                        "indicator": "/rest/projects/$projectId/md/indicators?name=customersmarket_penetration_indicator",
                        "indicatorDrill": "/rest/projects/$projectId/md/indicatorDrills?name=customersmarket_penetration_indicator_drill",
                        "layout": "primary"
                    },
                    {
                        "type": "indicator",
                        "indicator": "/rest/projects/$projectId/md/indicators?name=purchasespotential_customercustomers_indicator",
                        "indicatorDrill": "/rest/projects/$projectId/md/indicatorDrills?name=purchasespotential_customercustomers_indicator_drill",
                        "layout": "primary"
                    }
                ]
            },
            {
                "type": "indicatorGroup",
                "title": "Customer IntelligenceDemography",
                "blockRows": [
                    {
                        "type": "indicator",
                        "indicator": "/rest/projects/$projectId/md/indicators?name=online_turnoverresidents_indicator",
                        "indicatorDrill": "/rest/projects/$projectId/md/indicatorDrills?name=online_turnoverresidents_indicator_drill",
                        "layout": "primary"
                    },
                    {
                        "type": "indicator",
                        "indicator": "/rest/projects/$projectId/md/indicators?name=offline_turnoverhouseholds_indicator",
                        "indicatorDrill": "/rest/projects/$projectId/md/indicatorDrills?name=offline_turnoverhouseholds_indicator_drill",
                        "layout": "primary"
                    },
                ]
          {  }
        ]
    }
}

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.

This example shows the indicators from the first four views of the Retail Solution Demo grouped into one view's dashboard with indicatorGroups.

-

Code Block
titleExample of a dashboard with blockRow objects in indicator groups
collapsetrue
{
      "typename": "indicator_groups_dashboard",
    "type": "dashboard",
    "content": {
        "blockRows": [
   "indicator": "/rest/projects/$projectId/md/indicators?name=purchases_indicator",        {
                "indicatorDrilltype": "/rest/projects/$projectId/md/indicatorDrills?name=purchases_indicator_drillindicatorGroup",
                        "layout"title": "primary"Catchment Area Analysis",
                  },"blockRows": [
                    {
                        "type": "indicator",
                        "indicator": "/rest/projects/$projectId/md/indicators?name=average_purchaseturnover_indicator",
                        "indicatorDrill": "/rest/projects/$projectId/md/indicatorDrills?name=average_purchaseturnover_indicator_drill",
                        "layout": "primary"
                    },
                ]    {
        },             {          "type": "blockRow",
      "type": "indicatorGroup",                 "titleblocks": "Market[
Potential",                 "blockRows": [             {
       {                         "type": "indicator",
                                "indicator": "/rest/projects/$projectId/md/indicators?name=marketcustomers_potential_indicator",
                                "indicatorDrill": "/rest/projects/$projectId/md/indicatorDrills?name=market_potentialcustomers_indicator_drill",
                                "layout": "primary"
                            },
                            {
                                "type": "indicator",
                                "indicator": "/rest/projects/$projectId/md/indicators?name=marketpurchases_penetrationcustomer_indicator",
                                "indicatorDrill": "/rest/projects/$projectId/md/indicatorDrills?name=marketpurchases_penetrationcustomer_indicator_drill",
                        "layout": "primary"         "layout": "primary"
           },                 }
   {                         "type": "indicator",]
                    }
    "indicator": "/rest/projects/$projectId/md/indicators?name=potential_customers_indicator",           ]
             "indicatorDrill": "/rest/projects/$projectId/md/indicatorDrills?name=potential_customers_indicator_drill",},
            {
                "layouttype": "primaryindicatorGroup",
                "title": "Customer Intelligence",
 }               "blockRows": [
  ]             },     {
       {                 "type": "indicatorGroupblockRow",
                        "titleblocks": "Demography", [
                     "blockRows": [      {
              {                  "type": "indicator",
     "type": "indicator",                           "indicator": "/rest/projects/$projectId/md/indicators?name=residentsonline_turnover_indicator",
                                "indicatorDrill": "/rest/projects/$projectId/md/indicatorDrills?name=residentsonline_turnover_indicator_drill",
                                "layout": "primary"
                    },        },
            {                  {
      "type": "indicator",                         "indicatortype": "/rest/projects/$projectId/md/indicators?name=households_indicator",
                          "indicatorDrill      "indicator": "/rest/projects/$projectId/md/indicatorDrillsindicators?name=householdsoffline_indicator_drill",
                        "layout": "primary"
             turnover_indicator",
      }                 ]         "indicatorDrill": "/rest/projects/$projectId/md/indicatorDrills?name=offline_turnover_indicator_drill",
  }         ]
    } } 

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.

This example shows the indicators from the first four views of the Retail Solution Demo grouped into one view's dashboard with indicatorGroups.

-

Code Block
titleExample of a dashboard with blockRow objects in indicator groups
collapsetrue
{     "name": "indicator_groups_dashboard",     "type": "dashboard",     "contentlayout": {"primary"
        "blockRows": [             {      }
          "type": "indicatorGroup",             ]
   "title": "Catchment Area Analysis",                 "blockRows": [},
                    {
                        "type": "indicatorblockRow",
                        "indicatorblocks": "/rest/projects/$projectId/md/indicators?name=turnover_indicator", [
                            {
                                "indicatorDrilltype": "/rest/projects/$projectId/md/indicatorDrills?name=turnover_indicator_drill"indicator",
                        "layout        "indicator": "primary"/rest/projects/$projectId/md/indicators?name=purchases_indicator",
                    },            "indicatorDrill": "/rest/projects/$projectId/md/indicatorDrills?name=purchases_indicator_drill",
       {                         "typelayout": "blockRowprimary",
                           "blocks": [ },
                            {
                                "type": "indicator",
                                "indicator": "/rest/projects/$projectId/md/indicators?name=customersaverage_purchase_indicator",
                                "indicatorDrill": "/rest/projects/$projectId/md/indicatorDrills?name=customersaverage_purchase_indicator_drill",
                                "layout": "primary"
                            },
                        ]
            {        }
                ]
       "type": "indicator",     },
            {
                "indicatortype": "/rest/projects/$projectId/md/indicators?name=purchases_customer_indicatorindicatorGroup",
                "title": "Market Potential",
                "indicatorDrillblockRows": "/rest/projects/$projectId/md/indicatorDrills?name=purchases_customer_indicator_drill",[
                    {
           "layout": "primary"            "type": "blockRow",
               }         "blocks": [
              ]              {
      }                 ]         "type": "indicator",
  },             {                 "typeindicator": "indicatorGroup/rest/projects/$projectId/md/indicators?name=market_potential_indicator",
                "title": "Customer Intelligence",                 "blockRows": ["indicatorDrill": "/rest/projects/$projectId/md/indicatorDrills?name=market_potential_indicator_drill",
                     {                         "type"layout": "blockRowprimary",
                           "blocks": [ },
                            {
                                "type": "indicator",
                                "indicator": "/rest/projects/$projectId/md/indicators?name=onlinemarket_turnoverpenetration_indicator",
                                "indicatorDrill": "/rest/projects/$projectId/md/indicatorDrills?name=onlinemarket_turnoverpenetration_indicator_drill",
                                "layout": "primary"
                            },
                         ]
  {                     },
           "type": "indicator",        {
                        "indicatortype": "/rest/projects/$projectId/md/indicators?name=offline_turnover_indicator",
       
                        "indicatorDrillindicator": "/rest/projects/$projectId/md/indicatorDrillsindicators?name=offlinepotential_turnovercustomers_indicator_drill",
                     
          "layout": "primary"             "indicatorDrill": "/rest/projects/$projectId/md/indicatorDrills?name=potential_customers_indicator_drill",
              }          "layout": "primary"
             ]       }
             },   ]
            },
    {        {
                "type": "blockRowindicatorGroup",
                       "title": "blocksDemography":,
 [               "blockRows": [
            {        {
                        "type": "indicator",
                                "indicator": "/rest/projects/$projectId/md/indicators?name=purchasesresidents_indicator",

                               "indicatorDrill": "/rest/projects/$projectId/md/indicatorDrills?name=purchasesresidents_indicator_drill",
      
                         "layout": "primary"
                            },
       
                    {
       
                        "type": "indicator",
      ,
                         "indicator": "/rest/projects/$projectId/md/indicators?name=averagehouseholds_purchase_indicator",
 
                              "indicatorDrill": "/rest/projects/$projectId/md/indicatorDrills?name=averagehouseholds_purchase_indicator_drill",
                        "layout": "primary"
              "layout": "primary"      }
                ]
            }
        ]
    }
}

This example combines the use of indicatorGroups and blockRow objects.


Code Block
titleExample of a dashboard with added categories block
collapsetrue
{
    "name": "catchment_area_dashboard",
    "type": "dashboard",
 ]   "content": {
        "blockRows": [
      }      {
          ]      "type": "indicator",
     },             {"indicator": "/rest/projects/$projectId/md/indicators?name=turnover_indicator",
                "typeindicatorDrill": "indicatorGroup/rest/projects/$projectId/md/indicatorDrills?name=turnover_indicator_drill",
                "titlelayout": "Market Potential""primary"
            },
            {
   "blockRows": [            "type": "indicator",
       {         "indicator": "/rest/projects/$projectId/md/indicators?name=customers_indicator",
                "typeindicatorDrill": "blockRow",
     /rest/projects/$projectId/md/indicatorDrills?name=customers_ina ranking indicator drill blockdicator_drill",
                  "blockslayout": ["primary"
               },
            {
         
                      "type": "indicator",
               
                "indicator": "/rest/projects/$projectId/md/indicators?name=marketpurchases_potentialcustomer_indicator",
       
                        "indicatorDrill": "/rest/projects/$projectId/md/indicatorDrills?name=marketpurchases_potentialcustomer_indicator_drill",
                                "layout": "primary"
        ",
                "layout": "primary"
 },           },
            {
    {                "type": "categories",
                "typeindicator": "/rest/projects/$projectId/md/indicators?name=turnover_indicator",
                "title": "Total Turnover value        by channel",
    "indicator": "/rest/projects/$projectId/md/indicators?name=market_penetration_indicator",           "description": "Total Turnover value by channel",
                "indicatorDrillsplitProperty": "/rest/projects/$projectId/md/indicatorDrills?name=market_penetration_indicator_drill",baskets.on_off_name",
                "orderBy": {
                    "layoutproperty": "primary"baskets.on_off_name",
                    "direction": "asc"
      }          }
            },
 ]           {
         },       "type": "categories",
            {    "indicator": "/rest/projects/$projectId/md/indicators?name=customers_indicator",
                   "typetitle": "indicatorNumber of Customers by channel",
                "description": "Number of Customers by channel",
       "indicator         "splitProperty": "/rest/projects/$projectId/md/indicators?name=potential_customers_indicatorbaskets.on_off_name",
                "orderBy": {
      "indicatorDrill              "property": "/rest/projects/$projectId/md/indicatorDrills?name=potential_customers_indicator_drill",
   baskets.on_off_name",
                    "layoutdirection": "primaryasc"
   
                }
            }
   ]     ]
    }
  },
            {
    }

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
titleExample of a dashboard with added distribution, ranking and time series blocks
collapsetrue
{
           "type"name": "indicatorGroupcatchment_area_dashboard",

               "title"type": "Demographydashboard",
       "content": {
        "blockRows": [
       
            {
   
                    "type": "indicator",
                        "indicator": "/rest/projects/$projectId/md/indicators?name=residentsturnover_indicator",

                       "indicatorDrill": "/rest/projects/$projectId/md/indicatorDrills?name=residentsturnover_indicator_drill",
      
                 "layout": "primary"
                    },
       
            {
       
                "type": "indicator",
       
                "indicator": "/rest/projects/$projectId/md/indicators?name=householdscustomers_indicator",a ranking indicator drill  block
                   "indicatorDrill": "/rest/projects/$projectId/md/indicatorDrills?name=householdscustomers_indicator_drill",
  
                     "layout": "primary"
            },
            }{
                ]"type": "indicator",
            }    "indicator": "/rest/projects/$projectId/md/indicators?name=purchases_customer_indicator",
   ]     } }  

This example combines the use of indicatorGroups and blockRow objects.

Code Block
titleExample of a dashboard with added categories block
collapsetrue
{     "nameindicatorDrill": "catchment_area_dashboard",/rest/projects/$projectId/md/indicatorDrills?name=purchases_customer_indicator_drill",
          "type": "dashboard",     "contentlayout": { "primary"
           "blockRows": [ },
            {
                "type": "indicatordistribution",
                "indicatortitle": "/rest/projects/$projectId/md/indicators?name=turnover_indicatorOptional distribution title",
                "indicatorDrillindicator": "/rest/projects/$projectId/md/indicatorDrillsindicators?name=online_turnover_indicator_drill",
                "layout":
"primary"
            },
            {
                "type": "indicatorranking",
                "indicatortitle": "/rest/projects/$projectId/md/indicators?name=customers_indicatorOptional ranking title",
                "indicatorDrillindicator": "/rest/projects/$projectId/md/indicatorDrillsindicators?name=customersonline_turnover_indicator_drill",
            },
   "layout": "primary"        {
    },             {"type": "timeSeries",
                "typetitle": "indicatorOptional time series title",
                "indicator": "/rest/projects/$projectId/md/indicators?name=purchasesonline_customerturnover_indicator",
            }
        ]
    }
}

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
titleExample of a dashboard with dataset attributes definition
collapsetrue
{
    "indicatorDrill": "/rest/projects/$projectId/md/indicatorDrills?name=purchases_customer_indicator_drillname": "catchment_area_dashboard",
    "type": "dashboard",
    "content": {
        "layoutblockRows": "primary" [
            {
    },             {"type": "indicator",
                "typeindicator": "categories/rest/projects/$projectId/md/indicators?name=turnover_indicator",
                "indicatorindicatorDrill": "/rest/projects/$projectId/md/indicatorsindicatorDrills?name=turnover_indicator_drill",
                "titlelayout": "primary"Total
Turnover value by channel",         },
       "description": "Total Turnover value by channel",{
                "splitPropertytype": "baskets.on_off_nameindicator",
                "orderByindicator": {"/rest/projects/$projectId/md/indicators?name=customers_indicator",
                    "propertyindicatorDrill": "baskets.on_off_name",
 /rest/projects/$projectId/md/indicatorDrills?name=customers_indicator_drill",
                  "directionlayout": "ascprimary"a ranking indicator drill block
            },
            {
    },             {"type": "indicator",
                "typeindicator": "categories/rest/projects/$projectId/md/indicators?name=purchases_customer_indicator",
                "indicatorindicatorDrill": "/rest/projects/$projectId/md/indicatorsindicatorDrills?name=customerspurchases_customer_indicator_drill",
                "titlelayout": "Number of Customers by channel","primary"
            }
        ],
        "descriptiondatasetProperties": "Number of Customers by channel", [
            {
                "splitPropertydataset": "baskets.on_off_name/rest/projects/$projectId/md/datasets?name=shops",
                "orderByfeatureAttributes": [
{                    {
  "property": "baskets.on_off_name",                     "directiontype": "ascproperty",
                   }     "value": "manager_name"
      }         ]     }
}

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
titleExample of a dashboard with dataset attributes definition
collapsetrue
{
    "name": "catchment_area_dashboard",,
                    {
                        "type": "dashboardproperty",
              "content": {         "blockRowsvalue": ["opening_hours"
             {       },
         "type": "indicator",          {
      "indicator": "/rest/projects/$projectId/md/indicators?name=turnover_indicator",                 "indicatorDrilltype": "/rest/projects/$projectId/md/indicatorDrills?name=turnover_indicator_drillproperty",
                 "layout       "value": "primarycontact_phone"
                    },

           {         {
       "type": "indicator",                 "indicatortype": "/rest/projects/$projectId/md/indicators?name=customers_indicator",property",
                        "indicatorDrillvalue": "/rest/projects/$projectId/md/indicatorDrills?name=customers_indicator_drillcontact_mail",
                "layout": "primary"       "format":  {
   },             {                 "type": "indicatoremail",
                 "indicator": "/rest/projects/$projectId/md/indicators?name=purchases_customer_indicator",      }
          "indicatorDrill": "/rest/projects/$projectId/md/indicatorDrills?name=purchases_customer_indicator_drill",          },
        "layout": "primary"           {
 }         ],         "datasetProperties": [    "type": "property",
       {                 "datasetvalue": "/rest/projects/$projectId/md/datasets?name=shops",employees"
                   "featureAttributes": [ },
                    {
                        "type": "property",
                        "value": "managermonthly_namerent",
                        },"format": {
                            "type": "number",
  {                         "type": "propertyfraction": 0,
                            "valuesymbol": "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": "£"
                        }
                    }
                ]
            }
        ]
    }
}

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 description

content

...

Status
colourGreen
titleoptional

...

array of either:

see the syntax examples above

...

Status
colourGreen
titleoptional

...

definition of dataset's featureAttributes and defaultSearch per view options

content.blockRows.indicator

...

}

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 description

content

KeyTypeOptionalityDescriptionConstraints
blockRowsarray
Status
colourGreen
titleoptional

array of either:

see the syntax examples above


datasetPropertiesarray
Status
colourGreen
titleoptional

definition of dataset's featureAttributes and defaultSearch per view options


content.blockRows.indicator

A regular indicator tile in one row.

KeyTypeOptionalityDescriptionConstraints
typestring
Status
colourRed
titlerequired
type identifier, always indicator[indicator]
indicatorstring

Status
colourRed
titlerequired

URL link to the indicator object

/rest/projects/$projectId/md/indicators?name={indicatorName}
indicatorDrillstring

Status
colourRed
titlerequired

URL link to the indicator drill object

/rest/projects/$projectId/md/indicatorDrills?name={indicatorDrillName}
layoutstring
Status
colourGreen
titleoptional

layout of the indicator

when not specified, the indicator's layout is primary

[primary, secondary]
collapsedboolean
Status
colourGreen
titleoptional
determines if the indicator should be collapsed when entering the view

content.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.

KeyTypeOptionalityDescriptionConstraints
typestring
Status
colourRed
titlerequired
type identifier, always blockRow[blockRow]
blocksarray

Status
colourRed
titlerequired

array of indicator and indicator drill pairs

size = 2

content.blockRows.indicatorGroup

A number of indicators in a named collapsible group.

KeyTypeOptionalityDescriptionConstraints
typestring
Status
colourRed
titlerequired
type identifier, always indicatorGroup[indicatorGroup]
titlestring
Status
colourRed
titlerequired
title of the indicator group(*)
descriptionstring
Status
colourGreen
titleoptional
description of the indicator group(*)
collapsedboolean
Status
colourGreen
titleoptional
determines if the group should be collapsed when entering the view[true, false]
blockRowsarray

Status
colourRed
titlerequired

array of either:

see the syntax example above


content.blockRows.categories

The syntax of categories block on dashboard is identical to the regular categories syntax. See indicatorDrill.content.blocks.categories.

content.blockRows.distribution


Distribution block's scale and the distribution of the data is defined in its paired indicator.content.


Distribution also has a description, which is not configurable through metadata, but is compiled from the properties of its paired indicator, according to this formula: "Distribution of indicator.title in granularity"



Key
Type
Optionality
Description
Constraints
typestring

REQUIRED

type identifier, always distribution

[distribution]
titlestringOPTIONALhuman-readable title of the categories block(*)
indicatorstringOPTIONALURL link to the indicator object/rest/projects/$projectId/md/indicators?name={indicatorName}
onDashboardbooleanOPTIONALdetermines if the block should be displayed directly on a dashboard[true, false]
collapsedbooleanOPTIONALdetermines if the block should be collapsed when entering the view[true, false]


content.blockRows.ranking


Ranking block can be switched to display either markers, or areas (when they're both available in the view). When there is a higher number of elements, infinite scroll is used.


Ranking also has a description, which is not configurable through metadata, but is compiled from the properties of its paired indicator, according to this formula: "Rank of object according to indicator.title" (note: object in this case is either a polygon from a certain granularity, or a marker).


...


Key
Type
Optionality
Description
Constraints
typestring

...

Status
colourRed
titlerequired

...

REQUIRED

type identifier, always ranking

[ranking]
titlestringOPTIONALhuman-readable title of the categories block(*)
indicatorstring

...

Status
colourRed
titlerequired

OPTIONALURL link to

...

...

Status
colourGreen
titleoptional

...

content.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.

...

Status
colourRed
titlerequired

...

Status
colourRed
titlerequired

...

array of indicator and indicator drill pairs

...

content.blockRows.indicatorGroup

...

 object/rest/projects/$projectId/md/indicators?name={indicatorName}
onDashboardboolean

...

Status
colourRed
titlerequired

...

URL link to the indicator drill object

...

Status
colourGreen
titleoptional

...

layout of the indicator

when not specified, the indicator's layout is primary

...

OPTIONALdetermines if the block should be displayed directly on a dashboard[true, false]
featureTypestringOPTIONAL

specifies which feature type should be ranked by default

default = granularity

[granularity, markers]
directionstringOPTIONAL

specifies the direction of ranked objects

default = desc

[asc, desc]
collapsedbooleanOPTIONALdetermines if the block should be collapsed when entering the view[true, false]



content.blockRows.timeSeries


Time series visualises the progress and trend of the respective indicator in a selected time frame. Additionally, it can be extended with time series of another indicator.


However, its time frame is set by view.content.filterGroup.globalDate filter. The component itself also allows the user to set the granularity of the block (days, weeks, months, quarters or years).


Time series also has a description, which is not configurable through metadata, but is compiled from the properties of its paired indicator, according to this formula: "Progress of indicator.title from view.content.filterGroup.globalDate.startDate to view.content.filterGroup.globalDate.endDate"


...


Key
Type
Optionality
Description
Constraints
typestring

...

REQUIRED

type identifier, always

...

 timeSeries

[

...

timeSeries]
titlestring

...

Status
colourRed
titlerequired

...

Status
colourGreen
titleoptional

...

Status
colourGreen
titleoptional

...

OPTIONALhuman-readable title of the categories block(*)
indicatorstringOPTIONALURL link to the indicator object/rest/projects/$projectId/md/indicators?name={indicatorName}
onDashboardbooleanOPTIONALdetermines if the block should be displayed directly on a dashboard[true, false]
defaultPeriodstringOPTIONALspecifies the default period dataset selected by default/rest/projects/$projectId/md/datasets?name={datasetName}
additionalSeriesarrayOPTIONALarray of additionalSeries objects
annotationsarrayOPTIONALarray of annotations objects
collapsedbooleanOPTIONALdetermines if the block should be collapsed when entering the view[true, false]

...

Status
colourRed
titlerequired

...

array of either:

see the syntax example above

content.blockRows.categories

...



content.datasetProperties

...

KeyTypeOptionalityDescriptionConstraints
datasetstring
Status
colourRed
titlerequired
URL link to the dataset, whose properties will be set/rest/projects/$projectId/md/datasets?name={datasetName}
defaultSearchstring
Status
colourGreen
titleoptional

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]
featureAttributesarray

Status
colourRed
titlerequired

array of dataset.properties.featureAttributes


...