{"id":21430130,"url":"https://github.com/cuba-platform/dashboard-addon","last_synced_at":"2025-07-14T11:31:12.538Z","repository":{"id":150932102,"uuid":"158530403","full_name":"cuba-platform/dashboard-addon","owner":"cuba-platform","description":"This component is designed to create and embed dashboards. Dashboard consists of widgets - individual elements based on a frame.","archived":false,"fork":false,"pushed_at":"2020-11-01T14:21:49.000Z","size":2986,"stargazers_count":7,"open_issues_count":10,"forks_count":3,"subscribers_count":4,"default_branch":"master","last_synced_at":"2025-04-08T07:19:07.638Z","etag":null,"topics":["apache2","cuba-component","cuba-platform","dashboard"],"latest_commit_sha":null,"homepage":"","language":"Java","has_issues":true,"has_wiki":null,"has_pages":null,"mirror_url":null,"source_name":null,"license":"apache-2.0","status":null,"scm":"git","pull_requests_enabled":true,"icon_url":"https://github.com/cuba-platform.png","metadata":{"files":{"readme":"README.md","changelog":null,"contributing":null,"funding":null,"license":"LICENSE.txt","code_of_conduct":null,"threat_model":null,"audit":null,"citation":null,"codeowners":null,"security":null,"support":null,"governance":null,"roadmap":null,"authors":null,"dei":null,"publiccode":null,"codemeta":null}},"created_at":"2018-11-21T10:24:11.000Z","updated_at":"2021-02-09T14:21:20.000Z","dependencies_parsed_at":"2023-04-28T00:01:26.691Z","dependency_job_id":null,"html_url":"https://github.com/cuba-platform/dashboard-addon","commit_stats":null,"previous_names":[],"tags_count":16,"template":false,"template_full_name":null,"purl":"pkg:github/cuba-platform/dashboard-addon","repository_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/cuba-platform%2Fdashboard-addon","tags_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/cuba-platform%2Fdashboard-addon/tags","releases_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/cuba-platform%2Fdashboard-addon/releases","manifests_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/cuba-platform%2Fdashboard-addon/manifests","owner_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/owners/cuba-platform","download_url":"https://codeload.github.com/cuba-platform/dashboard-addon/tar.gz/refs/heads/master","sbom_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/cuba-platform%2Fdashboard-addon/sbom","host":{"name":"GitHub","url":"https://github.com","kind":"github","repositories_count":265285253,"owners_count":23740491,"icon_url":"https://github.com/github.png","version":null,"created_at":"2022-05-30T11:31:42.601Z","updated_at":"2022-07-04T15:15:14.044Z","host_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub","repositories_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories","repository_names_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repository_names","owners_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/owners"}},"keywords":["apache2","cuba-component","cuba-platform","dashboard"],"created_at":"2024-11-22T22:20:57.477Z","updated_at":"2025-07-14T11:31:12.525Z","avatar_url":"https://github.com/cuba-platform.png","language":"Java","funding_links":[],"categories":[],"sub_categories":[],"readme":"\u003cp\u003e\n    \u003ca href=\"http://www.apache.org/licenses/LICENSE-2.0\"\u003e\u003cimg src=\"https://img.shields.io/badge/license-Apache%20License%202.0-blue.svg?style=flat\" alt=\"license\" title=\"\"\u003e\u003c/a\u003e\n    \u003ca href=\"https://travis-ci.org/cuba-platform/dashboard-addon\"\u003e\u003cimg src=\"https://travis-ci.org/cuba-platform/dashboard-addon.svg?branch=master\" alt=\"Build Status\" title=\"\"\u003e\u003c/a\u003e\n\u003c/p\u003e\n\n# Dashboards\n\n- [Overview](#overview)   \n- [Installation](#installation)\n  - [From the Marketplace](#from-the-marketplace)  \n  - [By coordinates](#by-coordinates)\n- [Configuration](#configuration)\n  - [Extending Application Theme](#extending-application-theme)\n  - [Adding Widget Types](#adding-widget-types)\n- [Usage](#usage)\n - [Dashboards](#dashboards)\n   - [Dashboard Fields](#dashboard-fields)\n   - [Dashboard Parameters](#dashboards-parameters)\n   - [Palette](#palette)\n     - [Widgets](#widgets)\n     - [Layouts](#layouts)\n     - [Templates](#templates)\n   - [Canvas](#canvas)\n   - [Dashboard Layout Structure](#dashboard-layout-structure)\n   - [Buttons Panel](#buttons-panel)\n  - [Dashboard Groups](#dashboard-groups)\n  - [Widget Templates](#widget-templates)\n   - [Widget Template Editor](#widget-template-editor)\n   - [Parameter Editor](#parameter-editor)\n - [Integration of the Component Dashboard-UI](#integration-of-the-dashboard-ui-component)\n   - [Loading a dashboard from JSON file](#loading-a-dashboard-from-json-file)\n - [Predefined Roles](#predefined-roles)\n\n\n# 1. Overview \u003ca name=\"overview\"\u003e\u003c/a\u003e\n\nThis component enables creating and embedding dashboards into your application screens. Dashboards allow visualizing summarized information, data sets, charts and can be accessible only by authorized users.\n\nA dashboard consists of widgets — individual elements based on a frame.  An integrated set of layouts allows positioning widgets on a dashboard according to your needs. Use responsive layouts to adapt your dashboards to different displays.\n\nYou can add your own widgets or use  [Dashboard Chart Add-on](https://github.com/cuba-platform/dashboard-chart-addon) that provides additional chart widgets for dashboard add-on.\n\nSee [sample application](https://github.com/cuba-platform/dashboard-addon-demo) using this add-on.\n\nSee [webinar](https://www.youtube.com/watch?v=nl-wsnC9K4A) on the CUBA Platform channel.\n\n# 2. Installation \u003ca name=\"installation\"\u003e\u003c/a\u003e\n\nThe add-on can be added to your project in one of the ways described below. Installation from the Marketplace is the simplest way. The last version of the add-on compatible with the used version of the platform will be installed.\nAlso, you can install the add-on by coordinates choosing the required version of the add-on from the table.\n\nIn case you want to install the add-on by manual editing or by building from sources see the complete add-ons installation guide in [CUBA Platform documentation](https://doc.cuba-platform.com/manual-latest/manual.html#app_components_usage).\n\n## 2.1. From the Marketplace \u003ca name=\"from-the-marketplace\"\u003e\u003c/a\u003e\n\n1. Open your application in CUBA Studio. Check the latest version of CUBA Studio on the  [CUBA Platform site](https://www.cuba-platform.com/download/previous-studio/).\n2. Go to *CUBA -\u003e Marketplace* in the main menu.\n\n  ![marketplace](img/marketplace.png)\n\n3. Find the Dashboards add-on there.\n\n  ![addons](img/addons.png)\n\n4. Click *Install* and apply the changes.\nThe add-on corresponding to the used platform version will be installed.\n\n\n## 2.2. By Coordinates \u003ca name=\"by-coordinates\"\u003e\u003c/a\u003e\n\n1. Open your application in CUBA Studio. Check the latest version of CUBA Studio on the [CUBA Platform site](https://www.cuba-platform.com/download/previous-studio/).\n2. Go to *CUBA -\u003e Marketplace* in the main menu.\n3. Click the icon in the upper-right corner.\n\n ![by-coordinates](img/by-coordinates.png)\n\n4. Paste the add-on coordinates in the corresponding field as follows:\n\n `com.haulmont.addon.dashboard:dashboard-global:\u003cadd-on version\u003e`\n\n where `\u003cadd-on version\u003e` is compatible with the used version of the CUBA platform.\n\n | Platform Version | Add-on Version |\n|------------------|----------------|\n| 7.2.X            | 3.2.3          |\n| 7.1.X            | 3.1.3          |\n| 7.0.X            | 3.0.4          |\n| 6.10.X           | 2.0.1          |\n\n5. Click *Install* and apply the changes. The add-on will be installed to your project.\n\n# 3.Configuration \u003ca name=\"configuration\"\u003e\u003c/a\u003e\n\nBefore starting working with dashboard editor in your application you should do some configuration setting: extend application theme and add widgets.\n\n## 3.1. Extending Application Theme \u003ca name=\"extending-application-theme\"\u003e\u003c/a\u003e\n\nFor the correct rendering of the add-on UI controls, it is recommended to extend the `hover` theme in your application as described in [CUBA Platform documentation](https://doc.cuba-platform.com/manual-latest/web_theme_extension.html).\n\n## 3.2. Adding Widget Types \u003ca name='adding-widget-types'\u003e\u003c/a\u003e\n\nBy default, the add-on does not have preset widgets. To add an additional widget type, you need to do the following:\n\n1. Create a fragment as described in [CUBA Platform documentation](https://doc.cuba-platform.com/manual-latest/using_screen_fragments.html).\n2. Add the annotation `com.haulmont.addon.dashboard.web.annotation.DashboardWidget`. Fill in the fields: `name`, `editFrameId`(optional, leave empty if there is no parameter in widget) in the annotation (see JavaDoc).\n3. `widget`, `dashboard`, `dashboardFrame` can be included in widget via `@WindowParam` annotation. Widget parameters in widget editor and widget frames should have `@WidgetParam` and `@WindowParam` annotations.\nFor example:\n\n```java\n@DashboardWidget(name = CAPTION, editFrameId = \"dashboard$LookupWidget.edit\")\npublic class LookupWidget extends AbstractFrame implements RefreshableWidget {\n    public static final String CAPTION = \"Lookup\";\n\n    @WindowParam\n    protected Widget widget;\n\n    @WindowParam\n    protected Dashboard dashboard;\n\n    @WindowParam\n    protected DashboardFrame dashboardFrame;\n\n    @WidgetParam\n    @WindowParam\n    protected String lookupWindowId;\n\n    public String getLookupWindowId() {\n        return lookupWindowId;\n    }\n\n    public void setLookupWindowId(String lookupWindowId) {\n        this.lookupWindowId = lookupWindowId;\n    }\n}\n```\n\n4. Add the frame for editing widget in the web module and register it in `web-screens.xml`. For example:\n\n```xml\n\u003c?xml version=\"1.0\" encoding=\"UTF-8\" standalone=\"no\"?\u003e\n\u003cwindow xmlns=\"http://schemas.haulmont.com/cuba/window.xsd\"\n        class=\"com.haulmont.addon.dashboard.web.widget.lookup.LookupWidgetEdit\"\u003e\n    \u003clayout spacing=\"true\"\u003e\n        \u003chbox id=\"lookupIdBox\"\n              spacing=\"true\"\u003e\n            \u003clabel width=\"85px\"\n                   value=\"msg://lookupId\"/\u003e\n            \u003clookupField id=\"lookupIdLookup\"\n                         nullOptionVisible=\"false\"\n                         required=\"true\"/\u003e\n        \u003c/hbox\u003e\n    \u003c/layout\u003e\n\u003c/window\u003e\n```\n\n```java\npublic class LookupWidgetEdit extends AbstractFrame {\n    @Inject\n    protected LookupField lookupIdLookup;\n    @Inject\n    protected WindowConfig windowConfig;\n    @Inject\n    protected Metadata metadata;\n    @Inject\n    protected ScreenXmlLoader screenXmlLoader;\n\n    protected Datasource\u003cWidget\u003e widgetDs;\n\n    @WidgetParam\n    @WindowParam\n    protected String lookupWindowId;\n\n    @Override\n    public void init(Map\u003cString, Object\u003e params) {\n        super.init(params);\n\n        lookupIdLookup.setOptionsList(getAllLookupIds());\n        lookupIdLookup.addValueChangeListener(e -\u003e lookupIdSelected((String) e.getValue()));\n\n        initWidgetDs(params);\n        selectLookupId();\n    }\n\n    protected void initWidgetDs(Map\u003cString, Object\u003e params) {\n        widgetDs = (Datasource\u003cWidget\u003e) params.get(WidgetEdit.ITEM_DS);\n    }\n}\n```\n\nIf widget frame implements `RefreshableWidget` interface, then method `refresh()` will be invoked automatically on each dashboard update event.\n\n# 4. Usage \u003ca name=\"usage\"\u003e\u003c/a\u003e\n\nAfter installation the add-on in your project the *Dashboard* menu will appear containing *Dashboards* and *Widget Template* screens.\n\n![menu-dashboards](img/menu-dashboards.png)\n\n## 4.1. Dashboards \u003ca name='dashboards'\u003e\u003c/a\u003e\n\n*Dashboard browser* contains the list of dashboards and buttons for creating, editing and removing dashboards in a database.\n\n![persistent-dashboard](img/persistent-dashboards.png)\n\n*Dashboard editor* screen appears after clicking the *Create* button on the *Dashboards* screen and allows editing a dashboard.\n\n![dashboard-editor-common](img/dashboard-editor-common.png)\n\n*Dashboard Editor* screen contains 6 areas:\n- the dashboard fields;\n- the dashboard parameters;\n- the palette with widgets and layouts;\n- the canvas  where the position of dashboard elements (widgets and layouts) is specified;\n- the tree representation of the edited dashboard structure;\n- the buttons panel.\n\n### 4.1.1 Dashboard Fields \u003ca name='dashboard-fields'\u003e\u003c/a\u003e\n\nTo save the created dashboard it is necessary to fill in at least the required fields:\n- *Title* - a name of the dashboard.\n- *Code* - a unique identifier for a more convenient search in a database.\n\nThe following fields are available to set:\n- *Refresh period (sec)* - a time period in seconds for refresh a dashboard UI.\n- *Assistant bean name* - an optional reference to a Spring bean class that should be used for customizing the dashboard (assistance bean must have `prototype` bean scope).\n- *Group* - a dashboard group.\n- *Available for all users* - a flag which defines the user access to the dashboard. If set to `false`, then only the user who created the dashboard can view and edit it. Otherwise, all users can view and edit the dashboard.\n\n### 4.1.2 Dashboard Parameters \u003ca name='dashboards-parameters'\u003e\u003c/a\u003e\n\nThe frame with dashboard parameters which allows adding, editing and removing dashboard parameters. These parameters are passed as input parameters for the widgets in this dashboard. For more information on adding and editing parameters, see [Parameter Editor](#parameter-editor).\n\n### 4.1.3 Palette \u003ca name='palette'\u003e\u003c/a\u003e\n\nIt is a container with 3 collapsible tabs. Each tab contains a container with components. When a component is dragged to the canvas, the corresponding element will be added to the canvas.\n\n#### 4.1.3.1 Widgets \u003ca name='widgets'\u003e\u003c/a\u003e\n\nBy default, there are no widgets in this tab. You can add widgets as described in [Adding Widget Types](#adding-widget-types) section. Drag an element from the palette for adding it on the canvas, and the widget editor will be opened in a dialog window. It is possible to make the widget a template (in this case, it is added to the tab *Widget Templates*).\n\n![palette-widgets](img/palette-widgets.png)\n\n#### 4.1.3.2 Layouts \u003ca name='layouts'\u003e\u003c/a\u003e\n\nLayouts help to place widgets in the specific way. Add the required layout before adding widgets on the canvas.\n\n![palette-layouts](img/palette-layouts.png)\n\nThe following layouts are available:\n- **vertical** - widgets are placed vertically one after another;\n- **horizontal** -  widgets are placed horizontally one after another;\n- **grid** - widgets are placed inside a grid with a specified number of rows and columns;\n- **css** - enables full control over placement and styling of enclosed components using CSS;\n- **responsive** - widgets are placed vertically, but depending on the screen width, the number of columns with widgets changes.\nAfter adding this layout on the canvas the setting form will appear. The slider shows which part of the screen will be occupied by one widget when opening the dashboard on a particular device.\n\n![responsive-settings](img/responsive-settings.png)\n\n#### 4.1.3.3. Templates \u003ca name='templates'\u003e\u003c/a\u003e\n\nContains widget templates from a database. Templates can be created from the widgets added on the canvas using the corresponding button, or by using [Widget Template Browser](#widget-template-browser).\n\n![palette-widget-templates](img/palette-widget-templates.png)\n\n\n### 4.1.4 Canvas \u003ca name='canvas'\u003e\u003c/a\u003e\n\nIt is a container in which you can place widgets and layouts. Drag an element from the palette for adding it on the canvas.\n\n![canvas-drag-grid-layout](img/canvas-drag-grid-layout.png)\n\nWhen dragging the *Grid Layout* to the canvas the dialog will open where you can set the number of rows and columns. When dragging a widget, the *Widget Editor* dialog will open. When dragging the *Responsive Layout* the dialog with settings will open.\n\nExample of the dashboard with widgets:\n\n![canvas-with-widgets](img/canvas-with-widgets.png)\n\nClick on a layout or a widget to select it. The selected element contains the panel with the following buttons:\n\n![layout-buttons](img/layout-buttons.png)    \n\n![trash](img/trash.png) - deletes a container from the canvas.\n\n![gear](img/gear.png) - opens the *Widget Editor*.\n\n![template](img/template.png) - opens the *Template Weidget Editor*.\n\n![arrows](img/arrows.png) - changes the weight (expand ratio) of a container in a parent container, or define `colspan` and `rowspan` attributes for the grid layout cells:\n\n![colspan-rowspan](img/colspan-rowspan.png)\n\n![brush](img/brush.png) - changes the style of a container: define the style name, modify the container's width and height:\n\n![style-editor](img/style-editor.png)\n\n![name](img/name.png) - displays the element name specified by user.\n\nFor more information on using custom styles see [CUBA Platform documentation](https://doc.cuba-platform.com/manual-latest/web_theme_extension.html#web_theme_extension_styles).\n\n### 4.1.5. Dashboard Layout Structure \u003ca name='dashboard-layout-structure'\u003e\u003c/a\u003e\n\nDisplays the current dashboard structure as a tree. The *Root* element is available by default and cannot be removed.\n\n![palette-tree](img/palette-tree.png)\n\nThe following actions are available for the tree elements from the context menu:\n\n- **Expand** - defines a component within a container that should be expanded to use all available space in the direction of component placement. For a container with vertical placement, this attribute sets 100% height to a component; for the containers with horizontal placement - 100% width. Additionally, resizing a container will resize the expanded component.\n- **Style** - enables setting a style name and modifying the component's height and width.\n- **Remove** - removes a component from the tree.\n- **Weight** - changes the weight (expand ratio) of a container in a parent container.\n- **Edit** - opens the widget editor.\n- **Template** - opens the widget template editor.\n\n![tree-context-menu](img/tree-context-menu_1.png) ![tree-context-menu](img/tree-context-menu_2.png)\n\n\n### 4.1.6. Buttons Panel \u003ca name='buttons-panel'\u003e\u003c/a\u003e\n\nThis panel contains the following buttons:\n\n- *OK* - saves the dashboard and close the editor.\n- *Cancel* - closes the editor without saving the dashboard.\n- *Propagate* - publishes event `com.haulmont.addon.dashboard.web.events.DashboardUpdatedEvent`.\n- *Export Json* - export the dashboard to a JSON file.\n- *Import Json* - import the dashboard from a JSON file and refresh the editor.\n\n## 4.2 Dashboard Groups \u003ca name='dashboard-groups'\u003e\u003c/a\u003e\n\nThe screen *Dashboard Groups* allows creating, editing, and removing dashboard groups. The screen *Dashboard Group Editor* allows adding or excluding dashboards in a dashboard group from a database.\n\nTo open the *Dashboard Groups* browser, click the *Groups* button in the *Dashboard browser* screen.\n\n ![dashboard-group-browser](img/dashboard-group-browser.png)\n\n ![dashboard-group-editor](img/dashboard-group-editor.png)\n\n## 4.3. Widget Templates \u003ca name=\"widget-templates\"\u003e\u003c/a\u003e\n\n This screen allows creating, editing and removing widget templates. Widget templates are  preconfigured widgets which can be reused. Widget templates are stored in a database. This screen is available from the application menu.\n\n ![menu-widget-templates](img/menu-widget-templates.png)\n\n ![widget-template-browser](img/widget-template-browser.png)\n\n### 4.3.1 Widget Template Editor \u003ca name=\"widget-template-editor\"\u003e\u003c/a\u003e\n\nThis screen allows editing a widget and consists of the following elements:\n\n- the *Name* field;\n- the *Group* drop-down;\n- the *Widget Type* lookup field;\n- the *Customize* button;\n- the checkbox to set the widget visibility.\n\n ![widget-editor](img/widget-editor.png)\n\nWhen a user clicks the *Customize* button, the enhanced widget editor will be opened, consisting of the following elements:\n\n- the *Caption* field;\n- the *Widget Id* field;\n- the *Description* field;\n- the *Show Widget Caption* checkbox;\n- the *Lookup id* field, for the frames inherited from the `com.haulmont.cuba.gui.components.AbstractLookup`. Widgets of this type fire `WidgetEntitiesSelectedEvent` which contains the selected entities;  \n- the frame with widget parameters which allows adding, editing and removing widget parameters. These parameters are passed as input parameters for the frame, based on which the widget was taken. For more information on adding and editing parameters, see [Parameter Editor](#parameter-editor).\n\n ![widget-editor-customize](img/widget-editor-customize.png)\n\n### 4.3.2 Parameter Editor \u003ca name='parameter-editor'\u003e\u003c/a\u003e\n\n This screen allows editing parameters. A parameter is a key-value pair, where the *Name* field is the key and the *Value* field is a value.\n The following types of values are available:\n - ENTITY\n - LIST_ENTITY\n - ENUM\n - DATE\n - DATETIME\n - TIME\n - UUID\n - INTEGER\n - STRING\n - DECIMAL\n - BOOLEAN\n - LONG\n\n ![parameter-editor](img/parameter-editor.png)\n\n## 4.4. Integration of the Dashboard-UI Component \u003ca name='integration-of-the-dashboard-ui-component'\u003e\u003c/a\u003e\n\nTo use the `dashboard-ui` component in your screen, you need to add the special scheme `http://schemas.haulmont.com/cubadshb/ui-component.xsd` in the XML descriptor of the screen.    \nThen add a namespace like `dashboard` for the schema. The schema contains information about the tag `dashboard`, which can contain the `parameter` elements.\n\nHere is an example of adding dashboard to the screen:\n\n```xml\n \u003c?xml version=\"1.0\" encoding=\"UTF-8\" standalone=\"no\"?\u003e\n \u003cwindow xmlns=\"http://schemas.haulmont.com/cuba/window.xsd\"\n         class=\"com.haulmont.example.web.SomeController\"\n         xmlns:dashboard=\"http://schemas.haulmont.com/cubadshb/ui-component.xsd\"\u003e   \n     ...\n         \u003cdashboard:dashboard id=\"dashboardId\"\n                              code=\"usersDashboard\"\n                              timerDelay=\"60\"\u003e\n              \u003cdashboard:parameter name=\"role\" value=\"Admin\" type=\"string\"/\u003e           \n         \u003c/dashboard:dashboard\u003e\n     ...\n```\n\nDashboard tag contains the following attributes:\n\n- `code` - the attribute which will serve for a dashboard search in a database;\n- `jsonPath` - the `classPath` to the dashboard JSON file;\n- `class` - the controller class of the `dashboard-ui` component which has to be inherited from `com.haulmont.addon.dashboard.web.dashboard.frames.uicomponent.WebDashboardFrame`;\n- `timerDelay` - the time period in seconds for refresh a dashboard-ui.\n\n**Note:** when embedding a dashboard, you must specify the `code` or `jsonPath` attribute. When specifying at the same time, the attribute `code` takes precedence over `jsonPath`.\n\nDashboard parameter tag has the following attributes:\n\n- `name` - the name of the parameter, required;\n- `value` - the value of the parameter, required;\n- `type` - the type of the value, can take one of the following values: boolean, date, dateTime, decimal, int, long, string, time, uuid.\n\n**Note:** by default, the parameter type is set to string.\n\n### 4.4.1. Loading a dashboard from JSON file \u003ca name='loading-a-dashboard-from-json-file'\u003e\u003c/a\u003e\n\nYou can load a dashboard to the screen from JSON file. Use `jsonPath` attribute and set the relative path to the file in the XML descriptor. For example:\n\n```xml\n         \u003cdashboard:dashboard id=\"dashboardId\"\n                              jsonPath=\"com/haulmont/sample/petclinic/web/screens/main/Users Dashboard.json\"\n                              timerDelay=\"60\"\u003e\n              \u003cdashboard:parameter name=\"role\" value=\"Admin\" type=\"string\"/\u003e           \n         \u003c/dashboard:dashboard\u003e\n     ...\n```\n\nA dashboard created in the *Dashboard Editor* screen can be exported into JSON file, just click the *Export json* button and specify the path to the file.\n\nAlso, you can import a dashboard from the file in the *Dashboard Editor* screen, just click the *Import json* button, enter the path to the file, specify the unique code and click *OK* to save a dashboard.\n\n## 4.5. Predefined roles \u003ca name='predefined-roles'\u003e\u003c/a\u003e\n\nPredefined security roles:\n- **Dashboard admin** - allows user to create and edit dashboards and widget templates.\n- **Dashboard view** - allows user to see embedded dashboards.\n- **Dashboard browse** - allows user to view a list of available dashboards.\n","project_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Fcuba-platform%2Fdashboard-addon","html_url":"https://awesome.ecosyste.ms/projects/github.com%2Fcuba-platform%2Fdashboard-addon","lists_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Fcuba-platform%2Fdashboard-addon/lists"}