diff --git a/application/src/main/data/json/system/widget_bundles/air_quality.json b/application/src/main/data/json/system/widget_bundles/air_quality.json index ad717be026..6d84403e02 100644 --- a/application/src/main/data/json/system/widget_bundles/air_quality.json +++ b/application/src/main/data/json/system/widget_bundles/air_quality.json @@ -98,6 +98,14 @@ "sulfur_dioxide_so2_chart_card", "sulfur_dioxide_so2_chart_card_with_background", "simple_sulfur_dioxide_so2_chart_card", - "simple_sulfur_dioxide_so2_chart_card_with_background" + "simple_sulfur_dioxide_so2_chart_card_with_background", + "carbon_monoxide_co_card", + "carbon_monoxide_co_card_with_background", + "horizontal_carbon_monoxide_co_card", + "horizontal_carbon_monoxide_co_card_with_background", + "carbon_monoxide_co_chart_card", + "carbon_monoxide_co_chart_card_with_background", + "simple_carbon_monoxide_co_chart_card", + "simple_carbon_monoxide_co_chart_card_with_background" ] } \ No newline at end of file diff --git a/application/src/main/data/json/system/widget_types/carbon_monoxide__co__card.json b/application/src/main/data/json/system/widget_types/carbon_monoxide__co__card.json new file mode 100644 index 0000000000..10aac528a8 --- /dev/null +++ b/application/src/main/data/json/system/widget_types/carbon_monoxide__co__card.json @@ -0,0 +1,37 @@ +{ + "fqn": "carbon_monoxide_co_card", + "name": "Carbon monoxide (CO) card", + "deprecated": false, + "image": "data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAAMgAAACgCAYAAABJ/yOpAAAACXBIWXMAAAsTAAALEwEAmpwYAAAAAXNSR0IArs4c6QAAAARnQU1BAACxjwv8YQUAABHcSURBVHgB7Z1bjFVVmsdXgYpgFQXiEBhAhBajYLTpZNQ2AR/EC82DHVBRH6YFbTXpRJgRnXlAZxp5GC+kwaQTM3Kx58EMImZMvIsPg4koHRuilkZxhuIWiIMUp6paRKVq9m8V36lVm31WnaqSwz51/r9kc/bZe133/v5rfetyijqXsHv37ovq6uo2JKc/T45RToja5r86Ozv/YcqUKc11J8Wxo7GxcdTIkSPdkCFDnBC1SkdHh2tvb3ctLS1HE5HMPCsRxx9Gjx7txSFErUMHgRYSoYwqFAob6C5+XV9f74QQ3ZzsMH7u/Sm5VUL05KQmRkkZQkSQQISIIIEIEUECESKCBCJEBAlEiAgSiBARJBAhIkggQkSQQISIIIEIEUECESKCBCJEBAlEiAgSiBARJBAhIkggQkSQQISIIIEIEUECESJCTQnkgw8+cGvWrPEH5wPhrrvuco8//rgTzq1fv94/01LMnj3bbdiwwVUjNSOQRx55xBv1O++84z788EN/HnupvbF//37X2trqhHNtbW1u8+bNJe9X87OqCYHw8l566SX36KOPuldffdW98MILbtGiRZk9Sexlcp37vV1L34sZR1+MJx02Fncg+fbVoJcsWeK2bt3a41rsuZRzPzc0Nzd3DnbuvPPOzlmzZvW4VigUOpctW9a5bds2/33Tpk2dV155ZeeUKVP88fDDD58S3w7gk+sWh+9NTU3FOOvWreuR3urVq09Jj0+7n7gp0bJzWNgVK1Z0zps3LzMu9UnXg7oCZeDe/fffX7yfuInFuJQ/zIdw+/btK5aDuKTFNcLx/IDP8PmSj6Vh6YX1p/zh/fC55Qm0URMCwZh4wTHCF46R8fKSXsd/N0PmJdvLNKMlrBkW+QAGZOExKMSSlZ7FNePLIh3WhIGgySeMa4Z73333+Xzfeustf8+M0wyXT8KaoZqArE7cIy/i2nPjmqWF6CwchAKxulMGzq3uVgaegdXHyp9uvPIC2jjLVZiO1jb33ae7elw79/JpbsjIBn/+w76D/jDOnjTeHwOB7ry3vz2Mi0CXjztm7kXoAkycONG7EiFXX321u+aaa/z53Xff7VauXFlMA3DjyHfx4sXu+eefd2+//bZbsGBBMT2LSzqxSYMw7GWXXebLd+utt54S9/PPP/f5P/vssz7fG2+80Y+5KE9YdjufPn168fl89tlnxbjkB5TV6sI16sNgm/BPPvlkMVwI4zvLg/vUnedikJ7lS37Uh/JznpXemaaiAvlm1Vp3+Ol1p1yftPmPbsS1vyh5/4Jl97oxD93j+gvGkuVT81K4x8GMFC/vhhtu6NeAsrGxMTNdg5fPYPZ0YuVONwZ98fXDuPbczHgRjE1sIL4sLK9SDZKNb5g0MfIoDKNig3R6hSzjN9rf3Fry/uGn17pv3/+L6y+0stZCGrRaTD/SqnOPlpFW76mnnvKD+b4SGoa18ukBdUNDgzudTJgwoUdZ4MCBA8UWO4YZNOHDuFw3A37mmWf8Odc4z8LClhIl9znoscMjryKpWA9yvKnbraI3CN0mzgsbXyt+H7tiaeJy1fs4Lc9t9NdCt6uv4BrQOzC1i/FjuLSEvBRcFTNk3AOulbtGYu4LBsMnbhDnpIkB0UriehEOg3nwwQfd6QQhUH7yxQWiPtSF83LiUn6eC3WgvMz88ezAZgJJi+eF2zRnzpyi62fQAxOf+8uXL/d1D5k/f74vHz02YSkjYZhdzCMVE8iJQrd7gTvFUYr6m2d70dBrmEAGAkbDC+DFJANMfw2DMMPhhfIyGSdgUPQk3E/Gaf6+tczpNDkwHOJgKGF6TCXb2gvhEKaNG9Lp0bOUakHTYcMWPR03zPeBBx7w38N80/mkv1N+BGLPiOdg4xXqSU9saW3ZssX3utYohGUgHRoIyoBbRhjrPS0+z9ri8+zzSh0j9cmTJ7vTDT3EoaVdgzUbc4TgRn2zqsvFmrr95aJA9i34nb82bvVy17hwnhOiUuzZs0d7sYSIIYEIEUECESKCBCJEBAlEiAgVm+Yd2ti9SPb1Y2uS793/s+7f/H5JcasJ2GwX21KM8L4QlaJiAmFaFyPH6I83fdnjXkdre49p3/SqOfHYryVEpamYQFgZv2jLn9zBpHf4MWNVHAFM2PCEO5IsDIb3z0rWQ8b+fumANywK0R8qtlAoumhvb3fff/+9O//8810lOHTokBs3bpwTfadmFgrfeOMNX9n+8tVXX7mfil27drmmpqaS948cOeKNulwI+95775WsH3UX/acmBGKtdhqupY3Rrll44mKAfKbDWZjw3PIqlW4aBMFhYUxAYdrcT+cPe/fudTt27OhR3jDdrDhZ+RqE51pYn3LSGsxU/AdTeQFD3Llzp3d1EMAtt9zijYIWF5cEo7v++ut9OMAQZ82aVYyPEWM0XAvPN23a5C688MKiUG677TZvYO+++67Pi3Nzeax1J+zFF1/spk2bVjR2PglPGItH+qG7RD4c6V7ilVdeceecc07JuhOe+6TJpswZM2b4+rHt3+p+1VVX+fJYWlbGmTNnulqiZtdBxowZ4+bOnetfuLXSuCkYAwZjYmAHK4Ti6A3SNMFhbBgfxoXg+ATuEY50yQ83rr6+3hs8RsonwkMclAFDjrlmBvlhzNSN/NJYvqRJvogCyJ/wHDY+sudBWtSHBiWrJx7M1GwPwsvHRcEQDQxm2LBh/jcKZmT9wVpvDM3cFYw/HYZ8YoN14lEOBAaIui/5Z/UiXKPHTA/cySddxvAa8TgoU6x3GmzUTA9ixmauD+KgJUUUBu4UP4tFGBiuuVcWP8TcDsgan5g/TzocNv6wsObX05KPHz/+lPhAPPIhDGUNxVwKE6XVNY2NMei5QnEiGBv7WP4IkudkdaEsaRENdoYuXbr0X0eNGuUGM7xkfj6KG8FBfXn5H3/8sb83fPhw/33s2LHe5SDMiRMnvFGaED766KMeYiKNL774wn3yySc+zIgRI/yPm3BDjh075q9fccUV/hrpEpZ7FhZXi3Dbt293dXV13iinTp3q75E/v9ojfwyTMJST6XjKmgbxUX5+Fz906FDX0dHheycTZVhu4pPvtm3bfB05Lr30Uh/f6k5ZEAz5kRY9GNcRVS0JpFAoaB3kp4ZfyTEwrzZDwuW0X/0xoUCvVU6PNZjhmdTsGOR0QctbjT46PQhjE6DHqXVxGOpBhCiBfnIrRC9IIEJEkECEiCCBCBFBAhEiggQiRAQJRIgIEogQESQQISJIIEJEkECEiCCBCBFBAhEiggQiRAQJRIgIEogQESQQISJIIEJEkECEiCCBCBFBAhEiggQiRAQJRIgIEogQESQQISJIIEJEkECEiCCBCBFBAhEiggQiRAQJRIgIEogQEar6f5j6Yd9Bd6LQ5oY2NrizJ43vNXxHa5v79v2/JHHafXg7ag2eGwxtrHdDRja4SkLeHENG1rtzL7/E5Z2qEwgG/s2qde67T3d5g4dxq5e7xoXzSsbhhRxautLHTXPu5dPc365/omaE0v7mVndg0T/580mb/+hGXPsLVwlantvoDj+9rvjOgGc+5qF7ou/uTFM1LhZGvm/B7/yBoYcPupx4WeIAhPa/V80veX+wUXjxNf+JcVZKHIWNr7mvH1vt3xk91vAkXz5jDVdeqIoexIzcXAPgAdfPne3OnjjODZsxrWTcrx9bU4xHnNG/vd0bBtfoiewererP/vxyxV2OSkJd29/Y6s9HXDvTVYrjTbu8IIckLt2FSa9l4qBhAgRSKbH2laoQSCgOHjQuVTkP9HjTl4lL8d/F7xM2/FuPeJw3z/mNb9k6WtuTlu71REAL3WAlbKnHPHSvqxRjVyz1Ryny7N7mXiDfrFrbQxz4zeU+0LaTrSXQradFRTqNC3/l/WPAPx+oQBDb93sPesExvsnqkfozUA3T7e/kQuuLr/vPYTMuKXtSo7e6lBMmpMvVai++G95LnscguRcIrbrBgK4vhnFs247i+bkl3DBEYwL57tMvXbkcfnqtd9EAkdEiZ/nTvHwrN73Z4VXr3fEgHwzq/PsW+jBZYIAtz73ojvz7xh7jLptc+PpfVhfdpthkBYK0suFmhnCdXhoo50Vb/pSZJ8+KPAjD2O3/krxj9c2CRqjb5a135+XUtTJyLZDwYXa19vP6NFV7ImmpjFJhzp40rnhOy2YDyb7w7fs7kqPnGMlggMp1fH5mcdKQH2KjPmNXLDnlPoaLMabhWvOcv/dT3OUQ9qYx95Rpc9zOrLqYkBDJgUX/nDlRQn1xbSe/8x+Z6eMBAOOSg0tW+rp3djp3wbJ7XB7JtUDC1qn+5tm+xU63ajD6t3dkGldHoTscrVUWaTFgqH0ViBkTPck50y/x5cOdsevUI2y9cXG4F4Zpee4/EyNZ3CNv3MtQHPQaDbd19RDfJr3jX5MeqSNoBGIcXdvVS+LSxHrhrkai3Yerv2m2v9a66fVir2cTJpYWYdL1pczhwJuGDuGFM2ecUx/CIai8kmuB0MoYYW+SBuPiJdGynSmYAKi/+brid3o7mwAw0usOhLGZHKCVNxfJJg0MGogJG54ofsctC928GBhgUcS3/6rX8LiLYYtOXump8lPD3OH+5+/mF+vL+7K6MrWMG0gjxWDdZhEtPRYs80qu10FCQXQNahu8f4uhmC9s0LVznAkoRyiO7muzit8x8KxJgrAOYX0xnvB71izQBcvuLWtMdiQZTxgNc2f3Gj7L3Tnvpu54GHo6DNfC+oZlH/OP9/p3h+gZp9EohGOeSs6o9ZVc9yC4O0bWDFbD3Ovc3uRBW/dPN5/XGZFSrST1yeoZwwmDcmedSnHsZEuNC9jfdZ6w/OWMe8LxH64UA396vB/2H3I/0tgladTfNMv3Tnlee8q1QEL3hOnXtJH4lizpUWzrhK2wD4bFvlA04URCXwl7ovNuus6dKXh349c86qqNqtlqUmqQnXZbmJMfbAzERy+cXPvAQMtxr0RPci2QctyKtHDCWZ0hgStQaoCfvj7YNi2eia0lg4lcC2TY5d2Le+GMVkh6ijAUzLDpFxfPf9yfLZCOMtZKzgRhWVhn6Q9MWpibOvL2/K5W55lcC2T4Nd3uU6kZqnCdIL11g8GtES6UhbS9uTUIX3rTY6UJXcdwSjRNOJGRpjVwr/K6GTDv5Fogo+6YVxxw09KzMzfEduQaaR+b+Abx02sGiKs1EB5TsXlhxMkt4QbbOtILpCwkltr2H4oqT/WqNnI9i9U13764KAwWBNnPNDJZ7PoxmS6kVzADyZpPJz6zX7bXimlGjGb4L2cW4xu2lSVPhHXv2lryG9/LMc0a61UgvDeYdyifbnK/WZFtJLgR1vqnew2gpS31q0AW2Bi/mMGE2z4MW2PJG1l17zn9O97fz+pF+rpzV2RTFdO8rBiz0DQ85UfbD6B+9ufNfjGqFBg/K+/DUlvL7SefpN1XIyJvWwk/q0Rc+628/7FQibWZsyaOi4ah7umyE45FP+qVNQUc27mbXc76Xjd+hnUpp75DR+Z3+0hfqGtubu6cPHmyqyYwgIH8wYGBxj9T0FPYLmbji/G/LJ7TizIO4zcX5lZO3f6yepB+smfPnur8qyYDfeHVZDAYOoNs62FCUadn9qwXZZxiv8mQOAZGVf/Zn8EObpL1BuFf/6AnYadv+PsSXC4TQ55/oVdtSCA5xsYR9tc/OLI2N+Z9R2w1I4HkGAboEP4YKS0OJi7Gp7b+i5+Oqhyk1xpdPzPmZ70fuROtf/XXhk2f5sccWiE/fTBIl0CEKAEC0R+vFiKCBCJEBAlEiAgSiBARJBAhIkggQkSQQISIIIEIEUECESKCBCJEBAlEiAgSiBARJBAhIkggQkSQQISIIIEIEUECESKCBCJEBAlEiAgSiBARJBAhIkggQkSQQISIIIEIEUECESKCBCJEBAlEiAgSiBARJBAhIkggQkSQQISIIIEIEUECESKCBCJEBAlEiAgSiBARJBAhIkggQkSQQISIIIEIEUECESICAjna0dHhhBDdmCYQyM62tjYnhOimvb3ddXZ2vjIk+WfR0YTW1lannkTUOmigUCi4lpaWo8nXpXVc3L1790V1dXV/SE5/7YSobRDGTjqOKVOmNP8/9m1QOB7v4VMAAAAASUVORK5CYII=", + "description": "A colorless and odorless gas resulting from incomplete combustion, particularly in motor vehicles.", + "descriptor": { + "type": "latest", + "sizeX": 3, + "sizeY": 3, + "resources": [], + "templateHtml": "\n", + "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 defaultDataKeysFunction: function() {\n return [{ name: 'carbon', label: 'Carbon monoxide', type: 'timeseries' }];\n }\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\":\"Carbon monoxide\",\"color\":\"#2196f3\",\"settings\":{},\"_hash\":0.2392660816082064,\"funcBody\":\"var value = prevValue + Math.random() * 100 - 50;\\nvar multiplier = Math.pow(10, 2 || 0);\\nvar value = Math.round(value * multiplier) / multiplier;\\nif (value < 0) {\\n\\tvalue = 0;\\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\":\"mdi:molecule-co\",\"iconColor\":{\"type\":\"range\",\"color\":\"rgba(0, 0, 0, 0.87)\",\"rangeList\":[{\"from\":0,\"to\":5,\"color\":\"#3FA71A\"},{\"from\":5,\"to\":10,\"color\":\"#80C32C\"},{\"from\":10,\"to\":25,\"color\":\"#FFA600\"},{\"from\":25,\"to\":50,\"color\":\"#F36900\"},{\"from\":50,\"to\":null,\"color\":\"#D81838\"}],\"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\":{\"size\":28,\"sizeUnit\":\"px\",\"family\":\"Roboto\",\"weight\":\"500\",\"style\":\"normal\"},\"valueColor\":{\"type\":\"range\",\"color\":\"rgba(0, 0, 0, 0.87)\",\"rangeList\":[{\"from\":0,\"to\":5,\"color\":\"#3FA71A\"},{\"from\":5,\"to\":10,\"color\":\"#80C32C\"},{\"from\":10,\"to\":25,\"color\":\"#FFA600\"},{\"from\":25,\"to\":50,\"color\":\"#F36900\"},{\"from\":50,\"to\":null,\"color\":\"#D81838\"}],\"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}},\"autoScale\":true},\"title\":\"Carbon monoxide\",\"dropShadow\":true,\"enableFullscreen\":false,\"titleStyle\":{\"fontSize\":\"16px\",\"fontWeight\":400},\"units\":\"mg/m³\",\"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}}" + }, + "externalId": null, + "tags": [ + "enviroment", + "particulate", + "matter", + "air", + "coarse particulates", + "coarse particles", + "inhalable particles", + "larger particulates", + "dust", + "airborne coarse particles", + "carbon monoxide", + "CO" + ] +} \ No newline at end of file diff --git a/application/src/main/data/json/system/widget_types/carbon_monoxide__co__card_with_background.json b/application/src/main/data/json/system/widget_types/carbon_monoxide__co__card_with_background.json new file mode 100644 index 0000000000..e5a1f75880 --- /dev/null +++ b/application/src/main/data/json/system/widget_types/carbon_monoxide__co__card_with_background.json @@ -0,0 +1,37 @@ +{ + "fqn": "carbon_monoxide_co_card_with_background", + "name": "Carbon monoxide (CO) card with background", + "deprecated": false, + "image": "data:image/png;base64,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", + "description": "A colorless and odorless gas resulting from incomplete combustion, particularly in motor vehicles.", + "descriptor": { + "type": "latest", + "sizeX": 3, + "sizeY": 3, + "resources": [], + "templateHtml": "\n", + "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 defaultDataKeysFunction: function() {\n return [{ name: 'carbon', label: 'Carbon monoxide', type: 'timeseries' }];\n }\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\":\"Carbon monoxide\",\"color\":\"#2196f3\",\"settings\":{},\"_hash\":0.2392660816082064,\"funcBody\":\"var value = prevValue + Math.random() * 100 - 50;\\nvar multiplier = Math.pow(10, 2 || 0);\\nvar value = Math.round(value * multiplier) / multiplier;\\nif (value < 0) {\\n\\tvalue = 0;\\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\":\"mdi:molecule-co\",\"iconColor\":{\"type\":\"range\",\"color\":\"rgba(0, 0, 0, 0.87)\",\"rangeList\":[{\"from\":0,\"to\":5,\"color\":\"#3B911C\"},{\"from\":5,\"to\":10,\"color\":\"#7CC322\"},{\"from\":10,\"to\":25,\"color\":\"#F89E0D\"},{\"from\":25,\"to\":50,\"color\":\"#F77410\"},{\"from\":50,\"to\":null,\"color\":\"#DE2343\"}],\"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\":{\"size\":28,\"sizeUnit\":\"px\",\"family\":\"Roboto\",\"weight\":\"500\",\"style\":\"normal\"},\"valueColor\":{\"type\":\"range\",\"color\":\"rgba(0, 0, 0, 0.87)\",\"rangeList\":[{\"from\":0,\"to\":5,\"color\":\"#3B911C\"},{\"from\":5,\"to\":10,\"color\":\"#7CC322\"},{\"from\":10,\"to\":25,\"color\":\"#F89E0D\"},{\"from\":25,\"to\":50,\"color\":\"#F77410\"},{\"from\":50,\"to\":null,\"color\":\"#DE2343\"}],\"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\":\"image\",\"imageUrl\":\"tb-image;/api/images/tenant/noise-level-value-card-min_(3).png\",\"color\":\"#fff\",\"overlay\":{\"enabled\":true,\"color\":\"rgba(255,255,255,0.72)\",\"blur\":3}},\"autoScale\":true},\"title\":\"Carbon monoxide\",\"dropShadow\":true,\"enableFullscreen\":false,\"titleStyle\":{\"fontSize\":\"16px\",\"fontWeight\":400},\"units\":\"mg/m³\",\"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}}" + }, + "externalId": null, + "tags": [ + "enviroment", + "particulate", + "matter", + "air", + "coarse particulates", + "coarse particles", + "inhalable particles", + "larger particulates", + "dust", + "airborne coarse particles", + "carbon monoxide", + "CO" + ] +} \ No newline at end of file diff --git a/application/src/main/data/json/system/widget_types/carbon_monoxide__co__chart_card.json b/application/src/main/data/json/system/widget_types/carbon_monoxide__co__chart_card.json new file mode 100644 index 0000000000..08edc9964f --- /dev/null +++ b/application/src/main/data/json/system/widget_types/carbon_monoxide__co__chart_card.json @@ -0,0 +1,40 @@ +{ + "fqn": "carbon_monoxide_co_chart_card", + "name": "Carbon monoxide (CO) chart card", + "deprecated": false, + "image": "data:image/png;base64,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", + "description": "A colorless and odorless gas resulting from incomplete combustion, particularly in motor vehicles. Results displayed by combining the latest and aggregated values and optional simplified chart. ", + "descriptor": { + "type": "timeseries", + "sizeX": 4.5, + "sizeY": 3.5, + "resources": [], + "templateHtml": "\n\n", + "templateCss": ".legend {\n font-size: 13px;\n line-height: 10px;\n}\n\n.legend table { \n border-spacing: 0px;\n border-collapse: separate;\n}\n\n.mouse-events .flot-overlay {\n cursor: crosshair; \n}\n\n", + "controllerScript": "self.onInit = function() {\n self.ctx.$scope.aggregatedValueCardWidget.onInit();\n};\n\nself.onDataUpdated = function() {\n self.ctx.$scope.aggregatedValueCardWidget.onDataUpdated();\n};\n\nself.onLatestDataUpdated = function() {\n self.ctx.$scope.aggregatedValueCardWidget.onLatestDataUpdated();\n}\n\nself.onResize = function() {\n self.ctx.$scope.aggregatedValueCardWidget.onResize();\n}\n\nself.onEditModeChanged = function() {\n self.ctx.$scope.aggregatedValueCardWidget.onEditModeChanged();\n}\n\nself.onDestroy = function() {\n self.ctx.$scope.aggregatedValueCardWidget.onDestroy();\n}\n\nself.typeParameters = function() {\n return {\n maxDatasources: 1,\n maxDataKeys: 1,\n singleEntity: true,\n previewWidth: '400px',\n previewHeight: '300px',\n embedTitlePanel: true,\n hasAdditionalLatestDataKeys: true,\n defaultDataKeysFunction: function() {\n return [\n { name: 'carbon', label: 'Carbon monoxide', type: 'timeseries', color: 'rgba(0, 0, 0, 0.87)', units: 'mg/m³', decimals: 0 }\n ];\n },\n defaultLatestDataKeysFunction: function(configComponent, configData) {\n return configComponent.createDefaultAggregatedValueLatestDataKeys(configData, 'carbon', 'mg/m³', 0);\n }\n };\n}\n", + "settingsSchema": "{}", + "dataKeySettingsSchema": "{}", + "latestDataKeySettingsSchema": "{}", + "settingsDirective": "tb-aggregated-value-card-widget-settings", + "dataKeySettingsDirective": "", + "latestDataKeySettingsDirective": "tb-aggregated-value-card-key-settings", + "hasBasicMode": true, + "basicModeDirective": "tb-aggregated-value-card-basic-config", + "defaultConfig": "{\"datasources\":[{\"type\":\"function\",\"name\":\"Main building\",\"dataKeys\":[{\"name\":\"f(x)\",\"type\":\"function\",\"label\":\"Carbon monoxide\",\"color\":\"rgba(0, 0, 0, 0.87)\",\"settings\":{\"showLines\":true,\"fillLines\":true,\"showPoints\":false},\"_hash\":0.8587686344902596,\"funcBody\":\"var value = prevValue + Math.random() * 100 - 50;\\nvar multiplier = Math.pow(10, 2 || 0);\\nvar value = Math.round(value * multiplier) / multiplier;\\nif (value < 0) {\\n\\tvalue = 0;\\n} else if (value > 60) {\\n\\tvalue = 60;\\n}\\nreturn value;\",\"aggregationType\":null,\"units\":\"mg/m³\",\"decimals\":0,\"usePostProcessing\":null,\"postFuncBody\":null}],\"alarmFilterConfig\":{\"statusList\":[\"ACTIVE\"]},\"latestDataKeys\":[{\"name\":\"f(x)\",\"type\":\"function\",\"label\":\"Latest\",\"color\":\"#4caf50\",\"settings\":{\"position\":\"center\",\"font\":{\"size\":52,\"sizeUnit\":\"px\",\"family\":\"Roboto\",\"weight\":\"500\",\"style\":\"normal\",\"lineHeight\":\"1\"},\"color\":{\"type\":\"range\",\"color\":\"rgba(0, 0, 0, 0.87)\",\"rangeList\":[{\"from\":0,\"to\":5,\"color\":\"#3FA71A\"},{\"from\":5,\"to\":10,\"color\":\"#80C32C\"},{\"from\":10,\"to\":25,\"color\":\"#FFA600\"},{\"from\":25,\"to\":50,\"color\":\"#F36900\"},{\"from\":50,\"to\":null,\"color\":\"#D81838\"}],\"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';\"},\"showArrow\":false},\"_hash\":0.9408410830697858,\"funcBody\":\"var value = prevValue + Math.random() * 100 - 50;\\nvar multiplier = Math.pow(10, 2 || 0);\\nvar value = Math.round(value * multiplier) / multiplier;\\nif (value < 0) {\\n\\tvalue = 0;\\n} else if (value > 60) {\\n\\tvalue = 60;\\n}\\nreturn value;\",\"aggregationType\":null,\"units\":\"mg/m³\",\"decimals\":0,\"usePostProcessing\":null,\"postFuncBody\":null},{\"name\":\"f(x)\",\"type\":\"function\",\"label\":\"Delta percent\",\"color\":\"#f44336\",\"settings\":{\"position\":\"rightTop\",\"font\":{\"size\":14,\"sizeUnit\":\"px\",\"family\":\"Roboto\",\"weight\":\"500\",\"style\":\"normal\",\"lineHeight\":\"20px\"},\"color\":{\"type\":\"range\",\"color\":\"rgba(0, 0, 0, 0.38)\",\"rangeList\":[{\"from\":null,\"to\":0,\"color\":\"#198038\"},{\"from\":0,\"to\":0,\"color\":\"rgba(0, 0, 0, 0.87)\"},{\"from\":0,\"to\":null,\"color\":\"#D12730\"}],\"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';\"},\"showArrow\":true},\"_hash\":0.06392321853157967,\"funcBody\":\"var value = prevValue + Math.random() * 6 - 3;\\nvar multiplier = Math.pow(10, 2 || 0);\\nvar value = Math.round(value * multiplier) / multiplier;\\nif (value < -25) {\\n\\tvalue = -25;\\n} else if (value > 25) {\\n\\tvalue = 25;\\n} \\nreturn value;\",\"aggregationType\":null,\"units\":\"%\",\"decimals\":0,\"usePostProcessing\":null,\"postFuncBody\":null},{\"name\":\"f(x)\",\"type\":\"function\",\"label\":\"Delta absolute\",\"color\":\"#607d8b\",\"settings\":{\"position\":\"rightBottom\",\"font\":{\"size\":11,\"sizeUnit\":\"px\",\"family\":\"Roboto\",\"weight\":\"400\",\"style\":\"normal\",\"lineHeight\":\"16px\"},\"color\":{\"type\":\"constant\",\"color\":\"rgba(0, 0, 0, 0.38)\",\"rangeList\":[],\"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';\"},\"showArrow\":false},\"_hash\":0.44695098620509865,\"funcBody\":\"var value = prevValue + Math.random() * 6 - 3;\\nif (value < -10) {\\n\\tvalue = -10;\\n} else if (value > 10) {\\n\\tvalue = 10;\\n}\\nreturn value;\",\"aggregationType\":null,\"units\":\"mg/m³\",\"decimals\":0,\"usePostProcessing\":null,\"postFuncBody\":null}]}],\"timewindow\":{\"hideInterval\":false,\"hideLastInterval\":false,\"hideQuickInterval\":false,\"hideAggregation\":false,\"hideAggInterval\":false,\"hideTimezone\":false,\"selectedTab\":1,\"history\":{\"historyType\":2,\"timewindowMs\":60000,\"interval\":43200000,\"fixedTimewindow\":{\"startTimeMs\":1691927717318,\"endTimeMs\":1692014117318},\"quickInterval\":\"CURRENT_MONTH_SO_FAR\"},\"aggregation\":{\"type\":\"AVG\",\"limit\":25000}},\"showTitle\":true,\"backgroundColor\":\"rgba(0, 0, 0, 0)\",\"color\":null,\"padding\":\"0\",\"settings\":{\"stack\":false,\"fontSize\":10,\"fontColor\":\"#545454\",\"showTooltip\":true,\"tooltipIndividual\":false,\"tooltipCumulative\":false,\"hideZeros\":false,\"grid\":{\"verticalLines\":true,\"horizontalLines\":true,\"outlineWidth\":1,\"color\":\"#545454\",\"backgroundColor\":null,\"tickColor\":\"#DDDDDD\"},\"xaxis\":{\"title\":null,\"showLabels\":true,\"color\":\"#545454\"},\"yaxis\":{\"min\":null,\"max\":null,\"title\":null,\"showLabels\":true,\"color\":\"#545454\",\"tickSize\":null,\"tickDecimals\":0,\"ticksFormatter\":\"\"},\"shadowSize\":4,\"smoothLines\":false,\"comparisonEnabled\":false,\"xaxisSecond\":{\"axisPosition\":\"top\",\"title\":null,\"showLabels\":true},\"showLegend\":true,\"legendConfig\":{\"direction\":\"column\",\"position\":\"bottom\",\"sortDataKeys\":false,\"showMin\":false,\"showMax\":false,\"showAvg\":true,\"showTotal\":false,\"showLatest\":false},\"customLegendEnabled\":false,\"showSubtitle\":true,\"subtitle\":\"${entityName}\",\"subtitleFont\":{\"family\":\"Roboto\",\"size\":12,\"sizeUnit\":\"px\",\"style\":\"normal\",\"weight\":\"400\",\"lineHeight\":\"16px\"},\"subtitleColor\":\"rgba(0, 0, 0, 0.38)\",\"showDate\":true,\"dateFormat\":{\"format\":null,\"lastUpdateAgo\":true,\"custom\":false},\"dateFont\":{\"family\":\"Roboto\",\"size\":12,\"sizeUnit\":\"px\",\"style\":\"normal\",\"weight\":\"400\",\"lineHeight\":\"16px\"},\"dateColor\":\"rgba(0, 0, 0, 0.38)\",\"showChart\":true,\"chartColor\":\"rgba(0, 0, 0, 0.87)\",\"background\":{\"type\":\"color\",\"color\":\"#fff\",\"overlay\":{\"enabled\":false,\"color\":\"rgba(255,255,255,0.72)\",\"blur\":3}},\"autoScale\":true},\"title\":\"Carbon monoxide\",\"dropShadow\":true,\"enableFullscreen\":false,\"titleStyle\":{\"fontSize\":\"16px\",\"fontWeight\":400},\"mobileHeight\":null,\"configMode\":\"basic\",\"actions\":{},\"showTitleIcon\":true,\"titleIcon\":\"mdi:molecule-co\",\"iconColor\":\"rgba(0, 0, 0, 0.87)\",\"titleFont\":{\"size\":16,\"sizeUnit\":\"px\",\"family\":\"Roboto\",\"weight\":\"500\",\"style\":\"normal\",\"lineHeight\":\"24px\"},\"iconSize\":\"24px\",\"titleTooltip\":\"\",\"widgetStyle\":{},\"widgetCss\":\"\",\"pageSize\":1024,\"noDataDisplayMessage\":\"\",\"useDashboardTimewindow\":false,\"displayTimewindow\":true,\"decimals\":0,\"timewindowStyle\":{\"showIcon\":true,\"iconSize\":\"24px\",\"icon\":null,\"iconPosition\":\"left\",\"font\":{\"size\":12,\"sizeUnit\":\"px\",\"family\":\"Roboto\",\"weight\":\"400\",\"style\":\"normal\",\"lineHeight\":\"16px\"},\"color\":\"rgba(0, 0, 0, 0.38)\",\"displayTypePrefix\":false},\"titleColor\":\"rgba(0, 0, 0, 0.87)\",\"borderRadius\":null}" + }, + "externalId": null, + "tags": [ + "environment", + "particulate", + "matter", + "air", + "coarse particulates", + "coarse particles", + "inhalable particles", + "larger particulates", + "dust", + "airborne coarse particles", + "carbon monoxide", + "CO" + ] +} \ No newline at end of file diff --git a/application/src/main/data/json/system/widget_types/carbon_monoxide__co__chart_card_with_background.json b/application/src/main/data/json/system/widget_types/carbon_monoxide__co__chart_card_with_background.json new file mode 100644 index 0000000000..34592d5891 --- /dev/null +++ b/application/src/main/data/json/system/widget_types/carbon_monoxide__co__chart_card_with_background.json @@ -0,0 +1,40 @@ +{ + "fqn": "carbon_monoxide_co_chart_card_with_background", + "name": "Carbon monoxide (CO) chart card with background", + "deprecated": false, + "image": "data:image/png;base64,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", + "description": "A colorless and odorless gas resulting from incomplete combustion, particularly in motor vehicles. Results displayed by combining the latest and aggregated values and optional simplified chart. ", + "descriptor": { + "type": "timeseries", + "sizeX": 4.5, + "sizeY": 3.5, + "resources": [], + "templateHtml": "\n\n", + "templateCss": ".legend {\n font-size: 13px;\n line-height: 10px;\n}\n\n.legend table { \n border-spacing: 0px;\n border-collapse: separate;\n}\n\n.mouse-events .flot-overlay {\n cursor: crosshair; \n}\n\n", + "controllerScript": "self.onInit = function() {\n self.ctx.$scope.aggregatedValueCardWidget.onInit();\n};\n\nself.onDataUpdated = function() {\n self.ctx.$scope.aggregatedValueCardWidget.onDataUpdated();\n};\n\nself.onLatestDataUpdated = function() {\n self.ctx.$scope.aggregatedValueCardWidget.onLatestDataUpdated();\n}\n\nself.onResize = function() {\n self.ctx.$scope.aggregatedValueCardWidget.onResize();\n}\n\nself.onEditModeChanged = function() {\n self.ctx.$scope.aggregatedValueCardWidget.onEditModeChanged();\n}\n\nself.onDestroy = function() {\n self.ctx.$scope.aggregatedValueCardWidget.onDestroy();\n}\n\nself.typeParameters = function() {\n return {\n maxDatasources: 1,\n maxDataKeys: 1,\n singleEntity: true,\n previewWidth: '400px',\n previewHeight: '300px',\n embedTitlePanel: true,\n hasAdditionalLatestDataKeys: true,\n defaultDataKeysFunction: function() {\n return [\n { name: 'carbon', label: 'Carbon monoxide', type: 'timeseries', color: 'rgba(0, 0, 0, 0.87)', units: 'mg/m³', decimals: 0 }\n ];\n },\n defaultLatestDataKeysFunction: function(configComponent, configData) {\n return configComponent.createDefaultAggregatedValueLatestDataKeys(configData, 'carbon', 'mg/m³', 0);\n }\n };\n}\n", + "settingsSchema": "{}", + "dataKeySettingsSchema": "{}", + "latestDataKeySettingsSchema": "{}", + "settingsDirective": "tb-aggregated-value-card-widget-settings", + "dataKeySettingsDirective": "", + "latestDataKeySettingsDirective": "tb-aggregated-value-card-key-settings", + "hasBasicMode": true, + "basicModeDirective": "tb-aggregated-value-card-basic-config", + "defaultConfig": "{\"datasources\":[{\"type\":\"function\",\"name\":\"Main building\",\"dataKeys\":[{\"name\":\"f(x)\",\"type\":\"function\",\"label\":\"Carbon monoxide\",\"color\":\"rgba(0, 0, 0, 0.87)\",\"settings\":{\"showLines\":true,\"fillLines\":true,\"showPoints\":false},\"_hash\":0.8587686344902596,\"funcBody\":\"var value = prevValue + Math.random() * 100 - 50;\\nvar multiplier = Math.pow(10, 2 || 0);\\nvar value = Math.round(value * multiplier) / multiplier;\\nif (value < 0) {\\n\\tvalue = 0;\\n} else if (value > 60) {\\n\\tvalue = 60;\\n}\\nreturn value;\",\"aggregationType\":null,\"units\":\"mg/m³\",\"decimals\":0,\"usePostProcessing\":null,\"postFuncBody\":null}],\"alarmFilterConfig\":{\"statusList\":[\"ACTIVE\"]},\"latestDataKeys\":[{\"name\":\"f(x)\",\"type\":\"function\",\"label\":\"Latest\",\"color\":\"#4caf50\",\"settings\":{\"position\":\"center\",\"font\":{\"size\":52,\"sizeUnit\":\"px\",\"family\":\"Roboto\",\"weight\":\"500\",\"style\":\"normal\",\"lineHeight\":\"1\"},\"color\":{\"type\":\"range\",\"color\":\"rgba(0, 0, 0, 0.87)\",\"rangeList\":[{\"from\":0,\"to\":5,\"color\":\"#3B911C\"},{\"from\":5,\"to\":10,\"color\":\"#7CC322\"},{\"from\":10,\"to\":25,\"color\":\"#F89E0D\"},{\"from\":25,\"to\":50,\"color\":\"#F77410\"},{\"from\":50,\"to\":null,\"color\":\"#DE2343\"}],\"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';\"},\"showArrow\":false},\"_hash\":0.9408410830697858,\"funcBody\":\"var value = prevValue + Math.random() * 100 - 50;\\nvar multiplier = Math.pow(10, 2 || 0);\\nvar value = Math.round(value * multiplier) / multiplier;\\nif (value < 0) {\\n\\tvalue = 0;\\n} else if (value > 60) {\\n\\tvalue = 60;\\n}\\nreturn value;\",\"aggregationType\":null,\"units\":\"mg/m³\",\"decimals\":0,\"usePostProcessing\":null,\"postFuncBody\":null},{\"name\":\"f(x)\",\"type\":\"function\",\"label\":\"Delta percent\",\"color\":\"#f44336\",\"settings\":{\"position\":\"rightTop\",\"font\":{\"size\":14,\"sizeUnit\":\"px\",\"family\":\"Roboto\",\"weight\":\"500\",\"style\":\"normal\",\"lineHeight\":\"20px\"},\"color\":{\"type\":\"range\",\"color\":\"rgba(0, 0, 0, 0.38)\",\"rangeList\":[{\"from\":null,\"to\":0,\"color\":\"#198038\"},{\"from\":0,\"to\":0,\"color\":\"rgba(0, 0, 0, 0.87)\"},{\"from\":0,\"to\":null,\"color\":\"#D12730\"}],\"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';\"},\"showArrow\":true},\"_hash\":0.06392321853157967,\"funcBody\":\"var value = prevValue + Math.random() * 6 - 3;\\nvar multiplier = Math.pow(10, 2 || 0);\\nvar value = Math.round(value * multiplier) / multiplier;\\nif (value < -25) {\\n\\tvalue = -25;\\n} else if (value > 25) {\\n\\tvalue = 25;\\n} \\nreturn value;\",\"aggregationType\":null,\"units\":\"%\",\"decimals\":0,\"usePostProcessing\":null,\"postFuncBody\":null},{\"name\":\"f(x)\",\"type\":\"function\",\"label\":\"Delta absolute\",\"color\":\"#607d8b\",\"settings\":{\"position\":\"rightBottom\",\"font\":{\"size\":11,\"sizeUnit\":\"px\",\"family\":\"Roboto\",\"weight\":\"400\",\"style\":\"normal\",\"lineHeight\":\"16px\"},\"color\":{\"type\":\"constant\",\"color\":\"rgba(0, 0, 0, 0.38)\",\"rangeList\":[],\"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';\"},\"showArrow\":false},\"_hash\":0.44695098620509865,\"funcBody\":\"var value = prevValue + Math.random() * 6 - 3;\\nif (value < -10) {\\n\\tvalue = -10;\\n} else if (value > 10) {\\n\\tvalue = 10;\\n}\\nreturn value;\",\"aggregationType\":null,\"units\":\"mg/m³\",\"decimals\":0,\"usePostProcessing\":null,\"postFuncBody\":null}]}],\"timewindow\":{\"hideInterval\":false,\"hideLastInterval\":false,\"hideQuickInterval\":false,\"hideAggregation\":false,\"hideAggInterval\":false,\"hideTimezone\":false,\"selectedTab\":1,\"history\":{\"historyType\":2,\"timewindowMs\":60000,\"interval\":43200000,\"fixedTimewindow\":{\"startTimeMs\":1691927717318,\"endTimeMs\":1692014117318},\"quickInterval\":\"CURRENT_MONTH_SO_FAR\"},\"aggregation\":{\"type\":\"AVG\",\"limit\":25000}},\"showTitle\":true,\"backgroundColor\":\"rgba(0, 0, 0, 0)\",\"color\":null,\"padding\":\"0\",\"settings\":{\"stack\":false,\"fontSize\":10,\"fontColor\":\"#545454\",\"showTooltip\":true,\"tooltipIndividual\":false,\"tooltipCumulative\":false,\"hideZeros\":false,\"grid\":{\"verticalLines\":true,\"horizontalLines\":true,\"outlineWidth\":1,\"color\":\"#545454\",\"backgroundColor\":null,\"tickColor\":\"#DDDDDD\"},\"xaxis\":{\"title\":null,\"showLabels\":true,\"color\":\"#545454\"},\"yaxis\":{\"min\":null,\"max\":null,\"title\":null,\"showLabels\":true,\"color\":\"#545454\",\"tickSize\":null,\"tickDecimals\":0,\"ticksFormatter\":\"\"},\"shadowSize\":4,\"smoothLines\":false,\"comparisonEnabled\":false,\"xaxisSecond\":{\"axisPosition\":\"top\",\"title\":null,\"showLabels\":true},\"showLegend\":true,\"legendConfig\":{\"direction\":\"column\",\"position\":\"bottom\",\"sortDataKeys\":false,\"showMin\":false,\"showMax\":false,\"showAvg\":true,\"showTotal\":false,\"showLatest\":false},\"customLegendEnabled\":false,\"showSubtitle\":true,\"subtitle\":\"${entityName}\",\"subtitleFont\":{\"family\":\"Roboto\",\"size\":12,\"sizeUnit\":\"px\",\"style\":\"normal\",\"weight\":\"400\",\"lineHeight\":\"16px\"},\"subtitleColor\":\"rgba(0, 0, 0, 0.38)\",\"showDate\":true,\"dateFormat\":{\"format\":null,\"lastUpdateAgo\":true,\"custom\":false},\"dateFont\":{\"family\":\"Roboto\",\"size\":12,\"sizeUnit\":\"px\",\"style\":\"normal\",\"weight\":\"400\",\"lineHeight\":\"16px\"},\"dateColor\":\"rgba(0, 0, 0, 0.38)\",\"showChart\":true,\"chartColor\":\"rgba(0, 0, 0, 0.87)\",\"background\":{\"type\":\"image\",\"imageUrl\":\"tb-image;/api/images/tenant/noise-level-value-and-chart-card-min_(3).png\",\"color\":\"#fff\",\"overlay\":{\"enabled\":true,\"color\":\"rgba(255,255,255,0.72)\",\"blur\":3}},\"autoScale\":true},\"title\":\"Carbon monoxide\",\"dropShadow\":true,\"enableFullscreen\":false,\"titleStyle\":{\"fontSize\":\"16px\",\"fontWeight\":400},\"mobileHeight\":null,\"configMode\":\"basic\",\"actions\":{},\"showTitleIcon\":true,\"titleIcon\":\"mdi:molecule-co\",\"iconColor\":\"rgba(0, 0, 0, 0.87)\",\"titleFont\":{\"size\":16,\"sizeUnit\":\"px\",\"family\":\"Roboto\",\"weight\":\"500\",\"style\":\"normal\",\"lineHeight\":\"24px\"},\"iconSize\":\"24px\",\"titleTooltip\":\"\",\"widgetStyle\":{},\"widgetCss\":\"\",\"pageSize\":1024,\"noDataDisplayMessage\":\"\",\"useDashboardTimewindow\":false,\"displayTimewindow\":true,\"decimals\":0,\"timewindowStyle\":{\"showIcon\":true,\"iconSize\":\"24px\",\"icon\":null,\"iconPosition\":\"left\",\"font\":{\"size\":12,\"sizeUnit\":\"px\",\"family\":\"Roboto\",\"weight\":\"400\",\"style\":\"normal\",\"lineHeight\":\"16px\"},\"color\":\"rgba(0, 0, 0, 0.38)\",\"displayTypePrefix\":false},\"titleColor\":\"rgba(0, 0, 0, 0.87)\",\"borderRadius\":null}" + }, + "externalId": null, + "tags": [ + "environment", + "particulate", + "matter", + "air", + "coarse particulates", + "coarse particles", + "inhalable particles", + "larger particulates", + "dust", + "airborne coarse particles", + "carbon monoxide", + "CO" + ] +} \ No newline at end of file diff --git a/application/src/main/data/json/system/widget_types/horizontal_carbon_monoxide__co__card.json b/application/src/main/data/json/system/widget_types/horizontal_carbon_monoxide__co__card.json new file mode 100644 index 0000000000..588dde3cc8 --- /dev/null +++ b/application/src/main/data/json/system/widget_types/horizontal_carbon_monoxide__co__card.json @@ -0,0 +1,37 @@ +{ + "fqn": "horizontal_carbon_monoxide_co_card", + "name": "Horizontal carbon monoxide (CO) card", + "deprecated": false, + "image": "data:image/png;base64,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", + "description": "A colorless and odorless gas resulting from incomplete combustion, particularly in motor vehicles.", + "descriptor": { + "type": "latest", + "sizeX": 5, + "sizeY": 1, + "resources": [], + "templateHtml": "\n", + "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: '90px',\n embedTitlePanel: true,\n defaultDataKeysFunction: function() {\n return [{ name: 'carbon', label: 'Carbon monoxide', type: 'timeseries' }];\n }\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\":\"Carbon monoxide\",\"color\":\"#2196f3\",\"settings\":{},\"_hash\":0.2392660816082064,\"funcBody\":\"var value = prevValue + Math.random() * 100 - 50;\\nvar multiplier = Math.pow(10, 2 || 0);\\nvar value = Math.round(value * multiplier) / multiplier;\\nif (value < 0) {\\n\\tvalue = 0;\\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\":\"mdi:molecule-co\",\"iconColor\":{\"type\":\"range\",\"color\":\"rgba(0, 0, 0, 0.87)\",\"rangeList\":[{\"from\":0,\"to\":5,\"color\":\"#3FA71A\"},{\"from\":5,\"to\":10,\"color\":\"#80C32C\"},{\"from\":10,\"to\":25,\"color\":\"#FFA600\"},{\"from\":25,\"to\":50,\"color\":\"#F36900\"},{\"from\":50,\"to\":null,\"color\":\"#D81838\"}],\"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\":{\"size\":36,\"sizeUnit\":\"px\",\"family\":\"Roboto\",\"weight\":\"500\",\"style\":\"normal\"},\"valueColor\":{\"type\":\"range\",\"color\":\"rgba(0, 0, 0, 0.87)\",\"rangeList\":[{\"from\":0,\"to\":5,\"color\":\"#3FA71A\"},{\"from\":5,\"to\":10,\"color\":\"#80C32C\"},{\"from\":10,\"to\":25,\"color\":\"#FFA600\"},{\"from\":25,\"to\":50,\"color\":\"#F36900\"},{\"from\":50,\"to\":null,\"color\":\"#D81838\"}],\"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}},\"autoScale\":true},\"title\":\"Carbon monoxide\",\"dropShadow\":true,\"enableFullscreen\":false,\"titleStyle\":{\"fontSize\":\"16px\",\"fontWeight\":400},\"units\":\"mg/m³\",\"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}}" + }, + "externalId": null, + "tags": [ + "environment", + "particulate", + "matter", + "air", + "coarse particulates", + "coarse particles", + "inhalable particles", + "larger particulates", + "dust", + "airborne coarse particles", + "carbon monoxide", + "CO" + ] +} \ No newline at end of file diff --git a/application/src/main/data/json/system/widget_types/horizontal_carbon_monoxide__co__card_with_background.json b/application/src/main/data/json/system/widget_types/horizontal_carbon_monoxide__co__card_with_background.json new file mode 100644 index 0000000000..8d791c0d33 --- /dev/null +++ b/application/src/main/data/json/system/widget_types/horizontal_carbon_monoxide__co__card_with_background.json @@ -0,0 +1,37 @@ +{ + "fqn": "horizontal_carbon_monoxide_co_card_with_background", + "name": "Horizontal carbon monoxide (CO) card with background", + "deprecated": false, + "image": "data:image/png;base64,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", + "description": "A colorless and odorless gas resulting from incomplete combustion, particularly in motor vehicles.", + "descriptor": { + "type": "latest", + "sizeX": 5, + "sizeY": 1, + "resources": [], + "templateHtml": "\n", + "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: '90px',\n embedTitlePanel: true,\n defaultDataKeysFunction: function() {\n return [{ name: 'carbon', label: 'Carbon monoxide', type: 'timeseries' }];\n }\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\":\"Carbon monoxide\",\"color\":\"#2196f3\",\"settings\":{},\"_hash\":0.2392660816082064,\"funcBody\":\"var value = prevValue + Math.random() * 100 - 50;\\nvar multiplier = Math.pow(10, 2 || 0);\\nvar value = Math.round(value * multiplier) / multiplier;\\nif (value < 0) {\\n\\tvalue = 0;\\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\":\"mdi:molecule-co\",\"iconColor\":{\"type\":\"range\",\"color\":\"rgba(0, 0, 0, 0.87)\",\"rangeList\":[{\"from\":0,\"to\":5,\"color\":\"#3B911C\"},{\"from\":5,\"to\":10,\"color\":\"#7CC322\"},{\"from\":10,\"to\":25,\"color\":\"#F89E0D\"},{\"from\":25,\"to\":50,\"color\":\"#F77410\"},{\"from\":50,\"to\":null,\"color\":\"#DE2343\"}],\"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\":{\"size\":36,\"sizeUnit\":\"px\",\"family\":\"Roboto\",\"weight\":\"500\",\"style\":\"normal\"},\"valueColor\":{\"type\":\"range\",\"color\":\"rgba(0, 0, 0, 0.87)\",\"rangeList\":[{\"from\":0,\"to\":5,\"color\":\"#3B911C\"},{\"from\":5,\"to\":10,\"color\":\"#7CC322\"},{\"from\":10,\"to\":25,\"color\":\"#F89E0D\"},{\"from\":25,\"to\":50,\"color\":\"#F77410\"},{\"from\":50,\"to\":null,\"color\":\"#DE2343\"}],\"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\":\"image\",\"imageUrl\":\"tb-image;/api/images/tenant/noise-level-horizontal-value-card-min_(4).png\",\"color\":\"#fff\",\"overlay\":{\"enabled\":true,\"color\":\"rgba(255,255,255,0.72)\",\"blur\":3}},\"autoScale\":true},\"title\":\"Carbon monoxide\",\"dropShadow\":true,\"enableFullscreen\":false,\"titleStyle\":{\"fontSize\":\"16px\",\"fontWeight\":400},\"units\":\"mg/m³\",\"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}}" + }, + "externalId": null, + "tags": [ + "environment", + "particulate", + "matter", + "air", + "coarse particulates", + "coarse particles", + "inhalable particles", + "larger particulates", + "dust", + "airborne coarse particles", + "carbon monoxide", + "CO" + ] +} \ No newline at end of file diff --git a/application/src/main/data/json/system/widget_types/simple_carbon_monoxide__co__chart_card.json b/application/src/main/data/json/system/widget_types/simple_carbon_monoxide__co__chart_card.json new file mode 100644 index 0000000000..0637ac880a --- /dev/null +++ b/application/src/main/data/json/system/widget_types/simple_carbon_monoxide__co__chart_card.json @@ -0,0 +1,40 @@ +{ + "fqn": "simple_carbon_monoxide_co_chart_card", + "name": "Simple carbon monoxide (CO) chart card", + "deprecated": false, + "image": "data:image/png;base64,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", + "description": "A colorless and odorless gas resulting from incomplete combustion, particularly in motor vehicles. Results displayed by combining the latest and aggregated values and optional simplified chart.", + "descriptor": { + "type": "timeseries", + "sizeX": 4.5, + "sizeY": 2, + "resources": [], + "templateHtml": "\n\n", + "templateCss": ".legend {\n font-size: 13px;\n line-height: 10px;\n}\n\n.legend table { \n border-spacing: 0px;\n border-collapse: separate;\n}\n\n.mouse-events .flot-overlay {\n cursor: crosshair; \n}\n\n", + "controllerScript": "self.onInit = function() {\n self.ctx.$scope.valueChartCardWidget.onInit();\n};\n\nself.onDataUpdated = function() {\n self.ctx.$scope.valueChartCardWidget.onDataUpdated();\n};\n\nself.onLatestDataUpdated = function() {\n self.ctx.$scope.valueChartCardWidget.onLatestDataUpdated();\n}\n\nself.onEditModeChanged = function() {\n self.ctx.$scope.valueChartCardWidget.onEditModeChanged();\n}\n\nself.onDestroy = function() {\n self.ctx.$scope.valueChartCardWidget.onDestroy();\n}\n\nself.typeParameters = function() {\n return {\n maxDatasources: 1,\n maxDataKeys: 1,\n singleEntity: true,\n previewWidth: '300px',\n previewHeight: '150px',\n embedTitlePanel: true,\n hasAdditionalLatestDataKeys: true,\n defaultDataKeysFunction: function() {\n return [\n { name: 'carbon', label: 'Carbon monoxide', type: 'timeseries', color: 'rgba(0, 0, 0, 0.87)'}\n ];\n },\n defaultLatestDataKeysFunction: function(configComponent) {\n return [{ name: 'carbon', label: 'Latest', type: 'timeseries'}];\n }\n };\n}\n", + "settingsSchema": "{}", + "dataKeySettingsSchema": "{}", + "latestDataKeySettingsSchema": "{}", + "settingsDirective": "tb-value-chart-card-widget-settings", + "dataKeySettingsDirective": "", + "latestDataKeySettingsDirective": "", + "hasBasicMode": true, + "basicModeDirective": "tb-value-chart-card-basic-config", + "defaultConfig": "{\"datasources\":[{\"type\":\"function\",\"name\":\"\",\"dataKeys\":[{\"name\":\"f(x)\",\"type\":\"function\",\"label\":\"Carbon monoxide\",\"color\":\"rgba(0, 0, 0, 0.87)\",\"settings\":{},\"_hash\":0.8587686344902596,\"funcBody\":\"var value = prevValue + Math.random() * 100 - 50;\\nvar multiplier = Math.pow(10, 2 || 0);\\nvar value = Math.round(value * multiplier) / multiplier;\\nif (value < 0) {\\n\\tvalue = 0;\\n} else if (value > 60) {\\n\\tvalue = 60;\\n}\\nreturn value;\",\"aggregationType\":null,\"units\":null,\"decimals\":null,\"usePostProcessing\":null,\"postFuncBody\":null}],\"alarmFilterConfig\":{\"statusList\":[\"ACTIVE\"]},\"latestDataKeys\":[{\"name\":\"f(x)\",\"type\":\"function\",\"label\":\"Latest\",\"color\":\"rgba(0, 0, 0, 0.87)\",\"settings\":{},\"_hash\":0.8587686344902596,\"funcBody\":\"var value = prevValue + Math.random() * 100 - 50;\\nvar multiplier = Math.pow(10, 2 || 0);\\nvar value = Math.round(value * multiplier) / multiplier;\\nif (value < 0) {\\n\\tvalue = 0;\\n} else if (value > 60) {\\n\\tvalue = 60;\\n}\\nreturn value;\",\"aggregationType\":null,\"units\":null,\"decimals\":null,\"usePostProcessing\":null,\"postFuncBody\":null}]}],\"showTitle\":true,\"backgroundColor\":\"rgba(0, 0, 0, 0)\",\"color\":null,\"padding\":\"0\",\"settings\":{\"layout\":\"left\",\"autoScale\":true,\"showValue\":true,\"valueFont\":{\"family\":\"Roboto\",\"size\":28,\"sizeUnit\":\"px\",\"style\":\"normal\",\"weight\":\"500\",\"lineHeight\":\"32px\"},\"valueColor\":{\"type\":\"range\",\"color\":\"rgba(0, 0, 0, 0.87)\",\"rangeList\":[{\"from\":0,\"to\":5,\"color\":\"#3FA71A\"},{\"from\":5,\"to\":10,\"color\":\"#80C32C\"},{\"from\":10,\"to\":25,\"color\":\"#FFA600\"},{\"from\":25,\"to\":50,\"color\":\"#F36900\"},{\"from\":50,\"to\":null,\"color\":\"#D81838\"}],\"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\":\"Carbon monoxide\",\"dropShadow\":true,\"enableFullscreen\":false,\"titleStyle\":null,\"mobileHeight\":null,\"configMode\":\"basic\",\"actions\":{},\"showTitleIcon\":true,\"titleIcon\":\"mdi:molecule-co\",\"iconColor\":\"rgba(0, 0, 0, 0.87)\",\"titleFont\":{\"size\":16,\"sizeUnit\":\"px\",\"family\":\"Roboto\",\"weight\":\"500\",\"style\":\"normal\",\"lineHeight\":\"24px\"},\"iconSize\":\"18px\",\"titleTooltip\":\"\",\"widgetStyle\":{},\"widgetCss\":\"\",\"pageSize\":1024,\"noDataDisplayMessage\":\"\",\"useDashboardTimewindow\":true,\"decimals\":0,\"titleColor\":\"rgba(0, 0, 0, 0.87)\",\"borderRadius\":null,\"units\":\"mg/m³\",\"displayTimewindow\":true,\"timewindow\":{\"hideInterval\":false,\"hideLastInterval\":false,\"hideQuickInterval\":false,\"hideAggregation\":false,\"hideAggInterval\":false,\"hideTimezone\":false,\"selectedTab\":1,\"history\":{\"historyType\":2,\"timewindowMs\":60000,\"interval\":43200000,\"fixedTimewindow\":{\"startTimeMs\":1697382151041,\"endTimeMs\":1697468551041},\"quickInterval\":\"CURRENT_MONTH_SO_FAR\"},\"aggregation\":{\"type\":\"AVG\",\"limit\":25000}},\"timewindowStyle\":{\"showIcon\":false,\"iconSize\":\"24px\",\"icon\":\"query_builder\",\"iconPosition\":\"left\",\"font\":{\"size\":12,\"sizeUnit\":\"px\",\"family\":\"Roboto\",\"weight\":\"400\",\"style\":\"normal\",\"lineHeight\":\"16px\"},\"color\":\"rgba(0, 0, 0, 0.38)\",\"displayTypePrefix\":true}}" + }, + "externalId": null, + "tags": [ + "environment", + "particulate", + "matter", + "air", + "coarse particulates", + "coarse particles", + "inhalable particles", + "larger particulates", + "dust", + "airborne coarse particles", + "carbon monoxide", + "CO" + ] +} \ No newline at end of file diff --git a/application/src/main/data/json/system/widget_types/simple_carbon_monoxide__co__chart_card_with_background.json b/application/src/main/data/json/system/widget_types/simple_carbon_monoxide__co__chart_card_with_background.json new file mode 100644 index 0000000000..4a6c5122eb --- /dev/null +++ b/application/src/main/data/json/system/widget_types/simple_carbon_monoxide__co__chart_card_with_background.json @@ -0,0 +1,40 @@ +{ + "fqn": "simple_carbon_monoxide_co_chart_card_with_background", + "name": "Simple carbon monoxide (CO) chart card with background", + "deprecated": false, + "image": "data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAAMgAAACgCAMAAAB+IdObAAAABGdBTUEAALGPC/xhBQAAAAFzUkdCAK7OHOkAAAAJcEhZcwAACxMAAAsTAQCanBgAAAL9UExURUdwTP755s/S00ZZaUZdcP/769LT1cnMz5mhpjxVaX14et4jQ/by7/r18fPw7vn08Pjz7/Hv7e7s6/n18+no6PHt7NTZ3f/79e/t7Ovr6vDu7vf08+3r6/Xx7/v28fPw8PXx7v769PTy8vHw8NPa4NXa39DY3tHZ3+3t7tLX3O/u7+Lk5s3V28/W3OTl5+fo6+zs7fbz8ufn6Pz49PPy8evr7P748/r38+rp6uHl6eXo69bc4tPY3O/t7vLv7efo6vv389re4Nfe4uDi5dfc4Nnf4+Xn6Nnc38zT2dTX2xwdHenq7N/j59bZ3Orq7ejp7dTb4ePm6urf1f7x3und09jb3dvf4kJQXP/w2/fz8CAfH9vg5D5NWtHW2vj08t3h5u/j2P/04c/U2fz38jNEU97Z1y1AUf/76So8TO3s7N7h5CU4SP/34/jp2PHk2MvS2DpJVufb0t3g4uzg1ilCV+Td1tTT0ktebv/45jo6Ofzr1tDLyd3i5wc5WAM1UevWwSQ9UdDR0Rk2TP7v2PTn2e7g1BQxRPzt2wcqQDI+TkJSYZqZmI2KiDRIWkhVYPHbxHyPoQ0vRCxHX/Tl1N5Sax45TtjGt97MvOTQwP/03frmznFxcIeMkQ8tQPLi0t47V8i9sk5viRg5UldVVEVXZoWWp1Bldqmno01bZtyYpmSAlZCVmdfRzXGIm+PY0Bs0SOPa1Gx5gdDBtcTBw93Vz+LM0dnV1Iybq7K0u2ZueVNga11qda2wuiA+Vlh4kHN/hxQ8WSEgH5Ker6est/fiyS4uLbSxqxE2UDZPZDpYcL++waekomVlZsK/vd4vTXqDii1SbSNKZLm4vtuvurq0rdnFzMK3rs3Hxd9rgHx8fC82SaKotPXfx0lIR+3o5ZylsykpKtxpft6Ck5eisa2sphxBXX1/gsXBvU1OUENlgN92id6OneGEleK0vcDGyt28xZ2goqyws0FCQ1lbXd5GYdyAkuCns6Omqd2hrt5edSAgINl+kO4AqQC3pkdwTADTeN4AAAD/dFJOUwCvv6/vv6/+IL+w////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////ALQQpG8AAB3DSURBVHja7Ja/TxtbFse9K71NCo8H5CKRkcfEbhDFCj+IqUBI26cAF3gKC9YaRU8CVggZZewiQsaisKUUNHEspZmCBiFLIJSCZhSGIrabiFWEgqf1/7DVnnPuvfPLA7zotf7M+N47Yzv6fuacixOJjBkzZsyYMWPGjBkzZsyYMWPGjBkzZsxf5/lvm28Z797RgGxtbW5tbdFqE2Ej3gPYeg2g8QhOYptea0fbtAAOtw8PYSR2Djk7OzsbAF5vu9c7G3R3Y2+PxlVkgy/LDmLd6XQ04vLych/4x3Pw2KT8XIMWQmeLGVFkjLvGVi5HjsE25XXCuvEhIJ47mJcZ7BEbAnjjkL0JwG0msgeJV/fow6v4WqXwnU65U97dhQFX6IEWB/sHB8+eR/6Gkd96eMcLgzXhEpgYMrOJSx2trTMJfPB4kskGe7As8kadv5zLer3OYq6u5vMwoBAZHPJ6sBM/kIeDPogi9IXdjtbhUC24w78PkL9HeC85FXnHO+ytKMemqAcbPKwDHh94HR4fHkMseB3XCWqRvTqrAlzTso4aHJZzD6dV6hw44Sa+8lAT/Drcy8N38rsMpxL7B4L/QEkiWz74NsDtwPbHFnjQwIKvtdZhRqV1FFivHR3VYLVOK9oX29vHfNrZwNz0bPP5VSc4WVAknPK7rhG+wfdAvpzHb3Y68JkOvY8Cnc7FJXfwaCDPDiI8/uam2MJsa7fwfguWrdbaWgvApw+v2vqas6LgRxVwoQNXzKFS2cZj+xj4DHX4XPeAF5SMK3iqk8+jeX5vD5er+H4H+wkNOmd8X+9fCo1TjwaKOBIt0TKYHXwgvVCoYRfVarVK5agGmSs01/gNuILY8Dpm0QGqCGl8PoaDUf/MLvl1PaCRz9fZpagV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", + "description": "A colorless and odorless gas resulting from incomplete combustion, particularly in motor vehicles. Results displayed by combining the latest and aggregated values and optional simplified chart.", + "descriptor": { + "type": "timeseries", + "sizeX": 4.5, + "sizeY": 2, + "resources": [], + "templateHtml": "\n\n", + "templateCss": ".legend {\n font-size: 13px;\n line-height: 10px;\n}\n\n.legend table { \n border-spacing: 0px;\n border-collapse: separate;\n}\n\n.mouse-events .flot-overlay {\n cursor: crosshair; \n}\n\n", + "controllerScript": "self.onInit = function() {\n self.ctx.$scope.valueChartCardWidget.onInit();\n};\n\nself.onDataUpdated = function() {\n self.ctx.$scope.valueChartCardWidget.onDataUpdated();\n};\n\nself.onLatestDataUpdated = function() {\n self.ctx.$scope.valueChartCardWidget.onLatestDataUpdated();\n}\n\nself.onEditModeChanged = function() {\n self.ctx.$scope.valueChartCardWidget.onEditModeChanged();\n}\n\nself.onDestroy = function() {\n self.ctx.$scope.valueChartCardWidget.onDestroy();\n}\n\nself.typeParameters = function() {\n return {\n maxDatasources: 1,\n maxDataKeys: 1,\n singleEntity: true,\n previewWidth: '300px',\n previewHeight: '150px',\n embedTitlePanel: true,\n hasAdditionalLatestDataKeys: true,\n defaultDataKeysFunction: function() {\n return [\n { name: 'carbon', label: 'Carbon monoxide', type: 'timeseries', color: 'rgba(0, 0, 0, 0.87)'}\n ];\n },\n defaultLatestDataKeysFunction: function(configComponent) {\n return [{ name: 'carbon', label: 'Latest', type: 'timeseries'}];\n }\n };\n}\n", + "settingsSchema": "{}", + "dataKeySettingsSchema": "{}", + "latestDataKeySettingsSchema": "{}", + "settingsDirective": "tb-value-chart-card-widget-settings", + "dataKeySettingsDirective": "", + "latestDataKeySettingsDirective": "", + "hasBasicMode": true, + "basicModeDirective": "tb-value-chart-card-basic-config", + "defaultConfig": "{\"datasources\":[{\"type\":\"function\",\"name\":\"\",\"dataKeys\":[{\"name\":\"f(x)\",\"type\":\"function\",\"label\":\"Carbon monoxide\",\"color\":\"rgba(0, 0, 0, 0.87)\",\"settings\":{},\"_hash\":0.8587686344902596,\"funcBody\":\"var value = prevValue + Math.random() * 100 - 50;\\nvar multiplier = Math.pow(10, 2 || 0);\\nvar value = Math.round(value * multiplier) / multiplier;\\nif (value < 0) {\\n\\tvalue = 0;\\n} else if (value > 60) {\\n\\tvalue = 60;\\n}\\nreturn value;\",\"aggregationType\":null,\"units\":null,\"decimals\":null,\"usePostProcessing\":null,\"postFuncBody\":null}],\"alarmFilterConfig\":{\"statusList\":[\"ACTIVE\"]},\"latestDataKeys\":[{\"name\":\"f(x)\",\"type\":\"function\",\"label\":\"Latest\",\"color\":\"rgba(0, 0, 0, 0.87)\",\"settings\":{},\"_hash\":0.8587686344902596,\"funcBody\":\"var value = prevValue + Math.random() * 100 - 50;\\nvar multiplier = Math.pow(10, 2 || 0);\\nvar value = Math.round(value * multiplier) / multiplier;\\nif (value < 0) {\\n\\tvalue = 0;\\n} else if (value > 60) {\\n\\tvalue = 60;\\n}\\nreturn value;\",\"aggregationType\":null,\"units\":null,\"decimals\":null,\"usePostProcessing\":null,\"postFuncBody\":null}]}],\"showTitle\":true,\"backgroundColor\":\"rgba(0, 0, 0, 0)\",\"color\":null,\"padding\":\"0\",\"settings\":{\"layout\":\"left\",\"autoScale\":true,\"showValue\":true,\"valueFont\":{\"family\":\"Roboto\",\"size\":28,\"sizeUnit\":\"px\",\"style\":\"normal\",\"weight\":\"500\",\"lineHeight\":\"32px\"},\"valueColor\":{\"type\":\"range\",\"color\":\"rgba(0, 0, 0, 0.87)\",\"rangeList\":[{\"from\":0,\"to\":5,\"color\":\"#3B911C\"},{\"from\":5,\"to\":10,\"color\":\"#7CC322\"},{\"from\":10,\"to\":25,\"color\":\"#F89E0D\"},{\"from\":25,\"to\":50,\"color\":\"#F77410\"},{\"from\":50,\"to\":null,\"color\":\"#DE2343\"}],\"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\":\"image\",\"imageUrl\":\"tb-image;/api/images/tenant/noise-level-simple-value-and-chart-card-min_(3).png\",\"color\":\"#fff\",\"overlay\":{\"enabled\":true,\"color\":\"rgba(255,255,255,0.72)\",\"blur\":3}}},\"title\":\"Carbon monoxide\",\"dropShadow\":true,\"enableFullscreen\":false,\"titleStyle\":null,\"mobileHeight\":null,\"configMode\":\"basic\",\"actions\":{},\"showTitleIcon\":true,\"titleIcon\":\"mdi:molecule-co\",\"iconColor\":\"rgba(0, 0, 0, 0.87)\",\"titleFont\":{\"size\":16,\"sizeUnit\":\"px\",\"family\":\"Roboto\",\"weight\":\"500\",\"style\":\"normal\",\"lineHeight\":\"24px\"},\"iconSize\":\"18px\",\"titleTooltip\":\"\",\"widgetStyle\":{},\"widgetCss\":\"\",\"pageSize\":1024,\"noDataDisplayMessage\":\"\",\"useDashboardTimewindow\":true,\"decimals\":0,\"titleColor\":\"rgba(0, 0, 0, 0.87)\",\"borderRadius\":null,\"units\":\"mg/m³\",\"displayTimewindow\":true,\"timewindow\":{\"hideInterval\":false,\"hideLastInterval\":false,\"hideQuickInterval\":false,\"hideAggregation\":false,\"hideAggInterval\":false,\"hideTimezone\":false,\"selectedTab\":1,\"history\":{\"historyType\":2,\"timewindowMs\":60000,\"interval\":43200000,\"fixedTimewindow\":{\"startTimeMs\":1697382151041,\"endTimeMs\":1697468551041},\"quickInterval\":\"CURRENT_MONTH_SO_FAR\"},\"aggregation\":{\"type\":\"AVG\",\"limit\":25000}},\"timewindowStyle\":{\"showIcon\":false,\"iconSize\":\"24px\",\"icon\":\"query_builder\",\"iconPosition\":\"left\",\"font\":{\"size\":12,\"sizeUnit\":\"px\",\"family\":\"Roboto\",\"weight\":\"400\",\"style\":\"normal\",\"lineHeight\":\"16px\"},\"color\":\"rgba(0, 0, 0, 0.38)\",\"displayTypePrefix\":true}}" + }, + "externalId": null, + "tags": [ + "environment", + "particulate", + "matter", + "air", + "coarse particulates", + "coarse particles", + "inhalable particles", + "larger particulates", + "dust", + "airborne coarse particles", + "carbon monoxide", + "CO" + ] +} \ No newline at end of file