From 5c1cd98ddad4a01339a0129159b5abb01b3b9eb9 Mon Sep 17 00:00:00 2001 From: Mikhail Volkov <47795110+mikhail-vl@users.noreply.github.com> Date: Sun, 8 Sep 2024 15:35:50 -0400 Subject: [PATCH] Add Demo server (#113) --- README.md | 2 +- demo.volkovlabs.io/calendar.json | 546 ++++++++++++++++ demo.volkovlabs.io/charts.json | 375 +++++++++++ demo.volkovlabs.io/home.json | 647 +++++++++++++++++++ demo.volkovlabs.io/news.json | 728 ++++++++++++++++++++++ docker-compose.yml | 5 + provisioning/dashboards/business.json | 10 +- provisioning/datasources/datasources.yaml | 113 ++++ 8 files changed, 2420 insertions(+), 6 deletions(-) create mode 100644 demo.volkovlabs.io/calendar.json create mode 100644 demo.volkovlabs.io/charts.json create mode 100644 demo.volkovlabs.io/home.json create mode 100644 demo.volkovlabs.io/news.json create mode 100644 provisioning/datasources/datasources.yaml diff --git a/README.md b/README.md index a623930..942ed46 100644 --- a/README.md +++ b/README.md @@ -2,7 +2,7 @@ ![App](https://raw.githubusercontent.com/volkovlabs/business-app/main/img/app.png) -![Grafana](https://img.shields.io/badge/Grafana-11.1-orange) +![Grafana](https://img.shields.io/badge/Grafana-11.2-orange) [![YouTube](https://img.shields.io/badge/YouTube-Channel-red)](https://youtube.com/@volkovlabs) ![CI](https://github.com/volkovlabs/business-app/workflows/CI/badge.svg) ![E2E](https://github.com/volkovlabs/business-app/workflows/E2E/badge.svg) diff --git a/demo.volkovlabs.io/calendar.json b/demo.volkovlabs.io/calendar.json new file mode 100644 index 0000000..101aa0e --- /dev/null +++ b/demo.volkovlabs.io/calendar.json @@ -0,0 +1,546 @@ +{ + "annotations": { + "list": [ + { + "builtIn": 1, + "datasource": { + "type": "grafana", + "uid": "-- Grafana --" + }, + "enable": true, + "hide": true, + "iconColor": "rgba(0, 211, 255, 1)", + "name": "Annotations & Alerts", + "type": "dashboard" + } + ] + }, + "editable": true, + "fiscalYearStartMonth": 0, + "graphTooltip": 0, + "links": [ + { + "asDropdown": false, + "icon": "external link", + "includeVars": false, + "keepTime": false, + "tags": ["business"], + "targetBlank": false, + "title": "Business Suite", + "tooltip": "", + "type": "dashboards", + "url": "" + } + ], + "panels": [ + { + "datasource": { + "name": "Business Input", + "type": "marcusolsson-static-datasource", + "uid": "4ytGZmF4k" + }, + "fieldConfig": { + "defaults": { + "thresholds": { + "mode": "absolute", + "steps": [ + { + "color": "green", + "value": null + }, + { + "color": "red", + "value": 80 + } + ] + } + }, + "overrides": [] + }, + "gridPos": { + "h": 10, + "w": 14, + "x": 0, + "y": 0 + }, + "id": 5, + "options": { + "afterRender": "", + "content": "```json\n{{{json @root}}}\n```", + "contentPartials": [], + "defaultContent": "# Business Calendar\n\nThe Business Calendar panel is a Grafana plugin that displays events in a stylish calendar format. The data can come from various data sources.\n\n## Requirements\n\n- The Business Calendar Panel 3.X requires **Grafana 10** or **Grafana 11**.\n- Calendar Panel 2.X requires **Grafana 9.2** or **Grafana 10**.\n- Calendar Panel 1.X requires **Grafana 8.5** or **Grafana 9**.\n\n## Getting Started\n\nYou can install the Business Calendar Panel plugin from the [Grafana Plugins catalog](https://grafana.com/grafana/plugins/marcusolsson-calendar-panel/) or use the Grafana command line tool.\n\nFor the latter, please use the following command:\n\n```bash\ngrafana-cli plugins install marcusolsson-calendar-panel\n```\n\n## Highlights\n\n- Intuitive multi-language toolbar that allows you to:\n - Switch between the **Day**, **Week**, **Month**, **Work Week**, **Year**, and **Agenda** views.\n - Switch back to today's events.\n - Display events from the previous and subsequent time ranges.\n- Fetch and combine event data from any data sources.\n- Event filter by a time range.\n- Event coloring based on the Grafana Thresholds.\n- Enables the opening of a data link instead of a sidebar when clicking on an event.\n- Enables the display of annotations across all dashboards for the specified period.\n- Supports Internationalization: Spanish, French, German, and Chinese.", + "editor": { + "format": "auto", + "language": "markdown" + }, + "editors": ["default"], + "externalStyles": [], + "helpers": "", + "renderMode": "data", + "styles": "", + "wrap": true + }, + "pluginVersion": "5.3.0", + "targets": [ + { + "datasource": { + "type": "marcusolsson-static-datasource", + "uid": "4ytGZmF4k" + }, + "refId": "A" + } + ], + "type": "marcusolsson-dynamictext-panel" + }, + { + "datasource": { + "type": "marcusolsson-static-datasource", + "uid": "4ytGZmF4k" + }, + "fieldConfig": { + "defaults": { + "thresholds": { + "mode": "absolute", + "steps": [ + { + "color": "green", + "value": null + } + ] + } + }, + "overrides": [] + }, + "gridPos": { + "h": 10, + "w": 10, + "x": 14, + "y": 0 + }, + "id": 6, + "options": { + "afterRender": "import('https://esm.sh/youtube-player').then(({ default: YouTubePlayer }) => {\n const videoList = [\"CvLqyY2fQfo\", \"6WGmm5y4fs4\", \"iPJ122x0oos\"];\n const randomVideoId = videoList[Math.floor(Math.random() * videoList.length)];\n\n YouTubePlayer('player', { videoId: randomVideoId });\n})", + "content": "
", + "contentPartials": [], + "defaultContent": "The query didn't return any results.", + "editor": { + "format": "auto", + "language": "html" + }, + "editors": ["afterRender"], + "externalStyles": [], + "helpers": "", + "renderMode": "everyRow", + "styles": "", + "wrap": true + }, + "pluginVersion": "5.3.0", + "targets": [ + { + "datasource": { + "type": "marcusolsson-static-datasource", + "uid": "4ytGZmF4k" + }, + "frame": { + "fields": [ + { + "config": {}, + "name": "URL", + "type": "string", + "values": ["https://www.youtube.com/watch?v=CvLqyY2fQfo"] + } + ], + "meta": {}, + "name": "YouTube" + }, + "refId": "A" + } + ], + "type": "marcusolsson-dynamictext-panel" + }, + { + "collapsed": false, + "gridPos": { + "h": 1, + "w": 24, + "x": 0, + "y": 10 + }, + "id": 7, + "panels": [], + "title": "Examples", + "type": "row" + }, + { + "datasource": { + "type": "marcusolsson-json-datasource", + "uid": "fdtmkexmvk8owc" + }, + "description": "", + "fieldConfig": { + "defaults": { + "color": { + "mode": "thresholds" + }, + "links": [ + { + "title": "Grafana Catalog", + "url": "${__data.fields.URL}" + } + ], + "mappings": [], + "thresholds": { + "mode": "absolute", + "steps": [ + { + "color": "green", + "value": null + } + ] + } + }, + "overrides": [] + }, + "gridPos": { + "h": 14, + "w": 12, + "x": 0, + "y": 11 + }, + "id": 2, + "options": { + "annotations": false, + "annotationsLimit": 100, + "annotationsType": "", + "colors": "event", + "dateFormat": "inherit", + "defaultView": "month", + "descriptionField": ["Description"], + "displayFields": ["description", "labels", "links", "location", "text", "time"], + "labelFields": ["Slug", "Signature"], + "locationField": "Version", + "locationLabel": "Version:", + "preformattedDescription": false, + "quickLinks": false, + "scrollToTime": { + "hours": 0, + "minutes": 0 + }, + "showEventTooltip": true, + "showMonthTime": false, + "textField": "Name", + "timeField": "Updated At", + "timeRangeType": "default", + "views": ["day", "week", "month", "agenda", "work_week", "year"] + }, + "pluginVersion": "3.6.0", + "targets": [ + { + "cacheDurationSeconds": 300, + "datasource": { + "type": "marcusolsson-json-datasource", + "uid": "fdtmkexmvk8owc" + }, + "fields": [ + { + "jsonPath": "$.items[*].name", + "name": "Name" + }, + { + "jsonPath": "$.items[*].slug", + "language": "jsonpath", + "name": "Slug" + }, + { + "jsonPath": "$.items[*].typeName", + "language": "jsonpath", + "name": "Type" + }, + { + "jsonPath": "$.items[*].version", + "language": "jsonpath", + "name": "Version" + }, + { + "jsonPath": "$.items[*].downloads", + "language": "jsonpath", + "name": "Downloads" + }, + { + "jsonPath": "$.items[*].description", + "language": "jsonpath", + "name": "Description" + }, + { + "jsonPath": "$.items[*].signatureType", + "language": "jsonpath", + "name": "Signature" + }, + { + "jsonPath": "$.items[*].orgName", + "language": "jsonpath", + "name": "Organization" + }, + { + "jsonPath": "$.items[*].createdAt", + "language": "jsonpath", + "name": "Created At" + }, + { + "jsonPath": "$.items[*].updatedAt", + "language": "jsonpath", + "name": "Updated At" + }, + { + "jsonPath": "$.items[*].url", + "language": "jsonpath", + "name": "URL" + } + ], + "method": "GET", + "queryParams": "", + "refId": "A", + "urlPath": "/" + } + ], + "title": "Grafana Plugins (JSON data source)", + "type": "marcusolsson-calendar-panel" + }, + { + "datasource": { + "type": "yesoreyeram-infinity-datasource", + "uid": "edtmni4c13i80c" + }, + "description": "", + "fieldConfig": { + "defaults": { + "color": { + "mode": "thresholds" + }, + "links": [ + { + "title": "Grafana Catalog", + "url": "${__data.fields.url}" + } + ], + "mappings": [], + "thresholds": { + "mode": "absolute", + "steps": [ + { + "color": "green", + "value": null + } + ] + } + }, + "overrides": [] + }, + "gridPos": { + "h": 28, + "w": 12, + "x": 12, + "y": 11 + }, + "id": 4, + "options": { + "annotations": false, + "annotationsLimit": 100, + "annotationsType": "", + "colors": "event", + "dateFormat": "inherit", + "defaultView": "work_week", + "descriptionField": ["description"], + "displayFields": ["description", "labels", "links", "location", "text", "time"], + "labelFields": ["orgSlug", "signatureType"], + "locationField": "version", + "locationLabel": "Version:", + "preformattedDescription": true, + "quickLinks": true, + "scrollToTime": { + "hours": 8, + "minutes": 0 + }, + "showEventTooltip": true, + "showMonthTime": true, + "textField": "name", + "textSize": 12, + "timeField": "updatedAt", + "timeRangeType": "default", + "views": ["day", "week", "work_week", "month", "year", "agenda"] + }, + "pluginVersion": "3.6.0", + "targets": [ + { + "columns": [], + "datasource": { + "type": "yesoreyeram-infinity-datasource", + "uid": "edtmni4c13i80c" + }, + "filters": [], + "format": "table", + "global_query_id": "", + "refId": "A", + "root_selector": "", + "source": "url", + "type": "json", + "url": "https://grafana.com/api/plugins", + "url_options": { + "data": "", + "method": "GET" + } + } + ], + "title": "Grafana Plugins (Infinity data source)", + "type": "marcusolsson-calendar-panel" + }, + { + "datasource": { + "type": "marcusolsson-json-datasource", + "uid": "fdtmm8zot2h34e" + }, + "description": "", + "fieldConfig": { + "defaults": { + "color": { + "mode": "thresholds" + }, + "mappings": [], + "thresholds": { + "mode": "absolute", + "steps": [ + { + "color": "green", + "value": null + }, + { + "color": "#EAB839", + "value": 2 + }, + { + "color": "red", + "value": 5 + } + ] + } + }, + "overrides": [] + }, + "gridPos": { + "h": 14, + "w": 12, + "x": 0, + "y": 25 + }, + "id": 3, + "options": { + "annotations": true, + "annotationsLimit": 100, + "annotationsType": "", + "colorField": "Open Issues", + "colors": "thresholds", + "dateFormat": "es", + "defaultView": "agenda", + "descriptionField": ["Description"], + "displayFields": ["description", "labels", "links", "location", "text", "time"], + "endTimeRange": "2025-01-01T04:59:59.000Z", + "labelFields": ["0", "1", "2", "3", "4"], + "locationField": "Description", + "locationLabel": "", + "preformattedDescription": false, + "quickLinks": false, + "scrollToTime": { + "hours": 0, + "minutes": 0 + }, + "showEventTooltip": false, + "showMonthTime": true, + "startTimeRange": "2024-08-15T04:00:00.000Z", + "textField": "Full Name", + "textSize": 12, + "timeField": "Updated At", + "timeRangeType": "default", + "views": ["week", "month", "agenda"] + }, + "pluginVersion": "3.6.0", + "targets": [ + { + "cacheDurationSeconds": 300, + "datasource": { + "type": "marcusolsson-json-datasource", + "uid": "fdtmm8zot2h34e" + }, + "fields": [ + { + "jsonPath": "$.[*].full_name", + "language": "jsonpath", + "name": "Full Name" + }, + { + "jsonPath": "$.[*].description", + "language": "jsonpath", + "name": "Description" + }, + { + "jsonPath": "$.[*].updated_at", + "language": "jsonpath", + "name": "Updated At" + }, + { + "jsonPath": "$.[*].stargazers_count", + "language": "jsonpath", + "name": "Stargazer" + }, + { + "jsonPath": "$.[*].forks_count", + "language": "jsonpath", + "name": "Forks" + }, + { + "jsonPath": "$.[*].topics", + "language": "jsonpath", + "name": "Topics" + }, + { + "jsonPath": "$.[*].open_issues", + "language": "jsonpath", + "name": "Open Issues" + } + ], + "method": "GET", + "queryParams": "", + "refId": "A", + "urlPath": "/" + } + ], + "title": "GitHub Repository (JSON data source)", + "transformations": [ + { + "id": "extractFields", + "options": { + "keepTime": false, + "replace": false, + "source": "Topics" + } + } + ], + "type": "marcusolsson-calendar-panel" + } + ], + "refresh": "", + "schemaVersion": 39, + "tags": ["business"], + "templating": { + "list": [] + }, + "time": { + "from": "now-6h", + "to": "now" + }, + "timepicker": {}, + "timezone": "browser", + "title": "Business Calendar", + "uid": "cdtmkqipv7mdcc", + "version": 4, + "weekStart": "" +} diff --git a/demo.volkovlabs.io/charts.json b/demo.volkovlabs.io/charts.json new file mode 100644 index 0000000..ca6e34a --- /dev/null +++ b/demo.volkovlabs.io/charts.json @@ -0,0 +1,375 @@ +{ + "annotations": { + "list": [ + { + "builtIn": 1, + "datasource": { + "type": "grafana", + "uid": "-- Grafana --" + }, + "enable": true, + "hide": true, + "iconColor": "rgba(0, 211, 255, 1)", + "name": "Annotations & Alerts", + "type": "dashboard" + } + ] + }, + "editable": true, + "fiscalYearStartMonth": 0, + "graphTooltip": 0, + "links": [ + { + "asDropdown": false, + "icon": "external link", + "includeVars": false, + "keepTime": false, + "tags": ["business"], + "targetBlank": false, + "title": "Business Suite", + "tooltip": "", + "type": "dashboards", + "url": "" + } + ], + "panels": [ + { + "datasource": { + "name": "Business Input", + "type": "marcusolsson-static-datasource", + "uid": "4ytGZmF4k" + }, + "fieldConfig": { + "defaults": { + "thresholds": { + "mode": "absolute", + "steps": [ + { + "color": "green", + "value": null + }, + { + "color": "red", + "value": 80 + } + ] + } + }, + "overrides": [] + }, + "gridPos": { + "h": 10, + "w": 14, + "x": 0, + "y": 0 + }, + "id": 5, + "options": { + "afterRender": "", + "content": "```json\n{{{json @root}}}\n```", + "contentPartials": [], + "defaultContent": "# Business Charts\n\nThe Business Charts Panel plugin is a visualization extension for Grafana powered by the Apache ECharts library.\n\n## Requirements\n\n- Business Charts panel 6.X requires **Grafana 10** or **Grafana 11**.\n- Apache ECharts panel 5.X requires **Grafana 9** or **Grafana 10**.\n- Apache ECharts panel 3.X and 4.X require **Grafana 8.5** or **Grafana 9**.\n\n## Getting Started\n\nYou can install the Business Charts Panel from the [Grafana Plugins catalog](https://grafana.com/grafana/plugins/volkovlabs-echarts-panel/) or using the Grafana command line tool.\n\nFor the latter, please use the following command.\n\n```bash\ngrafana-cli plugins install volkovlabs-echarts-panel\n```\n\n## Highlights\n\n- Provides [Monaco Code Editor](https://microsoft.github.io/monaco-editor/) for:\n - Working with Grafana data frames (JavaScript).\n - Updating chart configurations in the JSON format.\n - Customizing theme configurations.\n- Supports Code Editor suggestions for parameters and variables.\n- Supports SVG and Canvas renderers.\n- Supports variables and [locationService](https://grafana.com/docs/grafana/latest/developers/plugins/create-a-grafana-plugin/extend-a-plugin/add-support-for-variables/#set-a-variable-from-your-plugin) to make charts interactive.\n- Includes USA and World GeoJSON maps. Additional maps can be loaded dynamically.\n- Supports Baidu, Gaode, and Google Maps using API with required provision of the access key.\n- Includes [ECharts-GL](https://github.com/ecomfe/echarts-gl) proving 3D plots, globe visualization, and WebGL acceleration.\n- Includes [ecStat](https://github.com/ecomfe/echarts-stat), a statistical and data mining tool.\n- Includes [Liquid Fill Chart](https://github.com/ecomfe/echarts-liquidfill) to represent data in percentage.\n- Supports real-time data updates using streaming data sources and Grafana Live.\n- Supports light and dark themes adjusted to the Grafana theme.\n- Based on [Apache ECharts 5.5.0](https://github.com/apache/echarts/releases/tag/5.5.0).\n- Provides 100+ ready-to-use examples at [echarts.volkovlabs.io](https://echarts.volkovlabs.io).\n- Supports the [Wordcloud extension](https://github.com/ecomfe/echarts-wordcloud)", + "editor": { + "format": "auto", + "language": "markdown" + }, + "editors": ["default"], + "externalStyles": [], + "helpers": "", + "renderMode": "data", + "styles": "", + "wrap": true + }, + "pluginVersion": "5.3.0", + "targets": [ + { + "datasource": { + "type": "marcusolsson-static-datasource", + "uid": "4ytGZmF4k" + }, + "refId": "A" + } + ], + "type": "marcusolsson-dynamictext-panel" + }, + { + "datasource": { + "type": "marcusolsson-static-datasource", + "uid": "4ytGZmF4k" + }, + "fieldConfig": { + "defaults": { + "thresholds": { + "mode": "absolute", + "steps": [ + { + "color": "green", + "value": null + } + ] + } + }, + "overrides": [] + }, + "gridPos": { + "h": 10, + "w": 10, + "x": 14, + "y": 0 + }, + "id": 6, + "options": { + "afterRender": "import('https://esm.sh/youtube-player').then(({ default: YouTubePlayer }) => {\n const videoList = [\"adOjUxrfysc\", \"S3PiL1p1v5U\", \"qfDrAW8-Mh8\"];\n const randomVideoId = videoList[Math.floor(Math.random() * videoList.length)];\n\n YouTubePlayer('player', { videoId: randomVideoId });\n})", + "content": "
", + "contentPartials": [], + "defaultContent": "The query didn't return any results.", + "editor": { + "format": "auto", + "language": "html" + }, + "editors": ["afterRender"], + "externalStyles": [], + "helpers": "", + "renderMode": "everyRow", + "styles": "", + "wrap": true + }, + "pluginVersion": "5.3.0", + "targets": [ + { + "datasource": { + "type": "marcusolsson-static-datasource", + "uid": "4ytGZmF4k" + }, + "frame": { + "fields": [ + { + "config": {}, + "name": "URL", + "type": "string", + "values": ["https://www.youtube.com/watch?v=CvLqyY2fQfo"] + } + ], + "meta": {}, + "name": "YouTube" + }, + "refId": "A" + } + ], + "type": "marcusolsson-dynamictext-panel" + }, + { + "collapsed": false, + "gridPos": { + "h": 1, + "w": 24, + "x": 0, + "y": 10 + }, + "id": 7, + "panels": [], + "title": "Examples", + "type": "row" + }, + { + "datasource": { + "type": "marcusolsson-static-datasource", + "uid": "4ytGZmF4k" + }, + "description": "", + "gridPos": { + "h": 10, + "w": 8, + "x": 0, + "y": 11 + }, + "id": 8, + "options": { + "baidu": { + "callback": "bmapReady", + "key": "" + }, + "editor": { + "format": "auto", + "height": 669 + }, + "editorMode": "visual", + "followTheme": true, + "gaode": { + "key": "", + "plugin": "AMap.Scale,AMap.ToolBar" + }, + "getOption": "", + "google": { + "callback": "gmapReady", + "key": "" + }, + "map": "none", + "renderer": "canvas", + "themeEditor": { + "config": "{}", + "height": 400, + "name": "default" + }, + "visualEditor": { + "code": "return {\n dataset: context.editor.dataset,\n series: context.editor.series,\n xAxis: {\n type: 'category',\n },\n yAxis: {\n type: 'value',\n min: 0,\n }\n}\n", + "codeHeight": 600, + "dataset": [ + { + "name": "Name", + "source": "A" + }, + { + "name": "Amount", + "source": "A" + } + ], + "series": [ + { + "id": "Data", + "name": "Data", + "type": "bar", + "uid": "3df4c04d-2da3-409e-89e7-ac6df19d0461" + } + ] + } + }, + "pluginVersion": "6.3.0", + "targets": [ + { + "datasource": { + "type": "marcusolsson-static-datasource", + "uid": "4ytGZmF4k" + }, + "frame": { + "fields": [ + { + "config": {}, + "name": "Name", + "type": "string", + "values": ["Shirts", "Cardigans", "Chiffons", "Pants", "Heels", "Socks"] + }, + { + "config": {}, + "name": "Amount", + "type": "string", + "values": ["5", "20", "36", "10", "10", "20"] + } + ], + "meta": {}, + "name": "sales" + }, + "refId": "A" + } + ], + "title": "Bar", + "type": "volkovlabs-echarts-panel" + }, + { + "datasource": { + "type": "marcusolsson-static-datasource", + "uid": "4ytGZmF4k" + }, + "description": "", + "gridPos": { + "h": 10, + "w": 8, + "x": 8, + "y": 11 + }, + "id": 9, + "options": { + "baidu": { + "callback": "bmapReady", + "key": "" + }, + "editor": { + "format": "auto", + "height": 600 + }, + "editorMode": "visual", + "gaode": { + "key": "", + "plugin": "AMap.Scale,AMap.ToolBar" + }, + "getOption": "return {\n tooltip: {\n trigger: 'item',\n showDelay: 0,\n transitionDuration: 0.2\n },\n visualMap: {\n left: 'left',\n min: Math.min(...population.map(o => o.value)),\n max: Math.max(...population.map(o => o.value)),\n inRange: {\n color: [\n '#313695',\n '#4575b4',\n '#74add1',\n '#abd9e9',\n '#e0f3f8',\n '#ffffbf',\n '#fee090',\n '#fdae61',\n '#f46d43',\n '#d73027',\n '#a50026'\n ]\n },\n text: ['High', 'Low'],\n calculable: true\n },\n series: [\n {\n name: 'Population',\n type: 'map',\n roam: true,\n map: 'world',\n emphasis: {\n label: {\n show: true\n }\n },\n data: population\n }\n ]\n};\n", + "google": { + "callback": "gmapReady", + "key": "" + }, + "map": "json", + "renderer": "svg", + "themeEditor": { + "config": "{}", + "height": 400, + "name": "default" + }, + "visualEditor": { + "code": "return {\n dataset: context.editor.dataset,\n tooltip: {\n trigger: 'item',\n showDelay: 0,\n transitionDuration: 0.2\n },\n visualMap: {\n left: 'left',\n min: Math.min(...context.editor.dataset.source.map(o => o[1]).slice(1)),\n max: Math.max(...context.editor.dataset.source.map(o => o[1]).slice(1)),\n inRange: {\n color: [\n '#313695',\n '#4575b4',\n '#74add1',\n '#abd9e9',\n '#e0f3f8',\n '#ffffbf',\n '#fee090',\n '#fdae61',\n '#f46d43',\n '#d73027',\n '#a50026'\n ]\n },\n text: ['High', 'Low'],\n calculable: true\n },\n series: [\n {\n name: 'Population',\n type: 'map',\n roam: true,\n map: 'world',\n emphasis: {\n label: {\n show: true\n }\n },\n }\n ]\n};\n", + "codeHeight": 600, + "dataset": [ + { + "name": "Name", + "source": "A" + }, + { + "name": "Value", + "source": "A" + } + ], + "series": [] + } + }, + "pluginVersion": "6.3.0", + "targets": [ + { + "datasource": { + "type": "marcusolsson-static-datasource", + "uid": "4ytGZmF4k" + }, + "frame": { + "fields": [ + { + "config": {}, + "name": "Name", + "type": "string", + "values": [""] + }, + { + "config": {}, + "name": "Value", + "type": "number", + "values": [null] + } + ], + "meta": { + "custom": { + "customCode": "const population = [\n {\n \"Rank\": 1,\n \"name\": \"China\",\n \"value\": \"1448471.4000\",\n \"pop2021\": \"1444216.1070\",\n \"GrowthRate\": \"1.0029\",\n \"area\": 9706961,\n \"Density\": \"149.2199\"\n },\n {\n \"Rank\": 2,\n \"name\": \"India\",\n \"value\": \"1406631.7760\",\n \"pop2021\": \"1393409.0380\",\n \"GrowthRate\": \"1.0095\",\n \"area\": 3287590,\n \"Density\": \"427.8611\"\n },\n {\n \"Rank\": 3,\n \"name\": \"United States\",\n \"value\": \"334805.2690\",\n \"pop2021\": \"332915.0730\",\n \"GrowthRate\": \"1.0057\",\n \"area\": 9372610,\n \"Density\": \"35.7217\"\n },\n {\n \"Rank\": 4,\n \"name\": \"Indonesia\",\n \"value\": \"279134.5050\",\n \"pop2021\": \"276361.7830\",\n \"GrowthRate\": \"1.0100\",\n \"area\": 1904569,\n \"Density\": \"146.5605\"\n },\n {\n \"Rank\": 5,\n \"name\": \"Pakistan\",\n \"value\": \"229488.9940\",\n \"pop2021\": \"225199.9370\",\n \"GrowthRate\": \"1.0190\",\n \"area\": 881912,\n \"Density\": \"260.2176\"\n },\n {\n \"Rank\": 6,\n \"name\": \"Nigeria\",\n \"value\": \"216746.9340\",\n \"pop2021\": \"211400.7080\",\n \"GrowthRate\": \"1.0253\",\n \"area\": 923768,\n \"Density\": \"234.6335\"\n },\n {\n \"Rank\": 7,\n \"name\": \"Brazil\",\n \"value\": \"215353.5930\",\n \"pop2021\": \"213993.4370\",\n \"GrowthRate\": \"1.0064\",\n \"area\": 8515767,\n \"Density\": \"25.2888\"\n },\n {\n \"Rank\": 8,\n \"name\": \"Bangladesh\",\n \"value\": \"167885.6890\",\n \"pop2021\": \"166303.4980\",\n \"GrowthRate\": \"1.0095\",\n \"area\": 147570,\n \"Density\": \"1137.6682\"\n },\n {\n \"Rank\": 9,\n \"name\": \"Russia\",\n \"value\": \"145805.9470\",\n \"pop2021\": \"145912.0250\",\n \"GrowthRate\": \"0.9993\",\n \"area\": 17098242,\n \"Density\": \"8.5275\"\n },\n {\n \"Rank\": 10,\n \"name\": \"Mexico\",\n \"value\": \"131562.7720\",\n \"pop2021\": \"130262.2160\",\n \"GrowthRate\": \"1.0100\",\n \"area\": 1964375,\n \"Density\": \"66.9744\"\n },\n {\n \"Rank\": 11,\n \"name\": \"Japan\",\n \"value\": \"125584.8380\",\n \"pop2021\": \"126050.8040\",\n \"GrowthRate\": \"0.9963\",\n \"area\": 377930,\n \"Density\": \"332.2966\"\n },\n {\n \"Rank\": 12,\n \"name\": \"Ethiopia\",\n \"value\": \"120812.6980\",\n \"pop2021\": \"117876.2270\",\n \"GrowthRate\": \"1.0249\",\n \"area\": 1104300,\n \"Density\": \"109.4021\"\n },\n {\n \"Rank\": 13,\n \"name\": \"Philippines\",\n \"value\": \"112508.9940\",\n \"pop2021\": \"111046.9130\",\n \"GrowthRate\": \"1.0132\",\n \"area\": 342353,\n \"Density\": \"328.6345\"\n },\n {\n \"Rank\": 14,\n \"name\": \"Egypt\",\n \"value\": \"106156.6920\",\n \"pop2021\": \"104258.3270\",\n \"GrowthRate\": \"1.0182\",\n \"area\": 1002450,\n \"Density\": \"105.8972\"\n },\n {\n \"Rank\": 15,\n \"name\": \"Vietnam\",\n \"value\": \"98953.5410\",\n \"pop2021\": \"98168.8330\",\n \"GrowthRate\": \"1.0080\",\n \"area\": 331212,\n \"Density\": \"298.7619\"\n },\n {\n \"Rank\": 16,\n \"name\": \"DR Congo\",\n \"value\": \"95240.7920\",\n \"pop2021\": \"92377.9930\",\n \"GrowthRate\": \"1.0310\",\n \"area\": 2344858,\n \"Density\": \"40.6169\"\n },\n {\n \"Rank\": 17,\n \"name\": \"Iran\",\n \"value\": \"86022.8370\",\n \"pop2021\": \"85028.7590\",\n \"GrowthRate\": \"1.0117\",\n \"area\": 1648195,\n \"Density\": \"52.1921\"\n },\n {\n \"Rank\": 18,\n \"name\": \"Turkey\",\n \"value\": \"85561.9760\",\n \"pop2021\": \"85042.7380\",\n \"GrowthRate\": \"1.0061\",\n \"area\": 783562,\n \"Density\": \"109.1962\"\n },\n {\n \"Rank\": 19,\n \"name\": \"Germany\",\n \"value\": \"83883.5960\",\n \"pop2021\": \"83900.4730\",\n \"GrowthRate\": \"0.9998\",\n \"area\": 357114,\n \"Density\": \"234.8930\"\n },\n {\n \"Rank\": 20,\n \"name\": \"Thailand\",\n \"value\": \"70078.2030\",\n \"pop2021\": \"69950.8500\",\n \"GrowthRate\": \"1.0018\",\n \"area\": 513120,\n \"Density\": \"136.5727\"\n },\n {\n \"Rank\": 21,\n \"name\": \"United Kingdom\",\n \"value\": \"68497.9070\",\n \"pop2021\": \"68207.1160\",\n \"GrowthRate\": \"1.0043\",\n \"area\": 242900,\n \"Density\": \"282.0004\"\n },\n {\n \"Rank\": 22,\n \"name\": \"France\",\n \"value\": \"65584.5180\",\n \"pop2021\": \"65426.1790\",\n \"GrowthRate\": \"1.0024\",\n \"area\": 551695,\n \"Density\": \"118.8782\"\n },\n {\n \"Rank\": 23,\n \"name\": \"Tanzania\",\n \"value\": \"63298.5500\",\n \"pop2021\": \"61498.4370\",\n \"GrowthRate\": \"1.0293\",\n \"area\": 945087,\n \"Density\": \"66.9764\"\n },\n {\n \"Rank\": 24,\n \"name\": \"South Africa\",\n \"value\": \"60756.1350\",\n \"pop2021\": \"60041.9940\",\n \"GrowthRate\": \"1.0119\",\n \"area\": 1221037,\n \"Density\": \"49.7578\"\n },\n {\n \"Rank\": 25,\n \"name\": \"Italy\",\n \"value\": \"60262.7700\",\n \"pop2021\": \"60367.4770\",\n \"GrowthRate\": \"0.9983\",\n \"area\": 301336,\n \"Density\": \"199.9853\"\n },\n {\n \"Rank\": 26,\n \"name\": \"England\",\n \"value\": \"57367.8110\",\n \"GrowthRate\": \"1.0072\",\n \"area\": 130279,\n \"Density\": \"440.3458\"\n },\n {\n \"Rank\": 27,\n \"name\": \"Kenya\",\n \"value\": \"56215.2210\",\n \"pop2021\": \"54985.6980\",\n \"GrowthRate\": \"1.0224\",\n \"area\": 580367,\n \"Density\": \"96.8615\"\n },\n {\n \"Rank\": 28,\n \"name\": \"Myanmar\",\n \"value\": \"55227.1430\",\n \"pop2021\": \"54806.0120\",\n \"GrowthRate\": \"1.0077\",\n \"area\": 676578,\n \"Density\": \"81.6272\"\n },\n {\n \"Rank\": 29,\n \"name\": \"Colombia\",\n \"value\": \"51512.7620\",\n \"pop2021\": \"51265.8440\",\n \"GrowthRate\": \"1.0048\",\n \"area\": 1141748,\n \"Density\": \"45.1175\"\n },\n {\n \"Rank\": 30,\n \"name\": \"South Korea\",\n \"value\": \"51329.8990\",\n \"pop2021\": \"51305.1860\",\n \"GrowthRate\": \"1.0005\",\n \"area\": 100210,\n \"Density\": \"512.2233\"\n },\n {\n \"Rank\": 31,\n \"name\": \"Uganda\",\n \"value\": \"48432.8630\",\n \"pop2021\": \"47123.5310\",\n \"GrowthRate\": \"1.0278\",\n \"area\": 241550,\n \"Density\": \"200.5086\"\n },\n {\n \"Rank\": 32,\n \"name\": \"Spain\",\n \"value\": \"46719.1420\",\n \"pop2021\": \"46745.2160\",\n \"GrowthRate\": \"0.9994\",\n \"area\": 505992,\n \"Density\": \"92.3318\"\n },\n {\n \"Rank\": 33,\n \"name\": \"Argentina\",\n \"value\": \"46010.2340\",\n \"pop2021\": \"45605.8260\",\n \"GrowthRate\": \"1.0089\",\n \"area\": 2780400,\n \"Density\": \"16.5481\"\n },\n {\n \"Rank\": 34,\n \"name\": \"Sudan\",\n \"value\": \"45992.0200\",\n \"pop2021\": \"44909.3530\",\n \"GrowthRate\": \"1.0241\",\n \"area\": 1886068,\n \"Density\": \"24.3851\"\n },\n {\n \"Rank\": 35,\n \"name\": \"Algeria\",\n \"value\": \"45350.1480\",\n \"pop2021\": \"44616.6240\",\n \"GrowthRate\": \"1.0164\",\n \"area\": 2381741,\n \"Density\": \"19.0408\"\n },\n {\n \"Rank\": 36,\n \"name\": \"Ukraine\",\n \"value\": \"43192.1220\",\n \"pop2021\": \"43466.8190\",\n \"GrowthRate\": \"0.9937\",\n \"area\": 603500,\n \"Density\": \"71.5694\"\n },\n {\n \"Rank\": 37,\n \"name\": \"Iraq\",\n \"value\": \"42164.9650\",\n \"pop2021\": \"41179.3500\",\n \"GrowthRate\": \"1.0239\",\n \"area\": 438317,\n \"Density\": \"96.1974\"\n },\n {\n \"Rank\": 38,\n \"name\": \"Afghanistan\",\n \"value\": \"40754.3880\",\n \"pop2021\": \"39835.4280\",\n \"GrowthRate\": \"1.0231\",\n \"area\": 652230,\n \"Density\": \"62.4847\"\n },\n {\n \"Rank\": 39,\n \"name\": \"Canada\",\n \"value\": \"38388.4190\",\n \"pop2021\": \"38067.9030\",\n \"GrowthRate\": \"1.0084\",\n \"area\": 9984670,\n \"Density\": \"3.8447\"\n },\n {\n \"Rank\": 40,\n \"name\": \"Morocco\",\n \"value\": \"37772.7560\",\n \"pop2021\": \"37344.7950\",\n \"GrowthRate\": \"1.0115\",\n \"area\": 446550,\n \"Density\": \"84.5880\"\n },\n {\n \"Rank\": 41,\n \"name\": \"Poland\",\n \"value\": \"37739.7850\",\n \"pop2021\": \"37797.0050\",\n \"GrowthRate\": \"0.9985\",\n \"area\": 312679,\n \"Density\": \"120.6982\"\n },\n {\n \"Rank\": 42,\n \"name\": \"Saudi Arabia\",\n \"value\": \"35844.9090\",\n \"pop2021\": \"35340.6830\",\n \"GrowthRate\": \"1.0143\",\n \"area\": 2149690,\n \"Density\": \"16.6745\"\n },\n {\n \"Rank\": 43,\n \"name\": \"Angola\",\n \"value\": \"35027.3430\",\n \"pop2021\": \"33933.6100\",\n \"GrowthRate\": \"1.0322\",\n \"area\": 1246700,\n \"Density\": \"28.0960\"\n },\n {\n \"Rank\": 44,\n \"name\": \"Uzbekistan\",\n \"value\": \"34382.0840\",\n \"pop2021\": \"33935.7630\",\n \"GrowthRate\": \"1.0132\",\n \"area\": 447400,\n \"Density\": \"76.8486\"\n },\n {\n \"Rank\": 45,\n \"name\": \"Peru\",\n \"value\": \"33684.2080\",\n \"pop2021\": \"33359.4180\",\n \"GrowthRate\": \"1.0097\",\n \"area\": 1285216,\n \"Density\": \"26.2090\"\n },\n {\n \"Rank\": 46,\n \"name\": \"Malaysia\",\n \"value\": \"33181.0720\",\n \"pop2021\": \"32776.1940\",\n \"GrowthRate\": \"1.0124\",\n \"area\": 330803,\n \"Density\": \"100.3046\"\n },\n {\n \"Rank\": 47,\n \"name\": \"Mozambique\",\n \"value\": \"33089.4610\",\n \"pop2021\": \"32163.0470\",\n \"GrowthRate\": \"1.0288\",\n \"area\": 801590,\n \"Density\": \"41.2798\"\n },\n {\n \"Rank\": 48,\n \"name\": \"Ghana\",\n \"value\": \"32395.4500\",\n \"pop2021\": \"31732.1290\",\n \"GrowthRate\": \"1.0209\",\n \"area\": 238533,\n \"Density\": \"135.8112\"\n },\n {\n \"Rank\": 49,\n \"name\": \"Yemen\",\n \"value\": \"31154.8670\",\n \"pop2021\": \"30490.6400\",\n \"GrowthRate\": \"1.0218\",\n \"area\": 527968,\n \"Density\": \"59.0090\"\n },\n {\n \"Rank\": 50,\n \"name\": \"Nepal\",\n \"value\": \"30225.5820\",\n \"pop2021\": \"29674.9200\",\n \"GrowthRate\": \"1.0186\",\n \"area\": 147181,\n \"Density\": \"205.3633\"\n },\n {\n \"Rank\": 51,\n \"name\": \"Venezuela\",\n \"value\": \"29266.9910\",\n \"pop2021\": \"28704.9540\",\n \"GrowthRate\": \"1.0196\",\n \"area\": 916445,\n \"Density\": \"31.9353\"\n },\n {\n \"Rank\": 52,\n \"name\": \"Madagascar\",\n \"value\": \"29178.0770\",\n \"pop2021\": \"28427.3280\",\n \"GrowthRate\": \"1.0264\",\n \"area\": 587041,\n \"Density\": \"49.7036\"\n },\n {\n \"Rank\": 53,\n \"name\": \"Cameroon\",\n \"value\": \"27911.5480\",\n \"pop2021\": \"27224.2650\",\n \"GrowthRate\": \"1.0252\",\n \"area\": 475442,\n \"Density\": \"58.7065\"\n },\n {\n \"Rank\": 54,\n \"name\": \"Ivory Coast\",\n \"value\": \"27742.2980\",\n \"pop2021\": \"27053.6290\",\n \"GrowthRate\": \"1.0255\",\n \"area\": 322463,\n \"Density\": \"86.0325\"\n },\n {\n \"Rank\": 55,\n \"name\": \"Niger\",\n \"value\": \"26083.6600\",\n \"pop2021\": \"25130.8170\",\n \"GrowthRate\": \"1.0379\",\n \"area\": 1267000,\n \"Density\": \"20.5869\"\n },\n {\n \"Rank\": 56,\n \"name\": \"Australia\",\n \"value\": \"26068.7920\",\n \"pop2021\": \"25788.2150\",\n \"GrowthRate\": \"1.0109\",\n \"area\": 7692024,\n \"Density\": \"3.3891\"\n },\n {\n \"Rank\": 57,\n \"name\": \"North Korea\",\n \"value\": \"25990.6790\",\n \"pop2021\": \"25887.0410\",\n \"GrowthRate\": \"1.0040\",\n \"area\": 120538,\n \"Density\": \"215.6223\"\n },\n {\n \"Rank\": 58,\n \"name\": \"Taiwan\",\n \"value\": \"23888.5950\",\n \"pop2021\": \"23855.0100\",\n \"GrowthRate\": \"1.0014\",\n \"area\": 36193,\n \"Density\": \"660.0336\"\n },\n {\n \"Rank\": 59,\n \"name\": \"Burkina Faso\",\n \"value\": \"22102.8380\",\n \"pop2021\": \"21497.0960\",\n \"GrowthRate\": \"1.0282\",\n \"area\": 272967,\n \"Density\": \"80.9726\"\n },\n {\n \"Rank\": 60,\n \"name\": \"Sri Lanka\",\n \"value\": \"21575.8420\",\n \"pop2021\": \"21497.3100\",\n \"GrowthRate\": \"1.0037\",\n \"area\": 65610,\n \"Density\": \"328.8499\"\n },\n {\n \"Rank\": 61,\n \"name\": \"Mali\",\n \"value\": \"21473.7640\",\n \"pop2021\": \"20855.7350\",\n \"GrowthRate\": \"1.0296\",\n \"area\": 1240192,\n \"Density\": \"17.3149\"\n },\n {\n \"Rank\": 62,\n \"name\": \"Malawi\",\n \"value\": \"20180.8390\",\n \"pop2021\": \"19647.6840\",\n \"GrowthRate\": \"1.0271\",\n \"area\": 118484,\n \"Density\": \"170.3254\"\n },\n {\n \"Rank\": 63,\n \"name\": \"Zambia\",\n \"value\": \"19470.2340\",\n \"pop2021\": \"18920.6510\",\n \"GrowthRate\": \"1.0290\",\n \"area\": 752612,\n \"Density\": \"25.8702\"\n },\n {\n \"Rank\": 64,\n \"name\": \"Syria\",\n \"value\": \"19364.8090\",\n \"pop2021\": \"18275.7020\",\n \"GrowthRate\": \"1.0596\",\n \"area\": 185180,\n \"Density\": \"104.5729\"\n },\n {\n \"Rank\": 65,\n \"name\": \"Chile\",\n \"value\": \"19250.1950\",\n \"pop2021\": \"19212.3610\",\n \"GrowthRate\": \"1.0020\",\n \"area\": 756102,\n \"Density\": \"25.4598\"\n },\n {\n \"Rank\": 66,\n \"name\": \"Kazakhstan\",\n \"value\": \"19205.0430\",\n \"pop2021\": \"18994.9620\",\n \"GrowthRate\": \"1.0111\",\n \"area\": 2724900,\n \"Density\": \"7.0480\"\n },\n {\n \"Rank\": 67,\n \"name\": \"Romania\",\n \"value\": \"19031.3350\",\n \"pop2021\": \"19127.7740\",\n \"GrowthRate\": \"0.9950\",\n \"area\": 238391,\n \"Density\": \"79.8324\"\n },\n {\n \"Rank\": 68,\n \"name\": \"Guatemala\",\n \"value\": \"18584.0390\",\n \"pop2021\": \"18249.8600\",\n \"GrowthRate\": \"1.0183\",\n \"area\": 108889,\n \"Density\": \"170.6696\"\n },\n {\n \"Rank\": 69,\n \"name\": \"Ecuador\",\n \"value\": \"18113.3610\",\n \"pop2021\": \"17888.4750\",\n \"GrowthRate\": \"1.0126\",\n \"area\": 276841,\n \"Density\": \"65.4288\"\n },\n {\n \"Rank\": 70,\n \"name\": \"Senegal\",\n \"value\": \"17653.6710\",\n \"pop2021\": \"17196.3010\",\n \"GrowthRate\": \"1.0266\",\n \"area\": 196722,\n \"Density\": \"89.7392\"\n },\n {\n \"Rank\": 71,\n \"name\": \"Chad\",\n \"value\": \"17413.5800\",\n \"pop2021\": \"16914.9850\",\n \"GrowthRate\": \"1.0295\",\n \"area\": 1284000,\n \"Density\": \"13.5620\"\n },\n {\n \"Rank\": 72,\n \"name\": \"Netherlands\",\n \"value\": \"17211.4470\",\n \"pop2021\": \"17173.0990\",\n \"GrowthRate\": \"1.0022\",\n \"area\": 41850,\n \"Density\": \"411.2652\"\n },\n {\n \"Rank\": 73,\n \"name\": \"Cambodia\",\n \"value\": \"17168.6390\",\n \"pop2021\": \"16946.4380\",\n \"GrowthRate\": \"1.0131\",\n \"area\": 181035,\n \"Density\": \"94.8360\"\n },\n {\n \"Rank\": 74,\n \"name\": \"Somalia\",\n \"value\": \"16841.7950\",\n \"pop2021\": \"16359.5040\",\n \"GrowthRate\": \"1.0295\",\n \"area\": 637657,\n \"Density\": \"26.4120\"\n },\n {\n \"Rank\": 75,\n \"name\": \"Zimbabwe\",\n \"value\": \"15331.4280\",\n \"pop2021\": \"15092.1710\",\n \"GrowthRate\": \"1.0159\",\n \"area\": 390757,\n \"Density\": \"39.2352\"\n },\n {\n \"Rank\": 76,\n \"name\": \"Guinea\",\n \"value\": \"13865.6910\",\n \"pop2021\": \"13497.2440\",\n \"GrowthRate\": \"1.0273\",\n \"area\": 245857,\n \"Density\": \"56.3974\"\n },\n {\n \"Rank\": 77,\n \"name\": \"Rwanda\",\n \"value\": \"13600.4640\",\n \"pop2021\": \"13276.5130\",\n \"GrowthRate\": \"1.0244\",\n \"area\": 26338,\n \"Density\": \"516.3818\"\n },\n {\n \"Rank\": 78,\n \"name\": \"Benin\",\n \"value\": \"12784.7260\",\n \"pop2021\": \"12451.0400\",\n \"GrowthRate\": \"1.0268\",\n \"area\": 112622,\n \"Density\": \"113.5189\"\n },\n {\n \"Rank\": 79,\n \"name\": \"Burundi\",\n \"value\": \"12624.8400\",\n \"pop2021\": \"12255.4330\",\n \"GrowthRate\": \"1.0301\",\n \"area\": 27834,\n \"Density\": \"453.5762\"\n },\n {\n \"Rank\": 80,\n \"name\": \"Tunisia\",\n \"value\": \"12046.6560\",\n \"pop2021\": \"11935.7660\",\n \"GrowthRate\": \"1.0093\",\n \"area\": 163610,\n \"Density\": \"73.6303\"\n },\n {\n \"Rank\": 81,\n \"name\": \"Bolivia\",\n \"value\": \"11992.6560\",\n \"pop2021\": \"11832.9400\",\n \"GrowthRate\": \"1.0135\",\n \"area\": 1098581,\n \"Density\": \"10.9165\"\n },\n {\n \"Rank\": 82,\n \"name\": \"Haiti\",\n \"value\": \"11680.2830\",\n \"pop2021\": \"11541.6850\",\n \"GrowthRate\": \"1.0120\",\n \"area\": 27750,\n \"Density\": \"420.9111\"\n },\n {\n \"Rank\": 83,\n \"name\": \"Belgium\",\n \"value\": \"11668.2780\",\n \"pop2021\": \"11632.3260\",\n \"GrowthRate\": \"1.0031\",\n \"area\": 30528,\n \"Density\": \"382.2156\"\n },\n {\n \"Rank\": 84,\n \"name\": \"South Sudan\",\n \"value\": \"11618.5110\",\n \"pop2021\": \"11381.3780\",\n \"GrowthRate\": \"1.0208\",\n \"area\": 619745,\n \"Density\": \"18.7472\"\n },\n {\n \"Rank\": 85,\n \"name\": \"Cuba\",\n \"value\": \"11305.6520\",\n \"pop2021\": \"11317.5050\",\n \"GrowthRate\": \"0.9990\",\n \"area\": 109884,\n \"Density\": \"102.8872\"\n },\n {\n \"Rank\": 86,\n \"name\": \"Dominican Republic\",\n \"value\": \"11056.3700\",\n \"pop2021\": \"10953.7030\",\n \"GrowthRate\": \"1.0094\",\n \"area\": 48671,\n \"Density\": \"227.1655\"\n },\n {\n \"Rank\": 87,\n \"name\": \"Czech Republic\",\n \"value\": \"10736.7840\",\n \"pop2021\": \"10724.5550\",\n \"GrowthRate\": \"1.0011\",\n \"area\": 78865,\n \"Density\": \"136.1413\"\n },\n {\n \"Rank\": 88,\n \"name\": \"Greece\",\n \"value\": \"10316.6370\",\n \"pop2021\": \"10370.7440\",\n \"GrowthRate\": \"0.9948\",\n \"area\": 131990,\n \"Density\": \"78.1623\"\n },\n {\n \"Rank\": 89,\n \"name\": \"Jordan\",\n \"value\": \"10300.8690\",\n \"pop2021\": \"10269.0210\",\n \"GrowthRate\": \"1.0031\",\n \"area\": 89342,\n \"Density\": \"115.2970\"\n },\n {\n \"Rank\": 90,\n \"name\": \"Azerbaijan\",\n \"value\": \"10300.2050\",\n \"pop2021\": \"10223.3420\",\n \"GrowthRate\": \"1.0075\",\n \"area\": 86600,\n \"Density\": \"118.9400\"\n },\n {\n \"Rank\": 91,\n \"name\": \"Honduras\",\n \"value\": \"10221.2470\",\n \"pop2021\": \"10062.9910\",\n \"GrowthRate\": \"1.0157\",\n \"area\": 112492,\n \"Density\": \"90.8620\"\n },\n {\n \"Rank\": 92,\n \"name\": \"Sweden\",\n \"value\": \"10218.9710\",\n \"pop2021\": \"10160.1690\",\n \"GrowthRate\": \"1.0058\",\n \"area\": 450295,\n \"Density\": \"22.6939\"\n },\n {\n \"Rank\": 93,\n \"name\": \"Portugal\",\n \"value\": \"10140.5700\",\n \"pop2021\": \"10167.9250\",\n \"GrowthRate\": \"0.9973\",\n \"area\": 92090,\n \"Density\": \"110.1159\"\n },\n {\n \"Rank\": 94,\n \"name\": \"United Arab Emirates\",\n \"value\": \"10081.7850\",\n \"pop2021\": \"9991.0890\",\n \"GrowthRate\": \"1.0091\",\n \"area\": 83600,\n \"Density\": \"120.5955\"\n },\n {\n \"Rank\": 95,\n \"name\": \"Tajikistan\",\n \"value\": \"9957.4640\",\n \"pop2021\": \"9749.6270\",\n \"GrowthRate\": \"1.0213\",\n \"area\": 143100,\n \"Density\": \"69.5840\"\n },\n {\n \"Rank\": 96,\n \"name\": \"Hungary\",\n \"value\": \"9606.2590\",\n \"pop2021\": \"9634.1640\",\n \"GrowthRate\": \"0.9971\",\n \"area\": 93028,\n \"Density\": \"103.2620\"\n },\n {\n \"Rank\": 97,\n \"name\": \"Belarus\",\n \"value\": \"9432.8000\",\n \"pop2021\": \"9442.8620\",\n \"GrowthRate\": \"0.9989\",\n \"area\": 207600,\n \"Density\": \"45.4374\"\n },\n {\n \"Rank\": 98,\n \"name\": \"Papua New Guinea\",\n \"value\": \"9292.1690\",\n \"pop2021\": \"9119.0100\",\n \"GrowthRate\": \"1.0190\",\n \"area\": 462840,\n \"Density\": \"20.0764\"\n },\n {\n \"Rank\": 99,\n \"name\": \"Austria\",\n \"value\": \"9066.7100\",\n \"pop2021\": \"9043.0700\",\n \"GrowthRate\": \"1.0026\",\n \"area\": 83871,\n \"Density\": \"108.1030\"\n },\n {\n \"Rank\": 100,\n \"name\": \"Israel\",\n \"value\": \"8922.8920\",\n \"pop2021\": \"8789.7740\",\n \"GrowthRate\": \"1.0151\",\n \"area\": 20770,\n \"Density\": \"429.6048\"\n },\n {\n \"Rank\": 101,\n \"name\": \"Switzerland\",\n \"value\": \"8773.6370\",\n \"pop2021\": \"8715.4940\",\n \"GrowthRate\": \"1.0067\",\n \"area\": 41284,\n \"Density\": \"212.5191\"\n },\n {\n \"Rank\": 102,\n \"name\": \"Togo\",\n \"value\": \"8680.8370\",\n \"pop2021\": \"8478.2500\",\n \"GrowthRate\": \"1.0239\",\n \"area\": 56785,\n \"Density\": \"152.8720\"\n },\n {\n \"Rank\": 103,\n \"name\": \"Serbia\",\n \"value\": \"8653.0160\",\n \"pop2021\": \"8697.5500\",\n \"GrowthRate\": \"0.9949\",\n \"area\": 88361,\n \"Density\": \"97.9280\"\n },\n {\n \"Rank\": 104,\n \"name\": \"Sierra Leone\",\n \"value\": \"8306.4360\",\n \"pop2021\": \"8141.3430\",\n \"GrowthRate\": \"1.0203\",\n \"area\": 71740,\n \"Density\": \"115.7853\"\n },\n {\n \"Rank\": 105,\n \"name\": \"Hong Kong\",\n \"value\": \"7604.2990\",\n \"pop2021\": \"7552.8100\",\n \"GrowthRate\": \"1.0068\",\n \"area\": 1104,\n \"Density\": \"6887.9520\"\n },\n {\n \"Rank\": 106,\n \"name\": \"Laos\",\n \"value\": \"7481.0230\",\n \"pop2021\": \"7379.3580\",\n \"GrowthRate\": \"1.0138\",\n \"area\": 236800,\n \"Density\": \"31.5922\"\n },\n {\n \"Rank\": 107,\n \"name\": \"Paraguay\",\n \"value\": \"7305.8430\",\n \"pop2021\": \"7219.6380\",\n \"GrowthRate\": \"1.0119\",\n \"area\": 406752,\n \"Density\": \"17.9614\"\n },\n {\n \"Rank\": 108,\n \"name\": \"Libya\",\n \"value\": \"7040.7450\",\n \"pop2021\": \"6958.5320\",\n \"GrowthRate\": \"1.0118\",\n \"area\": 1759540,\n \"Density\": \"4.0015\"\n },\n {\n \"Rank\": 109,\n \"name\": \"Bulgaria\",\n \"value\": \"6844.5970\",\n \"pop2021\": \"6896.6630\",\n \"GrowthRate\": \"0.9925\",\n \"area\": 110879,\n \"Density\": \"61.7303\"\n },\n {\n \"Rank\": 110,\n \"name\": \"Nicaragua\",\n \"value\": \"6779.1000\",\n \"pop2021\": \"6702.3850\",\n \"GrowthRate\": \"1.0114\",\n \"area\": 130373,\n \"Density\": \"51.9977\"\n },\n {\n \"Rank\": 111,\n \"name\": \"Kyrgyzstan\",\n \"value\": \"6728.2710\",\n \"pop2021\": \"6628.3560\",\n \"GrowthRate\": \"1.0151\",\n \"area\": 199951,\n \"Density\": \"33.6496\"\n },\n {\n \"Rank\": 112,\n \"name\": \"Lebanon\",\n \"value\": \"6684.8490\",\n \"pop2021\": \"6769.1460\",\n \"GrowthRate\": \"0.9875\",\n \"area\": 10452,\n \"Density\": \"639.5761\"\n },\n {\n \"Rank\": 113,\n \"name\": \"El Salvador\",\n \"value\": \"6550.3890\",\n \"pop2021\": \"6518.4990\",\n \"GrowthRate\": \"1.0049\",\n \"area\": 21041,\n \"Density\": \"311.3155\"\n },\n {\n \"Rank\": 114,\n \"name\": \"Turkmenistan\",\n \"value\": \"6201.9430\",\n \"pop2021\": \"6117.9240\",\n \"GrowthRate\": \"1.0137\",\n \"area\": 488100,\n \"Density\": \"12.7063\"\n },\n {\n \"Rank\": 115,\n \"name\": \"Singapore\",\n \"value\": \"5943.5460\",\n \"pop2021\": \"5896.6860\",\n \"GrowthRate\": \"1.0079\",\n \"area\": 710,\n \"Density\": \"8371.1915\"\n },\n {\n \"Rank\": 116,\n \"name\": \"Denmark\",\n \"value\": \"5834.9500\",\n \"pop2021\": \"5813.2980\",\n \"GrowthRate\": \"1.0037\",\n \"area\": 43094,\n \"Density\": \"135.4005\"\n },\n {\n \"Rank\": 117,\n \"name\": \"Republic of the Congo\",\n \"value\": \"5797.8050\",\n \"pop2021\": \"5657.0130\",\n \"GrowthRate\": \"1.0249\",\n \"area\": 342000,\n \"Density\": \"16.9526\"\n },\n {\n \"Rank\": 118,\n \"name\": \"Finland\",\n \"value\": \"5554.9600\",\n \"pop2021\": \"5548.3600\",\n \"GrowthRate\": \"1.0012\",\n \"area\": 338424,\n \"Density\": \"16.4142\"\n },\n {\n \"Rank\": 119,\n \"name\": \"Norway\",\n \"value\": \"5511.3700\",\n \"pop2021\": \"5465.6300\",\n \"GrowthRate\": \"1.0084\",\n \"area\": 323802,\n \"Density\": \"17.0208\"\n },\n {\n \"Rank\": 120,\n \"name\": \"Scotland\",\n \"value\": \"5504.6507\",\n \"GrowthRate\": \"1.0035\",\n \"area\": 77933,\n \"Density\": \"70.6331\"\n },\n {\n \"Rank\": 121,\n \"name\": \"Slovakia\",\n \"value\": \"5460.1930\",\n \"pop2021\": \"5460.7210\",\n \"GrowthRate\": \"0.9999\",\n \"area\": 49037,\n \"Density\": \"111.3484\"\n },\n {\n \"Rank\": 122,\n \"name\": \"Palestine\",\n \"value\": \"5345.5410\",\n \"pop2021\": \"5222.7480\",\n \"GrowthRate\": \"1.0235\",\n \"area\": 6220,\n \"Density\": \"859.4117\"\n },\n {\n \"Rank\": 123,\n \"name\": \"Oman\",\n \"value\": \"5323.9930\",\n \"pop2021\": \"5223.3750\",\n \"GrowthRate\": \"1.0193\",\n \"area\": 309500,\n \"Density\": \"17.2019\"\n },\n {\n \"Rank\": 124,\n \"name\": \"Liberia\",\n \"value\": \"5305.1170\",\n \"pop2021\": \"5180.2030\",\n \"GrowthRate\": \"1.0241\",\n \"area\": 111369,\n \"Density\": \"47.6355\"\n },\n {\n \"Rank\": 125,\n \"name\": \"Costa Rica\",\n \"value\": \"5182.3540\",\n \"pop2021\": \"5139.0520\",\n \"GrowthRate\": \"1.0084\",\n \"area\": 51100,\n \"Density\": \"101.4159\"\n },\n {\n \"Rank\": 126,\n \"name\": \"Ireland\",\n \"value\": \"5020.1990\",\n \"pop2021\": \"4982.9070\",\n \"GrowthRate\": \"1.0075\",\n \"area\": 70273,\n \"Density\": \"71.4385\"\n },\n {\n \"Rank\": 127,\n \"name\": \"Central African Republic\",\n \"value\": \"5016.6780\",\n \"pop2021\": \"4919.9810\",\n \"GrowthRate\": \"1.0197\",\n \"area\": 622984,\n \"Density\": \"8.0527\"\n },\n {\n \"Rank\": 128,\n \"name\": \"Mauritania\",\n \"value\": \"4901.9810\",\n \"pop2021\": \"4775.1190\",\n \"GrowthRate\": \"1.0266\",\n \"area\": 1030700,\n \"Density\": \"4.7560\"\n },\n {\n \"Rank\": 129,\n \"name\": \"New Zealand\",\n \"value\": \"4898.2030\",\n \"pop2021\": \"4860.6430\",\n \"GrowthRate\": \"1.0077\",\n \"area\": 270467,\n \"Density\": \"18.1102\"\n },\n {\n \"Rank\": 130,\n \"name\": \"Panama\",\n \"value\": \"4446.9640\",\n \"pop2021\": \"4381.5790\",\n \"GrowthRate\": \"1.0149\",\n \"area\": 75417,\n \"Density\": \"58.9650\"\n },\n {\n \"Rank\": 131,\n \"name\": \"Kuwait\",\n \"value\": \"4380.3260\",\n \"pop2021\": \"4328.5500\",\n \"GrowthRate\": \"1.0120\",\n \"area\": 17818,\n \"Density\": \"245.8371\"\n },\n {\n \"Rank\": 132,\n \"name\": \"Croatia\",\n \"value\": \"4059.2860\",\n \"pop2021\": \"4081.6510\",\n \"GrowthRate\": \"0.9945\",\n \"area\": 56594,\n \"Density\": \"71.7264\"\n },\n {\n \"Rank\": 133,\n \"name\": \"Moldova\",\n \"value\": \"4013.1710\",\n \"pop2021\": \"4024.0190\",\n \"GrowthRate\": \"0.9973\",\n \"area\": 33846,\n \"Density\": \"118.5715\"\n },\n {\n \"Rank\": 134,\n \"name\": \"Georgia\",\n \"value\": \"3968.7380\",\n \"pop2021\": \"3979.7650\",\n \"GrowthRate\": \"0.9972\",\n \"area\": 69700,\n \"Density\": \"56.9403\"\n },\n {\n \"Rank\": 135,\n \"name\": \"Eritrea\",\n \"value\": \"3662.2440\",\n \"pop2021\": \"3601.4670\",\n \"GrowthRate\": \"1.0169\",\n \"area\": 117600,\n \"Density\": \"31.1415\"\n },\n {\n \"Rank\": 136,\n \"name\": \"Uruguay\",\n \"value\": \"3496.0160\",\n \"pop2021\": \"3485.1510\",\n \"GrowthRate\": \"1.0031\",\n \"area\": 181034,\n \"Density\": \"19.3114\"\n },\n {\n \"Rank\": 137,\n \"name\": \"Mongolia\",\n \"value\": \"3378.0780\",\n \"pop2021\": \"3329.2890\",\n \"GrowthRate\": \"1.0147\",\n \"area\": 1564110,\n \"Density\": \"2.1597\"\n },\n {\n \"Rank\": 138,\n \"name\": \"Bosnia and Herzegovina\",\n \"value\": \"3249.3170\",\n \"pop2021\": \"3263.4660\",\n \"GrowthRate\": \"0.9957\",\n \"area\": 51209,\n \"Density\": \"63.4521\"\n },\n {\n \"Rank\": 139,\n \"name\": \"Wales\",\n \"value\": \"3193.6653\",\n \"GrowthRate\": \"1.0038\",\n \"area\": 20779,\n \"Density\": \"153.6968\"\n },\n {\n \"Rank\": 140,\n \"name\": \"Jamaica\",\n \"value\": \"2985.0940\",\n \"pop2021\": \"2973.4630\",\n \"GrowthRate\": \"1.0039\",\n \"area\": 10991,\n \"Density\": \"271.5944\"\n },\n {\n \"Rank\": 141,\n \"name\": \"Qatar\",\n \"value\": \"2979.9150\",\n \"pop2021\": \"2930.5280\",\n \"GrowthRate\": \"1.0169\",\n \"area\": 11586,\n \"Density\": \"257.1996\"\n },\n {\n \"Rank\": 142,\n \"name\": \"Armenia\",\n \"value\": \"2971.9660\",\n \"pop2021\": \"2968.1270\",\n \"GrowthRate\": \"1.0013\",\n \"area\": 29743,\n \"Density\": \"99.9215\"\n },\n {\n \"Rank\": 143,\n \"name\": \"Albania\",\n \"value\": \"2866.3740\",\n \"pop2021\": \"2872.9330\",\n \"GrowthRate\": \"0.9977\",\n \"area\": 28748,\n \"Density\": \"99.7069\"\n },\n {\n \"Rank\": 144,\n \"name\": \"Puerto Rico\",\n \"value\": \"2829.8120\",\n \"pop2021\": \"2828.2550\",\n \"GrowthRate\": \"1.0006\",\n \"area\": 8870,\n \"Density\": \"319.0318\"\n },\n {\n \"Rank\": 145,\n \"name\": \"Lithuania\",\n \"value\": \"2661.7080\",\n \"pop2021\": \"2689.8620\",\n \"GrowthRate\": \"0.9895\",\n \"area\": 65300,\n \"Density\": \"40.7612\"\n },\n {\n \"Rank\": 146,\n \"name\": \"Namibia\",\n \"value\": \"2633.8740\",\n \"pop2021\": \"2587.3440\",\n \"GrowthRate\": \"1.0180\",\n \"area\": 825615,\n \"Density\": \"3.1902\"\n },\n {\n \"Rank\": 147,\n \"name\": \"Gambia\",\n \"value\": \"2558.4820\",\n \"pop2021\": \"2486.9450\",\n \"GrowthRate\": \"1.0288\",\n \"area\": 10689,\n \"Density\": \"239.3565\"\n },\n {\n \"Rank\": 148,\n \"name\": \"Botswana\",\n \"value\": \"2441.1620\",\n \"pop2021\": \"2397.2410\",\n \"GrowthRate\": \"1.0183\",\n \"area\": 582000,\n \"Density\": \"4.1944\"\n },\n {\n \"Rank\": 149,\n \"name\": \"Gabon\",\n \"value\": \"2331.5330\",\n \"pop2021\": \"2278.8250\",\n \"GrowthRate\": \"1.0231\",\n \"area\": 267668,\n \"Density\": \"8.7105\"\n },\n {\n \"Rank\": 150,\n \"name\": \"Lesotho\",\n \"value\": \"2175.6990\",\n \"pop2021\": \"2159.0790\",\n \"GrowthRate\": \"1.0077\",\n \"area\": 30355,\n \"Density\": \"71.6751\"\n },\n {\n \"Rank\": 151,\n \"name\": \"North Macedonia\",\n \"value\": \"2081.3040\",\n \"pop2021\": \"2082.6580\",\n \"GrowthRate\": \"0.9993\",\n \"area\": 25713,\n \"Density\": \"80.9436\"\n },\n {\n \"Rank\": 152,\n \"name\": \"Slovenia\",\n \"value\": \"2078.0340\",\n \"pop2021\": \"2078.7240\",\n \"GrowthRate\": \"0.9997\",\n \"area\": 20273,\n \"Density\": \"102.5025\"\n },\n {\n \"Rank\": 153,\n \"name\": \"Guinea-Bissau\",\n \"value\": \"2063.3670\",\n \"pop2021\": \"2015.4940\",\n \"GrowthRate\": \"1.0238\",\n \"area\": 36125,\n \"Density\": \"57.1174\"\n },\n {\n \"Rank\": 154,\n \"name\": \"Latvia\",\n \"value\": \"1848.8370\",\n \"pop2021\": \"1866.9420\",\n \"GrowthRate\": \"0.9903\",\n \"area\": 64559,\n \"Density\": \"28.6379\"\n },\n {\n \"Rank\": 155,\n \"name\": \"Kosovo\",\n \"value\": \"1802.2502\",\n \"GrowthRate\": \"1.0011\",\n \"area\": 10887,\n \"Density\": \"165.5415\"\n },\n {\n \"Rank\": 156,\n \"name\": \"Bahrain\",\n \"value\": \"1783.9830\",\n \"pop2021\": \"1748.2960\",\n \"GrowthRate\": \"1.0204\",\n \"area\": 765,\n \"Density\": \"2332.0039\"\n },\n {\n \"Rank\": 157,\n \"name\": \"Equatorial Guinea\",\n \"value\": \"1496.6620\",\n \"pop2021\": \"1449.8960\",\n \"GrowthRate\": \"1.0323\",\n \"area\": 28051,\n \"Density\": \"53.3550\"\n },\n {\n \"Rank\": 158,\n \"name\": \"Trinidad and Tobago\",\n \"value\": \"1406.5850\",\n \"pop2021\": \"1403.3750\",\n \"GrowthRate\": \"1.0023\",\n \"area\": 5130,\n \"Density\": \"274.1881\"\n },\n {\n \"Rank\": 159,\n \"name\": \"Timor-Leste\",\n \"value\": \"1369.4290\",\n \"pop2021\": \"1343.8730\",\n \"GrowthRate\": \"1.0190\",\n \"area\": 14874,\n \"Density\": \"92.0686\"\n },\n {\n \"Rank\": 160,\n \"name\": \"Estonia\",\n \"value\": \"1321.9100\",\n \"pop2021\": \"1325.1850\",\n \"GrowthRate\": \"0.9975\",\n \"area\": 45227,\n \"Density\": \"29.2283\"\n },\n {\n \"Rank\": 161,\n \"name\": \"Mauritius\",\n \"value\": \"1274.7270\",\n \"pop2021\": \"1273.4330\",\n \"GrowthRate\": \"1.0010\",\n \"area\": 2040,\n \"Density\": \"624.8662\"\n },\n {\n \"Rank\": 162,\n \"name\": \"Cyprus\",\n \"value\": \"1223.3870\",\n \"pop2021\": \"1215.5840\",\n \"GrowthRate\": \"1.0064\",\n \"area\": 9251,\n \"Density\": \"132.2438\"\n },\n {\n \"Rank\": 163,\n \"name\": \"Eswatini\",\n \"value\": \"1184.8170\",\n \"pop2021\": \"1172.3620\",\n \"GrowthRate\": \"1.0106\",\n \"area\": 17364,\n \"Density\": \"68.2341\"\n },\n {\n \"Rank\": 164,\n \"name\": \"Djibouti\",\n \"value\": \"1016.0970\",\n \"pop2021\": \"1002.1870\",\n \"GrowthRate\": \"1.0139\",\n \"area\": 23200,\n \"Density\": \"43.7973\"\n },\n {\n \"Rank\": 165,\n \"name\": \"Fiji\",\n \"value\": \"909.4660\",\n \"pop2021\": \"902.9060\",\n \"GrowthRate\": \"1.0073\",\n \"area\": 18272,\n \"Density\": \"49.7738\"\n },\n {\n \"Rank\": 166,\n \"name\": \"Reunion\",\n \"value\": \"908.0610\",\n \"pop2021\": \"901.6860\",\n \"GrowthRate\": \"1.0071\",\n \"area\": 2511,\n \"Density\": \"361.6332\"\n },\n {\n \"Rank\": 167,\n \"name\": \"Comoros\",\n \"value\": \"907.4190\",\n \"pop2021\": \"888.4510\",\n \"GrowthRate\": \"1.0213\",\n \"area\": 1862,\n \"Density\": \"487.3357\"\n },\n {\n \"Rank\": 168,\n \"name\": \"Guyana\",\n \"value\": \"794.0450\",\n \"pop2021\": \"790.3260\",\n \"GrowthRate\": \"1.0047\",\n \"area\": 214969,\n \"Density\": \"3.6938\"\n },\n {\n \"Rank\": 169,\n \"name\": \"Bhutan\",\n \"value\": \"787.9410\",\n \"pop2021\": \"779.8980\",\n \"GrowthRate\": \"1.0103\",\n \"area\": 38394,\n \"Density\": \"20.5225\"\n },\n {\n \"Rank\": 170,\n \"name\": \"Solomon Islands\",\n \"value\": \"721.1590\",\n \"pop2021\": \"703.9960\",\n \"GrowthRate\": \"1.0244\",\n \"area\": 28896,\n \"Density\": \"24.9571\"\n },\n {\n \"Rank\": 171,\n \"name\": \"Luxembourg\",\n \"value\": \"642.3710\",\n \"pop2021\": \"634.8140\",\n \"GrowthRate\": \"1.0119\",\n \"area\": 2586,\n \"Density\": \"248.4033\"\n },\n {\n \"Rank\": 172,\n \"name\": \"Montenegro\",\n \"value\": \"627.9500\",\n \"pop2021\": \"628.0530\",\n \"GrowthRate\": \"0.9998\",\n \"area\": 13812,\n \"Density\": \"45.4641\"\n },\n {\n \"Rank\": 173,\n \"name\": \"Western Sahara\",\n \"value\": \"626.1610\",\n \"pop2021\": \"611.8750\",\n \"GrowthRate\": \"1.0233\",\n \"area\": 266000,\n \"Density\": \"2.3540\"\n },\n {\n \"Rank\": 174,\n \"name\": \"Suriname\",\n \"value\": \"596.8310\",\n \"pop2021\": \"591.8000\",\n \"GrowthRate\": \"1.0085\",\n \"area\": 163820,\n \"Density\": \"3.6432\"\n },\n {\n \"Rank\": 175,\n \"name\": \"Cape Verde\",\n \"value\": \"567.6780\",\n \"pop2021\": \"561.8980\",\n \"GrowthRate\": \"1.0103\",\n \"area\": 4033,\n \"Density\": \"140.7582\"\n },\n {\n \"Rank\": 176,\n \"name\": \"Maldives\",\n \"value\": \"540.9850\",\n \"pop2021\": \"543.6170\",\n \"GrowthRate\": \"0.9952\",\n \"area\": 300,\n \"Density\": \"1803.2833\"\n },\n {\n \"Rank\": 177,\n \"name\": \"Brunei\",\n \"value\": \"445.4310\",\n \"pop2021\": \"441.5320\",\n \"GrowthRate\": \"1.0088\",\n \"area\": 5765,\n \"Density\": \"77.2647\"\n },\n {\n \"Rank\": 178,\n \"name\": \"Malta\",\n \"value\": \"444.0330\",\n \"pop2021\": \"442.7840\",\n \"GrowthRate\": \"1.0028\",\n \"area\": 316,\n \"Density\": \"1405.1677\"\n },\n {\n \"Rank\": 179,\n \"name\": \"Belize\",\n \"value\": \"412.1900\",\n \"pop2021\": \"404.9140\",\n \"GrowthRate\": \"1.0180\",\n \"area\": 22966,\n \"Density\": \"17.9478\"\n },\n {\n \"Rank\": 180,\n \"name\": \"Bahamas\",\n \"value\": \"400.5160\",\n \"pop2021\": \"396.9130\",\n \"GrowthRate\": \"1.0091\",\n \"area\": 13943,\n \"Density\": \"28.7252\"\n },\n {\n \"Rank\": 181,\n \"name\": \"Guadeloupe\",\n \"value\": \"399.7940\",\n \"pop2021\": \"400.0200\",\n \"GrowthRate\": \"0.9994\",\n \"area\": 1628,\n \"Density\": \"245.5737\"\n },\n {\n \"Rank\": 182,\n \"name\": \"Martinique\",\n \"value\": \"374.0870\",\n \"pop2021\": \"374.7450\",\n \"GrowthRate\": \"0.9982\",\n \"area\": 1128,\n \"Density\": \"331.6374\"\n },\n {\n \"Rank\": 183,\n \"name\": \"Iceland\",\n \"value\": \"345.3930\",\n \"pop2021\": \"343.3530\",\n \"GrowthRate\": \"1.0059\",\n \"area\": 103000,\n \"Density\": \"3.3533\"\n },\n {\n \"Rank\": 184,\n \"name\": \"Vanuatu\",\n \"value\": \"321.8320\",\n \"pop2021\": \"314.4640\",\n \"GrowthRate\": \"1.0234\",\n \"area\": 12189,\n \"Density\": \"26.4035\"\n },\n {\n \"Rank\": 185,\n \"name\": \"French Guiana\",\n \"value\": \"314.1690\",\n \"pop2021\": \"306.4480\",\n \"GrowthRate\": \"1.0252\",\n \"area\": 83534,\n \"Density\": \"3.7610\"\n },\n {\n \"Rank\": 186,\n \"name\": \"Barbados\",\n \"value\": \"288.0230\",\n \"pop2021\": \"287.7110\",\n \"GrowthRate\": \"1.0011\",\n \"area\": 430,\n \"Density\": \"669.8209\"\n },\n {\n \"Rank\": 187,\n \"name\": \"Mayotte\",\n \"value\": \"286.2590\",\n \"pop2021\": \"279.5150\",\n \"GrowthRate\": \"1.0241\",\n \"area\": 374,\n \"Density\": \"765.3984\"\n },\n {\n \"Rank\": 188,\n \"name\": \"Sao Tome and Principe\",\n \"value\": \"227.6790\",\n \"pop2021\": \"223.3680\",\n \"GrowthRate\": \"1.0193\",\n \"area\": 964,\n \"Density\": \"236.1815\"\n },\n {\n \"Rank\": 189,\n \"name\": \"Samoa\",\n \"value\": \"202.2390\",\n \"pop2021\": \"200.1490\",\n \"GrowthRate\": \"1.0104\",\n \"area\": 2842,\n \"Density\": \"71.1608\"\n },\n {\n \"Rank\": 190,\n \"name\": \"Saint Lucia\",\n \"value\": \"185.1130\",\n \"pop2021\": \"184.4000\",\n \"GrowthRate\": \"1.0039\",\n \"area\": 616,\n \"Density\": \"300.5081\"\n },\n {\n \"Rank\": 191,\n \"name\": \"Kiribati\",\n \"value\": \"123.4190\",\n \"pop2021\": \"121.3920\",\n \"GrowthRate\": \"1.0167\",\n \"area\": 811,\n \"Density\": \"152.1813\"\n },\n {\n \"Rank\": 192,\n \"name\": \"Micronesia\",\n \"value\": \"117.4890\",\n \"pop2021\": \"116.2540\",\n \"GrowthRate\": \"1.0106\",\n \"area\": 702,\n \"Density\": \"167.3632\"\n },\n {\n \"Rank\": 193,\n \"name\": \"Grenada\",\n \"value\": \"113.4750\",\n \"pop2021\": \"113.0210\",\n \"GrowthRate\": \"1.0040\",\n \"area\": 344,\n \"Density\": \"329.8692\"\n },\n {\n \"Rank\": 194,\n \"name\": \"Saint Vincent and the Grenadines\",\n \"value\": \"111.5510\",\n \"pop2021\": \"111.2630\",\n \"GrowthRate\": \"1.0026\",\n \"area\": 389,\n \"Density\": \"286.7635\"\n },\n {\n \"Rank\": 195,\n \"name\": \"Tonga\",\n \"value\": \"107.7490\",\n \"pop2021\": \"106.7600\",\n \"GrowthRate\": \"1.0093\",\n \"area\": 747,\n \"Density\": \"144.2423\"\n },\n {\n \"Rank\": 196,\n \"name\": \"Antigua and Barbuda\",\n \"value\": \"99.5090\",\n \"pop2021\": \"98.7310\",\n \"GrowthRate\": \"1.0079\",\n \"area\": 442,\n \"Density\": \"225.1335\"\n },\n {\n \"Rank\": 197,\n \"name\": \"Seychelles\",\n \"value\": \"99.4260\",\n \"pop2021\": \"98.9080\",\n \"GrowthRate\": \"1.0052\",\n \"area\": 452,\n \"Density\": \"219.9690\"\n },\n {\n \"Rank\": 198,\n \"name\": \"Andorra\",\n \"value\": \"77.4630\",\n \"pop2021\": \"77.3550\",\n \"GrowthRate\": \"1.0014\",\n \"area\": 468,\n \"Density\": \"165.5192\"\n },\n {\n \"Rank\": 199,\n \"name\": \"Dominica\",\n \"value\": \"72.3440\",\n \"pop2021\": \"72.1670\",\n \"GrowthRate\": \"1.0025\",\n \"area\": 751,\n \"Density\": \"96.3302\"\n },\n {\n \"Rank\": 200,\n \"name\": \"Marshall Islands\",\n \"value\": \"60.0570\",\n \"pop2021\": \"59.6100\",\n \"GrowthRate\": \"1.0075\",\n \"area\": 181,\n \"Density\": \"331.8066\"\n },\n {\n \"Rank\": 201,\n \"name\": \"Greenland\",\n \"value\": \"56.9730\",\n \"pop2021\": \"56.8770\",\n \"GrowthRate\": \"1.0017\",\n \"area\": 2166086,\n \"Density\": \"0.0263\"\n },\n {\n \"Rank\": 202,\n \"name\": \"Saint Kitts and Nevis\",\n \"value\": \"53.8710\",\n \"pop2021\": \"53.5440\",\n \"GrowthRate\": \"1.0061\",\n \"area\": 261,\n \"Density\": \"206.4023\"\n },\n {\n \"Rank\": 203,\n \"name\": \"Monaco\",\n \"value\": \"39.7830\",\n \"pop2021\": \"39.5110\",\n \"GrowthRate\": \"1.0069\",\n \"area\": 2,\n \"Density\": \"19891.5000\"\n },\n {\n \"Rank\": 204,\n \"name\": \"Liechtenstein\",\n \"value\": \"38.3870\",\n \"pop2021\": \"38.2500\",\n \"GrowthRate\": \"1.0036\",\n \"area\": 160,\n \"Density\": \"239.9187\"\n },\n {\n \"Rank\": 205,\n \"name\": \"San Marino\",\n \"value\": \"34.0850\",\n \"pop2021\": \"34.0170\",\n \"GrowthRate\": \"1.0020\",\n \"area\": 61,\n \"Density\": \"558.7705\"\n },\n {\n \"Rank\": 206,\n \"name\": \"Palau\",\n \"value\": \"18.2330\",\n \"pop2021\": \"18.1690\",\n \"GrowthRate\": \"1.0035\",\n \"area\": 459,\n \"Density\": \"39.7233\"\n },\n {\n \"Rank\": 207,\n \"name\": \"Tuvalu\",\n \"value\": \"12.0660\",\n \"pop2021\": \"11.9310\",\n \"GrowthRate\": \"1.0113\",\n \"area\": 26,\n \"Density\": \"464.0769\"\n },\n {\n \"Rank\": 208,\n \"name\": \"Nauru\",\n \"value\": \"10.9030\",\n \"pop2021\": \"10.8760\",\n \"GrowthRate\": \"1.0025\",\n \"area\": 21,\n \"Density\": \"519.1905\"\n },\n {\n \"Rank\": 209,\n \"name\": \"Vatican City\",\n \"value\": \"0.7990\",\n \"pop2021\": \"0.8000\",\n \"GrowthRate\": \"0.9988\",\n \"area\": 1,\n \"Density\": 799\n }\n]\n\nconst result = {\n ...frame,\n fields: frame.fields.map((field) => {\n if (field.name === 'Value') {\n return ({\n ...field,\n values: population.map(p => p.value)\n })\n }\n return ({\n ...field,\n values: population.map(p => p.name)\n })\n }\n )\n}\n\nreturn Promise.resolve(result);", + "valuesEditor": "custom" + } + } + }, + "refId": "A" + } + ], + "title": "Geo/Map", + "type": "volkovlabs-echarts-panel" + } + ], + "refresh": "", + "schemaVersion": 39, + "tags": ["business"], + "templating": { + "list": [] + }, + "time": { + "from": "now-6h", + "to": "now" + }, + "timepicker": {}, + "timezone": "browser", + "title": "Business Charts", + "uid": "edtmwjirtfny8d", + "version": 2, + "weekStart": "" +} diff --git a/demo.volkovlabs.io/home.json b/demo.volkovlabs.io/home.json new file mode 100644 index 0000000..0eb2fcf --- /dev/null +++ b/demo.volkovlabs.io/home.json @@ -0,0 +1,647 @@ +{ + "annotations": { + "list": [ + { + "builtIn": 1, + "datasource": { + "type": "grafana", + "uid": "-- Grafana --" + }, + "enable": true, + "hide": true, + "iconColor": "rgba(0, 211, 255, 1)", + "name": "Annotations & Alerts", + "type": "dashboard" + } + ] + }, + "editable": true, + "fiscalYearStartMonth": 0, + "graphTooltip": 0, + "links": [], + "panels": [ + { + "datasource": { + "default": true, + "type": "marcusolsson-static-datasource", + "uid": "4ytGZmF4k" + }, + "fieldConfig": { + "defaults": { + "thresholds": { + "mode": "absolute", + "steps": [ + { + "color": "green", + "value": null + }, + { + "color": "red", + "value": 80 + } + ] + } + }, + "overrides": [] + }, + "gridPos": { + "h": 10, + "w": 14, + "x": 0, + "y": 0 + }, + "id": 5, + "options": { + "afterRender": "", + "content": "", + "contentPartials": [], + "defaultContent": "# Business Suite\n\nThe Business Suite is a collection of open source plugins created and actively maintained by Volkov Labs.\n\nThe collection aims to solve the most frequent business tasks by providing an intuitive interface with detailed written [documentation](https://volkovlabs.io/plugins/), examples, and video tutorials.\n\n- Designed specifically for users focused on the business side of the process.\n- Provides solutions for wide spectrum of business requirements.\n- Open source.\n\n##\n## Support\nVolkov Labs actively supports and maintains all these plugins by doing the following:\n\n- Ensure the latest plugin versions are always compatible with the latest Grafana release.\n- Helping the community with GitHub requests.\n- Answer questions posted in our YouTube videos.\n- Keeping the plugin documentation up to date.\n- Post blogs with detailed instructions for the most sought-after use cases.\n- Sharing functional solutions with code snippets.", + "editor": { + "format": "auto", + "language": "markdown" + }, + "editors": ["default"], + "externalStyles": [], + "helpers": "", + "renderMode": "data", + "styles": "", + "wrap": true + }, + "pluginVersion": "5.3.0", + "targets": [ + { + "datasource": { + "type": "marcusolsson-static-datasource", + "uid": "4ytGZmF4k" + }, + "frame": { + "fields": [], + "meta": {}, + "name": "" + }, + "refId": "A" + } + ], + "type": "marcusolsson-dynamictext-panel" + }, + { + "datasource": { + "type": "marcusolsson-static-datasource", + "uid": "4ytGZmF4k" + }, + "fieldConfig": { + "defaults": { + "thresholds": { + "mode": "absolute", + "steps": [ + { + "color": "green", + "value": null + } + ] + } + }, + "overrides": [] + }, + "gridPos": { + "h": 10, + "w": 10, + "x": 14, + "y": 0 + }, + "id": 6, + "options": { + "afterRender": "import('https://esm.sh/youtube-player').then(({ default: YouTubePlayer }) => {\n const videoList = [\"K1NHBV5e6VE\", \"Go6tdEh96JQ\", \"dk8ht8G67JY\"];\n const randomVideoId = videoList[Math.floor(Math.random() * videoList.length)];\n\n YouTubePlayer('player', { videoId: randomVideoId });\n})", + "content": "
", + "contentPartials": [], + "defaultContent": "The query didn't return any results.", + "editor": { + "format": "auto", + "language": "html" + }, + "editors": ["afterRender"], + "externalStyles": [], + "helpers": "", + "renderMode": "everyRow", + "styles": "", + "wrap": true + }, + "pluginVersion": "5.3.0", + "targets": [ + { + "datasource": { + "type": "marcusolsson-static-datasource", + "uid": "4ytGZmF4k" + }, + "frame": { + "fields": [ + { + "config": {}, + "name": "URL", + "type": "string", + "values": ["https://www.youtube.com/watch?v=CvLqyY2fQfo"] + } + ], + "meta": {}, + "name": "YouTube" + }, + "refId": "A" + } + ], + "type": "marcusolsson-dynamictext-panel" + }, + { + "datasource": { + "type": "datasource", + "uid": "grafana" + }, + "fieldConfig": { + "defaults": { + "custom": { + "thresholdsStyle": { + "mode": "color", + "thresholds": [] + } + }, + "thresholds": { + "mode": "absolute", + "steps": [ + { + "color": "green", + "value": null + }, + { + "color": "red", + "value": 80 + } + ] + } + }, + "overrides": [] + }, + "gridPos": { + "h": 2, + "w": 24, + "x": 0, + "y": 10 + }, + "id": 4, + "options": { + "alwaysVisibleFilter": false, + "autoScroll": false, + "collapsedByDefault": false, + "customValue": false, + "dashboardVariable": "dashboard", + "displayMode": "button", + "emptyValue": false, + "favorites": { + "addQuery": {}, + "datasource": "", + "deleteQuery": {}, + "enabled": false, + "getQuery": {}, + "storage": "browser" + }, + "filter": false, + "groupSelection": false, + "header": true, + "padding": 10, + "persistent": false, + "saveSelectedGroup": false, + "saveSelectedGroupKey": "", + "showGroupTotal": false, + "showLabel": false, + "showName": false, + "showResetButton": false, + "showTotal": false, + "statusSort": false, + "sticky": false, + "tabsInOrder": true, + "variable": "plugin" + }, + "pluginVersion": "3.4.0", + "type": "volkovlabs-variable-panel" + }, + { + "datasource": { + "type": "marcusolsson-json-datasource", + "uid": "fdtmkexmvk8owc" + }, + "description": "Display events and set time range.", + "fieldConfig": { + "defaults": { + "color": { + "mode": "thresholds" + }, + "links": [ + { + "title": "Grafana Catalog", + "url": "${__data.fields.url}" + } + ], + "mappings": [], + "thresholds": { + "mode": "absolute", + "steps": [ + { + "color": "green", + "value": null + }, + { + "color": "red", + "value": 1000 + }, + { + "color": "#EAB839", + "value": 5000 + } + ] + } + }, + "overrides": [] + }, + "gridPos": { + "h": 14, + "w": 12, + "x": 0, + "y": 12 + }, + "id": 1, + "links": [ + { + "title": "Business Calendar", + "url": "/d/cdtmkqipv7mdcc/business-calendar" + } + ], + "options": { + "annotations": false, + "annotationsLimit": 100, + "annotationsType": "", + "colors": "event", + "dateFormat": "inherit", + "defaultView": "month", + "displayFields": ["description", "labels", "links", "location", "text", "time"], + "labelFields": ["Slug", "Signature"], + "locationField": "Version", + "locationLabel": "Version:", + "preformattedDescription": false, + "quickLinks": false, + "scrollToTime": { + "hours": 0, + "minutes": 0 + }, + "showEventTooltip": true, + "showMonthTime": false, + "textField": "Name", + "timeField": "Updated At", + "timeRangeType": "default", + "views": ["day", "week", "work_week", "month", "year", "agenda"] + }, + "pluginVersion": "3.6.0", + "targets": [ + { + "cacheDurationSeconds": 300, + "datasource": { + "type": "marcusolsson-json-datasource", + "uid": "fdtmkexmvk8owc" + }, + "fields": [ + { + "jsonPath": "$.items[*].name", + "name": "Name" + }, + { + "jsonPath": "$.items[*].slug", + "language": "jsonpath", + "name": "Slug" + }, + { + "jsonPath": "$.items[*].typeName", + "language": "jsonpath", + "name": "Type" + }, + { + "jsonPath": "$.items[*].version", + "language": "jsonpath", + "name": "Version" + }, + { + "jsonPath": "$.items[*].downloads", + "language": "jsonpath", + "name": "Downloads" + }, + { + "jsonPath": "$.items[*].description", + "language": "jsonpath", + "name": "Description" + }, + { + "jsonPath": "$.items[*].signatureType", + "language": "jsonpath", + "name": "Signature" + }, + { + "jsonPath": "$.items[*].orgName", + "language": "jsonpath", + "name": "Organization" + }, + { + "jsonPath": "$.items[*].createdAt", + "language": "jsonpath", + "name": "Created At" + }, + { + "jsonPath": "$.items[*].updatedAt", + "language": "jsonpath", + "name": "Updated At" + }, + { + "jsonPath": "$.items[*].url", + "language": "jsonpath", + "name": "URL" + } + ], + "method": "GET", + "queryParams": "", + "refId": "A", + "urlPath": "/" + } + ], + "title": "Business Calendar", + "type": "marcusolsson-calendar-panel" + }, + { + "datasource": { + "type": "marcusolsson-static-datasource", + "uid": "4ytGZmF4k" + }, + "description": "Powerful visualizations powered by Apache ECharts.", + "gridPos": { + "h": 14, + "w": 12, + "x": 12, + "y": 12 + }, + "id": 2, + "links": [ + { + "title": "Business Charts", + "url": "/d/edtmwjirtfny8d/business-charts" + } + ], + "options": { + "baidu": { + "callback": "bmapReady", + "key": "" + }, + "editor": { + "format": "auto", + "height": 600 + }, + "editorMode": "visual", + "gaode": { + "key": "", + "plugin": "AMap.Scale,AMap.ToolBar" + }, + "getOption": "", + "google": { + "callback": "gmapReady", + "key": "" + }, + "map": "json", + "renderer": "canvas", + "themeEditor": { + "config": "{}", + "height": 400, + "name": "default" + }, + "visualEditor": { + "code": "return {\n dataset: {\n source: context.editor.dataset.source,\n },\n tooltip: {\n trigger: 'item'\n },\n series: [\n {\n name: 'Business Suite',\n type: 'pie',\n radius: ['20%', '75%'],\n center: ['50%', '50%'],\n roseType: 'area',\n itemStyle: {\n borderRadius: 8\n },\n }\n ]\n}\n", + "codeHeight": 600, + "dataset": [ + { + "name": "Value", + "source": "A" + }, + { + "name": "Name", + "source": "A" + } + ], + "series": [] + } + }, + "pluginVersion": "6.3.0", + "targets": [ + { + "datasource": { + "type": "marcusolsson-static-datasource", + "uid": "4ytGZmF4k" + }, + "frame": { + "fields": [ + { + "config": {}, + "name": "Value", + "type": "number", + "values": [] + }, + { + "config": {}, + "name": "Name", + "type": "string", + "values": [] + } + ], + "meta": { + "custom": { + "customCode": "const names = ['Business Calendar', 'Business Charts', 'Business Forms', 'Business Input',\n 'Business Media', 'Business News', 'Business Satellite', 'Business Table', 'Business Text',\n 'Business Variable'];\nconst values = [40, 38, 36, 32, 30, 28, 22, 18, 12, 8];\n\nconst result = {\n ...frame,\n fields: frame.fields.map((field) => {\n if (field.name === 'Name') {\n return ({\n ...field,\n values: names\n })\n }\n\n return ({\n ...field,\n values\n })\n }\n )\n}\n\nreturn Promise.resolve(result);", + "valuesEditor": "custom" + } + }, + "name": "Pie" + }, + "refId": "A" + } + ], + "title": "Business Charts", + "type": "volkovlabs-echarts-panel" + }, + { + "datasource": { + "type": "volkovlabs-rss-datasource", + "uid": "rZAdZdf82" + }, + "description": "Visualize RSS/Atom feeds.", + "fieldConfig": { + "defaults": { + "thresholds": { + "mode": "absolute", + "steps": [ + { + "color": "green", + "value": null + }, + { + "color": "red", + "value": 80 + } + ] + } + }, + "overrides": [] + }, + "gridPos": { + "h": 14, + "w": 12, + "x": 0, + "y": 26 + }, + "id": 3, + "links": [ + { + "title": "Business News", + "url": "/d/ddtpy13k0obggc/business-news" + } + ], + "options": { + "afterRender": "", + "content": "\n\n\n\n\n\n\n

{{title}}

\n{{{media:group:media:description}}}
\n
{{date updated 'MMM, DD YYYY'}} by {{author}}
", + "contentPartials": [], + "defaultContent": "The query didn't return any results.", + "editor": { + "format": "auto", + "language": "markdown" + }, + "editors": [], + "externalStyles": [], + "helpers": "", + "renderMode": "everyRow", + "styles": "", + "wrap": true + }, + "pluginVersion": "5.3.0", + "targets": [ + { + "datasource": { + "type": "volkovlabs-rss-datasource", + "uid": "rZAdZdf82" + }, + "dateField": "", + "feedType": "items", + "params": { + "channel_id": "UCQadniwbukI6ZmTN2oTTb-g" + }, + "refId": "A" + } + ], + "title": "Business News", + "transformations": [ + { + "id": "convertFieldType", + "options": { + "conversions": [], + "fields": {} + } + } + ], + "type": "marcusolsson-dynamictext-panel" + } + ], + "refresh": "", + "schemaVersion": 39, + "tags": [], + "templating": { + "list": [ + { + "current": { + "selected": false, + "text": "Business Suite", + "value": "business-suite" + }, + "hide": 2, + "includeAll": false, + "label": "Plugin", + "multi": false, + "name": "plugin", + "options": [ + { + "selected": true, + "text": "Business Suite", + "value": "business-suite" + }, + { + "selected": false, + "text": "Business Calendar", + "value": "business-calendar" + }, + { + "selected": false, + "text": "Business Charts", + "value": "business-charts" + }, + { + "selected": false, + "text": "Business News", + "value": "business-news" + } + ], + "query": "Business Suite : business-suite, Business Calendar : business-calendar, Business Charts : business-charts, Business News : business-news", + "skipUrlSync": false, + "type": "custom" + }, + { + "current": { + "selected": false, + "text": "fdtmkjc238a2oe", + "value": "fdtmkjc238a2oe" + }, + "datasource": { + "type": "marcusolsson-static-datasource", + "uid": "4ytGZmF4k" + }, + "definition": "", + "hide": 2, + "includeAll": false, + "label": "Dashboard", + "multi": false, + "name": "dashboard", + "options": [], + "query": { + "frame": { + "fields": [ + { + "config": {}, + "name": "Id", + "type": "string", + "values": [] + } + ], + "meta": { + "custom": { + "customCode": "let id = 'fdtmkjc238a2oe';\n\nswitch (`${plugin}`) {\n case 'business-calendar':\n id = 'cdtmkqipv7mdcc';\n break;\n case 'business-charts':\n id = 'edtmwjirtfny8d';\n break;\n case 'business-news':\n id = 'ddtpy13k0obggc';\n break;\n};\n\nconst result = {\n ...frame,\n fields: frame.fields.map((field) => ({\n ...field,\n values: [id]\n }))\n}\n\nreturn Promise.resolve(result);", + "valuesEditor": "custom" + } + }, + "name": "Dashboard" + } + }, + "refresh": 1, + "regex": "", + "skipUrlSync": false, + "sort": 0, + "type": "query" + } + ] + }, + "time": { + "from": "now-7d", + "to": "now" + }, + "timepicker": {}, + "timezone": "browser", + "title": "Business Suite", + "uid": "fdtmkjc238a2oe", + "version": 8, + "weekStart": "" +} diff --git a/demo.volkovlabs.io/news.json b/demo.volkovlabs.io/news.json new file mode 100644 index 0000000..852ccd8 --- /dev/null +++ b/demo.volkovlabs.io/news.json @@ -0,0 +1,728 @@ +{ + "annotations": { + "list": [ + { + "builtIn": 1, + "datasource": { + "type": "grafana", + "uid": "-- Grafana --" + }, + "enable": true, + "hide": true, + "iconColor": "rgba(0, 211, 255, 1)", + "name": "Annotations & Alerts", + "type": "dashboard" + } + ] + }, + "editable": true, + "fiscalYearStartMonth": 0, + "graphTooltip": 0, + "links": [ + { + "asDropdown": false, + "icon": "external link", + "includeVars": false, + "keepTime": false, + "tags": ["business"], + "targetBlank": false, + "title": "Business Suite", + "tooltip": "", + "type": "dashboards", + "url": "" + } + ], + "panels": [ + { + "datasource": { + "type": "yesoreyeram-infinity-datasource", + "uid": "edtmni4c13i80c" + }, + "gridPos": { + "h": 10, + "w": 14, + "x": 0, + "y": 0 + }, + "id": 5, + "options": { + "code": { + "language": "plaintext", + "showLineNumbers": false, + "showMiniMap": false + }, + "content": "# Business News\n\nThe Business News data source is a plugin for Grafana that retrieves RSS/Atom feeds and allows visualizing them using Business Text and other panels.\n\n## Requirements\n\n- Business News Data Source 4.X requires **Grafana 10** or **Grafana 11**.\n- RSS/Atom Data Source 3.X requires **Grafana 9** or **Grafana 10**.\n- RSS/Atom Data Source 2.X requires **Grafana 8.5** or **Grafana 9**.\n- RSS/Atom Data Source 1.X requires **Grafana 8**.\n\n## Getting Started\n\nThe Business News data source can be installed from the [Grafana Catalog](https://grafana.com/grafana/plugins/volkovlabs-rss-datasource/) or utilizing the Grafana command line tool.\n\nFor the latter, please use the following command.\n\n```bash\ngrafana-cli plugins install volkovlabs-rss-datasource\n```\n\n## Highlights\n\n- Supports RSS 2.0, RSS 1.0 and Atom.\n- Works with Dynamic Text visualization panel.\n- Returns Channel (Feed) data, Items (Entries) or both as separate data frames.\n- Extract and parse as additional fields:\n - Image from Meta.\n - H4 and Image from the Encoded content.\n - Media:Group for YouTube.\n- Filter items/entries based on the selected Time Range.\n- Allows specifying Query parameters with dashboard variables.", + "mode": "markdown" + }, + "pluginVersion": "11.2.0", + "type": "text" + }, + { + "datasource": { + "type": "marcusolsson-static-datasource", + "uid": "4ytGZmF4k" + }, + "fieldConfig": { + "defaults": { + "thresholds": { + "mode": "absolute", + "steps": [ + { + "color": "green", + "value": null + } + ] + } + }, + "overrides": [] + }, + "gridPos": { + "h": 10, + "w": 10, + "x": 14, + "y": 0 + }, + "id": 6, + "options": { + "afterRender": "import('https://esm.sh/youtube-player').then(({ default: YouTubePlayer }) => {\n const videoList = [\"RAxqS2hpWkg\"];\n const randomVideoId = videoList[Math.floor(Math.random() * videoList.length)];\n\n YouTubePlayer('player', { videoId: randomVideoId });\n})", + "content": "
", + "contentPartials": [], + "defaultContent": "The query didn't return any results.", + "editor": { + "format": "auto", + "language": "html" + }, + "editors": ["afterRender"], + "externalStyles": [], + "helpers": "", + "renderMode": "everyRow", + "styles": "", + "wrap": true + }, + "pluginVersion": "5.3.0", + "targets": [ + { + "datasource": { + "type": "marcusolsson-static-datasource", + "uid": "4ytGZmF4k" + }, + "frame": { + "fields": [ + { + "config": {}, + "name": "URL", + "type": "string", + "values": ["https://www.youtube.com/watch?v=CvLqyY2fQfo"] + } + ], + "meta": {}, + "name": "YouTube" + }, + "refId": "A" + } + ], + "type": "marcusolsson-dynamictext-panel" + }, + { + "collapsed": false, + "gridPos": { + "h": 1, + "w": 24, + "x": 0, + "y": 10 + }, + "id": 7, + "panels": [], + "title": "Examples", + "type": "row" + }, + { + "datasource": { + "type": "marcusolsson-static-datasource", + "uid": "4ytGZmF4k" + }, + "fieldConfig": { + "defaults": { + "custom": { + "thresholdsStyle": { + "mode": "color", + "thresholds": [] + } + }, + "thresholds": { + "mode": "absolute", + "steps": [ + { + "color": "green", + "value": null + }, + { + "color": "red", + "value": 80 + } + ] + } + }, + "overrides": [] + }, + "gridPos": { + "h": 2, + "w": 12, + "x": 0, + "y": 11 + }, + "id": 9, + "options": { + "alwaysVisibleFilter": false, + "autoScroll": false, + "collapsedByDefault": false, + "customValue": false, + "displayMode": "button", + "emptyValue": false, + "favorites": { + "addQuery": {}, + "datasource": "", + "deleteQuery": {}, + "enabled": false, + "getQuery": {}, + "storage": "browser" + }, + "filter": false, + "groupSelection": false, + "header": true, + "padding": 10, + "persistent": false, + "saveSelectedGroup": false, + "saveSelectedGroupKey": "", + "showGroupTotal": false, + "showLabel": true, + "showName": false, + "showResetButton": false, + "showTotal": false, + "statusSort": false, + "sticky": false, + "tabsInOrder": true, + "variable": "channel" + }, + "pluginVersion": "3.4.0", + "targets": [ + { + "datasource": { + "type": "marcusolsson-static-datasource", + "uid": "4ytGZmF4k" + }, + "refId": "A" + } + ], + "type": "volkovlabs-variable-panel" + }, + { + "datasource": { + "type": "volkovlabs-rss-datasource", + "uid": "edtq06kf808owe" + }, + "fieldConfig": { + "defaults": { + "thresholds": { + "mode": "absolute", + "steps": [ + { + "color": "green", + "value": null + }, + { + "color": "red", + "value": 80 + } + ] + } + }, + "overrides": [] + }, + "gridPos": { + "h": 12, + "w": 12, + "x": 12, + "y": 11 + }, + "id": 10, + "options": { + "afterRender": "", + "content": "\n \n \n \n \n
{{date pubDate 'MMM DD'}}\n

{{title}}

{{description}}\n
", + "contentPartials": [], + "defaultContent": "The query didn't return any results.", + "editor": { + "format": "auto", + "language": "html" + }, + "editors": [], + "externalStyles": [], + "helpers": "", + "renderMode": "everyRow", + "styles": "", + "wrap": true + }, + "pluginVersion": "5.3.0", + "targets": [ + { + "datasource": { + "type": "volkovlabs-rss-datasource", + "uid": "edtq06kf808owe" + }, + "feedType": "items", + "refId": "A" + } + ], + "title": "Grafana Blog", + "transformations": [ + { + "id": "convertFieldType", + "options": { + "conversions": [ + { + "dateFormat": "ddd, DD MMM YYYY HH:mm:ss ZZ", + "destinationType": "time", + "targetField": "pubDate" + } + ], + "fields": {} + } + } + ], + "type": "marcusolsson-dynamictext-panel" + }, + { + "datasource": { + "type": "volkovlabs-rss-datasource", + "uid": "rZAdZdf82" + }, + "fieldConfig": { + "defaults": { + "thresholds": { + "mode": "absolute", + "steps": [ + { + "color": "green", + "value": null + }, + { + "color": "red", + "value": 80 + } + ] + } + }, + "overrides": [] + }, + "gridPos": { + "h": 10, + "w": 12, + "x": 0, + "y": 13 + }, + "id": 8, + "options": { + "afterRender": "", + "content": "\n \n \n \n \n
\n

{{title}}

\n

{{date updated 'MMM, DD YYYY'}} by {{author}}

\n
{{{media:group:media:description}}}
\n
\n
\n
", + "contentPartials": [], + "defaultContent": "The query didn't return any results.", + "editor": { + "format": "auto", + "language": "html" + }, + "editors": [], + "externalStyles": [], + "helpers": "", + "renderMode": "everyRow", + "styles": "", + "wrap": true + }, + "pluginVersion": "5.3.0", + "targets": [ + { + "datasource": { + "type": "volkovlabs-rss-datasource", + "uid": "rZAdZdf82" + }, + "dateField": "updated", + "feedType": "items", + "params": { + "channel_id": "$channel" + }, + "refId": "A" + } + ], + "title": "Volkov Labs YouTube", + "transformations": [ + { + "id": "convertFieldType", + "options": { + "conversions": [ + { + "dateFormat": "YYYY-MM-DD", + "destinationType": "time", + "targetField": "updated" + } + ], + "fields": {} + } + } + ], + "type": "marcusolsson-dynamictext-panel" + }, + { + "datasource": { + "type": "volkovlabs-rss-datasource", + "uid": "bdtq0slbq6tc0b" + }, + "fieldConfig": { + "defaults": { + "thresholds": { + "mode": "absolute", + "steps": [ + { + "color": "green", + "value": null + }, + { + "color": "red", + "value": 80 + } + ] + } + }, + "overrides": [] + }, + "gridPos": { + "h": 11, + "w": 12, + "x": 0, + "y": 23 + }, + "id": 11, + "options": { + "afterRender": "", + "content": "

{{title}}

\n

{{date dc:date 'MMM, DD YYYY'}} by {{{dc:creator}}}

\n{{{description}}}\n
", + "contentPartials": [], + "defaultContent": "The query didn't return any results.", + "editor": { + "format": "auto", + "language": "html" + }, + "editors": [], + "externalStyles": [], + "helpers": "", + "renderMode": "everyRow", + "styles": "", + "wrap": true + }, + "pluginVersion": "5.3.0", + "targets": [ + { + "datasource": { + "type": "volkovlabs-rss-datasource", + "uid": "bdtq0slbq6tc0b" + }, + "feedType": "items", + "refId": "A" + } + ], + "title": "National Vulnerability Database", + "type": "marcusolsson-dynamictext-panel" + }, + { + "datasource": { + "type": "volkovlabs-rss-datasource", + "uid": "fdtq1w197sk5cc" + }, + "fieldConfig": { + "defaults": { + "thresholds": { + "mode": "absolute", + "steps": [ + { + "color": "green", + "value": null + }, + { + "color": "red", + "value": 80 + } + ] + } + }, + "overrides": [] + }, + "gridPos": { + "h": 11, + "w": 12, + "x": 12, + "y": 23 + }, + "id": 13, + "options": { + "afterRender": "", + "content": "

{{title}}

\n{{date pubDate 'MMM DD'}}\n{{{description}}}", + "contentPartials": [], + "defaultContent": "The query didn't return any results.", + "editor": { + "format": "auto", + "language": "html" + }, + "editors": [], + "externalStyles": [], + "helpers": "", + "renderMode": "everyRow", + "styles": "", + "wrap": true + }, + "pluginVersion": "5.3.0", + "targets": [ + { + "datasource": { + "type": "volkovlabs-rss-datasource", + "uid": "fdtq1w197sk5cc" + }, + "feedType": "items", + "refId": "A" + } + ], + "title": "Bitcoin News", + "transformations": [ + { + "id": "convertFieldType", + "options": { + "conversions": [ + { + "dateFormat": "ddd, DD MMM YYYY HH:mm:ss ZZ", + "destinationType": "time", + "targetField": "pubDate" + } + ], + "fields": {} + } + } + ], + "type": "marcusolsson-dynamictext-panel" + }, + { + "datasource": { + "type": "volkovlabs-rss-datasource", + "uid": "adtq1gclr3caoa" + }, + "fieldConfig": { + "defaults": { + "color": { + "mode": "thresholds" + }, + "custom": { + "align": "auto", + "cellOptions": { + "type": "auto" + }, + "inspect": false + }, + "mappings": [], + "thresholds": { + "mode": "absolute", + "steps": [ + { + "color": "green" + }, + { + "color": "red", + "value": 80 + } + ] + } + }, + "overrides": [ + { + "matcher": { + "id": "byName", + "options": "pubDate" + }, + "properties": [ + { + "id": "custom.width", + "value": 139 + } + ] + }, + { + "matcher": { + "id": "byName", + "options": "availability" + }, + "properties": [ + { + "id": "custom.width", + "value": 168 + } + ] + }, + { + "matcher": { + "id": "byName", + "options": "tag" + }, + "properties": [ + { + "id": "custom.width", + "value": 278 + } + ] + }, + { + "matcher": { + "id": "byName", + "options": "Title" + }, + "properties": [ + { + "id": "custom.width", + "value": 457 + } + ] + } + ] + }, + "gridPos": { + "h": 11, + "w": 24, + "x": 0, + "y": 34 + }, + "id": 12, + "options": { + "cellHeight": "sm", + "footer": { + "countRows": false, + "fields": "", + "reducer": ["sum"], + "show": false + }, + "showHeader": true, + "sortBy": [] + }, + "pluginVersion": "11.1.3", + "targets": [ + { + "datasource": { + "type": "volkovlabs-rss-datasource", + "uid": "adtq1gclr3caoa" + }, + "feedType": "items", + "refId": "A" + } + ], + "title": "Grafana Cloud What's New", + "transformations": [ + { + "id": "organize", + "options": { + "excludeByName": { + "content": true, + "description": false, + "documentationURL": true, + "guid": true, + "link": true, + "offering": true, + "selfManagedEdition": true + }, + "includeByName": {}, + "indexByName": { + "availability": 6, + "content": 4, + "description": 5, + "documentationURL": 7, + "guid": 3, + "link": 2, + "offering": 8, + "pubDate": 0, + "selfManagedEdition": 10, + "tag": 9, + "title": 1 + }, + "renameByName": { + "title": "Title" + } + } + }, + { + "id": "convertFieldType", + "options": { + "conversions": [ + { + "dateFormat": "ddd, DD MMM YYYY HH:mm:ss ZZ", + "destinationType": "time", + "targetField": "pubDate" + } + ], + "fields": {} + } + }, + { + "id": "formatTime", + "options": { + "outputFormat": "YYYY-MM-DD", + "timeField": "pubDate", + "timezone": "browser", + "useTimezone": true + } + } + ], + "type": "table" + } + ], + "refresh": "", + "schemaVersion": 39, + "tags": ["business"], + "templating": { + "list": [ + { + "current": { + "selected": false, + "text": "Volkov Labs", + "value": "UCQadniwbukI6ZmTN2oTTb-g" + }, + "hide": 2, + "includeAll": false, + "label": "Channel", + "multi": false, + "name": "channel", + "options": [ + { + "selected": true, + "text": "Volkov Labs", + "value": "UCQadniwbukI6ZmTN2oTTb-g" + }, + { + "selected": false, + "text": "Grafana", + "value": "UCYCwgQAMm9sTJv0rgwQLCxw" + }, + { + "selected": false, + "text": "Weather Channel", + "value": "UCGTUbwceCMibvpbd2NaIP7A" + } + ], + "query": "Volkov Labs : UCQadniwbukI6ZmTN2oTTb-g, Grafana : UCYCwgQAMm9sTJv0rgwQLCxw, Weather Channel : UCGTUbwceCMibvpbd2NaIP7A", + "queryValue": "", + "skipUrlSync": false, + "type": "custom" + } + ] + }, + "time": { + "from": "now-1y", + "to": "now" + }, + "timepicker": {}, + "timezone": "browser", + "title": "Business News", + "uid": "ddtpy13k0obggc", + "version": 3, + "weekStart": "" +} diff --git a/docker-compose.yml b/docker-compose.yml index 553ec15..79fc9cf 100644 --- a/docker-compose.yml +++ b/docker-compose.yml @@ -9,6 +9,11 @@ services: - 3000:3000/tcp environment: - GF_DEFAULT_APP_MODE=development + - GF_INSTALL_PLUGINS=marcusolsson-static-datasource,marcusolsson-json-datasource, + volkovlabs-rss-datasource,yesoreyeram-infinity-datasource,volkovlabs-grapi-datasource, + volkovlabs-variable-panel,marcusolsson-calendar-panel,volkovlabs-echarts-panel, + marcusolsson-dynamictext-panel volumes: - ./dist:/var/lib/grafana/plugins/business-app - ./provisioning:/etc/grafana/provisioning + - ./demo.volkovlabs.io:/etc/grafana/provisioning/dashboards/demo diff --git a/provisioning/dashboards/business.json b/provisioning/dashboards/business.json index 14b3bd5..52d4e30 100644 --- a/provisioning/dashboards/business.json +++ b/provisioning/dashboards/business.json @@ -50,8 +50,7 @@ "value": 80 } ] - }, - "unitScale": true + } }, "overrides": [] }, @@ -63,6 +62,7 @@ }, "id": 1, "options": { + "infinitePan": false, "inlineEditing": false, "panZoom": false, "root": { @@ -88,6 +88,7 @@ }, "elements": [], "name": "Element 1720372446038", + "oneClickMode": "off", "placement": { "height": 100, "left": 0, @@ -98,8 +99,7 @@ }, "showAdvancedTypes": false }, - "pluginVersion": "10.3.1", - "title": "Business App", + "pluginVersion": "11.2.0", "type": "canvas" } ], @@ -116,7 +116,7 @@ }, "timepicker": {}, "timezone": "", - "title": "Business Suite", + "title": "Business App", "uid": "O4tc_E6Gz", "version": 1, "weekStart": "" diff --git a/provisioning/datasources/datasources.yaml b/provisioning/datasources/datasources.yaml new file mode 100644 index 0000000..97716a3 --- /dev/null +++ b/provisioning/datasources/datasources.yaml @@ -0,0 +1,113 @@ +apiVersion: 1 + +datasources: + - name: Business Input + type: marcusolsson-static-datasource + uid: 4ytGZmF4k + access: proxy + isDefault: true + orgId: 1 + version: 1 + editable: false + jsonData: + codeEditorEnabled: true + - name: Large File + type: marcusolsson-json-datasource + url: https://raw.githubusercontent.com/json-iterator/test-data/master/large-file.json + access: proxy + uid: X6tfeT2nz + isDefault: false + orgId: 1 + version: 1 + editable: false + - name: GitHub Repositories + type: marcusolsson-json-datasource + url: https://api.github.com/users/volkovlabs/repos + access: proxy + uid: fdtmm8zot2h34e + isDefault: false + orgId: 1 + version: 1 + editable: false + - name: Grafana Plugins + type: marcusolsson-json-datasource + url: https://grafana.com/api/plugins + access: proxy + uid: fdtmkexmvk8owc + isDefault: false + orgId: 1 + version: 1 + editable: false + - name: Bitcoin + type: volkovlabs-rss-datasource + access: proxy + orgId: 1 + uid: fdtq1w197sk5cc + version: 1 + editable: false + jsonData: + feed: https://news.bitcoin.com/feed/ + - name: YouTube Channel + type: volkovlabs-rss-datasource + access: proxy + orgId: 1 + uid: rZAdZdf82 + version: 1 + editable: false + jsonData: + feed: https://www.youtube.com/feeds/videos.xml + - name: Grafana Cloud + type: volkovlabs-rss-datasource + access: proxy + isDefault: false + uid: adtq1gclr3caoa + orgId: 1 + version: 1 + editable: false + jsonData: + feed: https://grafana.com/docs/grafana-cloud/whats-new/index.xml + - name: Grafana News + type: volkovlabs-rss-datasource + access: proxy + uid: edtq06kf808owe + orgId: 1 + version: 1 + editable: false + jsonData: + feed: https://grafana.com/blog/news.xml + - name: National Vulnerability Database + type: volkovlabs-rss-datasource + access: proxy + orgId: 1 + uid: bdtq0slbq6tc0b + version: 1 + editable: true + jsonData: + feed: https://www.nist.gov/news-events/news/rss.xml + - name: Volkov Labs + type: volkovlabs-rss-datasource + access: proxy + orgId: 1 + uid: rZAdZdf73 + version: 1 + editable: false + jsonData: + feed: https://volkovlabs.io/blog/rss.xml + - name: Infinity + type: yesoreyeram-infinity-datasource + access: proxy + isDefault: false + orgId: 1 + uid: edtmni4c13i80c + version: 1 + editable: false + - name: Business Satellite + type: volkovlabs-grapi-datasource + access: proxy + uid: edtxkxc37xce8d + orgId: 1 + version: 1 + editable: false + jsonData: + url: http://localhost:3000 + requestMode: local