Open-source IoT Platform - Device management, data collection, processing and visualization.
You can not select more than 25 topics Topics must start with a letter or number, can include dashes ('-') and can be up to 35 characters long.
 
 
 
 
 
 

272 lines
225 KiB

{
"widgetsBundle": {
"alias": "cards",
"title": "Cards",
"image": "data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAAMgAAACgCAIAAADGnbT+AAAABmJLR0QA/wD/AP+gvaeTAAAT5UlEQVR42u3d95MUVffHcf86/UEtqwxVapmzaH0VE2YR82PAgBkTKCYUAyrGR0mSxERwBXRV0EdFRcAc5vvaPnptZ5bdZWbDwJ5TW1s93T23b5/7vufe7t3PuXv8+OOP36YNZrzUqCzdNUR37fHdd9810gaz4qV01xDdlWAlWAlWgpVgJVgJVnoqwUqwEqwEK8FKsNISrAQrwdqlwfrtt9/+V7Off/55gIJ++OGH8m46bOvWrb/88sv4Aeubb76pu8vb5z/++MPvEaqPwocL8RUrVqhwfc8rr7zSYdsNBFZvb+/hhx/+n79t/fr1ree8+eabn376qY03KrPx2muvff311zaeffbZd955Z/yANWvWLF76v8psPPLII19++eVdd901QvX57LPP7rvvvqGfv3nz5ldffbXfQzfffPPy5cvre9zC999/P4JgnXfeefU9n3/+uX6pEkHMxo0bL7vsMh5UCU786quvfGXSpElz584VwByNkvUtX3nrrbdsRDmrVq1auHDhtm3bdr+h8LHHHpszZ05s//TTT9EbN2zYwG+LFy/mH+OACMGBf/75Z5zW09Pj0Pbt2wsxuuimTZvi46+//qr3vvvuu3H+hx9++MUXX/g6D3/88cdxzkcffbRo0aItW7bER+FHCa5VamW0ef75588555z4iootW7Zs5cqV0SLA0hyuUmJHAUutHOo3pnQElqpsq8xt2DNjxowzzjjjySefPP/8819++eUPPvjAxh133AGpJ5544plnnnHDp512mtNUa/r06QsWLOCOKVOmPPTQQ7rXDTfcoJCHH374+uuvd/KECROaRs/dDCwOvPjii21Mnjz58ssvF8JPPvnkK664wsYll1zCAw5xpvD21FNPcazRR5fj8xdeeIEbuff333/nYWXedttt/On8s88++8ILL5w3b56jV155ZQxbPKxMNJh+QEdRgVGJQ1pw5syZTnj77beRfdZZZ6nk7bffrtgAK/b4CowKWO5UUUoWPlxlOME69NBDL67MtQOsl156yYYa33rrrTbUbMmSJTYCLBvuVhe0EWDpYVwT0w5u1VduvPFG96AP6cfjByxBJToVkmysXr0aTwLGUUcdJbRzztSpU5cuXWq0uvba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",
"description": "Tables and cards to display latest and historical values for multiple entities simultaneously.",
"externalId": null,
"name": "Cards"
},
"widgetTypes": [
{
"alias": "attributes_card",
"name": "Attributes card",
"image": "data:image/png;base64,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",
"description": "Displays one or more latest values of the entity. Supports multiple entities.",
"descriptor": {
"type": "latest",
"sizeX": 7.5,
"sizeY": 3,
"resources": [],
"templateHtml": "",
"templateCss": "#container {\n overflow: auto;\n}\n\n.tbDatasource-container {\n margin: 5px;\n padding: 8px;\n}\n\n.tbDatasource-title {\n font-size: 1.200rem;\n font-weight: 500;\n padding-bottom: 10px;\n}\n\n.tbDatasource-table {\n width: 100%;\n box-shadow: 0 0 10px #ccc;\n border-collapse: collapse;\n white-space: nowrap;\n font-size: 1.000rem;\n color: #757575;\n}\n\n.tbDatasource-table td {\n position: relative;\n border-top: 1px solid rgba(0, 0, 0, 0.12);\n border-bottom: 1px solid rgba(0, 0, 0, 0.12);\n padding: 0px 18px;\n box-sizing: border-box;\n}",
"controllerScript": "self.onInit = function() {\n \n self.ctx.datasourceTitleCells = [];\n self.ctx.valueCells = [];\n self.ctx.labelCells = [];\n \n for (var i=0; i < self.ctx.datasources.length; i++) {\n var tbDatasource = self.ctx.datasources[i];\n\n var datasourceId = 'tbDatasource' + i;\n self.ctx.$container.append(\n \"<div id='\" + datasourceId +\n \"' class='tbDatasource-container'></div>\"\n );\n\n var datasourceContainer = $('#' + datasourceId,\n self.ctx.$container);\n\n datasourceContainer.append(\n \"<div class='tbDatasource-title'>\" +\n tbDatasource.name + \"</div>\"\n );\n \n var datasourceTitleCell = $('.tbDatasource-title', datasourceContainer);\n self.ctx.datasourceTitleCells.push(datasourceTitleCell);\n \n var tableId = 'table' + i;\n datasourceContainer.append(\n \"<table id='\" + tableId +\n \"' class='tbDatasource-table'><col width='30%'><col width='70%'></table>\"\n );\n var table = $('#' + tableId, self.ctx.$container);\n\n for (var a = 0; a < tbDatasource.dataKeys.length; a++) {\n var dataKey = tbDatasource.dataKeys[a];\n var labelCellId = 'labelCell' + a;\n var cellId = 'cell' + a;\n table.append(\"<tr><td id='\" + labelCellId + \"'>\" + dataKey.label +\n \"</td><td id='\" + cellId +\n \"'></td></tr>\");\n var labelCell = $('#' + labelCellId, table);\n self.ctx.labelCells.push(labelCell);\n var valueCell = $('#' + cellId, table);\n self.ctx.valueCells.push(valueCell);\n }\n } \n \n self.onResize();\n}\n\nself.onDataUpdated = function() {\n for (var i = 0; i < self.ctx.valueCells.length; i++) {\n var cellData = self.ctx.data[i];\n if (cellData && cellData.data && cellData.data.length > 0) {\n var tvPair = cellData.data[cellData.data.length -\n 1];\n var value = tvPair[1];\n var textValue;\n //toDo -> + IsNumber\n \n if (isNumber(value)) {\n var decimals = self.ctx.decimals;\n var units = self.ctx.units;\n if (cellData.dataKey.decimals || cellData.dataKey.decimals === 0) {\n decimals = cellData.dataKey.decimals;\n }\n if (cellData.dataKey.units) {\n units = cellData.dataKey.units;\n }\n txtValue = self.ctx.utils.formatValue(value, decimals, units, true);\n } else {\n txtValue = value;\n }\n self.ctx.valueCells[i].html(txtValue);\n }\n }\n \n function isNumber(n) {\n return !isNaN(parseFloat(n)) && isFinite(n);\n }\n}\n\nself.onResize = function() {\n var datasourceTitleFontSize = self.ctx.height/8;\n if (self.ctx.width/self.ctx.height <= 1.5) {\n datasourceTitleFontSize = self.ctx.width/12;\n }\n datasourceTitleFontSize = Math.min(datasourceTitleFontSize, 20);\n for (var i = 0; i < self.ctx.datasourceTitleCells.length; i++) {\n self.ctx.datasourceTitleCells[i].css('font-size', datasourceTitleFontSize+'px');\n }\n var valueFontSize = self.ctx.height/9;\n var labelFontSize = self.ctx.height/9;\n if (self.ctx.width/self.ctx.height <= 1.5) {\n valueFontSize = self.ctx.width/15;\n labelFontSize = self.ctx.width/15;\n }\n valueFontSize = Math.min(valueFontSize, 18);\n labelFontSize = Math.min(labelFontSize, 18);\n\n for (i = 0; i < self.ctx.valueCells; i++) {\n self.ctx.valueCells[i].css('font-size', valueFontSize+'px');\n self.ctx.valueCells[i].css('height', valueFontSize*2.5+'px');\n self.ctx.valueCells[i].css('padding', '0px ' + valueFontSize + 'px');\n self.ctx.labelCells[i].css('font-size', labelFontSize+'px');\n self.ctx.labelCells[i].css('height', labelFontSize*2.5+'px');\n self.ctx.labelCells[i].css('padding', '0px ' + labelFontSize + 'px');\n } \n}\n\nself.onDestroy = function() {\n}\n",
"settingsSchema": "{}",
"dataKeySettingsSchema": "{}\n",
"defaultConfig": "{\"datasources\":[{\"type\":\"function\",\"name\":\"function\",\"dataKeys\":[{\"name\":\"f(x)\",\"type\":\"function\",\"label\":\"Random\",\"color\":\"#2196f3\",\"settings\":{},\"_hash\":0.15479322438769105,\"funcBody\":\"var value = prevValue + Math.random() * 100 - 50;\\nvar multiplier = Math.pow(10, 2 || 0);\\nvar value = Math.round(value * multiplier) / multiplier;\\nif (value < -1000) {\\n\\tvalue = -1000;\\n} else if (value > 1000) {\\n\\tvalue = 1000;\\n}\\nreturn value;\"}]}],\"timewindow\":{\"realtime\":{\"timewindowMs\":60000}},\"showTitle\":true,\"backgroundColor\":\"#fff\",\"color\":\"rgba(0, 0, 0, 0.87)\",\"padding\":\"8px\",\"settings\":{},\"title\":\"Attributes card\"}"
}
},
{
"alias": "html_card",
"name": "HTML Card",
"image": "data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAAMgAAACgCAAAAABslHx1AAAAAmJLR0QA/4ePzL8AAATFSURBVHja7d3tUxNXFMdx/u7vEkAJsKQK6bilKaBV1Eh5GGNaSyq0WodhRuqMtQJqW5UHCwKGMRJiQpL99cWGEGaaTjtjgaTnvNpz7mYnn8neu/duXtwWFbdWlxs8Vrf21VJcy5TU4FHKrBVbtjJqgshstayWmgFSWm1ZVlPEskEMYhCDGMQgBjGIQQxiEIMYxCAGMYhBDGIQgxjEIAYxiEEMYhCDGMQgBjGIQQxiEIMYxCAG+T9ACrlcLjjyc7lcWflcbfhBfnByOZfL5cpSKZfL+f/2G+WAJ/8dJAHh4GgFeK4BaiOjMYDtyskzAIvSQ+BtI0JmKif3NRBk3PM8Lwwhz/M8LxtAzgf30RoNBJEkjUOk0j4GwJok6XaDQ8LwtSSVXVrP1of4v1w978bu5YNh4fHlfnfwfpDo15Hevm/eHkCyP8Tc/rGV44d8FaLbl/QCRrrqQopXg251bkdSdjBIIpuSNAtAbwXyqgsA595Hh3Sm0+l0Or1QDzJxLWiYhCftdSFJoKMHiPnyvwTOhIHeD9KGA3SfIYBkOsGJtIPz/GNDauIvIfEFGJdKnZwtOPUgOw4kfT0E1vQMmPb12IEZaRJCz1RKBpBJCG+ocAVixw25XArTUdACTBbqdvY56MhLisK8xisDXRyiUi+MStoDnqjUCT9Keg3Oh48MCcXj8Xg8PlwPMqQE/Kzr8HK3LiQBFyozhaI8uClJ8+AUi8CD6qi1DYymUqkksH7Mnf0zLcNIvo2In64LGYXhauLCHUlaAnb3gIUq5FXN7//qmCH98s8RmoXv9KYuZBI+ryZ9cFsKzsvngUdVyAowcDGIjWOGRKRpaINNrdWF3IUeX9LS/PymLsMlSZqCLikM01XIe+CnE3ogRqRtAE9arQtZCVqynbCoWXBWpfddMCaNgLsnLQSj1gVwM5Je3/RPAKIBYPYIJOp5nud5dw8uFIPQxO1eCOf1oRs6Jm71QOtG0FMiydFQAHkKnJlIjTgkTwIyB87uEUglbh5c6G13UGhdkvSyPUicB5J0HYBQe/Bkv+tUPnr/JCDZVq7obyF6d6MNnC+COdTmSCs4A78Hs5dkG3zyYqAy13oec8CJ/XZ6l7qFzfW9apJ/80dNsr5V2yNyGxt7tmY3iEEMYhCDGOTEIJnD6YtBDGKQpocsDrvR5K4kyX96PeoOzu5Lysbj8b2Zvv7SkepphgwBcD4vqRAPVlXR91IauASUVAhWgny6e7ohtEdCwcpdCaDTBYYDCED5sHrxdEOuFZRx4Ya06cC3ZS05sKI04EzM3demA1NlLTqweuo7ewI86U7lHdYQzCgNzEnSHXB9SYPw/amHpKBPGoFzqVQqFYUxpYEX0pHqeINAav4wvXoI+eyweq1BIDHorry+nT6E1FRnGgQyCtFqUxVyo7baGJBHlVG4mFivgRxU9xMbjQIpR4HBqYRLz84hpBwFhqYSLu5Og0C07VZ6dXTvEHKk2iAQZZOdQHcqX3NrSdlb1WrjLHXL26/T/j+s2prdIAYxiEEMYhCDGMQgBjGIQQxiEIMYxCAGMYhBDGIQgxjEIAYxiEEMYhCDGMQgBjGIQQxiEIMY5PRAmmaD4ObYsvndVst+c2yiXWppjm3NS/oTe0OjFEeU1MMAAAAASUVORK5CYII=",
"description": "Useful to inject custom HTML code. Designed to display static information only.",
"descriptor": {
"type": "static",
"sizeX": 7.5,
"sizeY": 3,
"resources": [],
"templateHtml": "",
"templateCss": "",
"controllerScript": "self.onInit = function() {\n var $injector = self.ctx.$scope.$injector;\n var utils = $injector.get(self.ctx.servicesMap.get('utils'));\n\n var cssParser = new cssjs();\n cssParser.testMode = false;\n var namespace = 'html-card-' + hashCode(self.ctx.settings.cardCss);\n cssParser.cssPreviewNamespace = namespace;\n cssParser.createStyleElement(namespace, self.ctx.settings.cardCss);\n self.ctx.$container.addClass(namespace);\n var evtFnPrefix = 'htmlCard_' + Math.abs(hashCode(self.ctx.settings.cardCss + self.ctx.settings.cardHtml + self.ctx.widget.id));\n cardHtml = '<div style=\"height:100%\" onclick=\"' + evtFnPrefix + '_onClickFn(event)\">' + \n self.ctx.settings.cardHtml + \n '</div>';\n cardHtml = replaceCustomTranslations(cardHtml);\n self.ctx.$container.html(cardHtml);\n\n window[evtFnPrefix + '_onClickFn'] = function (event) {\n self.ctx.actionsApi.elementClick(event);\n }\n\n function hashCode(str) {\n var hash = 0;\n var i, char;\n if (str.length === 0) return hash;\n for (i = 0; i < str.length; i++) {\n char = str.charCodeAt(i);\n hash = ((hash << 5) - hash) + char;\n hash = hash & hash;\n }\n return hash;\n }\n \n function replaceCustomTranslations (pattern) {\n var customTranslationRegex = new RegExp('{i18n:[^{}]+}', 'g');\n pattern = pattern.replace(customTranslationRegex, getTranslationText);\n return pattern;\n }\n \n function getTranslationText (variable) {\n return utils.customTranslation(variable, variable);\n \n }\n}\n\nself.actionSources = function() {\n return {\n 'elementClick': {\n name: 'widget-action.element-click',\n multiple: true\n }\n };\n}\n\nself.onDestroy = function() {\n}\n",
"settingsSchema": "",
"dataKeySettingsSchema": "",
"settingsDirective": "tb-html-card-widget-settings",
"defaultConfig": "{\"datasources\":[{\"type\":\"static\",\"name\":\"function\",\"dataKeys\":[{\"name\":\"f(x)\",\"type\":\"function\",\"label\":\"Random\",\"color\":\"#2196f3\",\"settings\":{},\"_hash\":0.15479322438769105,\"funcBody\":\"var value = prevValue + Math.random() * 100 - 50;\\nvar multiplier = Math.pow(10, 2 || 0);\\nvar value = Math.round(value * multiplier) / multiplier;\\nif (value < -1000) {\\n\\tvalue = -1000;\\n} else if (value > 1000) {\\n\\tvalue = 1000;\\n}\\nreturn value;\"}]}],\"timewindow\":{\"realtime\":{\"timewindowMs\":60000}},\"showTitle\":false,\"backgroundColor\":\"rgb(255, 255, 255)\",\"color\":\"rgba(0, 0, 0, 0.87)\",\"padding\":\"8px\",\"settings\":{\"cardHtml\":\"<div class='card'>HTML code here</div>\",\"cardCss\":\".card {\\n font-weight: bold;\\n font-size: 32px;\\n color: #999;\\n width: 100%;\\n height: 100%;\\n display: flex;\\n align-items: center;\\n justify-content: center;\\n}\"},\"title\":\"HTML Card\",\"dropShadow\":true}"
}
},
{
"alias": "timeseries_table",
"name": "Timeseries table",
"image": "data:image/png;base64,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",
"description": "Displays time series data for one or more entities. Data for each entity is displayed in a separate tab.",
"descriptor": {
"type": "timeseries",
"sizeX": 8,
"sizeY": 6.5,
"resources": [],
"templateHtml": "<tb-timeseries-table-widget \n [ctx]=\"ctx\">\n</tb-timeseries-table-widget>",
"templateCss": "",
"controllerScript": "self.onInit = function() {\n}\n\nself.onDataUpdated = function() {\n self.ctx.$scope.timeseriesTableWidget.onDataUpdated();\n}\n\nself.onLatestDataUpdated = function() {\n self.ctx.$scope.timeseriesTableWidget.onLatestDataUpdated();\n}\n\nself.typeParameters = function() {\n return {\n ignoreDataUpdateOnIntervalTick: true,\n hasAdditionalLatestDataKeys: true\n };\n}\n\nself.actionSources = function() {\n return {\n 'actionCellButton': {\n name: 'widget-action.action-cell-button',\n multiple: true,\n hasShowCondition: true\n },\n 'rowClick': {\n name: 'widget-action.row-click',\n multiple: false\n }\n };\n}\n\nself.onDestroy = function() {\n}\n",
"settingsSchema": "",
"dataKeySettingsSchema": "",
"latestDataKeySettingsSchema": "",
"settingsDirective": "tb-timeseries-table-widget-settings",
"dataKeySettingsDirective": "tb-timeseries-table-key-settings",
"latestDataKeySettingsDirective": "tb-timeseries-table-latest-key-settings",
"hasBasicMode": true,
"basicModeDirective": "tb-timeseries-table-basic-config",
"defaultConfig": "{\"datasources\":[{\"type\":\"function\",\"name\":\"function\",\"entityAliasId\":null,\"filterId\":null,\"dataKeys\":[{\"name\":\"f(x)\",\"type\":\"function\",\"label\":\"Temperature °C\",\"color\":\"#2196f3\",\"settings\":{\"useCellStyleFunction\":true,\"cellStyleFunction\":\"if (value) {\\n var percent = (value + 60)/120 * 100;\\n var color = tinycolor.mix('blue', 'red', percent);\\n color.setAlpha(.5);\\n return {\\n paddingLeft: '20px',\\n color: '#ffffff',\\n background: color.toRgbString(),\\n fontSize: '18px'\\n };\\n} else {\\n return {};\\n}\",\"useCellContentFunction\":false},\"_hash\":0.8587686344902596,\"funcBody\":\"var value = prevValue + Math.random() * 40 - 20;\\nvar multiplier = Math.pow(10, 1 || 0);\\nvar value = Math.round(value * multiplier) / multiplier;\\nif (value < -60) {\\n\\tvalue = -60;\\n} else if (value > 60) {\\n\\tvalue = 60;\\n}\\nreturn value;\",\"units\":null,\"decimals\":null,\"usePostProcessing\":null,\"postFuncBody\":null},{\"name\":\"f(x)\",\"type\":\"function\",\"label\":\"Humidity, %\",\"color\":\"#ffc107\",\"settings\":{\"useCellStyleFunction\":true,\"cellStyleFunction\":\"if (value) {\\n var percent = value;\\n var backgroundColor = tinycolor('blue');\\n backgroundColor.setAlpha(value/100);\\n var color = 'blue';\\n if (value > 50) {\\n color = 'white';\\n }\\n \\n return {\\n paddingLeft: '20px',\\n color: color,\\n background: backgroundColor.toRgbString(),\\n fontSize: '18px'\\n };\\n} else {\\n return {};\\n}\",\"useCellContentFunction\":false},\"_hash\":0.12775350966079668,\"funcBody\":\"var value = prevValue + Math.random() * 20 - 10;\\nvar multiplier = Math.pow(10, 1 || 0);\\nvar value = Math.round(value * multiplier) / multiplier;\\nif (value < 5) {\\n\\tvalue = 5;\\n} else if (value > 100) {\\n\\tvalue = 100;\\n}\\nreturn value;\"}],\"latestDataKeys\":null}],\"timewindow\":{\"realtime\":{\"interval\":1000,\"timewindowMs\":60000},\"aggregation\":{\"type\":\"NONE\",\"limit\":200}},\"showTitle\":true,\"backgroundColor\":\"rgb(255, 255, 255)\",\"color\":\"rgba(0, 0, 0, 0.87)\",\"padding\":\"8px\",\"settings\":{\"showTimestamp\":true,\"displayPagination\":true,\"defaultPageSize\":10},\"title\":\"Timeseries table\",\"dropShadow\":true,\"enableFullscreen\":true,\"titleStyle\":{\"fontSize\":\"16px\",\"fontWeight\":400,\"padding\":\"5px 10px 5px 10px\"},\"useDashboardTimewindow\":false,\"showLegend\":false,\"widgetStyle\":{},\"actions\":{},\"showTitleIcon\":false,\"iconColor\":\"rgba(0, 0, 0, 0.87)\",\"iconSize\":\"24px\",\"displayTimewindow\":true,\"configMode\":\"basic\"}"
}
},
{
"alias": "html_value_card",
"name": "HTML Value Card",
"image": "data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAAMgAAACgCAAAAABslHx1AAAAAmJLR0QA/4ePzL8AAAkbSURBVHja7d3rT1vnHcBx/pVK24ttLybtTdd3k7alaRPWtZmULu20tZu2at1aqWrWrkvVSmnVpVu3qFLHtGx6Cj0cH8Bg+0C4XwqmQBITQgiXmEswt1DHDja+4dv57sWx8SWEAHFQgp7njY9/z7HP+Tx+bjzH+JSR9C7MP+JpwZugLLkYTPGIp1RwMVnmDXIAUtBbtpA6CJDUQtk8ByLNS4iESIiESIiESIiESIiESIiESIiESMgjBmkWbQBfiRoDPELcBugQFwEYFzZgWQioFEIIIdyAV2RSK73CaWSfKQyKbgBSmcjcfkImRVUCqBEXgS4hLt0VUq/ruj4P3NZ1vVJYdX2AXuE0dF2vFhZdb86HNOi6ri/vJyT2uZgHnxA+iFVWCs24G2Qp/2W1YhqgVzgBusQQkA9Z3f820iaccFnUA+Oi2y4WHlXItLAY6GIE0MXsFdF9N0iPy+Wa2ymk1+Vyze8vJFElvGEh1mBNVCWCompjm8beu1OIEEIM7HP32y1cU0IHLorW9XWrmLwLZMLn84V2CnH7fL7wPkNuCHuHuAqGZhaknoNMinrAI6oehTZC8gtRKcKwKKpaW1tbhFjbhKyIz9fAKfRHAkKvEM1Aj+gCcIhLdAhN13XdYzQJpd0hxI2CcWQbSLWu6/pUdhxZ2mfIghCTsFElZgFGRY3RYVayaTb6vhCifpbNkX1ye4gQQogr2ZF99qGaa4WTctIoIRIiIRIiIRIiIRIiIRIiIRIiIRIiIRIiIRIiIRIiIRIiIRIiIRIiIRIiIRJyMCFL/a3DsbvmBooDkV1/iWBjeD8gIyde/ODs24dOrW+d3fhYujBw87uduz0B+2MrDx6iPzcDkLYcCWyV7T3+ZCHE+PUru4bEXObj5xcfHGT6mWhmq/atrfJ/O3i0EKJ+9EnnXk/kTNeDg7y+WX3TP47cmV3/FoWQxaORhxKycTS3/ac7m+TNp0KFEOOFizyUkLlXc9sfdRfnGi85KYRUnuYOSEtu8zwAV5YhUHnq9TOZpkGqDRhW1V++p6qq+XZrllOvvvkvd8kgkbzvS792rThX+wuFkPkj0TshT+c2DwHwcTfVL1jds92vvGn+IEDsOeCriornT1ZUVKQB7EfO9c2M1Rx7LVL6ATHxdPHPECwdDhdC0seH2RHk36fNF314LgfJr1p9L5gA49OXSw9p+FtxxXpxgELIuQ/ZEaTijWy/+6SxJeSlzRP6xXCpIaGjxSNi1bsUQqaPxHYG+f7tbOB3ni0hTxnZHRRRasg7zUUBz+FIISR17DI7g7yzGTg9sPUnMlvqXis3YLxTFEgfH6QQ8tlf2SHk/GbgH+1bQnpOBB8QZOxEvCjy3/cphEwd2dgpJNeP/7NtSwj2Q2dnHwRk+VlvUWTmcKQQknxmlNJBiJ4/+ezbzRslhqwfmyqKpI5tzu8ykLMfU0oIYIydPfSfVCkhyV99WRxSv1WeTd8uLy//I4vfPJwNPP6D8vJy7/1DgNCf3ygl5KSyXe7R4kIr1ScCwImR0kE+/ZD7ghzb/FeR1Pd2Bgnnhqza/5UMYnslfX+QU87sVu83toecbTIf20/n6nDJIEM/i3J/kKHfZGegxx/fHqKdyzSNH2aH/tRPJ0sEmTnydWFgpSK9Swh/+HsS4Prz3fdoI57yTH/b/qx5/jdfPmNOVCbvG/L7J8pzSQXOf8e/W0jigx+dPHPq2EvX7tXY+eTQ++99CXDt5Z+89sFbP3/aZnbET3z2ANa19vIfI7GRvqu3d7Kjb8iV2S8y0juwvMtjypVGCZEQCZEQCZEQCZEQCZEQCZEQCZEQCXl4IJ7R7XKX7rlUa8TvHSk95EJtCiCijm+GXI3bvdVV270ONm7JW+BL+NMwYbnbtYOYf6uoP7Z7yC1lAWBCjZYMElnMe7KsRIsiBWlC2yqquvdQtRxOgOYuILa0mshAgmFgfR0wvCub5WN4VzZMSGDJXE4PLJpFmlhZTQD+jfAyMT+EQslbSwkITilLoUy5hxe/NoBQyFhdyiyc3h62+KPA+lIQ8K8DgUDUr474dw8Z05KwrszBuNpUb/WakNZBoMsJoaZae7aAkh1KQ12bDVL9qkN1GhhOS6PWGofFGmtD3TKo3arKhAb9zQ021eqnt16xuZjUwLik2jVHAPpbztu0OnO1sdla7biOMaQ61G6D4boYftV93aHUNe8eElbn4aqWxK/cwOhuLoK0dCWZ1MyrieOaj2iTDa5Y1/Fb5llUA0SsI0S0KxjDdUnUxkDShGg+Ik3tmao1qYFbXSXR3mjQry4Stw/kVa3x2gDBGjdJx4DR0rnXqkXnl9A0COk45iHzIT7FB4Y2A0DTkNlGjLoxoM/JrOqD4DqTWgriF0KoU5mT6+8AbijRHOR8P+BXbtHfBgy05UHsw8BgN3jVQS20Z8isGr+trAK3ehrqNEshZE6xOxwO1eyQtQkTElOsDoejpoXUgNo0GoSLTdlWej0fElBu5SCWCcBQZ+hvB4aac5CUUudwOOp04JJ5dWFvkKQ2M2IHAtpoODVVBLmhzHo8Hs8aALWTJiSuuDwej2cFiLg71UVGtob4FX8OYh0HktXTd0LS6gWPx+NZAjqrB/cOYaDLPpqpVYxnIJ1OoMPJmrICZL430uoErtigftgMzs4And3MWOKZqrUJaQfcajwHae8BVhT/nRAaBzPHuK7Nqyt7h9xUqkPAgjId8VhVA1cjXK7zx9yqE9od3tSqw+xj5lR3bKXOBtcss8lQxxTXtKV0wH6JuLUvEutvSOZB1Bspb4MTbikLcSY1WKieSPj1Tgohc4o/yXXVnYz0jBHSrnHBloC6odheIIbNbHmXVKVxRAniaoRYm1Ld1uqEjT5V0bJzFpeqOAZsYIxqitoXxxjWlOq+BPibFKUlkF+1mnqqlbYoGG1Kn/lhu62K2hcvgsTtygiM1yhqT4zOJoO4dRDGFMt9zbWS+eUQy15DSoRzM45Edo90yMxOZR6JFpZhfwfJzFwhmp2eGFv9eJoRNQAjnCiIbsQfltlvf8cBmcYfGEgsckAg8i9ECZEQCZEQCZEQCZEQCZEQCZGQhxZyYG4QfDBu2RzwliUOxk20U2UH47bmKf4Pbw32/q0TqIwAAAAASUVORK5CYII=",
"description": "Displays configurable HTML with ability to inject values from the selected datasource. For example, display single or multiple attribute values.",
"descriptor": {
"type": "latest",
"sizeX": 7.5,
"sizeY": 3,
"resources": [],
"templateHtml": "",
"templateCss": "",
"controllerScript": "self.onInit = function() {\n self.ctx.varsRegex = /\\$\\{([^\\}]*)\\}/g;\n self.ctx.htmlSet = false;\n \n var cssParser = new cssjs();\n cssParser.testMode = false;\n var namespace = 'html-value-card-' + hashCode(self.ctx.settings.cardCss);\n cssParser.cssPreviewNamespace = namespace;\n cssParser.createStyleElement(namespace, self.ctx.settings.cardCss);\n self.ctx.$container.addClass(namespace);\n var evtFnPrefix = 'htmlValueCard_' + Math.abs(hashCode(self.ctx.settings.cardCss + self.ctx.settings.cardHtml + self.ctx.widget.id));\n self.ctx.html = '<div style=\"height:100%\" onclick=\"' + evtFnPrefix + '_onClickFn(event)\">' + \n self.ctx.settings.cardHtml + \n '</div>';\n\n self.ctx.replaceInfo = processHtmlPattern(self.ctx.html, self.ctx.data);\n \n updateHtml();\n \n window[evtFnPrefix + '_onClickFn'] = function (event) {\n self.ctx.actionsApi.elementClick(event);\n }\n\n function hashCode(str) {\n var hash = 0;\n var i, char;\n if (str.length === 0) return hash;\n for (i = 0; i < str.length; i++) {\n char = str.charCodeAt(i);\n hash = ((hash << 5) - hash) + char;\n hash = hash & hash;\n }\n return hash;\n }\n \n function processHtmlPattern(pattern, data) {\n var match = self.ctx.varsRegex.exec(pattern);\n var replaceInfo = {};\n replaceInfo.variables = [];\n while (match !== null) {\n var variableInfo = {};\n variableInfo.dataKeyIndex = -1;\n var variable = match[0];\n var label = match[1];\n var valDec = 2;\n var splitVals = label.split(':');\n if (splitVals.length > 1) {\n label = splitVals[0];\n valDec = parseFloat(splitVals[1]);\n }\n variableInfo.variable = variable;\n variableInfo.valDec = valDec;\n if (label == 'entityName') {\n variableInfo.isEntityName = true;\n } else if (label == 'entityLabel') {\n variableInfo.isEntityLabel = true;\n } else if (label.startsWith('#')) {\n var keyIndexStr = label.substring(1);\n var n = Math.floor(Number(keyIndexStr));\n if (String(n) === keyIndexStr && n >= 0) {\n variableInfo.dataKeyIndex = n;\n }\n }\n if (!variableInfo.isEntityName && !variableInfo.isEntityLabel && variableInfo.dataKeyIndex === -1) {\n for (var i = 0; i < data.length; i++) {\n var datasourceData = data[i];\n var dataKey = datasourceData.dataKey;\n if (dataKey.label === label) {\n variableInfo.dataKeyIndex = i;\n break;\n }\n }\n }\n replaceInfo.variables.push(variableInfo);\n match = self.ctx.varsRegex.exec(pattern);\n }\n return replaceInfo;\n } \n}\n\nself.onDataUpdated = function() {\n updateHtml();\n}\n\nself.actionSources = function() {\n return {\n 'elementClick': {\n name: 'widget-action.element-click',\n multiple: true\n }\n };\n}\n\nself.typeParameters = function() {\n return {\n maxDatasources: 1,\n singleEntity: true,\n dataKeysOptional: true\n };\n}\n\n\nself.onDestroy = function() {\n}\n\nfunction isNumber(n) {\n return !isNaN(parseFloat(n)) && isFinite(n);\n}\n\nfunction padValue(val, dec, int) {\n var i = 0;\n var s, strVal, n;\n\n val = parseFloat(val);\n n = (val < 0);\n val = Math.abs(val);\n\n if (dec > 0) {\n strVal = val.toFixed(dec).toString().split('.');\n s = int - strVal[0].length;\n\n for (; i < s; ++i) {\n strVal[0] = '0' + strVal[0];\n }\n\n strVal = (n ? '-' : '') + strVal[0] + '.' + strVal[1];\n }\n\n else {\n strVal = Math.round(val).toString();\n s = int - strVal.length;\n\n for (; i < s; ++i) {\n strVal = '0' + strVal;\n }\n\n strVal = (n ? '-' : '') + strVal;\n }\n\n return strVal;\n}\n\nfunction updateHtml() {\n var $injector = self.ctx.$scope.$injector;\n var utils = $injector.get(self.ctx.servicesMap.get('utils'));\n var text = self.ctx.html;\n var updated = false;\n for (var v in self.ctx.replaceInfo.variables) {\n var variableInfo = self.ctx.replaceInfo.variables[v];\n var txtVal = '';\n if (variableInfo.dataKeyIndex > -1) {\n var varData = self.ctx.data[variableInfo.dataKeyIndex].data;\n if (varData.length > 0) {\n var val = varData[varData.length-1][1];\n if (isNumber(val)) {\n txtVal = padValue(val, variableInfo.valDec, 0);\n } else {\n txtVal = val;\n }\n }\n } else if (variableInfo.isEntityName) {\n if (self.ctx.defaultSubscription.datasources.length) {\n txtVal = self.ctx.defaultSubscription.datasources[0].entityName;\n } else {\n txtVal = 'Unknown';\n }\n } else if (variableInfo.isEntityLabel) {\n if (self.ctx.defaultSubscription.datasources.length) {\n txtVal = self.ctx.defaultSubscription.datasources[0].entityLabel || self.ctx.defaultSubscription.datasources[0].entityName;\n } else {\n txtVal = 'Unknown';\n }\n }\n if (typeof variableInfo.lastVal === undefined ||\n variableInfo.lastVal !== txtVal) {\n updated = true;\n variableInfo.lastVal = txtVal;\n }\n text = text.split(variableInfo.variable).join(txtVal);\n }\n if (updated || !self.ctx.htmlSet) {\n text = replaceCustomTranslations(text);\n self.ctx.$container.html(text);\n if (!self.ctx.htmlSet) {\n self.ctx.htmlSet = true;\n }\n }\n \n function replaceCustomTranslations (pattern) {\n var customTranslationRegex = new RegExp('{i18n:[^{}]+}', 'g');\n pattern = pattern.replace(customTranslationRegex, getTranslationText);\n return pattern;\n }\n \n function getTranslationText (variable) {\n return utils.customTranslation(variable, variable);\n \n }\n}\n\n",
"settingsSchema": "",
"dataKeySettingsSchema": "",
"settingsDirective": "tb-html-card-widget-settings",
"defaultConfig": "{\"datasources\":[{\"type\":\"function\",\"name\":\"function\",\"dataKeys\":[{\"name\":\"f(x)\",\"type\":\"function\",\"label\":\"My value\",\"color\":\"#2196f3\",\"settings\":{},\"_hash\":0.15479322438769105,\"funcBody\":\"return Math.random() * 5.45;\"}]}],\"timewindow\":{\"realtime\":{\"timewindowMs\":60000}},\"showTitle\":false,\"backgroundColor\":\"#fff\",\"color\":\"rgba(0, 0, 0, 0.87)\",\"padding\":\"0px\",\"settings\":{\"cardCss\":\".card {\\n width: 100%;\\n height: 100%;\\n border: 2px solid #ccc;\\n box-sizing: border-box;\\n}\\n\\n.card .content {\\n padding: 20px;\\n display: flex;\\n flex-direction: row;\\n align-items: center;\\n justify-content: space-around;\\n height: 100%;\\n box-sizing: border-box;\\n}\\n\\n.card .content .column {\\n display: flex;\\n flex-direction: column; \\n justify-content: space-around;\\n height: 100%;\\n}\\n\\n.card h1 {\\n text-transform: uppercase;\\n color: #999;\\n font-size: 20px;\\n font-weight: bold;\\n margin: 0;\\n padding-bottom: 10px;\\n line-height: 32px;\\n}\\n\\n.card .value {\\n font-size: 38px;\\n font-weight: 200;\\n}\\n\\n.card .description {\\n font-size: 20px;\\n color: #999;\\n}\\n\",\"cardHtml\":\"<div class='card'>\\n <div class='content'>\\n <div class='column'>\\n <h1>Value title</h1>\\n <div class='value'>\\n ${My value:2} units.\\n </div> \\n <div class='description'>\\n Value description text\\n </div>\\n </div>\\n <img height=\\\"80px\\\" src=\\\"data:image/svg+xml;base64,PHN2ZyB4bWxucz0iaHR0cDovL3d3dy53My5vcmcvMjAwMC9zdmciIGhlaWdodD0iMzIwIiB3aWR0aD0iMzIwIj48ZyBzdHJva2Utd2lkdGg9IjI4Ij48ZyBmaWxsPSIjMzA1NjgwIiBjb2xvcj0iIzAwMCIgd2hpdGUtc3BhY2U9Im5vcm1hbCI+PHBhdGggc3R5bGU9InRleHQtZGVjb3JhdGlvbi1jb2xvcjojMDAwO2lzb2xhdGlvbjphdXRvO21peC1ibGVuZC1tb2RlOm5vcm1hbDtibG9jay1wcm9ncmVzc2lvbjp0Yjt0ZXh0LWRlY29yYXRpb24tbGluZTpub25lO3RleHQtZGVjb3JhdGlvbi1zdHlsZTpzb2xpZDt0ZXh0LWluZGVudDowO3RleHQtdHJhbnNmb3JtOm5vbmUiIGQ9Ik0xNTEuMTMgMGMtMjguMzYzIDAtNTQuOTE1IDcuOTE1LTc3LjYxMyAyMS41MzdhMzYuNTc4IDM2LjU3OCAwIDAgMC0yMy4wNjctOC4xOTQgOC43NjYgOC43NjYgMCAwIDAtLjAwNCAwYy0yMC4xNTQuMDAxLTM2LjY3OSAxNi41MjgtMzYuNjc4IDM2LjY4MmE4Ljc2NiA4Ljc2NiAwIDAgMCAwIC4wMSAzNi42OSAzNi42OSAwIDAgMCA4LjEwNCAyMi45MjhjLTEzLjgzIDIyLjgzLTIxLjg3IDQ5LjU4LTIxLjg3IDc4LjE3YTguNzY2IDguNzY2IDAgMSAwIDE3LjUzIDBjMC0yNC43MDIgNi43Mi00Ny43NDggMTguMzc5LTY3LjU3NCA0LjU2NiAxLjk4NSA5LjQ3MiAzLjE1IDE0LjUxOSAzLjE1N2E4Ljc2NiA4Ljc2NiAwIDAgMCAuMDEyIDBjMjAuMTU1IDAgMzYuNjgzLTE2LjUyNyAzNi42ODItMzYuNjgyYTguNzY2IDguNzY2IDAgMCAwIDAtLjAwNGMtLjAwMS01LTEuMTM4LTkuODYzLTMuMDgzLTE0LjM5NyAxOS43MTctMTEuNDg0IDQyLjU4NS0xOC4wOTUgNjcuMDg1LTE4LjA5NWE4Ljc2NiA4Ljc2NiAwIDEgMCAwLTE3LjUzek01MC40NCAzMC44OGM1LjkxMy4wMDIgMTEuMTkxIDIuNTEyIDE0LjgzNiA3LjA3N2E4Ljc2NiA4Ljc2NiAwIDAgMCAuMTgzLjIxNCAxOS4xMzcgMTkuMTM3IDAgMCAxIDQuMTM0IDExLjg2M2MtLjAwMiAxMC42NzctOC40NjggMTkuMTQ0LTE5LjE0NCAxOS4xNDhhMTkuMTQ1IDE5LjE0NSAwIDAgMS0xMi00LjI1NCA4Ljc2NiA4Ljc2NiAwIDAgMC0uMDEzLS4wMSAxOS4xMzYgMTkuMTM2IDAgMCAxLTcuMTQ0LTE0Ljg5MmMuMDAzLTEwLjY3NyA4LjQ3LTE5LjE0NCAxOS4xNDgtMTkuMTQ2eiIvPjxwYXRoIHN0eWxlPSJ0ZXh0LWRlY29yYXRpb24tY29sb3I6IzAwMDtpc29sYXRpb246YXV0bzttaXgtYmxlbmQtbW9kZTpub3JtYWw7YmxvY2stcHJvZ3Jlc3Npb246dGI7dGV4dC1kZWNvcmF0aW9uLWxpbmU6bm9uZTt0ZXh0LWRlY29yYXRpb24tc3R5bGU6c29saWQ7dGV4dC1pbmRlbnQ6MDt0ZXh0LXRyYW5zZm9ybTpub25lIiBkPSJNNjYuOTkyIDEwMi44M2E4LjE4NyA4LjE4NyAwIDAgMC0yLjI1OCA2LjA3MSA4LjYwNCA4LjYwNCAwIDAgMCAyLjMzOCA1LjUxOGM2LjgwNSA2Ljg1NiAyMC4yMjMgMjAuMjIzIDIwLjIyMyAyMC4yMjNsMTEuODQ0LTExLjgzcy0xMi45NzMtMTIuOTYxLTIwLjE3Ni0yMC4xNzFjLTEuNjA0LTEuNjMyLTMuNzUtMi4zMTQtNi4wMTItMi4zMjRhOC4xNSA4LjE1IDAgMCAwLTUuOTYgMi41MTJ6bTMyLjE0NyAxOS45ODNMNjIuNSAxNTkuNDUyYy0zLjk3NSAzLjk3Ni0zLjk3NSAxMC40MjEgMCAxNC4zOTdsMTguMTU2IDE4LjE1NiAzMS43NTMgMzEuNzUzIDMwLjQ3OCAzMC40NzhjMy45NzYgMy45NzYgMTAuNDIyIDMuOTc2IDE0LjM5OCAwbDI0Ljc5MS0yNC43OTEgMzcuOTE0LTM3LjkxNCAzNi42MzktMzYuNjM5YzMuOTc1LTMuOTc2IDMuOTc1LTEwLjQyMiAwLTE0LjM5OGwtMTguNjMtMTguNjMtMzEuNzUtMzEuNzYtMzAuMDEtMzBjLTMuOTc3LTMuOTc1LTEwLjQyMi0zLjk3NS0xNC4zOTggMGwtMjQuNzkgMjQuNzktMzcuOTEgMzcuOTF6bTM3LjkxMS0zNy45MXMtMTIuOTczLTEyLjk2MS0yMC4xNzYtMjAuMTcxYy0xLjYwNC0xLjYzMi0zLjc1LTIuMzE0LTYuMDEyLTIuMzI0LTQuNzE3LS4wMjMtOC40MzQgMy44NjEtOC4yMTcgOC41ODNhOC42MDQgOC42MDQgMCAwIDAgMi4zMzcgNS41MThjNi44MDUgNi44NTYgMjAuMjIzIDIwLjIyMyAyMC4yMjMgMjAuMjIzbDExLjg0NC0xMS44M3ptNjkuMTkzIDUuMjEzczEyLjk2MS0xMi45NzMgMjAuMTcxLTIwLjE3NmMxLjYzMy0xLjYwNCAyLjMxNC0zLjc1IDIuMzI0LTYuMDEyLjAyMy00LjcxNi0zLjg2MS04LjQzNC04LjU4My04LjIxN2E4LjYwNCA4LjYwNCAwIDAgMC01LjUxOCAyLjMzOGMtNi44NTYgNi44MDUtMjAuMjIzIDIwLjIyMy0yMC4yMjMgMjAuMjIzbDExLjgzIDExLjg0NHptMzEuNzUzIDMxLjc1M3MxMi45NjEtMTIuOTczIDIwLjE3MS0yMC4xNzZjMS42MzMtMS42MDQgMi4zMTQtMy43NSAyLjMyNC02LjAxMi4wMjMtNC43MTYtMy44NjEtOC40MzQtOC41ODMtOC4yMTdhOC42MDQgOC42MDQgMCAwIDAtNS41MTggMi4zMzhjLTYuODU2IDYuODA1LTIwLjIyMyAyMC4yMjMtMjAuMjIzIDIwLjIyM2wxMS44MyAxMS44NDR6bS0xOC4wMDkgNjkuNjY3czEyLjk3MyAxMi45NjEgMjAuMTc4IDIwLjE3YzEuNjA0IDEuNjMyIDMuNzUgMi4zMTMgNi4wMTIgMi4zMjQgNC43MTcuMDIyIDguNDM0LTMuODYyIDguMjE3LTguNTg0bC0uMDAyLjAwMmE4LjYwNiA4LjYwNiAwIDAgMC0yLjMzOC01LjUxOGMtNi44MDUtNi44NTYtMjAuMjIyLTIwLjIyMi0yMC4yMjItMjAuMjIybC0xMS44NDQgMTEuODN6bS0zNy45MTQgMzcuOTE0czEyLjk3MyAxMi45NjEgMjAuMTc4IDIwLjE3YzEuNjA0IDEuNjMyIDMuNzUgMi4zMTMgNi4wMTIgMi4zMjMgNC43MTcuMDIzIDguNDM0LTMuODYxIDguMjE3LTguNTgzaC0uMDAyYTguNjAzIDguNjAzIDAgMCAwLTIuMzM3LTUuNTE4Yy02LjgwNS02Ljg1Ni0yMC4yMjMtMjAuMjIzLTIwLjIyMy0yMC4yMjNsLTExLjg0NCAxMS44M3ptLTY5LjY2Ny01LjY4N3MtMTIuOTYxIDEyLjk3My0yMC4xNjkgMjAuMTc4Yy0xLjYzMiAxLjYwNC0yLjMxNCAzLjc1LTIuMzI0IDYuMDEyLS4wMjMgNC43MTcgMy44NjEgOC40MzQgOC41ODMgOC4yMTdoLS4wMDJhOC42MDIgOC42MDIgMCAwIDAgNS41MTgtMi4zMzdjNi44NTYtNi44MDUgMjAuMjIzLTIwLjIyMyAyMC4yMjMtMjAuMjIzbC0xMS44Mi0xMS44NHptLTMxLjc0My0zMS43NHMtMTIuOTYxIDEyLjk3My0yMC4xNjkgMjAuMTc4Yy0xLjYzMiAxLjYwNC0yLjMxNCAzLjc1LTIuMzI0IDYuMDEyLS4wMjMgNC43MTcgMy44NjEgOC40MzQgOC41ODMgOC4yMTdoLS4wMDJhOC42MDQgOC42MDQgMCAwIDAgNS41MTgtMi4zMzdjNi44NTYtNi44MDUgMjAuMjIzLTIwLjIyMyAyMC4yMjMtMjAuMjIzbC0xMS44My0xMS44NXpNMTY3LjkgMTAxLjQ3YzEuNjgtMS43MDYgMy45NjctMi42NiA2LjI5Ny0yLjYyNmE3Ljg5IDcuODkgMCAwIDEgNC41NjMgMS41MWwxNi40OTkgMTIuMWMzLjIgMi4yOTcgNC4xNDQgNi42NTkgMi4yMyAxMC4zMTItMS45MTMgMy42NTMtNi4xMjMgNS41MjQtOS45NSA0LjQyM2w2LjEyNCAyMy45NDhjMS4xMTMgNC4zNTEtMS41NjQgOC45NjctNS45ODQgMTAuMzE3bC00NC42NDIgMTMuNjMgOC4yNDYgMzEuODg0YzEuMTczIDQuMzctMS41MDIgOS4wNDQtNS45NTUgMTAuNDA3cy04Ljk3NS0xLjExMS0xMC4wNjgtNS41MDVsLTEwLjI4Mi0zOS43N2MtMS4xMjYtNC4zNTUgMS41NS04Ljk4NCA1Ljk3Ni0xMC4zMzdsNDQuNjYxLTEzLjYzNy00LjEyMi0xNi4xMThjLTIuNzYzIDMuMDY0LTcuMjMzIDMuODA4LTEwLjU4NiAxLjc2MS0zLjM1My0yLjA0Ny00LjYxNC02LjI5LTIuOTg2LTEwLjA0N2w4LjExNy0xOS40NTRhOC44NzIgOC44NzIgMCAwIDEgMS44NjMtMi43OTd6IiBmaWxsLXJ1bGU9ImV2ZW5vZGQiLz48cGF0aCBzdHlsZT0idGV4dC1kZWNvcmF0aW9uLWNvbG9yOiMwMDA7aXNvbGF0aW9uOmF1dG87bWl4LWJsZW5kLW1vZGU6bm9ybWFsO2Jsb2NrLXByb2dyZXNzaW9uOnRiO3RleHQtZGVjb3JhdGlvbi1saW5lOm5vbmU7dGV4dC1kZWNvcmF0aW9uLXN0eWxlOnNvbGlkO3RleHQtaW5kZW50OjA7dGV4dC10cmFuc2Zvcm06bm9uZSIgZD0iTTE2OC44NyAzMjAuMDRjMjguMzYzIDAgNTQuOTE1LTcuOTE1IDc3LjYxNC0yMS41MzhhMzYuNTc4IDM2LjU3OCAwIDAgMCAyMy4wNjcgOC4xOTQgOC43NjYgOC43NjYgMCAwIDAgLjAwNCAwYzIwLjE1NSAwIDM2LjY4LTE2LjUyOCAzNi42NzktMzYuNjgyYTguNzY2IDguNzY2IDAgMCAwIDAtLjAxMSAzNi42ODggMzYuNjg4IDAgMCAwLTguMTAzLTIyLjkyN2MxMy44MjUtMjIuODIgMjEuODY2LTQ5LjU3MiAyMS44NjYtNzguMTYyYTguNzY2IDguNzY2IDAgMSAwLTE3LjUzMSAwYzAgMjQuNzAzLTYuNzIgNDcuNzQ5LTE4LjM3OCA2Ny41NzUtNC41NjctMS45ODUtOS40NzMtMy4xNS0xNC41Mi0zLjE1N2E4Ljc2NiA4Ljc2NiAwIDAgMC0uMDEyIDBjLTIwLjE1NS0uMDAxLTM2LjY4MyAxNi41MjctMzYuNjgyIDM2LjY4Mi4wMDIgNC45OTkgMS4xMzkgOS44NjIgMy4wODMgMTQuMzk3LTE5LjcxNyAxMS40ODQtNDIuNTg2IDE4LjA5NS02Ny4wODYgMTguMDk1YTguNzY2IDguNzY2IDAgMSAwIDAgMTcuNTN6bTEwMC42OS0zMC44NzVjLTUuOTEzIDAtMTEuMTkxLTIuNTEyLTE0LjgzNi03LjA3N2E4Ljc2NiA4Ljc2NiAwIDAgMC0uMTgzLS4yMTQgMTkuMTM2IDE5LjEzNiAwIDAgMS00LjEzNC0xMS44NjNjLjAwMi0xMC42NzcgOC40NjgtMTkuMTQ0IDE5LjE0NC0xOS4xNDhhMTkuMTQ1IDE5LjE0NSAwIDAgMSAxMiA0LjI1NCA4Ljc2NiA4Ljc2NiAwIDAgMCAuMDEzLjAxIDE5LjEzNiAxOS4xMzYgMCAwIDEgNy4xNDQgMTQuODkyYy0uMDAzIDEwLjY3Ny04LjQ3IDE5LjE0NS0xOS4xNDggMTkuMTQ2eiIvPjwvZz48L2c+PC9zdmc+\\\" />\\n </div>\\n</div>\"},\"title\":\"HTML Value Card\",\"dropShadow\":false,\"enableFullscreen\":true,\"widgetStyle\":{},\"titleStyle\":{\"fontSize\":\"16px\",\"fontWeight\":400},\"useDashboardTimewindow\":true,\"showLegend\":false,\"actions\":{}}"
}
},
{
"alias": "simple_card",
"name": "Simple card",
"image": "data:image/png;base64,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",
"description": "Designed to display single value of the selected attribute or timeseries data. Widget styles are customizable.",
"descriptor": {
"type": "latest",
"sizeX": 5,
"sizeY": 3,
"resources": [],
"templateHtml": "",
"templateCss": "#container {\n overflow: auto;\n}\n\n.tbDatasource-container {\n width: 100%;\n height: 100%;\n overflow: hidden;\n}\n\n.tbDatasource-table {\n width: 100%;\n height: 100%;\n border-collapse: collapse;\n white-space: nowrap;\n font-weight: 100;\n text-align: right;\n}\n\n.tbDatasource-table td {\n padding: 12px;\n position: relative;\n box-sizing: border-box;\n}\n\n.tbDatasource-data-key {\n opacity: 0.7;\n font-weight: 400;\n font-size: 3.500rem;\n}\n\n.tbDatasource-value {\n font-size: 5.000rem;\n}",
"controllerScript": "self.onInit = function() {\n\n self.ctx.labelPosition = self.ctx.settings.labelPosition || 'left';\n \n if (self.ctx.datasources.length > 0) {\n var tbDatasource = self.ctx.datasources[0];\n var datasourceId = 'tbDatasource' + 0;\n self.ctx.$container.append(\n \"<div id='\" + datasourceId +\n \"' class='tbDatasource-container'></div>\"\n );\n \n self.ctx.datasourceContainer = $('#' + datasourceId,\n self.ctx.$container);\n \n var tableId = 'table' + 0;\n self.ctx.datasourceContainer.append(\n \"<table id='\" + tableId +\n \"' class='tbDatasource-table'><col width='30%'><col width='70%'></table>\"\n );\n var table = $('#' + tableId, self.ctx.$container);\n if (self.ctx.labelPosition === 'top') {\n table.css('text-align', 'left');\n }\n \n if (tbDatasource.dataKeys.length > 0) {\n var dataKey = tbDatasource.dataKeys[0];\n var labelCellId = 'labelCell' + 0;\n var cellId = 'cell' + 0;\n if (self.ctx.labelPosition === 'left') {\n table.append(\n \"<tr><td class='tbDatasource-data-key' id='\" + labelCellId +\"'>\" +\n dataKey.label +\n \"</td><td class='tbDatasource-value' id='\" +\n cellId +\n \"'></td></tr>\");\n } else {\n table.append(\n \"<tr style='vertical-align: bottom;'><td class='tbDatasource-data-key' id='\" + labelCellId +\"'>\" +\n dataKey.label +\n \"</td></tr><tr><td class='tbDatasource-value' id='\" +\n cellId +\n \"'></td></tr>\");\n }\n self.ctx.labelCell = $('#' + labelCellId, table);\n self.ctx.valueCell = $('#' + cellId, table);\n self.ctx.valueCell.html(0 + ' ' + self.ctx.units);\n }\n }\n \n $.fn.textWidth = function(){\n var html_org = $(this).html();\n var html_calc = '<span>' + html_org + '</span>';\n $(this).html(html_calc);\n var width = $(this).find('span:first').width();\n $(this).html(html_org);\n return width;\n }; \n \n self.onResize();\n};\n\nself.onDataUpdated = function() {\n \n function isNumber(n) {\n return !isNaN(parseFloat(n)) && isFinite(n);\n }\n\n if (self.ctx.valueCell && self.ctx.data.length > 0) {\n var cellData = self.ctx.data[0];\n if (cellData.data.length > 0) {\n var tvPair = cellData.data[cellData.data.length -\n 1];\n var value = tvPair[1];\n var txtValue;\n if (isNumber(value)) {\n var decimals = self.ctx.decimals;\n var units = self.ctx.units;\n if (self.ctx.datasources.length > 0 && self.ctx.datasources[0].dataKeys.length > 0) {\n dataKey = self.ctx.datasources[0].dataKeys[0];\n if (dataKey.decimals || dataKey.decimals === 0) {\n decimals = dataKey.decimals;\n }\n if (dataKey.units) {\n units = dataKey.units;\n }\n }\n txtValue = self.ctx.utils.formatValue(value, decimals, units, true);\n } else {\n txtValue = value;\n }\n self.ctx.valueCell.html(txtValue);\n var targetWidth;\n var minDelta;\n if (self.ctx.labelPosition === 'left') {\n targetWidth = self.ctx.datasourceContainer.width() - self.ctx.labelCell.width();\n minDelta = self.ctx.width/16 + self.ctx.padding;\n } else {\n targetWidth = self.ctx.datasourceContainer.width();\n minDelta = self.ctx.padding;\n }\n var delta = targetWidth - self.ctx.valueCell.textWidth();\n var fontSize = self.ctx.valueFontSize;\n if (targetWidth > minDelta) {\n while (delta < minDelta && fontSize > 6) {\n fontSize--;\n self.ctx.valueCell.css('font-size', fontSize+'px');\n delta = targetWidth - self.ctx.valueCell.textWidth();\n }\n }\n }\n } \n \n};\n\nself.onResize = function() {\n var labelFontSize;\n if (self.ctx.labelPosition === 'top') {\n self.ctx.padding = self.ctx.height/20;\n labelFontSize = self.ctx.height/4;\n self.ctx.valueFontSize = self.ctx.height/2;\n } else {\n self.ctx.padding = self.ctx.width/50;\n labelFontSize = self.ctx.height/2.5;\n self.ctx.valueFontSize = self.ctx.height/2;\n if (self.ctx.width/self.ctx.height <= 2.7) {\n labelFontSize = self.ctx.width/7;\n self.ctx.valueFontSize = self.ctx.width/6;\n }\n }\n self.ctx.padding = Math.min(12, self.ctx.padding);\n \n if (self.ctx.labelCell) {\n self.ctx.labelCell.css('font-size', labelFontSize+'px');\n self.ctx.labelCell.css('padding', self.ctx.padding+'px');\n }\n if (self.ctx.valueCell) {\n self.ctx.valueCell.css('font-size', self.ctx.valueFontSize+'px');\n self.ctx.valueCell.css('padding', self.ctx.padding+'px');\n } \n};\n\nself.typeParameters = function() {\n return {\n maxDatasources: 1,\n maxDataKeys: 1,\n singleEntity: true\n };\n};\n\n\nself.onDestroy = function() {\n};\n",
"settingsSchema": "",
"dataKeySettingsSchema": "",
"settingsDirective": "tb-simple-card-widget-settings",
"hasBasicMode": true,
"basicModeDirective": "tb-simple-card-basic-config",
"defaultConfig": "{\"datasources\":[{\"type\":\"function\",\"name\":\"function\",\"dataKeys\":[{\"name\":\"f(x)\",\"type\":\"function\",\"label\":\"Temperature\",\"color\":\"#2196f3\",\"settings\":{},\"_hash\":0.2392660816082064,\"funcBody\":\"var value = prevValue + Math.random() * 40 - 20;\\nif (value < -60) {\\n\\tvalue = -60;\\n} else if (value > 60) {\\n\\tvalue = 60;\\n}\\nreturn value;\",\"aggregationType\":null,\"units\":null,\"decimals\":null,\"usePostProcessing\":null,\"postFuncBody\":null}],\"alarmFilterConfig\":{\"statusList\":[\"ACTIVE\"]}}],\"timewindow\":{\"realtime\":{\"timewindowMs\":60000}},\"showTitle\":false,\"backgroundColor\":\"#ff5722\",\"color\":\"rgba(255, 255, 255, 0.87)\",\"padding\":\"16px\",\"settings\":{\"labelPosition\":\"top\"},\"title\":\"Simple card\",\"dropShadow\":true,\"enableFullscreen\":true,\"titleStyle\":{\"fontSize\":\"16px\",\"fontWeight\":400},\"units\":\"°C\",\"decimals\":0,\"useDashboardTimewindow\":true,\"showLegend\":false,\"widgetStyle\":{},\"actions\":{},\"configMode\":\"basic\",\"displayTimewindow\":true}"
}
},
{
"alias": "label_widget",
"name": "Label widget",
"image": "data:image/png;base64,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",
"description": "Displays static image and multiple values of selected attributes or timeseries keys on top of it. Position of the values on the image is configurable using advanced settings.",
"descriptor": {
"type": "latest",
"sizeX": 4.5,
"sizeY": 5,
"resources": [],
"templateHtml": "",
"templateCss": "#container {\n overflow: auto;\n}\n\n.tbDatasource-container {\n margin: 5px;\n padding: 8px;\n}\n\n.tbDatasource-title {\n font-size: 1.200rem;\n font-weight: 500;\n padding-bottom: 10px;\n}\n\n.tbDatasource-table {\n width: 100%;\n box-shadow: 0 0 10px #ccc;\n border-collapse: collapse;\n white-space: nowrap;\n font-size: 1.000rem;\n color: #757575;\n}\n\n.tbDatasource-table td {\n position: relative;\n border-top: 1px solid rgba(0, 0, 0, 0.12);\n border-bottom: 1px solid rgba(0, 0, 0, 0.12);\n padding: 0px 18px;\n box-sizing: border-box;\n}",
"controllerScript": "self.onInit = function() {\n self.ctx.varsRegex = /\\$\\{([^\\}]*)\\}/g;\n \n var imageUrl = self.ctx.settings.backgroundImageUrl ? self.ctx.settings.backgroundImageUrl :\n 'data:image/svg+xml;base64,PHN2ZyBpZD0ic3ZnMiIgeG1sbnM6cmRmPSJodHRwOi8vd3d3LnczLm9yZy8xOTk5LzAyLzIyLXJkZi1zeW50YXgtbnMjIiB4bWxucz0iaHR0cDovL3d3dy53My5vcmcvMjAwMC9zdmciIGhlaWdodD0iMTAwIiB3aWR0aD0iMTAwIiB2ZXJzaW9uPSIxLjEiIHhtbG5zOmNjPSJodHRwOi8vY3JlYXRpdmVjb21tb25zLm9yZy9ucyMiIHhtbG5zOmRjPSJodHRwOi8vcHVybC5vcmcvZGMvZWxlbWVudHMvMS4xLyIgdmlld0JveD0iMCAwIDEwMCAxMDAiPgogPGcgaWQ9ImxheWVyMSIgdHJhbnNmb3JtPSJ0cmFuc2xhdGUoMCAtOTUyLjM2KSI+CiAgPHJlY3QgaWQ9InJlY3Q0Njg0IiBzdHJva2UtbGluZWpvaW49InJvdW5kIiBoZWlnaHQ9Ijk5LjAxIiB3aWR0aD0iOTkuMDEiIHN0cm9rZT0iIzAwMCIgc3Ryb2tlLWxpbmVjYXA9InJvdW5kIiB5PSI5NTIuODYiIHg9Ii40OTUwNSIgc3Ryb2tlLXdpZHRoPSIuOTkwMTAiIGZpbGw9IiNlZWUiLz4KICA8dGV4dCBpZD0idGV4dDQ2ODYiIHN0eWxlPSJ3b3JkLXNwYWNpbmc6MHB4O2xldHRlci1zcGFjaW5nOjBweDt0ZXh0LWFuY2hvcjptaWRkbGU7dGV4dC1hbGlnbjpjZW50ZXIiIGZvbnQtd2VpZ2h0PSJib2xkIiB4bWw6c3BhY2U9InByZXNlcnZlIiBmb250LXNpemU9IjEwcHgiIGxpbmUtaGVpZ2h0PSIxMjUlIiB5PSI5NzAuNzI4MDkiIHg9IjQ5LjM5NjQ3NyIgZm9udC1mYW1pbHk9IlJvYm90byIgZmlsbD0iIzY2NjY2NiI+PHRzcGFuIGlkPSJ0c3BhbjQ2OTAiIHg9IjUwLjY0NjQ3NyIgeT0iOTcwLjcyODA5Ij5JbWFnZSBiYWNrZ3JvdW5kIDwvdHNwYW4+PHRzcGFuIGlkPSJ0c3BhbjQ2OTIiIHg9IjQ5LjM5NjQ3NyIgeT0iOTgzLjIyODA5Ij5pcyBub3QgY29uZmlndXJlZDwvdHNwYW4+PC90ZXh0PgogIDxyZWN0IGlkPSJyZWN0NDY5NCIgc3Ryb2tlLWxpbmVqb2luPSJyb3VuZCIgaGVpZ2h0PSIxOS4zNiIgd2lkdGg9IjY5LjM2IiBzdHJva2U9IiMwMDAiIHN0cm9rZS1saW5lY2FwPSJyb3VuZCIgeT0iOTkyLjY4IiB4PSIxNS4zMiIgc3Ryb2tlLXdpZHRoPSIuNjM5ODYiIGZpbGw9Im5vbmUiLz4KIDwvZz4KPC9zdmc+Cg==';\n\n self.ctx.$container.css('background', 'url(\"'+imageUrl+'\") no-repeat');\n self.ctx.$container.css('backgroundSize', 'contain');\n self.ctx.$container.css('backgroundPosition', '50% 50%');\n \n function processLabelPattern(pattern, data) {\n var match = self.ctx.varsRegex.exec(pattern);\n var replaceInfo = {};\n replaceInfo.variables = [];\n while (match !== null) {\n var variableInfo = {};\n variableInfo.dataKeyIndex = -1;\n var variable = match[0];\n var label = match[1];\n var valDec = 2;\n var splitVals = label.split(':');\n if (splitVals.length > 1) {\n label = splitVals[0];\n valDec = parseFloat(splitVals[1]);\n }\n variableInfo.variable = variable;\n variableInfo.valDec = valDec;\n \n if (label.startsWith('#')) {\n var keyIndexStr = label.substring(1);\n var n = Math.floor(Number(keyIndexStr));\n if (String(n) === keyIndexStr && n >= 0) {\n variableInfo.dataKeyIndex = n;\n }\n }\n if (variableInfo.dataKeyIndex === -1) {\n for (var i = 0; i < data.length; i++) {\n var datasourceData = data[i];\n var dataKey = datasourceData.dataKey;\n if (dataKey.label === label) {\n variableInfo.dataKeyIndex = i;\n break;\n }\n }\n }\n replaceInfo.variables.push(variableInfo);\n match = self.ctx.varsRegex.exec(pattern);\n }\n return replaceInfo;\n }\n\n var configuredLabels = self.ctx.settings.labels;\n if (!configuredLabels) {\n configuredLabels = [];\n }\n \n self.ctx.labels = [];\n\n for (var l = 0; l < configuredLabels.length; l++) {\n var labelConfig = configuredLabels[l];\n var localConfig = {};\n localConfig.font = {};\n \n localConfig.pattern = labelConfig.pattern ? labelConfig.pattern : '${#0}';\n localConfig.x = labelConfig.x ? labelConfig.x : 0;\n localConfig.y = labelConfig.y ? labelConfig.y : 0;\n localConfig.backgroundColor = labelConfig.backgroundColor ? labelConfig.backgroundColor : 'rgba(0,0,0,0)';\n \n var settingsFont = labelConfig.font;\n if (!settingsFont) {\n settingsFont = {};\n }\n \n localConfig.font.family = settingsFont.family || 'Roboto';\n localConfig.font.size = settingsFont.size ? settingsFont.size : 6;\n localConfig.font.style = settingsFont.style ? settingsFont.style : 'normal';\n localConfig.font.weight = settingsFont.weight ? settingsFont.weight : '500';\n localConfig.font.color = settingsFont.color ? settingsFont.color : '#fff';\n \n localConfig.replaceInfo = processLabelPattern(localConfig.pattern, self.ctx.data);\n \n var label = {};\n var labelElement = $('<div/>');\n labelElement.css('position', 'absolute');\n labelElement.css('display', 'none');\n labelElement.css('top', '0');\n labelElement.css('left', '0');\n labelElement.css('backgroundColor', localConfig.backgroundColor);\n labelElement.css('color', localConfig.font.color);\n labelElement.css('fontFamily', localConfig.font.family);\n labelElement.css('fontStyle', localConfig.font.style);\n labelElement.css('fontWeight', localConfig.font.weight);\n \n labelElement.html(localConfig.pattern);\n self.ctx.$container.append(labelElement);\n label.element = labelElement;\n label.config = localConfig;\n label.htmlSet = false;\n label.visible = false;\n self.ctx.labels.push(label);\n }\n\n var bgImg = $('<img />');\n bgImg.hide();\n bgImg.bind('load', function()\n {\n self.ctx.bImageHeight = $(this).height();\n self.ctx.bImageWidth = $(this).width();\n self.onResize();\n });\n self.ctx.$container.append(bgImg);\n bgImg.attr('src', imageUrl);\n \n self.onDataUpdated();\n}\n\nself.onDataUpdated = function() {\n updateLabels();\n}\n\nself.onResize = function() {\n if (self.ctx.bImageHeight && self.ctx.bImageWidth) {\n var backgroundRect = {};\n var imageRatio = self.ctx.bImageWidth / self.ctx.bImageHeight;\n var componentRatio = self.ctx.width / self.ctx.height;\n if (componentRatio >= imageRatio) {\n backgroundRect.top = 0;\n backgroundRect.bottom = 1.0;\n backgroundRect.xRatio = imageRatio / componentRatio;\n backgroundRect.yRatio = 1;\n var offset = (1 - backgroundRect.xRatio) / 2;\n backgroundRect.left = offset;\n backgroundRect.right = 1 - offset;\n } else {\n backgroundRect.left = 0;\n backgroundRect.right = 1.0;\n backgroundRect.xRatio = 1;\n backgroundRect.yRatio = componentRatio / imageRatio;\n var offset = (1 - backgroundRect.yRatio) / 2;\n backgroundRect.top = offset;\n backgroundRect.bottom = 1 - offset;\n }\n for (var l = 0; l < self.ctx.labels.length; l++) {\n var label = self.ctx.labels[l];\n var labelLeft = backgroundRect.left*100 + (label.config.x*backgroundRect.xRatio);\n var labelTop = backgroundRect.top*100 + (label.config.y*backgroundRect.yRatio);\n var fontSize = self.ctx.height * backgroundRect.yRatio * label.config.font.size / 100;\n label.element.css('top', labelTop + '%');\n label.element.css('left', labelLeft + '%');\n label.element.css('fontSize', fontSize + 'px');\n if (!label.visible) {\n label.element.css('display', 'block');\n label.visible = true;\n }\n }\n } \n}\n\n\nfunction isNumber(n) {\n return !isNaN(parseFloat(n)) && isFinite(n);\n}\n\nfunction padValue(val, dec, int) {\n var i = 0;\n var s, strVal, n;\n\n val = parseFloat(val);\n n = (val < 0);\n val = Math.abs(val);\n\n if (dec > 0) {\n strVal = val.toFixed(dec).toString().split('.');\n s = int - strVal[0].length;\n\n for (; i < s; ++i) {\n strVal[0] = '0' + strVal[0];\n }\n\n strVal = (n ? '-' : '') + strVal[0] + '.' + strVal[1];\n }\n\n else {\n strVal = Math.round(val).toString();\n s = int - strVal.length;\n\n for (; i < s; ++i) {\n strVal = '0' + strVal;\n }\n\n strVal = (n ? '-' : '') + strVal;\n }\n\n return strVal;\n}\n\nfunction updateLabels() {\n for (var l = 0; l < self.ctx.labels.length; l++) {\n var label = self.ctx.labels[l];\n var text = label.config.pattern;\n var replaceInfo = label.config.replaceInfo;\n var updated = false;\n for (var v = 0; v < replaceInfo.variables.length; v++) {\n var variableInfo = replaceInfo.variables[v];\n var txtVal = '';\n if (variableInfo.dataKeyIndex > -1) {\n var varData = self.ctx.data[variableInfo.dataKeyIndex].data;\n if (varData.length > 0) {\n var val = varData[varData.length-1][1];\n if (isNumber(val)) {\n txtVal = padValue(val, variableInfo.valDec, 0);\n updated = true;\n } else {\n txtVal = val;\n updated = true;\n }\n }\n }\n text = text.split(variableInfo.variable).join(txtVal);\n }\n if (updated || !label.htmlSet) {\n label.element.html(text);\n if (!label.htmlSet) {\n label.htmlSet = true;\n }\n }\n }\n}\n\nself.typeParameters = function() {\n return {\n maxDatasources: 1,\n singleEntity: true\n };\n};\n\nself.onDestroy = function() {\n}\n",
"settingsSchema": "",
"dataKeySettingsSchema": "{}\n",
"settingsDirective": "tb-label-widget-settings",
"defaultConfig": "{\"datasources\":[{\"type\":\"function\",\"name\":\"function\",\"dataKeys\":[{\"name\":\"f(x)\",\"type\":\"function\",\"label\":\"var\",\"color\":\"#2196f3\",\"settings\":{},\"_hash\":0.15479322438769105,\"funcBody\":\"var value = prevValue + Math.random() * 100 - 50;\\nvar multiplier = Math.pow(10, 2 || 0);\\nvar value = Math.round(value * multiplier) / multiplier;\\nif (value < -1000) {\\n\\tvalue = -1000;\\n} else if (value > 1000) {\\n\\tvalue = 1000;\\n}\\nreturn value;\"}]}],\"timewindow\":{\"realtime\":{\"timewindowMs\":60000}},\"showTitle\":true,\"backgroundColor\":\"#fff\",\"color\":\"rgba(0, 0, 0, 0.87)\",\"padding\":\"8px\",\"settings\":{\"backgroundImageUrl\":\"data:image/svg+xml;base64,PHN2ZyBpZD0ic3ZnMiIgeG1sbnM6cmRmPSJodHRwOi8vd3d3LnczLm9yZy8xOTk5LzAyLzIyLXJkZi1zeW50YXgtbnMjIiB4bWxucz0iaHR0cDovL3d3dy53My5vcmcvMjAwMC9zdmciIGhlaWdodD0iMTAwIiB3aWR0aD0iMTAwIiB2ZXJzaW9uPSIxLjEiIHhtbG5zOmNjPSJodHRwOi8vY3JlYXRpdmVjb21tb25zLm9yZy9ucyMiIHhtbG5zOmRjPSJodHRwOi8vcHVybC5vcmcvZGMvZWxlbWVudHMvMS4xLyIgdmlld0JveD0iMCAwIDEwMCAxMDAiPgogPGcgaWQ9ImxheWVyMSIgdHJhbnNmb3JtPSJ0cmFuc2xhdGUoMCAtOTUyLjM2KSI+CiAgPHJlY3QgaWQ9InJlY3Q0Njg0IiBzdHJva2UtbGluZWpvaW49InJvdW5kIiBoZWlnaHQ9Ijk5LjAxIiB3aWR0aD0iOTkuMDEiIHN0cm9rZT0iIzAwMCIgc3Ryb2tlLWxpbmVjYXA9InJvdW5kIiB5PSI5NTIuODYiIHg9Ii40OTUwNSIgc3Ryb2tlLXdpZHRoPSIuOTkwMTAiIGZpbGw9IiNlZWUiLz4KICA8dGV4dCBpZD0idGV4dDQ2ODYiIHN0eWxlPSJ3b3JkLXNwYWNpbmc6MHB4O2xldHRlci1zcGFjaW5nOjBweDt0ZXh0LWFuY2hvcjptaWRkbGU7dGV4dC1hbGlnbjpjZW50ZXIiIGZvbnQtd2VpZ2h0PSJib2xkIiB4bWw6c3BhY2U9InByZXNlcnZlIiBmb250LXNpemU9IjEwcHgiIGxpbmUtaGVpZ2h0PSIxMjUlIiB5PSI5NzAuNzI4MDkiIHg9IjQ5LjM5NjQ3NyIgZm9udC1mYW1pbHk9IlJvYm90byIgZmlsbD0iIzY2NjY2NiI+PHRzcGFuIGlkPSJ0c3BhbjQ2OTAiIHg9IjUwLjY0NjQ3NyIgeT0iOTcwLjcyODA5Ij5JbWFnZSBiYWNrZ3JvdW5kIDwvdHNwYW4+PHRzcGFuIGlkPSJ0c3BhbjQ2OTIiIHg9IjQ5LjM5NjQ3NyIgeT0iOTgzLjIyODA5Ij5pcyBub3QgY29uZmlndXJlZDwvdHNwYW4+PC90ZXh0PgogIDxyZWN0IGlkPSJyZWN0NDY5NCIgc3Ryb2tlLWxpbmVqb2luPSJyb3VuZCIgaGVpZ2h0PSIxOS4zNiIgd2lkdGg9IjY5LjM2IiBzdHJva2U9IiMwMDAiIHN0cm9rZS1saW5lY2FwPSJyb3VuZCIgeT0iOTkyLjY4IiB4PSIxNS4zMiIgc3Ryb2tlLXdpZHRoPSIuNjM5ODYiIGZpbGw9Im5vbmUiLz4KIDwvZz4KPC9zdmc+Cg==\",\"labels\":[{\"pattern\":\"Value: ${#0:2} units.\",\"x\":20,\"y\":47,\"font\":{\"color\":\"#515151\",\"family\":\"Roboto\",\"size\":6,\"style\":\"normal\",\"weight\":\"500\"}}]},\"title\":\"Label widget\",\"dropShadow\":true,\"enableFullscreen\":true,\"titleStyle\":{\"fontSize\":\"16px\",\"fontWeight\":400}}"
}
},
{
"alias": "entities_table",
"name": "Entities table",
"image": "data:image/png;base64,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",
"description": "Displays list of entities that match selected alias and filter with ability of additional full text search and pagination. Highly customizable using widget styles, data source keys and widget actions.",
"descriptor": {
"type": "latest",
"sizeX": 7.5,
"sizeY": 6.5,
"resources": [],
"templateHtml": "<tb-entities-table-widget \n [ctx]=\"ctx\">\n</tb-entities-table-widget>",
"templateCss": "",
"controllerScript": "self.onInit = function() {\n}\n\nself.onDataUpdated = function() {\n self.ctx.$scope.entitiesTableWidget.onDataUpdated();\n}\n\nself.typeParameters = function() {\n return {\n maxDatasources: 1,\n hasDataPageLink: true,\n warnOnPageDataOverflow: false,\n dataKeysOptional: true\n };\n}\n\nself.actionSources = function() {\n return {\n 'actionCellButton': {\n name: 'widget-action.action-cell-button',\n multiple: true,\n hasShowCondition: true\n },\n 'rowClick': {\n name: 'widget-action.row-click',\n multiple: false\n },\n 'rowDoubleClick': {\n name: 'widget-action.row-double-click',\n multiple: false\n }\n };\n}\n\nself.onDestroy = function() {\n}\n",
"settingsSchema": "",
"dataKeySettingsSchema": "",
"settingsDirective": "tb-entities-table-widget-settings",
"dataKeySettingsDirective": "tb-entities-table-key-settings",
"hasBasicMode": true,
"basicModeDirective": "tb-entities-table-basic-config",
"defaultConfig": "{\"timewindow\":{\"realtime\":{\"interval\":1000,\"timewindowMs\":86400000},\"aggregation\":{\"type\":\"NONE\",\"limit\":200}},\"showTitle\":true,\"backgroundColor\":\"rgb(255, 255, 255)\",\"color\":\"rgba(0, 0, 0, 0.87)\",\"padding\":\"4px\",\"settings\":{\"enableSearch\":true,\"enableSelectColumnDisplay\":true,\"enableStickyHeader\":true,\"enableStickyAction\":true,\"reserveSpaceForHiddenAction\":\"true\",\"displayEntityName\":false,\"displayEntityLabel\":false,\"displayEntityType\":false,\"displayPagination\":true,\"defaultPageSize\":10,\"defaultSortOrder\":\"name\",\"useRowStyleFunction\":false,\"entitiesTitle\":\"Entities\"},\"title\":\"Entities table\",\"dropShadow\":true,\"enableFullscreen\":true,\"titleStyle\":{\"fontSize\":\"16px\",\"fontWeight\":400,\"padding\":\"5px 10px 5px 10px\"},\"useDashboardTimewindow\":false,\"showLegend\":false,\"datasources\":[{\"type\":\"function\",\"name\":\"Simulated\",\"entityAliasId\":null,\"filterId\":null,\"dataKeys\":[{\"name\":\"f(x)\",\"type\":\"function\",\"label\":\"Entity name\",\"color\":\"#2196f3\",\"settings\":{\"columnWidth\":\"0px\",\"useCellStyleFunction\":false,\"cellStyleFunction\":\"\",\"useCellContentFunction\":false,\"cellContentFunction\":\"\"},\"_hash\":0.472295003170325,\"funcBody\":\"return 'Simulated';\",\"aggregationType\":null,\"units\":null,\"decimals\":null,\"usePostProcessing\":null,\"postFuncBody\":null},{\"name\":\"f(x)\",\"type\":\"function\",\"label\":\"Entity type\",\"color\":\"#607d8b\",\"settings\":{},\"_hash\":0.782057645776538,\"funcBody\":\"return 'Device';\",\"decimals\":null,\"aggregationType\":null,\"usePostProcessing\":null,\"postFuncBody\":null},{\"name\":\"f(x)\",\"type\":\"function\",\"label\":\"Sin\",\"color\":\"#4caf50\",\"settings\":{},\"_hash\":0.904797781901171,\"funcBody\":\"return Math.round(1000*Math.sin(time/5000));\",\"decimals\":0},{\"name\":\"f(x)\",\"type\":\"function\",\"label\":\"Cos\",\"color\":\"#f44336\",\"settings\":{},\"_hash\":0.1961430898042078,\"funcBody\":\"return Math.round(1000*Math.cos(time/5000));\",\"decimals\":0},{\"name\":\"f(x)\",\"type\":\"function\",\"label\":\"Random\",\"color\":\"#ffc107\",\"settings\":{},\"_hash\":0.7678057538205878,\"funcBody\":\"var value = prevValue + Math.random() * 100 - 50;\\nvar multiplier = Math.pow(10, 2 || 0);\\nvar value = Math.round(value * multiplier) / multiplier;\\nif (value < -1000) {\\n\\tvalue = -1000;\\n} else if (value > 1000) {\\n\\tvalue = 1000;\\n}\\nreturn value;\",\"decimals\":2}],\"alarmFilterConfig\":{\"statusList\":[\"ACTIVE\"]}}],\"displayTimewindow\":false,\"configMode\":\"basic\",\"actions\":{},\"showTitleIcon\":false,\"titleIcon\":\"list\",\"iconColor\":null}"
}
},
{
"alias": "entities_hierarchy",
"name": "Entities hierarchy",
"image": "data:image/png;base64,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",
"description": "Displays hierarchy of entities based on their relations. The root of the hierarchy is defined using entity alias. By default, displays entities related using \"Contains\" relation. You may change the behaviour using advanced settings.",
"descriptor": {
"type": "latest",
"sizeX": 7.5,
"sizeY": 3.5,
"resources": [],
"templateHtml": "<tb-entities-hierarchy-widget \n [ctx]=\"ctx\">\n</tb-entities-hierarchy-widget>",
"templateCss": "",
"controllerScript": "self.onInit = function() {\n}\n\nself.onDataUpdated = function() {\n self.ctx.$scope.entitiesHierarchyWidget.onDataUpdated();\n}\n\nself.typeParameters = function() {\n return {\n dataKeysOptional: true\n };\n}\n\nself.actionSources = function() {\n return {\n 'nodeSelected': {\n name: 'widget-action.node-selected',\n multiple: false\n }\n };\n}\n\nself.onDestroy = function() {\n}\n",
"settingsSchema": "",
"dataKeySettingsSchema": "",
"settingsDirective": "tb-entities-hierarchy-widget-settings",
"defaultConfig": "{\"timewindow\":{\"realtime\":{\"interval\":1000,\"timewindowMs\":86400000},\"aggregation\":{\"type\":\"NONE\",\"limit\":200}},\"showTitle\":true,\"backgroundColor\":\"rgb(255, 255, 255)\",\"color\":\"rgba(0, 0, 0, 0.87)\",\"padding\":\"4px\",\"settings\":{\"nodeRelationQueryFunction\":\"var entity = nodeCtx.entity;\\nvar query = {\\n parameters: {\\n rootId: entity.id.id,\\n rootType: entity.id.entityType,\\n direction: \\\"FROM\\\",\\n maxLevel: 1\\n },\\n filters: [{\\n relationType: \\\"Contains\\\",\\n entityTypes: []\\n }]\\n};\\nreturn query;\\n\\n/**\\n\\n// Function should return relations query object for current node used to fetch entity children.\\n// Function can return 'default' string value. In this case default relations query will be used.\\n\\n// The following example code will construct simple relations query that will fetch relations of type 'Contains'\\n// from the current entity.\\n\\nvar entity = nodeCtx.entity;\\nvar query = {\\n parameters: {\\n rootId: entity.id.id,\\n rootType: entity.id.entityType,\\n direction: \\\"FROM\\\",\\n maxLevel: 1\\n },\\n filters: [{\\n relationType: \\\"Contains\\\",\\n entityTypes: []\\n }]\\n};\\nreturn query;\\n\\n**/\\n\",\"nodeHasChildrenFunction\":\"/**\\n\\n// Function should return boolean value indicating whether current node has children (whether it can be expanded).\\n\\n// The following example code will restrict entities hierarchy expansion up to third level.\\n\\nreturn nodeCtx.level <= 2;\\n\\n// The next example code will restrict entities expansion according to the value of example 'nodeHasChildren' attribute.\\n\\nvar data = nodeCtx.data;\\nif (data.hasOwnProperty('nodeHasChildren') && data['nodeHasChildren'] !== null) {\\n return data['nodeHasChildren'] === 'true';\\n} else {\\n return true;\\n}\\n \\n**/\\n \",\"nodeOpenedFunction\":\"/**\\n\\n// Function should return boolean value indicating whether current node should be opened (expanded) when it first loaded.\\n\\n// The following example code will open by default nodes up to third level.\\n\\nreturn nodeCtx.level <= 2;\\n\\n**/\\n \",\"nodeDisabledFunction\":\"/**\\n\\n// Function should return boolean value indicating whether current node should be disabled (not selectable).\\n\\n// The following example code will disable current node according to the value of example 'nodeDisabled' attribute.\\n\\nvar data = nodeCtx.data;\\nif (data.hasOwnProperty('nodeDisabled') && data['nodeDisabled'] !== null) {\\n return data['nodeDisabled'] === 'true';\\n} else {\\n return false;\\n}\\n \\n**/\\n\",\"nodeIconFunction\":\"/** \\n\\n// Function should return node icon info object.\\n// Resulting object should contain either 'materialIcon' or 'iconUrl' property. \\n// Where:\\n - 'materialIcon' - name of the material icon to be used from the Material Icons Library (https://material.io/tools/icons);\\n - 'iconUrl' - url of the external image to be used as node icon.\\n// Function can return 'default' string value. In this case default icons according to entity type will be used.\\n\\n// The following example code shows how to use external image for devices which name starts with 'Test' and use \\n// default icons for the rest of entities.\\n\\nvar entity = nodeCtx.entity;\\nif (entity.id.entityType === 'DEVICE' && entity.name.startsWith('Test')) {\\n return {iconUrl: 'https://avatars1.githubusercontent.com/u/14793288?v=4&s=117'};\\n} else {\\n return 'default';\\n}\\n \\n**/\",\"nodeTextFunction\":\"/**\\n\\n// Function should return text (can be HTML code) for the current node.\\n\\n// The following example code will generate node text consisting of entity name and temperature if temperature value is present in entity attributes/timeseries.\\n\\nvar data = nodeCtx.data;\\nvar entity = nodeCtx.entity;\\nvar text = entity.name;\\nif (data.hasOwnProperty('temperature') && data['temperature'] !== null) {\\n text += \\\" <b>\\\"+ data['temperature'] +\\\" °C</b>\\\";\\n}\\nreturn text;\\n\\n**/\",\"nodesSortFunction\":\"/**\\n\\n// This function is used to sort nodes of the same level. Function should compare two nodes and return \\n// integer value: \\n// - less than 0 - sort nodeCtx1 to an index lower than nodeCtx2\\n// - 0 - leave nodeCtx1 and nodeCtx2 unchanged with respect to each other\\n// - greater than 0 - sort nodeCtx2 to an index lower than nodeCtx1\\n\\n// The following example code will sort entities first by entity type in alphabetical order then\\n// by entity name in alphabetical order.\\n\\nvar result = nodeCtx1.entity.id.entityType.localeCompare(nodeCtx2.entity.id.entityType);\\nif (result === 0) {\\n result = nodeCtx1.entity.name.localeCompare(nodeCtx2.entity.name);\\n}\\nreturn result;\\n \\n**/\"},\"title\":\"Entities hierarchy\",\"dropShadow\":true,\"enableFullscreen\":true,\"titleStyle\":{\"fontSize\":\"16px\",\"fontWeight\":400,\"padding\":\"5px 10px 5px 10px\"},\"useDashboardTimewindow\":false,\"showLegend\":false,\"datasources\":[{\"type\":\"function\",\"name\":\"Simulated\",\"dataKeys\":[{\"name\":\"f(x)\",\"type\":\"function\",\"label\":\"Sin\",\"color\":\"#2196f3\",\"settings\":{\"columnWidth\":\"0px\",\"useCellStyleFunction\":false,\"cellStyleFunction\":\"\",\"useCellContentFunction\":false,\"cellContentFunction\":\"\"},\"_hash\":0.472295003170325,\"funcBody\":\"return Math.round(1000*Math.sin(time/5000));\"},{\"name\":\"f(x)\",\"type\":\"function\",\"label\":\"Cos\",\"color\":\"#4caf50\",\"settings\":{\"columnWidth\":\"0px\",\"useCellStyleFunction\":false,\"cellStyleFunction\":\"\",\"useCellContentFunction\":false,\"cellContentFunction\":\"\"},\"_hash\":0.8926244886945558,\"funcBody\":\"return Math.round(1000*Math.cos(time/5000));\"},{\"name\":\"f(x)\",\"type\":\"function\",\"label\":\"Random\",\"color\":\"#f44336\",\"settings\":{\"columnWidth\":\"0px\",\"useCellStyleFunction\":false,\"cellStyleFunction\":\"\",\"useCellContentFunction\":false,\"cellContentFunction\":\"\"},\"_hash\":0.6401141393938932,\"funcBody\":\"var value = prevValue + Math.random() * 100 - 50;\\nvar multiplier = Math.pow(10, 2 || 0);\\nvar value = Math.round(value * multiplier) / multiplier;\\nif (value < -1000) {\\n\\tvalue = -1000;\\n} else if (value > 1000) {\\n\\tvalue = 1000;\\n}\\nreturn value;\"}]}],\"widgetStyle\":{},\"actions\":{}}"
}
},
{
"alias": "qr_code",
"name": "QR Code",
"image": "data:image/png;base64,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",
"description": "Displays QR code of calculated text from configured pattern or function with applied attributes or timeseries values.",
"descriptor": {
"type": "latest",
"sizeX": 4,
"sizeY": 3.5,
"resources": [],
"templateHtml": "<tb-qrcode-widget \n [ctx]=\"ctx\">\n</tb-qrcode-widget>",
"templateCss": "#container {\n overflow: auto;\n}\n\n.tbDatasource-container {\n margin: 5px;\n padding: 8px;\n}\n\n.tbDatasource-title {\n font-size: 1.200rem;\n font-weight: 500;\n padding-bottom: 10px;\n}\n\n.tbDatasource-table {\n width: 100%;\n box-shadow: 0 0 10px #ccc;\n border-collapse: collapse;\n white-space: nowrap;\n font-size: 1.000rem;\n color: #757575;\n}\n\n.tbDatasource-table td {\n position: relative;\n border-top: 1px solid rgba(0, 0, 0, 0.12);\n border-bottom: 1px solid rgba(0, 0, 0, 0.12);\n padding: 0px 18px;\n box-sizing: border-box;\n}",
"controllerScript": "self.onInit = function() {\n}\n\nself.onDataUpdated = function() {\n self.ctx.$scope.qrCodeWidget.onDataUpdated();\n}\n\nself.typeParameters = function() {\n return {\n dataKeysOptional: true,\n datasourcesOptional: true\n };\n}\n\nself.onDestroy = function() {\n}\n\n",
"settingsSchema": "",
"dataKeySettingsSchema": "",
"settingsDirective": "tb-qrcode-widget-settings",
"defaultConfig": "{\"datasources\":[{\"type\":\"function\",\"name\":\"function\",\"entityAliasId\":null,\"filterId\":null,\"dataKeys\":[{\"name\":\"f(x)\",\"type\":\"function\",\"label\":\"Random\",\"color\":\"#2196f3\",\"settings\":{},\"_hash\":0.7036904308224163,\"funcBody\":\"var value = prevValue + Math.random() * 100 - 50;\\nvar multiplier = Math.pow(10, 2 || 0);\\nvar value = Math.round(value * multiplier) / multiplier;\\nif (value < -1000) {\\n\\tvalue = -1000;\\n} else if (value > 1000) {\\n\\tvalue = 1000;\\n}\\nreturn value;\"}]}],\"timewindow\":{\"realtime\":{\"timewindowMs\":60000}},\"showTitle\":true,\"backgroundColor\":\"#fff\",\"color\":\"rgba(0, 0, 0, 0.87)\",\"padding\":\"8px\",\"settings\":{\"qrCodeTextPattern\":\"${entityName}\",\"useQrCodeTextFunction\":false,\"qrCodeTextFunction\":\"return data[0] ? data[0]['entityName'] : '';\"},\"title\":\"QR Code\"}"
}
},
{
"alias": "markdown_card",
"name": "Markdown/HTML Card",
"image": "data:image/png;base64,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",
"description": "Renders markdown/HTML using configurable pattern or function with applied attributes or timeseries values.",
"descriptor": {
"type": "latest",
"sizeX": 5,
"sizeY": 3.5,
"resources": [],
"templateHtml": "<tb-markdown-widget \n [ctx]=\"ctx\">\n</tb-markdown-widget>",
"templateCss": "#container tb-markdown-widget {\n height: 100%;\n display: block;\n}\n\n#container tb-markdown-widget .tb-markdown-view {\n height: 100%;\n overflow: auto;\n}\n",
"controllerScript": "self.onInit = function() {\n}\n\nself.onDataUpdated = function() {\n self.ctx.$scope.markdownWidget.onDataUpdated();\n}\n\nself.actionSources = function() {\n return {\n 'elementClick': {\n name: 'widget-action.element-click',\n multiple: true\n }\n };\n}\n\nself.typeParameters = function() {\n return {\n dataKeysOptional: true,\n datasourcesOptional: true,\n hasDataPageLink: true\n };\n}\n\nself.onDestroy = function() {\n}\n\n",
"settingsSchema": "",
"dataKeySettingsSchema": "",
"settingsDirective": "tb-markdown-widget-settings",
"defaultConfig": "{\"datasources\":[{\"type\":\"function\",\"name\":\"function\",\"dataKeys\":[{\"name\":\"f(x)\",\"type\":\"function\",\"label\":\"Random\",\"color\":\"#2196f3\",\"settings\":{},\"_hash\":0.15479322438769105,\"funcBody\":\"var value = prevValue + Math.random() * 100 - 50;\\nvar multiplier = Math.pow(10, 2 || 0);\\nvar value = Math.round(value * multiplier) / multiplier;\\nif (value < -1000) {\\n\\tvalue = -1000;\\n} else if (value > 1000) {\\n\\tvalue = 1000;\\n}\\nreturn value;\"}]}],\"timewindow\":{\"realtime\":{\"timewindowMs\":60000}},\"showTitle\":false,\"backgroundColor\":\"#fff\",\"color\":\"rgba(0, 0, 0, 0.87)\",\"padding\":\"0px\",\"settings\":{\"markdownTextPattern\":\"### Markdown/HTML card\\n - **Current entity**: ${entityName}.\\n - **Current value**: ${Random}.\",\"markdownTextFunction\":\"return '# Some title\\\\n - Entity name: ' + data[0]['entityName'];\",\"useMarkdownTextFunction\":false},\"title\":\"Markdown/HTML Card\",\"showTitleIcon\":false,\"iconColor\":\"rgba(0, 0, 0, 0.87)\",\"iconSize\":\"24px\",\"titleTooltip\":\"\",\"dropShadow\":true,\"enableFullscreen\":true,\"widgetStyle\":{},\"titleStyle\":{\"fontSize\":\"16px\",\"fontWeight\":400},\"showLegend\":false}"
}
},
{
"alias": "dashboard_state_widget",
"name": "Dashboard state widget",
"image": "data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAAMgAAACgCAYAAABJ/yOpAAAACXBIWXMAAA7DAAAOwwHHb6hkAAAAGXRFWHRTb2Z0d2FyZQB3d3cuaW5rc2NhcGUub3Jnm+48GgAAIABJREFUeJztnXd8VFX6/993+iSTMmmkACEghN6UKij8RBF0XSxgb1hAFiyg7iIqu9YvKoLoIjbsywo2RIrSRKQlFBECIQkhQAppk0mZPnPv748xIwnJpE1IcO/79eJFZuaU59xzP/eec+5znitYLBbJ5XIhCAIybYMkSajVaoKCggCwWq3IfdK2VPeJyul0Eh4e3tb2/M9jNpt9ApH7pH1gNptRtLURMjLtGVkgMjJ+kAUiI+MHWSAyMn6QBSIj4wdZIDIyfpAFIiPjB1kgMoiieM532dnZlJaW1vu7P4qLi8nJyWlUPe2dBgVitVqpqqrC7XY3qwJJkrBarc3KK1OTf//736SkpPg+l5WV8eijj7aozIyMDD744INzvt+0aRMZGRnk5uayZMkSADIzM8nLy2uwzLS0NLZt23bO96+++iolJSX15vvpp58ab/h5QtVQgrlz5xIUFIRCoUCtVvPggw8SHx/f6ApOnjzJ1q1buffee1tkqAx4PJ5zrsLVF67y8nL0ej0ajQabzYbH40Gv11NRUYFKpcJkMtGxY0dEUSQ3N5fY2Fj0ej1dunShQ4cOvvLOnDmDQvHHdbNDhw7cfffdVFVVsWXLFqKjo7nqqquw2+1ERUX56tZqteh0uhq2lZaWYrPZ6NixIwAPPPAAYWFhgPfCm5+fT3x8PEFBQRQXF7N8+XJ69+5NTEwMAEVFRbhcLuLj4xEEwdcus9lMcHAwarUag8EAQGFhYY12BIoGBQIwe/ZsoqOjycrK4pVXXmHhwoUolUrsdjtHjhwhNjaW+Ph4ioqKMBgMBAUF4XQ6KS4uJjY2lokTJ/rKysnJoaysjF69evkOaGlpKSdPnqRbt26+A1hWVsbx48fp2LEjsbGxAW/4n40PPviAcePG0b9/f7Zv305JSQnjxo3jiSeeYNCgQbhcLkpLSzEajRgMBg4dOsTChQvJzMzkp59+4tFHH+XLL79k3759JCQk8Ouvv9KvXz9OnTrFihUruO6668jOzqawsJB+/fqxYMECFi1aREhICPPnz2fu3Lk1BJKSkkJ5eTlnzpxh0KBBTJ48mQULFjB79mwcDgevv/46gwYNYu/evcyZM4fU1FScTiebNm3itttuY/ny5Zw5cwaDwUBFRQXz5s1jx44drFq1ik6dOjFmzBi2bNnCs88+S35+PosWLeLVV18N+HFtlECqueiiizAajeTk5BAZGcnzzz/PiBEj+Pbbb5k4cSImk4mqqiqmTJnCnj17yMrKYujQoaxbt44nnniClStXcuLECZKSkvjss8944YUXyMrK4rPPPmP48OF8/vnnPPnkk7jdbhYsWMAVV1zBihUruP322xk8eHDAG38h8tlnn7F69WqARg17jUajbxh2zz338I9//IPw8HAWLlzI8ePHfencbjfr169n2bJlqNVq3nrrrRrl9O/fn0OHDtGhQwe6d+/OiBEj2LNnD/3790en051z9e7Tpw8zZswgPz+fN998k8mTJ/t+S09Pp0uXLtx2222MGjUKgMmTJ7Nu3Tpuu+028vLyOHbsGAsWLABgyZIlvqHl4MGDmTZtGpIk8emnn1JZWcmePXsYPXp0Uw9lo2iSQAAiIiIoKSkhNTWVkSNHMn78ePr27ct//vMfnnzySf75z38yZcoUdu3axU033YTNZgO8w4Mff/yRZcuWoVKpiImJobS0lJUrV3L33XfTuXNnJEli27ZtJCUlYTQaufzyyxk+fLivDBm44447GD58OOC9yz7zzDN+02s0Gt/fWq3W5xCp0WhwuVwolUrA65gXERGBWq0+J19djBkzhs8//xybzVbnyRkcHFyjnrMZO3YslZWVzJs3j44dO54z/C4oKCAxMdH3OTExkYKCAgwGg69cQRC49NJL2bNnDykpKTz++ON+7W0uTRZISUkJUVFRpKamkpeXR3Z2NuBthMFgwGg0kp2dTXFxMV27diUtLQ2AiooKQkNDUam8VY4ZMwbwrnisXr3a9/2AAQO45JJLsNvtLFmyBLfbzfTp0wPR1j81Go0Gp9MJgMPhaHL+8PBwTCYTLpcLtVrdYBndunXDZDKxbds25s2b16S60tLSGD58ODfccAMrVqxg7dq13HLLLUiSBEBcXBwnT570pT958iTDhw+noqKiRjljxoxhyZIlBAUFERkZ2SQbGkuTBJKenk55eTldunShU6dOREZGcuuttyJJEiaTyWf0O++8w7Bhw2rkDQ8Px2KxYLFYCA4OZtOmTfTu3ZuOHTtyzTXX0L9/f99qV2pq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",
"description": "Displays specified dashboard state inside widget. Advanced widget settings allows you to configure target dashboard state to be displayed.",
"descriptor": {
"type": "static",
"sizeX": 7.5,
"sizeY": 3,
"resources": [],
"templateHtml": "<tb-dashboard-state *ngIf=\"stateId\" [ctx]=\"ctx\" [stateId]=\"stateId\"\n [defaultAutofillLayout]=\"defaultAutofillLayout\"\n [defaultMargin]=\"defaultMargin\"\n [defaultBackgroundColor]=\"defaultBackgroundColor\"\n [syncParentStateParams]=\"syncParentStateParams\">\n</tb-dashboard-state>\n<div *ngIf=\"!stateId\" class=\"dashboard-state-widget-prompt\">\n <div class=\"title\">Dashboard state widget</div>\n <div class=\"subtitle\">(Specify dashboard state id in the advanced widget settings)</div>\n</div>\n",
"templateCss": ".dashboard-state-widget-prompt {\n width: 100%;\n height: 100%;\n display: flex;\n flex-direction: column;\n align-items: center;\n justify-content: center;\n font-size: 32px;\n font-weight: 500;\n color: #999;\n}\n\n.dashboard-state-widget-prompt .title {\n font-size: 32px;\n font-weight: 500;\n color: #999;\n}\n\n.dashboard-state-widget-prompt .subtitle {\n font-size: 24px;\n font-weight: normal;\n color: #999;\n text-align: center;\n}",
"controllerScript": "self.onInit = function() {\n var $injector = self.ctx.$scope.$injector;\n self.ctx.$scope.stateId = self.ctx.settings.stateId || \"\";\n self.ctx.$scope.defaultAutofillLayout = self.ctx.settings.defaultAutofillLayout;\n self.ctx.$scope.defaultMargin = self.ctx.settings.defaultMargin;\n self.ctx.$scope.defaultBackgroundColor = self.ctx.settings.defaultBackgroundColor;\n self.ctx.$scope.syncParentStateParams = self.ctx.settings.syncParentStateParams !== false;\n}\n\n\nself.onDestroy = function() {\n}\n",
"settingsSchema": "",
"dataKeySettingsSchema": "",
"settingsDirective": "tb-dashboard-state-widget-settings",
"defaultConfig": "{\"datasources\":[{\"type\":\"static\",\"name\":\"function\",\"dataKeys\":[{\"name\":\"f(x)\",\"type\":\"function\",\"label\":\"Random\",\"color\":\"#2196f3\",\"settings\":{},\"_hash\":0.15479322438769105,\"funcBody\":\"var value = prevValue + Math.random() * 100 - 50;\\nvar multiplier = Math.pow(10, 2 || 0);\\nvar value = Math.round(value * multiplier) / multiplier;\\nif (value < -1000) {\\n\\tvalue = -1000;\\n} else if (value > 1000) {\\n\\tvalue = 1000;\\n}\\nreturn value;\"}]}],\"timewindow\":{\"realtime\":{\"timewindowMs\":60000}},\"showTitle\":false,\"backgroundColor\":\"rgb(255, 255, 255)\",\"color\":\"rgba(0, 0, 0, 0.87)\",\"padding\":\"0px\",\"settings\":{\"syncParentStateParams\":true,\"defaultAutofillLayout\":true,\"defaultMargin\":0,\"defaultBackgroundColor\":\"#fff\"},\"title\":\"Dashboard state widget\",\"dropShadow\":true,\"enableFullscreen\":false,\"widgetStyle\":{},\"widgetCss\":\"\",\"noDataDisplayMessage\":\"\",\"showLegend\":false}"
}
},
{
"alias": "value_card",
"name": "Value card",
"image": "data:image/png;base64,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",
"description": "Designed to display single value of the selected attribute or timeseries data. Widget styles are customizable.",
"descriptor": {
"type": "latest",
"sizeX": 3,
"sizeY": 3,
"resources": [],
"templateHtml": "<tb-value-card-widget \n [ctx]=\"ctx\"\n [widgetTitlePanel]=\"widgetTitlePanel\">\n</tb-value-card-widget>",
"templateCss": "",
"controllerScript": "self.onInit = function() {\n self.ctx.$scope.valueCardWidget.onInit();\n};\n\nself.onDataUpdated = function() {\n self.ctx.$scope.valueCardWidget.onDataUpdated();\n};\n\nself.typeParameters = function() {\n return {\n maxDatasources: 1,\n maxDataKeys: 1,\n singleEntity: true,\n previewWidth: '250px',\n previewHeight: '250px',\n embedTitlePanel: true\n };\n};\n\nself.onDestroy = function() {\n};\n",
"settingsSchema": "",
"dataKeySettingsSchema": "",
"settingsDirective": "tb-value-card-widget-settings",
"hasBasicMode": true,
"basicModeDirective": "tb-value-card-basic-config",
"defaultConfig": "{\"datasources\":[{\"type\":\"function\",\"name\":\"function\",\"dataKeys\":[{\"name\":\"f(x)\",\"type\":\"function\",\"label\":\"Temperature\",\"color\":\"#2196f3\",\"settings\":{},\"_hash\":0.2392660816082064,\"funcBody\":\"var value = prevValue + Math.random() * 40 - 20;\\nif (value < -60) {\\n\\tvalue = -60;\\n} else if (value > 60) {\\n\\tvalue = 60;\\n}\\nreturn value;\",\"aggregationType\":null,\"units\":null,\"decimals\":null,\"usePostProcessing\":null,\"postFuncBody\":null}],\"alarmFilterConfig\":{\"statusList\":[\"ACTIVE\"]}}],\"timewindow\":{\"realtime\":{\"timewindowMs\":60000}},\"showTitle\":false,\"backgroundColor\":\"rgba(0, 0, 0, 0)\",\"color\":\"rgba(0, 0, 0, 0.87)\",\"padding\":\"0px\",\"settings\":{\"labelPosition\":\"top\",\"layout\":\"square\",\"showLabel\":true,\"labelFont\":{\"family\":\"Roboto\",\"size\":16,\"sizeUnit\":\"px\",\"style\":\"normal\",\"weight\":\"500\"},\"labelColor\":{\"type\":\"constant\",\"color\":\"rgba(0, 0, 0, 0.87)\",\"colorFunction\":\"var temperature = value;\\nif (typeof temperature !== undefined) {\\n var percent = (temperature + 60)/120 * 100;\\n return tinycolor.mix('blue', 'red', percent).toHexString();\\n}\\nreturn 'blue';\"},\"showIcon\":true,\"iconSize\":40,\"iconSizeUnit\":\"px\",\"icon\":\"thermostat\",\"iconColor\":{\"type\":\"constant\",\"color\":\"#5469FF\",\"colorFunction\":\"var temperature = value;\\nif (typeof temperature !== undefined) {\\n var percent = (temperature + 60)/120 * 100;\\n return tinycolor.mix('blue', 'red', percent).toHexString();\\n}\\nreturn 'blue';\"},\"valueFont\":{\"family\":\"Roboto\",\"size\":52,\"sizeUnit\":\"px\",\"style\":\"normal\",\"weight\":\"500\"},\"valueColor\":{\"type\":\"constant\",\"color\":\"rgba(0, 0, 0, 0.87)\",\"colorFunction\":\"var temperature = value;\\nif (typeof temperature !== undefined) {\\n var percent = (temperature + 60)/120 * 100;\\n return tinycolor.mix('blue', 'red', percent).toHexString();\\n}\\nreturn 'blue';\"},\"showDate\":true,\"dateFormat\":{\"format\":null,\"lastUpdateAgo\":true,\"custom\":false},\"dateFont\":{\"family\":\"Roboto\",\"size\":12,\"sizeUnit\":\"px\",\"style\":\"normal\",\"weight\":\"500\"},\"dateColor\":{\"type\":\"constant\",\"color\":\"rgba(0, 0, 0, 0.38)\",\"colorFunction\":\"var temperature = value;\\nif (typeof temperature !== undefined) {\\n var percent = (temperature + 60)/120 * 100;\\n return tinycolor.mix('blue', 'red', percent).toHexString();\\n}\\nreturn 'blue';\"},\"background\":{\"type\":\"color\",\"color\":\"#fff\",\"overlay\":{\"enabled\":false,\"color\":\"rgba(255,255,255,0.72)\",\"blur\":3}}},\"title\":\"Value card\",\"dropShadow\":true,\"enableFullscreen\":false,\"titleStyle\":{\"fontSize\":\"16px\",\"fontWeight\":400},\"units\":\"°C\",\"decimals\":0,\"useDashboardTimewindow\":true,\"showLegend\":false,\"widgetStyle\":{},\"actions\":{},\"configMode\":\"basic\",\"displayTimewindow\":true,\"margin\":\"0px\",\"borderRadius\":\"0px\",\"widgetCss\":\"\",\"pageSize\":1024,\"noDataDisplayMessage\":\"\",\"showTitleIcon\":false,\"titleTooltip\":\"\",\"titleFont\":{\"size\":12,\"sizeUnit\":\"px\",\"family\":null,\"weight\":null,\"style\":null,\"lineHeight\":\"1.6\"},\"titleIcon\":\"\",\"iconColor\":\"rgba(0, 0, 0, 0.87)\",\"iconSize\":\"14px\",\"timewindowStyle\":{\"showIcon\":true,\"iconSize\":\"14px\",\"icon\":\"query_builder\",\"iconPosition\":\"left\",\"font\":{\"size\":12,\"sizeUnit\":\"px\",\"family\":null,\"weight\":null,\"style\":null,\"lineHeight\":\"1\"},\"color\":null}}"
}
},
{
"alias": "horizontal_value_card",
"name": "Horizontal value card",
"image": "data:image/png;base64,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",
"description": "Designed to display single value of the selected attribute or timeseries data. Widget styles are customizable.",
"descriptor": {
"type": "latest",
"sizeX": 5,
"sizeY": 1.5,
"resources": [],
"templateHtml": "<tb-value-card-widget \n [ctx]=\"ctx\"\n [widgetTitlePanel]=\"widgetTitlePanel\">\n</tb-value-card-widget>",
"templateCss": "",
"controllerScript": "self.onInit = function() {\n self.ctx.$scope.valueCardWidget.onInit();\n};\n\nself.onDataUpdated = function() {\n self.ctx.$scope.valueCardWidget.onDataUpdated();\n};\n\nself.typeParameters = function() {\n return {\n maxDatasources: 1,\n maxDataKeys: 1,\n singleEntity: true,\n horizontal: true,\n previewWidth: '420px',\n previewHeight: '130px',\n embedTitlePanel: true\n };\n};\n\nself.onDestroy = function() {\n};\n",
"settingsSchema": "",
"dataKeySettingsSchema": "",
"settingsDirective": "tb-value-card-widget-settings",
"hasBasicMode": true,
"basicModeDirective": "tb-value-card-basic-config",
"defaultConfig": "{\"datasources\":[{\"type\":\"function\",\"name\":\"function\",\"dataKeys\":[{\"name\":\"f(x)\",\"type\":\"function\",\"label\":\"Temperature\",\"color\":\"#2196f3\",\"settings\":{},\"_hash\":0.2392660816082064,\"funcBody\":\"var value = prevValue + Math.random() * 40 - 20;\\nif (value < -60) {\\n\\tvalue = -60;\\n} else if (value > 60) {\\n\\tvalue = 60;\\n}\\nreturn value;\",\"aggregationType\":null,\"units\":null,\"decimals\":null,\"usePostProcessing\":null,\"postFuncBody\":null}],\"alarmFilterConfig\":{\"statusList\":[\"ACTIVE\"]}}],\"timewindow\":{\"realtime\":{\"timewindowMs\":60000}},\"showTitle\":false,\"backgroundColor\":\"rgba(0, 0, 0, 0)\",\"color\":\"rgba(0, 0, 0, 0.87)\",\"padding\":\"0px\",\"settings\":{\"labelPosition\":\"top\",\"layout\":\"horizontal\",\"showLabel\":true,\"labelFont\":{\"family\":\"Roboto\",\"size\":16,\"sizeUnit\":\"px\",\"style\":\"normal\",\"weight\":\"500\"},\"labelColor\":{\"type\":\"constant\",\"color\":\"rgba(0, 0, 0, 0.87)\",\"colorFunction\":\"var temperature = value;\\nif (typeof temperature !== undefined) {\\n var percent = (temperature + 60)/120 * 100;\\n return tinycolor.mix('blue', 'red', percent).toHexString();\\n}\\nreturn 'blue';\"},\"showIcon\":true,\"iconSize\":40,\"iconSizeUnit\":\"px\",\"icon\":\"thermostat\",\"iconColor\":{\"type\":\"constant\",\"color\":\"#5469FF\",\"colorFunction\":\"var temperature = value;\\nif (typeof temperature !== undefined) {\\n var percent = (temperature + 60)/120 * 100;\\n return tinycolor.mix('blue', 'red', percent).toHexString();\\n}\\nreturn 'blue';\"},\"valueFont\":{\"family\":\"Roboto\",\"size\":52,\"sizeUnit\":\"px\",\"style\":\"normal\",\"weight\":\"500\"},\"valueColor\":{\"type\":\"constant\",\"color\":\"rgba(0, 0, 0, 0.87)\",\"colorFunction\":\"var temperature = value;\\nif (typeof temperature !== undefined) {\\n var percent = (temperature + 60)/120 * 100;\\n return tinycolor.mix('blue', 'red', percent).toHexString();\\n}\\nreturn 'blue';\"},\"showDate\":true,\"dateFormat\":{\"format\":null,\"lastUpdateAgo\":true,\"custom\":false},\"dateFont\":{\"family\":\"Roboto\",\"size\":12,\"sizeUnit\":\"px\",\"style\":\"normal\",\"weight\":\"500\"},\"dateColor\":{\"type\":\"constant\",\"color\":\"rgba(0, 0, 0, 0.38)\",\"colorFunction\":\"var temperature = value;\\nif (typeof temperature !== undefined) {\\n var percent = (temperature + 60)/120 * 100;\\n return tinycolor.mix('blue', 'red', percent).toHexString();\\n}\\nreturn 'blue';\"},\"background\":{\"type\":\"color\",\"color\":\"#fff\",\"overlay\":{\"enabled\":false,\"color\":\"rgba(255,255,255,0.72)\",\"blur\":3}}},\"title\":\"Horizontal value card\",\"dropShadow\":true,\"enableFullscreen\":false,\"titleStyle\":{\"fontSize\":\"16px\",\"fontWeight\":400},\"units\":\"°C\",\"decimals\":0,\"useDashboardTimewindow\":true,\"showLegend\":false,\"widgetStyle\":{},\"actions\":{},\"configMode\":\"basic\",\"displayTimewindow\":true,\"margin\":\"0px\",\"borderRadius\":\"0px\",\"widgetCss\":\"\",\"pageSize\":1024,\"noDataDisplayMessage\":\"\",\"showTitleIcon\":false,\"titleTooltip\":\"\",\"titleFont\":{\"size\":12,\"sizeUnit\":\"px\",\"family\":null,\"weight\":null,\"style\":null,\"lineHeight\":\"1.6\"},\"titleIcon\":\"\",\"iconColor\":\"rgba(0, 0, 0, 0.87)\",\"iconSize\":\"14px\",\"timewindowStyle\":{\"showIcon\":true,\"iconSize\":\"14px\",\"icon\":\"query_builder\",\"iconPosition\":\"left\",\"font\":{\"size\":12,\"sizeUnit\":\"px\",\"family\":null,\"weight\":null,\"style\":null,\"lineHeight\":\"1\"},\"color\":null}}"
}
}
]
}