Types of Dashboards components
Components are the building blocks of Dashboards layout. Several types of components are provided and can be used out of the box. The KPI, Highcharts, and DataGrid components come pre-configured with default configurations, whereas the HTML component can be customized to fit specific needs. It is also possible to create and register Custom components.
This is an overview of the most critical parameters of a component:
id
- The unique identifier of the component, which is later used to identify it by dashboard and/or used to set CSS styles.renderTo
- id of the cell to which the component should be renderedclassName
- CSS class that is applied to the component's containertype
- the type of the component. It can beHTML
,KPI
,Highcharts
,DataGrid
or custom defined.events
- an object containing a pair of names for the event and a callback function that should be called on a given event. The list of events can be found in the API Reference, but the most common ismount
.sync
- list of events that should be synchronized between components.
HTML Component
The most basic and generic component type allows you to add everything that could be defined as HTML, as well as some custom events.
The HTML component can be defined in two ways:
Abstract Syntax Tree (AST) style
Defines the HTML code as a nested tree structure.Code snippet:
{type: 'HTML',renderTo: 'dashboard-1',elements: [{tagName: 'img',attributes: {src: 'https://www.highcharts.com/samples/graphics/stock-dark.svg'}}]}HTML string
Defines the HTML code as a standard HTML string.Code snippet:```js{type: 'HTML',renderTo: 'dashboard-1',html: '<img src="https://www.highcharts.com/samples/graphics/stock-dark.svg">'}```This example exhibits both approaches to defining HTML components.
Custom HTML components are explained in the Custom Component section below.
See the HTML Component page for detailed information.
Highcharts Component
Dashboards support the use of Highcharts
charts or maps out of the box.
The highcharts
module must be imported before the dashboards
module, as shown here:
<script src="https://code.highcharts.com/highcharts.js"></script><script src="https://code.highcharts.com/dashboards/dashboards.js"></script>
The Highcharts
CSS file must be included for the correct chart rendering.
@import url("https://code.highcharts.com/css/highcharts.css");@import url("https://code.highcharts.com/dashboards/css/dashboards.css");
For a chart to be displayed, the type Highcharts
must be specified, the renderTo
option set must be set, and data must be provided as part of the chartOptions
.
In addition, the chartOptions
object allows you to configure anything that can be configured in a stand-alone Highcharts chart.
Data may be provided directly in the chart option, but in a Dashboards application, one often wants to share data between components. In this case, the Data Pool mechanism offers a convenient solution.
Code snippet with data embedded in the chart options, no data connector used:
{renderTo: 'dashboard-1',type: 'Highcharts',chartOptions: {series: [{data: [1, 2, 3, 4]}]}}
The above code snippet is part of a Highcharts Component example that uses embedded data.
Code snippet using the Data Connector mechanism.
dataPool: {connectors: [{id: 'micro-element',type: 'JSON',options: {firstRowAsNames: false,columnNames: ['Food', 'Vitamin A', 'Iron'],data: [['Beef Liver', 6421, 6.5],['Lamb Liver', 2122, 6.5],['Cod Liver Oil', 1350, 0.9],['Mackerel', 388, 1],['Tuna', 214, 0.6]]}}]},components: [{renderTo: 'dashboard-col-0',type: 'Highcharts',connector: {id: 'micro-element',columnAssignment: [{seriesId: 'Vitamin A',data: ['Food', 'Vitamin A']}]}}]
The above code snippet is part of a Hichcharts Component example that uses data shared via a DataConnector
.
When using a Data Connector, the data is parsed and organized in rows, with columnNames
either given explicitly or used as column names in the first row.
The chart then uses the columnAssignment option to map the values of a specific column to the chart's series. Here is an example that uses column assignment.
You can load the Highcharts drag-drop
module if the data connector is connected.
This allows the user to change the value and sync the changes of this value with other
components. If a mathModifier
is applied to the data from the connector,
chart editing is disabled. See the dataPool
section for more details.
See the HighchartsComponent page for detailed information.
DataGrid Component
To visualize data in a row-column layout, you can use the DataGrid component. The DataGrid
module must be imported before the Dashboards module as shown here:
<script src="https://code.highcharts.com/dashboards/datagrid.js"></script><script src="https://code.highcharts.com/dashboards/dashboards.js"></script>
The DataGrid
module has its own style set, so the CSS file must be imported for correct rendering.
@import url("https://code.highcharts.com/dashboards/css/datagrid.css");@import url("https://code.highcharts.com/dashboards/css/dashboards.css");
For a chart to be displayed, the type DataGrid
must be specified, the renderTo
option set, and data must be provided as an embedded dataTable
object or via a DataConnector
. In addition, the dataGridOptions
object allows you to configure DataGrid
specific parameters like cell formatting, column assignment, etc.
The DataGrid
may have the series data directly embedded as part of the dataGridOptions
. However, a more common usage is the Dashboards' data pool mechanism, which shares data between the dashboard components. In this case, the id
of the DataConnector
must be included in the data grid's configuration.
Code snippet with data embedded in the DataGrid
data table; no data connector used.
{renderTo: 'dashboard-1',type: 'DataGrid',dataTable: {columns: {product: ['Apples', 'Pears', 'Plums', 'Bananas'],weight: [100, 40, 0.5, 200],price: [1.5, 2.53, 5, 4.5]}}}
The above code snippet is part of a DataGrid example that uses embedded data.
Code snippet using a data connector.
dataPool: {connectors: [{id: 'data',type: 'JSON',options: {data: [['Product Name', 'Quantity', 'Revenue', 'Category'],['Laptop', 100, 2000, 'Electronics'],['Smartphone', 150, 3300, 'Electronics'],['Desk Chair', 120, 2160, 'Furniture'],['Coffee Maker', 90, 1890, 'Appliances'],['Headphones', 200, 3200, 'Electronics'],['Dining Table', 130, 2470, 'Furniture'],['Refrigerator', 170, 2890, 'Appliances']]}}]},{type: 'DataGrid',renderTo: 'cell-id-2',connector: {id: 'data'}}
The above code snippet is part of a DataGrid example that uses data shared via a DataConnector
.
When using the data connector, the DataGrid
is automatically populated. If other components are using the same data connector, they will be automatically updated when the user edits a data grid cell. Here is the example.
NB! If the data was created by the mathModifier, cell editing is disabled by default.
See the DataGrid Component page for more information.
KPI Component
The KPI component
(Key Performance Indicator) facilitates the visualization of one single value in a data set. It is a simple component that displays a title and a value but can also include a Highcharts component to visualize the value, typically a gauge. Additionally, the component can be configured with threshold values, which can adapt its style according to its current value.
This component type is bundled with the Highcharts plugin, and you need to connect the Highcharts with the dashboard plugin to use it (similar to the Highcharts component).
Code snippet:
{renderTo: 'kpi-00',type: 'KPI',title: 'Average revenue',value: 888,threshold: [200, 800],thresholdColors: ['#f45b5b', '#f7a35c', '#90ed7d']},
The above code snippet is part of a KPI component example.
See the KPI Component page for more information.