From ff5582b948c8c2f9798cce2894f74f1fbac5dcd1 Mon Sep 17 00:00:00 2001 From: rusikv Date: Tue, 26 Sep 2023 12:27:19 +0300 Subject: [PATCH 01/29] UI: Added tbel api limit config to tenant profile and updated api usage dashboard to display its status --- ...enant-profile-configuration.component.html | 26 +- ...-tenant-profile-configuration.component.ts | 1 + .../src/app/shared/models/api-usage.models.ts | 2 + ui-ngx/src/app/shared/models/tenant.model.ts | 2 + ui-ngx/src/assets/dashboard/api_usage.json | 490 +++++++++++++++--- .../assets/locale/locale.constant-ca_ES.json | 2 - .../assets/locale/locale.constant-cs_CZ.json | 2 - .../assets/locale/locale.constant-da_DK.json | 2 - .../assets/locale/locale.constant-en_US.json | 12 +- .../assets/locale/locale.constant-es_ES.json | 2 - .../assets/locale/locale.constant-fr_FR.json | 2 - .../assets/locale/locale.constant-ko_KR.json | 2 - .../assets/locale/locale.constant-sl_SI.json | 2 - .../assets/locale/locale.constant-tr_TR.json | 2 - .../assets/locale/locale.constant-zh_CN.json | 2 - .../assets/locale/locale.constant-zh_TW.json | 2 - 16 files changed, 461 insertions(+), 92 deletions(-) diff --git a/ui-ngx/src/app/modules/home/components/profile/tenant/default-tenant-profile-configuration.component.html b/ui-ngx/src/app/modules/home/components/profile/tenant/default-tenant-profile-configuration.component.html index c2872d4145..0445cce71c 100644 --- a/ui-ngx/src/app/modules/home/components/profile/tenant/default-tenant-profile-configuration.component.html +++ b/ui-ngx/src/app/modules/home/components/profile/tenant/default-tenant-profile-configuration.component.html @@ -169,15 +169,15 @@ - tenant-profile.max-transport-data-points + tenant-profile.max-tbel-executions - - {{ 'tenant-profile.max-transport-data-points-required' | translate}} + + {{ 'tenant-profile.max-tbel-executions-required' | translate}} - - {{ 'tenant-profile.max-transport-data-points-range' | translate}} + + {{ 'tenant-profile.max-tbel-executions-range' | translate}} @@ -196,7 +196,19 @@ -
+ + tenant-profile.max-transport-data-points + + + {{ 'tenant-profile.max-transport-data-points-required' | translate}} + + + {{ 'tenant-profile.max-transport-data-points-range' | translate}} + + + diff --git a/ui-ngx/src/app/modules/home/components/profile/tenant/default-tenant-profile-configuration.component.ts b/ui-ngx/src/app/modules/home/components/profile/tenant/default-tenant-profile-configuration.component.ts index a4915f924b..6640f0bab0 100644 --- a/ui-ngx/src/app/modules/home/components/profile/tenant/default-tenant-profile-configuration.component.ts +++ b/ui-ngx/src/app/modules/home/components/profile/tenant/default-tenant-profile-configuration.component.ts @@ -81,6 +81,7 @@ export class DefaultTenantProfileConfigurationComponent implements ControlValueA maxTransportDataPoints: [null, [Validators.required, Validators.min(0)]], maxREExecutions: [null, [Validators.required, Validators.min(0)]], maxJSExecutions: [null, [Validators.required, Validators.min(0)]], + maxTbelExecutions: [null, [Validators.required, Validators.min(0)]], maxDPStorageDays: [null, [Validators.required, Validators.min(0)]], maxRuleNodeExecutionsPerMessage: [null, [Validators.required, Validators.min(0)]], maxEmails: [null, [Validators.required, Validators.min(0)]], diff --git a/ui-ngx/src/app/shared/models/api-usage.models.ts b/ui-ngx/src/app/shared/models/api-usage.models.ts index bbc0ff5597..e6b1d86207 100644 --- a/ui-ngx/src/app/shared/models/api-usage.models.ts +++ b/ui-ngx/src/app/shared/models/api-usage.models.ts @@ -31,6 +31,7 @@ export enum ApiFeature { DB = 'DB', RE = 'RE', JS = 'JS', + TBEL = 'TBEL', EMAIL = 'EMAIL', SMS = 'SMS', ALARM = 'ALARM' @@ -41,6 +42,7 @@ export const ApiFeatureTranslationMap = new Map([ [ApiFeature.DB, 'api-usage.telemetry-persistence'], [ApiFeature.RE, 'api-usage.rule-engine-executions'], [ApiFeature.JS, 'api-usage.javascript-executions'], + [ApiFeature.TBEL, 'api-usage.tbel-executions'], [ApiFeature.EMAIL, 'api-usage.email-messages'], [ApiFeature.SMS, 'api-usage.sms-messages'], [ApiFeature.ALARM, 'api-usage.alarm'], diff --git a/ui-ngx/src/app/shared/models/tenant.model.ts b/ui-ngx/src/app/shared/models/tenant.model.ts index 9074d599f5..8bc730010f 100644 --- a/ui-ngx/src/app/shared/models/tenant.model.ts +++ b/ui-ngx/src/app/shared/models/tenant.model.ts @@ -50,6 +50,7 @@ export interface DefaultTenantProfileConfiguration { maxTransportDataPoints: number; maxREExecutions: number; maxJSExecutions: number; + maxTbelExecutions: number; maxDPStorageDays: number; maxRuleNodeExecutionsPerMessage: number; maxEmails: number; @@ -102,6 +103,7 @@ export function createTenantProfileConfiguration(type: TenantProfileType): Tenan maxTransportDataPoints: 0, maxREExecutions: 0, maxJSExecutions: 0, + maxTbelExecutions: 0, maxDPStorageDays: 0, maxRuleNodeExecutionsPerMessage: 0, maxEmails: 0, diff --git a/ui-ngx/src/assets/dashboard/api_usage.json b/ui-ngx/src/assets/dashboard/api_usage.json index 5733b011f9..3c9259f453 100644 --- a/ui-ngx/src/assets/dashboard/api_usage.json +++ b/ui-ngx/src/assets/dashboard/api_usage.json @@ -21,7 +21,7 @@ { "name": "jsExecutionApiState", "type": "timeseries", - "label": "apiState", + "label": "jsApiState", "color": "#2196f3", "settings": {}, "_hash": 0.8830669138660703, @@ -29,12 +29,13 @@ "decimals": null, "funcBody": null, "usePostProcessing": true, - "postFuncBody": "return value ? value : 'ENABLED';" + "postFuncBody": "return value ? value : 'ENABLED';", + "aggregationType": "NONE" }, { "name": "jsExecutionLimit", "type": "timeseries", - "label": "limit", + "label": "jsLimit", "color": "#4caf50", "settings": {}, "_hash": 0.5463603803546802, @@ -42,12 +43,13 @@ "decimals": null, "funcBody": null, "usePostProcessing": null, - "postFuncBody": null + "postFuncBody": null, + "aggregationType": "NONE" }, { "name": "jsExecutionCount", "type": "timeseries", - "label": "count", + "label": "jsCount", "color": "#f44336", "settings": {}, "_hash": 0.5564241862015964, @@ -55,20 +57,8 @@ "decimals": null, "funcBody": null, "usePostProcessing": null, - "postFuncBody": null - }, - { - "name": "jsExecutionApiState", - "type": "timeseries", - "label": "apiStateClass", - "color": "#ffc107", - "settings": {}, - "_hash": 0.8737107059960671, - "units": null, - "decimals": null, - "funcBody": null, - "usePostProcessing": true, - "postFuncBody": "return value ? value.toLowerCase() : 'enabled';" + "postFuncBody": null, + "aggregationType": "NONE" }, { "name": "jsExecutionApiState", @@ -94,12 +84,13 @@ "decimals": null, "funcBody": null, "usePostProcessing": true, - "postFuncBody": "return \"{i18n:api-usage.javascript}\";" + "postFuncBody": "return \"{i18n:api-usage.udf-executions}\";", + "aggregationType": "NONE" }, { "name": "jsExecutionApiState", "type": "timeseries", - "label": "unit", + "label": "jsUnit", "color": "#8bc34a", "settings": {}, "_hash": 0.7926918686567068, @@ -107,7 +98,64 @@ "decimals": null, "funcBody": null, "usePostProcessing": true, - "postFuncBody": "return \"{i18n:api-usage.executions}\";" + "postFuncBody": "return \"{i18n:api-usage.javascript}\";", + "aggregationType": "NONE" + }, + { + "name": "tbelExecutionApiState", + "type": "timeseries", + "label": "tbelApiState", + "color": "#3f51b5", + "settings": {}, + "_hash": 0.950264191483049, + "aggregationType": "NONE", + "units": null, + "decimals": null, + "funcBody": null, + "usePostProcessing": true, + "postFuncBody": "return value ? value : 'ENABLED';" + }, + { + "name": "tbelExecutionLimit", + "type": "timeseries", + "label": "tbelLimit", + "color": "#e91e63", + "settings": {}, + "_hash": 0.9618078963734347, + "aggregationType": "NONE", + "units": null, + "decimals": null, + "funcBody": null, + "usePostProcessing": null, + "postFuncBody": null + }, + { + "name": "tbelExecutionCount", + "type": "timeseries", + "label": "tbelCount", + "color": "#ffeb3b", + "settings": {}, + "_hash": 0.26695276374882493, + "aggregationType": "NONE", + "units": null, + "decimals": null, + "funcBody": null, + "usePostProcessing": null, + "postFuncBody": null + }, + { + "name": "tbelExecutionApiState", + "type": "timeseries", + "label": "tbelUnit", + "color": "#03a9f4", + "settings": {}, + "_hash": 0.41720010909473104, + "aggregationType": "NONE", + "units": null, + "decimals": null, + "funcBody": null, + "usePostProcessing": true, + "postFuncBody": "return \"{i18n:api-usage.tbel}\";" } ] } @@ -141,8 +189,8 @@ "color": "#666666", "padding": "0", "settings": { - "cardHtml": "
\n \n \n
\n
\n
\n
${title}
\n
${apiState}
\n
\n
\n
${unit}
\n
\n
\n
\n
\n
\n
\n
\n
\n
\n
\n
\n
\n
\n \n
\n
", - "cardCss": ".card {\n width: 100%;\n height: 100%;\n box-sizing: border-box;\n display: flex;\n flex-direction: column;\n}\n\n.card > img {\n height: 0;\n}\n\n.card .content {\n flex: 1; \n padding: 13px 13px 0;\n display: flex;\n box-sizing: border-box;\n}\n\n.card .content .column {\n display: flex;\n flex-direction: column; \n justify-content: space-around;\n flex: 1;\n}\n\n.card .content .title-row {\n display: flex;\n flex-direction: row;\n padding-bottom: 10px;\n}\n\n.card .title {\n flex: 1;\n font-size: 20px;\n font-weight: 400;\n color: #666666;\n}\n\n.card .state {\n text-transform: uppercase;\n font-size: 20px;\n font-weight: bold;\n}\n\n.card.enabled .state {\n color: #00B260;\n}\n\n.card.warning .state {\n color: #FFAD6F;\n}\n\n.card.disabled .state {\n color: #F73243;\n}\n\n.card .bar-container {\n flex: 1;\n display: flex;\n flex-direction: column;\n justify-content: center;\n}\n\n.card .bar {\n flex: 1;\n max-height: 30px;\n margin-top: 3.5px;\n margin-bottom: 4px;\n background-color: #F0F0F0;\n border: 1px solid #DADCDB;\n border-radius: 2px;\n box-shadow: inset 0 1px 3px rgba(0, 0, 0, .2);\n}\n\n.card.enabled .bar {\n border-color: #00B260;\n background-color: #F0FBF7;\n}\n\n.card.warning .bar {\n border-color: #FFAD6F;\n background-color: #FFFAF6;\n}\n\n.card.disabled .bar {\n border-color: #F73243;\n background-color: #FFF0F0;\n}\n\n.card .bar .bar-fill {\n background-color: #F0F0F0;\n border-radius: 2px;\n height: 100%;\n width: 0%;\n}\n\n.card.enabled .bar-fill {\n background-color: #00C46C;\n}\n\n.card.warning .bar-fill {\n background-color: #FFD099;\n}\n\n.card.disabled .bar-fill {\n background-color: #FF9494;\n}\n\n.card .bar-labels {\n height: 20px;\n font-size: 16px;\n color: #666;\n display: flex;\n flex-direction: row;\n}\n\n\n.card .mat-mdc-button-base {\n text-transform: uppercase;\n white-space: nowrap;\n overflow: hidden;\n text-overflow: ellipsis;\n}\n\n.card .mdc-button__label {\n pointer-events: none;\n}\n\n.card .action-row {\n display: flex;\n flex-direction: row;\n justify-content: flex-end;\n padding: 8px 0;\n}\n\n@media screen and (min-width: 960px) and (max-width: 1279px) {\n .card .title {\n font-size: 12px;\n }\n .card .state {\n font-size: 12px;\n }\n .card .unit {\n font-size: 8px;\n }\n .card .bar-labels {\n font-size: 8px;\n }\n .card .mat-mdc-button-base {\n font-size: 8px;\n }\n .card .action-row {\n padding: 0;\n }\n}\n\n@media screen and (min-width: 1280px) and (max-width: 1599px) {\n .card .title {\n font-size: 14px;\n }\n .card .state {\n font-size: 14px;\n }\n .card .unit {\n font-size: 10px;\n }\n .card .bar-labels {\n font-size: 10px;\n }\n .card .mat-mdc-button-base {\n font-size: 10px;\n }\n .card .action-row {\n padding: 0;\n }\n}\n\n@media screen and (min-width: 1600px) and (max-width: 1919px) {\n .card .title {\n font-size: 16px;\n }\n .card .state {\n font-size: 16px;\n }\n .card .unit {\n font-size: 12px;\n }\n .card .bar-labels {\n font-size: 12px;\n }\n .card .mat-mdc-button-base {\n font-size: 12px;\n }\n .card .action-row {\n padding: 0;\n }\n} \n\n\n" + "cardHtml": "
\n \n \n
\n
\n
\n
${title}
\n
\n
\n
\n
\n
\n
${jsUnit}
\n
\n
\n
\n
\n
\n
\n
\n
\n
\n
\n
\n
\n
${tbelUnit}
\n
\n
\n
\n
\n
\n
\n
\n
\n
\n
\n
\n
\n
\n
\n
\n \n
\n
", + "cardCss": ".card {\n width: 100%;\n height: 100%;\n box-sizing: border-box;\n display: flex;\n flex-direction: column;\n}\n\n.card > img {\n height: 0;\n}\n\n.card .content {\n flex: 1; \n padding: 13px 13px 0;\n display: flex;\n box-sizing: border-box;\n}\n\n.card .content .column {\n display: flex;\n flex-direction: column; \n justify-content: space-around;\n flex: 1;\n}\n\n.card .content .title-row {\n display: flex;\n flex-direction: row;\n padding-bottom: 10px;\n}\n\n.card .title {\n flex: 1;\n font-size: 20px;\n font-weight: 400;\n color: #666666;\n}\n\n.card .state {\n text-transform: uppercase;\n font-size: 20px;\n font-weight: bold;\n}\n\n.card.enabled .state {\n color: #00B260;\n}\n\n.card.warning .state {\n color: #FFAD6F;\n}\n\n.card.disabled .state {\n color: #F73243;\n}\n\n.card .bars-row {\n flex: 1;\n display: flex;\n flex-direction: row;\n}\n\n.card .bar-column {\n flex: 1;\n display: flex;\n flex-direction: column;\n}\n\n.card .bar-container {\n flex: 1;\n display: flex;\n flex-direction: column;\n justify-content: center;\n}\n\n.card .bar {\n flex: 1;\n max-height: 30px;\n margin-top: 3.5px;\n margin-bottom: 4px;\n background-color: #F0F0F0;\n border: 1px solid #DADCDB;\n border-radius: 2px;\n box-shadow: inset 0 1px 3px rgba(0, 0, 0, .2);\n}\n\n.card.enabled .bar {\n border-color: #00B260;\n background-color: #F0FBF7;\n}\n\n.card.warning .bar {\n border-color: #FFAD6F;\n background-color: #FFFAF6;\n}\n\n.card.disabled .bar {\n border-color: #F73243;\n background-color: #FFF0F0;\n}\n\n.card .bar .bar-fill {\n background-color: #F0F0F0;\n border-radius: 2px;\n height: 100%;\n width: 0%;\n}\n\n.card.enabled .bar-fill {\n background-color: #00C46C;\n}\n\n.card.warning .bar-fill {\n background-color: #FFD099;\n}\n\n.card.disabled .bar-fill {\n background-color: #FF9494;\n}\n\n.card .bar-labels {\n height: 20px;\n font-size: 16px;\n color: #666;\n display: flex;\n flex-direction: row;\n}\n\n.card .mat-mdc-button-base {\n text-transform: uppercase;\n white-space: nowrap;\n overflow: hidden;\n text-overflow: ellipsis;\n}\n\n.card .mdc-button__label {\n pointer-events: none;\n}\n\n.card .action-row {\n display: flex;\n flex-direction: row;\n justify-content: flex-end;\n padding: 8px 0;\n}\n\n\n@media screen and (min-width: 960px) and (max-width: 1279px) {\n .card .title {\n font-size: 12px;\n }\n .card .state {\n font-size: 12px;\n }\n .card .unit {\n font-size: 8px;\n }\n .card .bar-labels {\n font-size: 6px;\n }\n .card .mat-mdc-button-base {\n font-size: 8px;\n }\n .card .action-row {\n padding: 0;\n }\n}\n\n@media screen and (min-width: 1280px) and (max-width: 1599px) {\n .card .title {\n font-size: 14px;\n }\n .card .state {\n font-size: 14px;\n }\n .card .unit {\n font-size: 10px;\n }\n .card .bar-labels {\n font-size: 8px;\n }\n .card .mat-mdc-button-base {\n font-size: 10px;\n }\n .card .action-row {\n padding: 0;\n }\n}\n\n@media screen and (min-width: 1600px) and (max-width: 1919px) {\n .card .title {\n font-size: 16px;\n }\n .card .state {\n font-size: 16px;\n }\n .card .unit {\n font-size: 12px;\n }\n .card .bar-labels {\n font-size: 12px;\n }\n .card .mat-mdc-button-base {\n font-size: 12px;\n }\n .card .action-row {\n padding: 0;\n }\n} \n\n" }, "title": "JavaScript functions", "dropShadow": true, @@ -159,13 +207,17 @@ "actions": { "elementClick": [ { - "name": "javascript_functions_details", + "name": "user_defined_functions_details", "icon": "insert_chart", + "useShowWidgetActionFunction": null, + "showWidgetActionFunction": "return true;", "type": "openDashboardState", - "targetDashboardStateId": "javascript_functions", + "targetDashboardStateId": "user_defined_functions", "setEntityId": false, "stateEntityParamName": null, "openRightLayout": false, + "openInSeparateDialog": false, + "openInPopover": false, "id": "d4961bea-84de-e1af-e50f-666b98d34cd5" } ] @@ -1284,6 +1336,20 @@ "funcBody": null, "usePostProcessing": null, "postFuncBody": null + }, + { + "name": "tbelExecutionCountHourly", + "type": "timeseries", + "label": "{i18n:api-usage.tbel-executions}", + "color": "#4CAF50", + "settings": {}, + "_hash": 0.9298950525272727, + "aggregationType": null, + "units": null, + "decimals": null, + "funcBody": null, + "usePostProcessing": null, + "postFuncBody": null } ] } @@ -1348,7 +1414,7 @@ "showTotal": true } }, - "title": "{i18n:api-usage.javascript-functions-hourly-activity}", + "title": "{i18n:api-usage.user-defined-functions-hourly-activity}", "dropShadow": true, "enableFullscreen": true, "titleStyle": { @@ -1362,11 +1428,15 @@ { "name": "{i18n:api-usage.view-details}", "icon": "insert_chart", + "useShowWidgetActionFunction": null, + "showWidgetActionFunction": "return true;", "type": "openDashboardState", - "targetDashboardStateId": "javascript_functions", + "targetDashboardStateId": "user_defined_functions", "setEntityId": false, "stateEntityParamName": null, "openRightLayout": false, + "openInSeparateDialog": false, + "openInPopover": false, "id": "4687d3f6-8800-a3b6-26e5-0d33f3b828a9" } ] @@ -4395,6 +4465,288 @@ "col": 0, "id": "aa875b7f-e7c8-7529-1ae7-f456211b59cc", "typeFullFqn": "system.charts.timeseries_bars_flot" + }, + "16d469c0-b3f5-d8a6-c62c-5c245c2cc865": { + "type": "timeseries", + "sizeX": 8, + "sizeY": 5, + "config": { + "datasources": [ + { + "type": "entity", + "name": null, + "entityAliasId": "40193437-33ac-3172-eefd-0b08eb849062", + "filterId": null, + "dataKeys": [ + { + "name": "tbelExecutionCountHourly", + "type": "timeseries", + "label": "{i18n:api-usage.tbel-executions}", + "color": "#4CAF50", + "settings": { + "excludeFromStacking": false, + "hideDataByDefault": false, + "disableDataHiding": false, + "removeFromLegend": false, + "showLines": false, + "fillLines": false, + "showPoints": false, + "showPointShape": "circle", + "pointShapeFormatter": "", + "showPointsLineWidth": 5, + "showPointsRadius": 3, + "showSeparateAxis": false, + "axisPosition": "left", + "thresholds": [ + { + "thresholdValueSource": "predefinedValue" + } + ], + "comparisonSettings": { + "showValuesForComparison": true + } + }, + "_hash": 0.0661644137210089, + "units": null, + "decimals": null, + "funcBody": null, + "usePostProcessing": null, + "postFuncBody": null, + "aggregationType": null + } + ], + "alarmFilterConfig": { + "statusList": [ + "ACTIVE" + ] + } + } + ], + "timewindow": { + "hideInterval": false, + "hideAggregation": false, + "hideAggInterval": false, + "selectedTab": 1, + "history": { + "historyType": 0, + "timewindowMs": 2592000000, + "interval": 86400000 + }, + "aggregation": { + "type": "SUM", + "limit": 1000 + } + }, + "showTitle": true, + "backgroundColor": "#fff", + "color": "rgba(0, 0, 0, 0.87)", + "padding": "8px", + "settings": { + "shadowSize": 4, + "fontColor": "#545454", + "fontSize": 10, + "xaxis": { + "showLabels": true, + "color": "#545454" + }, + "yaxis": { + "showLabels": true, + "color": "#545454", + "min": 0, + "tickDecimals": 0, + "ticksFormatter": "var rounder = Math.pow(10, 1);\nvar powers = [\n {key: 'Q', value: Math.pow(10, 15)},\n {key: 'T', value: Math.pow(10, 12)},\n {key: 'B', value: Math.pow(10, 9)},\n {key: 'M', value: Math.pow(10, 6)},\n {key: 'K', value: 1000}\n];\n\nvar key = '';\n\nfor (var i = 0; i < powers.length; i++) {\n var reduced = value / powers[i].value;\n reduced = Math.round(reduced * rounder) / rounder;\n if (reduced >= 1) {\n value = reduced;\n key = powers[i].key;\n break;\n }\n}\nreturn value + key;" + }, + "grid": { + "color": "#545454", + "tickColor": "#DDDDDD", + "verticalLines": true, + "horizontalLines": true, + "outlineWidth": 1 + }, + "stack": false, + "tooltipIndividual": false, + "defaultBarWidth": 1800000, + "barAlignment": "left", + "timeForComparison": "months", + "xaxisSecond": { + "axisPosition": "top", + "showLabels": true + }, + "showLegend": true, + "legendConfig": { + "direction": "column", + "position": "bottom", + "sortDataKeys": false, + "showMin": false, + "showMax": false, + "showAvg": false, + "showTotal": true + } + }, + "title": "{i18n:api-usage.tbel-functions-daily-activity}", + "dropShadow": true, + "enableFullscreen": true, + "titleStyle": { + "fontSize": "16px", + "fontWeight": 400 + }, + "widgetStyle": {}, + "useDashboardTimewindow": false, + "actions": {}, + "displayTimewindow": true, + "showTitleIcon": false, + "iconColor": "rgba(0, 0, 0, 0.87)", + "iconSize": "24px", + "titleTooltip": "", + "widgetCss": "", + "pageSize": 1024, + "noDataDisplayMessage": "" + }, + "row": 0, + "col": 0, + "id": "16d469c0-b3f5-d8a6-c62c-5c245c2cc865", + "typeFullFqn": "system.charts.timeseries_bars_flot" + }, + "70978475-c9d4-a54d-384a-851b4bba3917": { + "type": "timeseries", + "sizeX": 8, + "sizeY": 5, + "config": { + "datasources": [ + { + "type": "entity", + "name": null, + "entityAliasId": "40193437-33ac-3172-eefd-0b08eb849062", + "filterId": null, + "dataKeys": [ + { + "name": "tbelExecutionCount", + "type": "timeseries", + "label": "{i18n:api-usage.tbel-executions}", + "color": "#4CAF50", + "settings": { + "excludeFromStacking": false, + "hideDataByDefault": false, + "disableDataHiding": false, + "removeFromLegend": false, + "showLines": false, + "fillLines": false, + "showPoints": false, + "showPointShape": "circle", + "pointShapeFormatter": "", + "showPointsLineWidth": 5, + "showPointsRadius": 3, + "showSeparateAxis": false, + "axisPosition": "left", + "thresholds": [ + { + "thresholdValueSource": "predefinedValue" + } + ], + "comparisonSettings": { + "showValuesForComparison": true + } + }, + "_hash": 0.0661644137210089, + "units": null, + "decimals": null, + "funcBody": null, + "usePostProcessing": null, + "postFuncBody": null, + "aggregationType": null + } + ], + "alarmFilterConfig": { + "statusList": [ + "ACTIVE" + ] + } + } + ], + "timewindow": { + "hideInterval": false, + "hideAggregation": false, + "hideAggInterval": false, + "selectedTab": 1, + "history": { + "historyType": 0, + "timewindowMs": 31536000000, + "interval": 1000 + }, + "aggregation": { + "type": "NONE", + "limit": 1000 + } + }, + "showTitle": true, + "backgroundColor": "#fff", + "color": "rgba(0, 0, 0, 0.87)", + "padding": "8px", + "settings": { + "shadowSize": 4, + "fontColor": "#545454", + "fontSize": 10, + "xaxis": { + "showLabels": true, + "color": "#545454" + }, + "yaxis": { + "showLabels": true, + "color": "#545454", + "min": 0, + "tickDecimals": 0, + "ticksFormatter": "var rounder = Math.pow(10, 1);\nvar powers = [\n {key: 'Q', value: Math.pow(10, 15)},\n {key: 'T', value: Math.pow(10, 12)},\n {key: 'B', value: Math.pow(10, 9)},\n {key: 'M', value: Math.pow(10, 6)},\n {key: 'K', value: 1000}\n];\n\nvar key = '';\n\nfor (var i = 0; i < powers.length; i++) {\n var reduced = value / powers[i].value;\n reduced = Math.round(reduced * rounder) / rounder;\n if (reduced >= 1) {\n value = reduced;\n key = powers[i].key;\n break;\n }\n}\nreturn value + key;" + }, + "grid": { + "color": "#545454", + "tickColor": "#DDDDDD", + "verticalLines": true, + "horizontalLines": true, + "outlineWidth": 1 + }, + "stack": false, + "tooltipIndividual": false, + "defaultBarWidth": 900000000, + "barAlignment": "left", + "timeForComparison": "months", + "xaxisSecond": { + "axisPosition": "top", + "showLabels": true + }, + "showLegend": true, + "legendConfig": { + "direction": "column", + "position": "bottom", + "sortDataKeys": false, + "showMin": false, + "showMax": false, + "showAvg": false, + "showTotal": true + } + }, + "title": "{i18n:api-usage.tbel-functions-monthly-activity}", + "dropShadow": true, + "enableFullscreen": true, + "titleStyle": { + "fontSize": "16px", + "fontWeight": 400 + }, + "widgetStyle": {}, + "useDashboardTimewindow": false, + "actions": {}, + "displayTimewindow": true, + "showTitleIcon": false, + "iconColor": "rgba(0, 0, 0, 0.87)", + "iconSize": "24px", + "titleTooltip": "", + "widgetCss": "", + "pageSize": 1024, + "noDataDisplayMessage": "" + }, + "row": 0, + "col": 0, + "id": "70978475-c9d4-a54d-384a-851b4bba3917", + "typeFullFqn": "system.charts.timeseries_bars_flot" } }, "states": { @@ -4566,40 +4918,6 @@ } } }, - "javascript_functions": { - "name": "{i18n:api-usage.javascript-functions}", - "root": false, - "layouts": { - "main": { - "widgets": { - "5f5ca59c-e507-5301-5910-7ad8cd34df40": { - "sizeX": 24, - "sizeY": 6, - "row": 0, - "col": 0 - }, - "ada32ee9-44ed-48d1-c368-fd0c94b7607f": { - "sizeX": 24, - "sizeY": 6, - "row": 6, - "col": 0 - } - }, - "gridSettings": { - "backgroundColor": "#eeeeee", - "color": "rgba(0,0,0,0.870588)", - "columns": 24, - "margin": 10, - "backgroundSizeMode": "100%", - "autoFillHeight": true, - "backgroundImageUrl": null, - "mobileAutoFillHeight": false, - "mobileRowHeight": 70, - "outerMargin": true - } - } - } - }, "telemetry_persistence": { "name": "{i18n:api-usage.telemetry-persistence}", "root": false, @@ -4755,6 +5073,52 @@ } } } + }, + "user_defined_functions": { + "name": "{i18n:api-usage.user-defined-functions}", + "root": false, + "layouts": { + "main": { + "widgets": { + "5f5ca59c-e507-5301-5910-7ad8cd34df40": { + "sizeX": 12, + "sizeY": 6, + "row": 0, + "col": 0 + }, + "ada32ee9-44ed-48d1-c368-fd0c94b7607f": { + "sizeX": 12, + "sizeY": 6, + "row": 6, + "col": 0 + }, + "16d469c0-b3f5-d8a6-c62c-5c245c2cc865": { + "sizeX": 12, + "sizeY": 6, + "row": 0, + "col": 12 + }, + "70978475-c9d4-a54d-384a-851b4bba3917": { + "sizeX": 12, + "sizeY": 6, + "row": 6, + "col": 12 + } + }, + "gridSettings": { + "backgroundColor": "#eeeeee", + "color": "rgba(0,0,0,0.870588)", + "columns": 24, + "margin": 10, + "backgroundSizeMode": "100%", + "autoFillHeight": true, + "backgroundImageUrl": null, + "mobileAutoFillHeight": false, + "mobileRowHeight": 70, + "outerMargin": true + } + } + } } }, "entityAliases": { @@ -4809,4 +5173,4 @@ }, "externalId": null, "name": "Api Usage" -} \ No newline at end of file +} diff --git a/ui-ngx/src/assets/locale/locale.constant-ca_ES.json b/ui-ngx/src/assets/locale/locale.constant-ca_ES.json index 0b7b09d15b..a2e8cb4c42 100644 --- a/ui-ngx/src/assets/locale/locale.constant-ca_ES.json +++ b/ui-ngx/src/assets/locale/locale.constant-ca_ES.json @@ -677,9 +677,7 @@ "executions": "Execucions", "javascript": "JavaScript", "javascript-executions": "Execucions JavaScript", - "javascript-functions": "Funcions JavaScript", "javascript-functions-daily-activity": "Activitat diària de funcions JavaScript", - "javascript-functions-hourly-activity": "Activitat horària de funcions JavaScript", "javascript-functions-monthly-activity": "Activitat mensual de funcions JavaScript", "latest-error": "Últim error", "messages": "Missatges", diff --git a/ui-ngx/src/assets/locale/locale.constant-cs_CZ.json b/ui-ngx/src/assets/locale/locale.constant-cs_CZ.json index c82ba68649..048b421a4e 100644 --- a/ui-ngx/src/assets/locale/locale.constant-cs_CZ.json +++ b/ui-ngx/src/assets/locale/locale.constant-cs_CZ.json @@ -488,9 +488,7 @@ "executions": "Zpracování", "javascript": "JavaScript", "javascript-executions": "JavaScript výjimky", - "javascript-functions": "JavaScript funkce", "javascript-functions-daily-activity": "Denní aktivita JavaScript funkcí", - "javascript-functions-hourly-activity": "Hodinová aktivita JavaScript funkcí", "javascript-functions-monthly-activity": "Měsíční aktivita JavaScript funkcí", "latest-error": "Poslední chyba", "messages": "Zprávy", diff --git a/ui-ngx/src/assets/locale/locale.constant-da_DK.json b/ui-ngx/src/assets/locale/locale.constant-da_DK.json index 834cc15619..c318726315 100644 --- a/ui-ngx/src/assets/locale/locale.constant-da_DK.json +++ b/ui-ngx/src/assets/locale/locale.constant-da_DK.json @@ -493,9 +493,7 @@ "executions": "Udførelser", "javascript": "JavaScript", "javascript-executions": "JavaScript-udførelser", - "javascript-functions": "JavaScript-funktioner", "javascript-functions-daily-activity": "JavaScript-funktioners daglige aktivitet", - "javascript-functions-hourly-activity": "JavaScript-funktioners timeaktivitet", "javascript-functions-monthly-activity": "JavaScript-funktioners månedlige aktivitet", "latest-error": "Seneste fejl", "messages": "Beskeder", diff --git a/ui-ngx/src/assets/locale/locale.constant-en_US.json b/ui-ngx/src/assets/locale/locale.constant-en_US.json index 0867f21114..50676ea044 100644 --- a/ui-ngx/src/assets/locale/locale.constant-en_US.json +++ b/ui-ngx/src/assets/locale/locale.constant-en_US.json @@ -770,12 +770,17 @@ "email-messages-monthly-activity": "Email messages monthly activity", "exceptions": "Exceptions", "executions": "Executions", + "udf-executions": "UDF executions", + "user-defined-functions": "User-defined functions", + "user-defined-functions-hourly-activity": "User-defined functions hourly activity", "javascript": "JavaScript", "javascript-executions": "JavaScript executions", - "javascript-functions": "JavaScript functions", "javascript-functions-daily-activity": "JavaScript functions daily activity", - "javascript-functions-hourly-activity": "JavaScript functions hourly activity", "javascript-functions-monthly-activity": "JavaScript functions monthly activity", + "tbel": "TBEL", + "tbel-executions": "TBEL executions", + "tbel-functions-daily-activity": "TBEL functions daily activity", + "tbel-functions-monthly-activity": "TBEL functions monthly activity", "latest-error": "Latest Error", "messages": "Messages", "notifications": "Notifications", @@ -3991,6 +3996,9 @@ "max-j-s-executions": "JavaScript executions maximum number ", "max-j-s-executions-required": "JavaScript executions maximum number is required.", "max-j-s-executions-range": "JavaScript executions maximum number can't be negative", + "max-tbel-executions": "TBEL executions maximum number ", + "max-tbel-executions-required": "TBEL executions maximum number is required.", + "max-tbel-executions-range": "TBEL executions maximum number can't be negative", "max-d-p-storage-days": "Data points storage days maximum number", "max-d-p-storage-days-required": "Data points storage days maximum number is required.", "max-d-p-storage-days-range": "Data points storage days maximum number can't be negative", diff --git a/ui-ngx/src/assets/locale/locale.constant-es_ES.json b/ui-ngx/src/assets/locale/locale.constant-es_ES.json index 143bed648b..6bcd707bfc 100644 --- a/ui-ngx/src/assets/locale/locale.constant-es_ES.json +++ b/ui-ngx/src/assets/locale/locale.constant-es_ES.json @@ -715,9 +715,7 @@ "executions": "Ejecuciones", "javascript": "JavaScript", "javascript-executions": "Ejecuciones JavaScript", - "javascript-functions": "Funciones JavaScript", "javascript-functions-daily-activity": "Actividad diaria de funciones JavaScript", - "javascript-functions-hourly-activity": "Actividad horaria de funciones JavaScript", "javascript-functions-monthly-activity": "Actividad mensual de funciones JavaScript", "latest-error": "Último error", "messages": "Mensajes", diff --git a/ui-ngx/src/assets/locale/locale.constant-fr_FR.json b/ui-ngx/src/assets/locale/locale.constant-fr_FR.json index 39d6646854..acf547354e 100644 --- a/ui-ngx/src/assets/locale/locale.constant-fr_FR.json +++ b/ui-ngx/src/assets/locale/locale.constant-fr_FR.json @@ -488,9 +488,7 @@ "email-messages-monthly-activity": "Activité menuselle de courriels", "executions": "Exécutions", "javascript-executions": "Exécutions JavaScript", - "javascript-functions": "Fonctions JavaScript", "javascript-functions-daily-activity": "Activité hebdomadaire de fonctions JavaScript", - "javascript-functions-hourly-activity": "Activité horaire de fonctions JavaScript", "javascript-functions-monthly-activity": "Activité mensuelle de fonctions JavaScript", "latest-error": "Dernière erreur", "notifications-email-sms": "Notifications (Coourriel/SMS)", diff --git a/ui-ngx/src/assets/locale/locale.constant-ko_KR.json b/ui-ngx/src/assets/locale/locale.constant-ko_KR.json index aad25e9c0e..387a553506 100644 --- a/ui-ngx/src/assets/locale/locale.constant-ko_KR.json +++ b/ui-ngx/src/assets/locale/locale.constant-ko_KR.json @@ -447,9 +447,7 @@ "executions": "Executions", "javascript": "JavaScript", "javascript-executions": "JavaScript executions", - "javascript-functions": "JavaScript functions", "javascript-functions-daily-activity": "JavaScript functions daily activity", - "javascript-functions-hourly-activity": "JavaScript functions hourly activity", "javascript-functions-monthly-activity": "JavaScript functions monthly activity", "latest-error": "최근 오류", "messages": "메시지", diff --git a/ui-ngx/src/assets/locale/locale.constant-sl_SI.json b/ui-ngx/src/assets/locale/locale.constant-sl_SI.json index c6a20b9a36..33fa10fbb4 100644 --- a/ui-ngx/src/assets/locale/locale.constant-sl_SI.json +++ b/ui-ngx/src/assets/locale/locale.constant-sl_SI.json @@ -447,9 +447,7 @@ "executions": "Executions", "javascript": "JavaScript", "javascript-executions": "JavaScript executions", - "javascript-functions": "JavaScript functions", "javascript-functions-daily-activity": "JavaScript functions daily activity", - "javascript-functions-hourly-activity": "JavaScript functions hourly activity", "javascript-functions-monthly-activity": "JavaScript functions monthly activity", "latest-error": "Latest Error", "messages": "Messages", diff --git a/ui-ngx/src/assets/locale/locale.constant-tr_TR.json b/ui-ngx/src/assets/locale/locale.constant-tr_TR.json index b377c9fd45..3819fb306f 100644 --- a/ui-ngx/src/assets/locale/locale.constant-tr_TR.json +++ b/ui-ngx/src/assets/locale/locale.constant-tr_TR.json @@ -488,9 +488,7 @@ "executions": "Çalıştırmalar", "javascript": "JavaScript", "javascript-executions": "JavaScript çalıştırmaları", - "javascript-functions": "JavaScript fonksiyonları", "javascript-functions-daily-activity": "Günlük JavaScript fonksiyonları", - "javascript-functions-hourly-activity": "Saatlik JavaScript fonksiyonları", "javascript-functions-monthly-activity": "Aylık JavaScript fonksiyonları", "latest-error": "Son Hata", "messages": "Mesajlar", diff --git a/ui-ngx/src/assets/locale/locale.constant-zh_CN.json b/ui-ngx/src/assets/locale/locale.constant-zh_CN.json index 895499e067..7cc76818cf 100644 --- a/ui-ngx/src/assets/locale/locale.constant-zh_CN.json +++ b/ui-ngx/src/assets/locale/locale.constant-zh_CN.json @@ -715,9 +715,7 @@ "executions": "执行数", "javascript": "JavaScript", "javascript-executions": "JavaScript 执行数", - "javascript-functions": "JavaScript 函数", "javascript-functions-daily-activity": "每天执行的JavaScript函数", - "javascript-functions-hourly-activity": "每小时执行的JavaScript函数", "javascript-functions-monthly-activity": "每月执行的JavaScript函数", "latest-error": "最新错误", "messages": "消息", diff --git a/ui-ngx/src/assets/locale/locale.constant-zh_TW.json b/ui-ngx/src/assets/locale/locale.constant-zh_TW.json index bb655f65e7..75086fb2cb 100644 --- a/ui-ngx/src/assets/locale/locale.constant-zh_TW.json +++ b/ui-ngx/src/assets/locale/locale.constant-zh_TW.json @@ -563,9 +563,7 @@ "executions": "執行", "javascript": "JavaScript", "javascript-executions": "JavaScript執行", - "javascript-functions": "JavaScript功能", "javascript-functions-daily-activity": "JavaScript功能每日活動", - "javascript-functions-hourly-activity": "JavaScript功能每小時活動", "javascript-functions-monthly-activity": "JavaScript功能每月活動", "latest-error": "最新錯誤", "messages": "訊息", From e4d1a5896fd738acf0dbd5bd65f4001e5b128fb2 Mon Sep 17 00:00:00 2001 From: Vladyslav_Prykhodko Date: Fri, 13 Oct 2023 17:34:33 +0300 Subject: [PATCH 02/29] UI: Refactoring api usage dashboard - rename values --- ui-ngx/src/assets/dashboard/api_usage.json | 430 ++++-------------- .../assets/locale/locale.constant-ca_ES.json | 2 - .../assets/locale/locale.constant-cs_CZ.json | 2 - .../assets/locale/locale.constant-da_DK.json | 2 - .../assets/locale/locale.constant-en_US.json | 11 +- .../assets/locale/locale.constant-es_ES.json | 2 - .../assets/locale/locale.constant-fr_FR.json | 2 - .../assets/locale/locale.constant-ko_KR.json | 2 - .../assets/locale/locale.constant-sl_SI.json | 2 - .../assets/locale/locale.constant-tr_TR.json | 2 - .../assets/locale/locale.constant-zh_CN.json | 2 - .../assets/locale/locale.constant-zh_TW.json | 2 - 12 files changed, 94 insertions(+), 367 deletions(-) diff --git a/ui-ngx/src/assets/dashboard/api_usage.json b/ui-ngx/src/assets/dashboard/api_usage.json index 3c9259f453..b1cea42249 100644 --- a/ui-ngx/src/assets/dashboard/api_usage.json +++ b/ui-ngx/src/assets/dashboard/api_usage.json @@ -84,7 +84,7 @@ "decimals": null, "funcBody": null, "usePostProcessing": true, - "postFuncBody": "return \"{i18n:api-usage.udf-executions}\";", + "postFuncBody": "return \"{i18n:api-usage.scripts}\";", "aggregationType": "NONE" }, { @@ -107,7 +107,7 @@ "label": "tbelApiState", "color": "#3f51b5", "settings": {}, - "_hash": 0.950264191483049, + "_hash": 0.2002981454581909, "aggregationType": "NONE", "units": null, "decimals": null, @@ -119,9 +119,9 @@ "name": "tbelExecutionLimit", "type": "timeseries", "label": "tbelLimit", - "color": "#e91e63", + "color": "#ffeb3b", "settings": {}, - "_hash": 0.9618078963734347, + "_hash": 0.5039854873031677, "aggregationType": "NONE", "units": null, "decimals": null, @@ -133,9 +133,9 @@ "name": "tbelExecutionCount", "type": "timeseries", "label": "tbelCount", - "color": "#ffeb3b", + "color": "#e91e63", "settings": {}, - "_hash": 0.26695276374882493, + "_hash": 0.9506731992087107, "aggregationType": "NONE", "units": null, "decimals": null, @@ -147,9 +147,9 @@ "name": "tbelExecutionApiState", "type": "timeseries", "label": "tbelUnit", - "color": "#03a9f4", + "color": "#ffeb3b", "settings": {}, - "_hash": 0.41720010909473104, + "_hash": 0.3673530683177082, "aggregationType": "NONE", "units": null, "decimals": null, @@ -189,8 +189,8 @@ "color": "#666666", "padding": "0", "settings": { - "cardHtml": "
\n \n \n
\n
\n
\n
${title}
\n
\n
\n
\n
\n
\n
${jsUnit}
\n
\n
\n
\n
\n
\n
\n
\n
\n
\n
\n
\n
\n
${tbelUnit}
\n
\n
\n
\n
\n
\n
\n
\n
\n
\n
\n
\n
\n
\n
\n
\n \n
\n
", - "cardCss": ".card {\n width: 100%;\n height: 100%;\n box-sizing: border-box;\n display: flex;\n flex-direction: column;\n}\n\n.card > img {\n height: 0;\n}\n\n.card .content {\n flex: 1; \n padding: 13px 13px 0;\n display: flex;\n box-sizing: border-box;\n}\n\n.card .content .column {\n display: flex;\n flex-direction: column; \n justify-content: space-around;\n flex: 1;\n}\n\n.card .content .title-row {\n display: flex;\n flex-direction: row;\n padding-bottom: 10px;\n}\n\n.card .title {\n flex: 1;\n font-size: 20px;\n font-weight: 400;\n color: #666666;\n}\n\n.card .state {\n text-transform: uppercase;\n font-size: 20px;\n font-weight: bold;\n}\n\n.card.enabled .state {\n color: #00B260;\n}\n\n.card.warning .state {\n color: #FFAD6F;\n}\n\n.card.disabled .state {\n color: #F73243;\n}\n\n.card .bars-row {\n flex: 1;\n display: flex;\n flex-direction: row;\n}\n\n.card .bar-column {\n flex: 1;\n display: flex;\n flex-direction: column;\n}\n\n.card .bar-container {\n flex: 1;\n display: flex;\n flex-direction: column;\n justify-content: center;\n}\n\n.card .bar {\n flex: 1;\n max-height: 30px;\n margin-top: 3.5px;\n margin-bottom: 4px;\n background-color: #F0F0F0;\n border: 1px solid #DADCDB;\n border-radius: 2px;\n box-shadow: inset 0 1px 3px rgba(0, 0, 0, .2);\n}\n\n.card.enabled .bar {\n border-color: #00B260;\n background-color: #F0FBF7;\n}\n\n.card.warning .bar {\n border-color: #FFAD6F;\n background-color: #FFFAF6;\n}\n\n.card.disabled .bar {\n border-color: #F73243;\n background-color: #FFF0F0;\n}\n\n.card .bar .bar-fill {\n background-color: #F0F0F0;\n border-radius: 2px;\n height: 100%;\n width: 0%;\n}\n\n.card.enabled .bar-fill {\n background-color: #00C46C;\n}\n\n.card.warning .bar-fill {\n background-color: #FFD099;\n}\n\n.card.disabled .bar-fill {\n background-color: #FF9494;\n}\n\n.card .bar-labels {\n height: 20px;\n font-size: 16px;\n color: #666;\n display: flex;\n flex-direction: row;\n}\n\n.card .mat-mdc-button-base {\n text-transform: uppercase;\n white-space: nowrap;\n overflow: hidden;\n text-overflow: ellipsis;\n}\n\n.card .mdc-button__label {\n pointer-events: none;\n}\n\n.card .action-row {\n display: flex;\n flex-direction: row;\n justify-content: flex-end;\n padding: 8px 0;\n}\n\n\n@media screen and (min-width: 960px) and (max-width: 1279px) {\n .card .title {\n font-size: 12px;\n }\n .card .state {\n font-size: 12px;\n }\n .card .unit {\n font-size: 8px;\n }\n .card .bar-labels {\n font-size: 6px;\n }\n .card .mat-mdc-button-base {\n font-size: 8px;\n }\n .card .action-row {\n padding: 0;\n }\n}\n\n@media screen and (min-width: 1280px) and (max-width: 1599px) {\n .card .title {\n font-size: 14px;\n }\n .card .state {\n font-size: 14px;\n }\n .card .unit {\n font-size: 10px;\n }\n .card .bar-labels {\n font-size: 8px;\n }\n .card .mat-mdc-button-base {\n font-size: 10px;\n }\n .card .action-row {\n padding: 0;\n }\n}\n\n@media screen and (min-width: 1600px) and (max-width: 1919px) {\n .card .title {\n font-size: 16px;\n }\n .card .state {\n font-size: 16px;\n }\n .card .unit {\n font-size: 12px;\n }\n .card .bar-labels {\n font-size: 12px;\n }\n .card .mat-mdc-button-base {\n font-size: 12px;\n }\n .card .action-row {\n padding: 0;\n }\n} \n\n" + "cardHtml": "
\n \n \n
\n
\n
\n
${title}
\n
\n
\n
\n
\n
\n
${jsUnit}
\n
\n
\n
\n
\n
\n
\n
\n
\n
\n
\n
\n
\n
${tbelUnit}
\n
\n
\n
\n
\n
\n
\n
\n
\n
\n
\n
\n
\n
\n
\n
\n \n
\n
", + "cardCss": ".card {\n width: 100%;\n height: 100%;\n box-sizing: border-box;\n display: flex;\n flex-direction: column;\n}\n\n.card > img {\n height: 0;\n}\n\n.card .content {\n flex: 1; \n padding: 13px 13px 0;\n display: flex;\n box-sizing: border-box;\n}\n\n.card .content .column {\n display: flex;\n flex-direction: column; \n justify-content: space-around;\n flex: 1;\n}\n\n.card .content .title-row {\n display: flex;\n flex-direction: row;\n padding-bottom: 10px;\n}\n\n.card .title {\n flex: 1;\n font-size: 20px;\n font-weight: 400;\n color: #666666;\n}\n\n.card .state {\n text-transform: uppercase;\n font-size: 20px;\n font-weight: bold;\n}\n\n.card.enabled .state {\n color: #00B260;\n}\n\n.card.warning .state {\n color: #FFAD6F;\n}\n\n.card.disabled .state {\n color: #F73243;\n}\n\n.card .bars-row {\n flex: 1;\n display: flex;\n flex-direction: row;\n}\n\n.card .bar-column {\n flex: 1;\n display: flex;\n flex-direction: column;\n}\n\n.card .bar-container {\n flex: 1;\n display: flex;\n flex-direction: column;\n justify-content: center;\n}\n\n.card .bar {\n flex: 1;\n max-height: 30px;\n margin-top: 3.5px;\n margin-bottom: 4px;\n background-color: #F0F0F0;\n border: 1px solid #DADCDB;\n border-radius: 2px;\n box-shadow: inset 0 1px 3px rgba(0, 0, 0, .2);\n}\n\n.card.enabled .bar {\n border-color: #00B260;\n background-color: #F0FBF7;\n}\n\n.card.warning .bar {\n border-color: #FFAD6F;\n background-color: #FFFAF6;\n}\n\n.card.disabled .bar {\n border-color: #F73243;\n background-color: #FFF0F0;\n}\n\n.card .bar .bar-fill {\n background-color: #F0F0F0;\n border-radius: 2px;\n height: 100%;\n width: 0%;\n}\n\n.card.enabled .bar-fill {\n background-color: #00C46C;\n}\n\n.card.warning .bar-fill {\n background-color: #FFD099;\n}\n\n.card.disabled .bar-fill {\n background-color: #FF9494;\n}\n\n.card .bar-labels {\n height: 20px;\n font-size: 16px;\n color: #666;\n display: flex;\n flex-direction: row;\n}\n\n.card .mat-mdc-button-base {\n text-transform: uppercase;\n white-space: nowrap;\n overflow: hidden;\n text-overflow: ellipsis;\n}\n\n.card .mdc-button__label {\n pointer-events: none;\n}\n\n.card .action-row {\n display: flex;\n flex-direction: row;\n justify-content: flex-end;\n padding: 8px 0;\n}\n\n\n@media screen and (min-width: 960px) and (max-width: 1279px) {\n .card .title {\n font-size: 12px;\n }\n .card .state {\n font-size: 12px;\n }\n .card .unit {\n font-size: 8px;\n }\n .card .bar-labels {\n font-size: 6px;\n }\n .card .mat-mdc-button-base {\n font-size: 8px;\n }\n .card .action-row {\n padding: 0;\n }\n}\n\n@media screen and (min-width: 1280px) and (max-width: 1599px) {\n .card .title {\n font-size: 14px;\n }\n .card .state {\n font-size: 14px;\n }\n .card .unit {\n font-size: 10px;\n }\n .card .bar-labels {\n font-size: 8px;\n }\n .card .mat-mdc-button-base {\n font-size: 10px;\n }\n .card .action-row {\n padding: 0;\n }\n}\n\n@media screen and (min-width: 1600px) and (max-width: 1919px) {\n .card .title {\n font-size: 16px;\n }\n .card .state {\n font-size: 16px;\n }\n .card .unit {\n font-size: 12px;\n }\n .card .bar-labels {\n font-size: 12px;\n }\n .card .mat-mdc-button-base {\n font-size: 12px;\n }\n .card .action-row {\n padding: 0;\n }\n} " }, "title": "JavaScript functions", "dropShadow": true, @@ -207,12 +207,12 @@ "actions": { "elementClick": [ { - "name": "user_defined_functions_details", + "name": "script_functions_details", "icon": "insert_chart", "useShowWidgetActionFunction": null, "showWidgetActionFunction": "return true;", "type": "openDashboardState", - "targetDashboardStateId": "user_defined_functions", + "targetDashboardStateId": "script_functions", "setEntityId": false, "stateEntityParamName": null, "openRightLayout": false, @@ -225,7 +225,8 @@ "showTitleIcon": false, "iconColor": "rgba(0, 0, 0, 0.87)", "iconSize": "24px", - "titleTooltip": "" + "titleTooltip": "", + "displayTimewindow": true }, "row": 0, "col": 0, @@ -1341,9 +1342,9 @@ "name": "tbelExecutionCountHourly", "type": "timeseries", "label": "{i18n:api-usage.tbel-executions}", - "color": "#4CAF50", + "color": "#4caf50", "settings": {}, - "_hash": 0.9298950525272727, + "_hash": 0.6818645685001823, "aggregationType": null, "units": null, "decimals": null, @@ -1373,36 +1374,40 @@ "color": "rgba(0, 0, 0, 0.87)", "padding": "8px", "settings": { - "shadowSize": 4, - "fontColor": "#545454", + "stack": false, + "enableSelection": true, "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": { - "showLabels": true, - "color": "#545454", - "ticksFormatter": "var rounder = Math.pow(10, 1);\nvar powers = [\n {key: 'Q', value: Math.pow(10, 15)},\n {key: 'T', value: Math.pow(10, 12)},\n {key: 'B', value: Math.pow(10, 9)},\n {key: 'M', value: Math.pow(10, 6)},\n {key: 'K', value: 1000}\n];\n\nvar key = '';\n\nfor (var i = 0; i < powers.length; i++) {\n var reduced = value / powers[i].value;\n reduced = Math.round(reduced * rounder) / rounder;\n if (reduced >= 1) {\n value = reduced;\n key = powers[i].key;\n break;\n }\n}\nreturn value + key;", "min": 0, - "tickDecimals": 0 - }, - "grid": { + "max": null, + "title": null, + "showLabels": true, "color": "#545454", - "tickColor": "#DDDDDD", - "verticalLines": true, - "horizontalLines": true, - "outlineWidth": 1 + "tickSize": null, + "tickDecimals": 0, + "ticksFormatter": "var rounder = Math.pow(10, 1);\nvar powers = [\n {key: 'Q', value: Math.pow(10, 15)},\n {key: 'T', value: Math.pow(10, 12)},\n {key: 'B', value: Math.pow(10, 9)},\n {key: 'M', value: Math.pow(10, 6)},\n {key: 'K', value: 1000}\n];\n\nvar key = '';\n\nfor (var i = 0; i < powers.length; i++) {\n var reduced = value / powers[i].value;\n reduced = Math.round(reduced * rounder) / rounder;\n if (reduced >= 1) {\n value = reduced;\n key = powers[i].key;\n break;\n }\n}\nreturn value + key;" }, - "stack": false, - "tooltipIndividual": false, "defaultBarWidth": 2400000, "barAlignment": "left", - "timeForComparison": "months", - "xaxisSecond": { - "axisPosition": "top", - "showLabels": true - }, + "comparisonEnabled": false, "showLegend": true, "legendConfig": { "direction": "column", @@ -1412,9 +1417,10 @@ "showMax": false, "showAvg": false, "showTotal": true - } + }, + "customLegendEnabled": false }, - "title": "{i18n:api-usage.user-defined-functions-hourly-activity}", + "title": "{i18n:api-usage.scripts-hourly-activity}", "dropShadow": true, "enableFullscreen": true, "titleStyle": { @@ -1431,7 +1437,7 @@ "useShowWidgetActionFunction": null, "showWidgetActionFunction": "return true;", "type": "openDashboardState", - "targetDashboardStateId": "user_defined_functions", + "targetDashboardStateId": "script_functions", "setEntityId": false, "stateEntityParamName": null, "openRightLayout": false, @@ -1445,7 +1451,11 @@ "showTitleIcon": false, "iconColor": "rgba(0, 0, 0, 0.87)", "iconSize": "24px", - "titleTooltip": "" + "titleTooltip": "", + "widgetCss": "", + "pageSize": 1024, + "noDataDisplayMessage": "", + "configMode": "advanced" }, "row": 0, "col": 0, @@ -2239,6 +2249,20 @@ "funcBody": null, "usePostProcessing": null, "postFuncBody": null + }, + { + "name": "tbelExecutionCountHourly", + "type": "timeseries", + "label": "{i18n:api-usage.tbel-executions}", + "color": "#4caf50", + "settings": {}, + "_hash": 0.5212969314724616, + "aggregationType": null, + "units": null, + "decimals": null, + "funcBody": null, + "usePostProcessing": null, + "postFuncBody": null } ] } @@ -2304,7 +2328,7 @@ "showTotal": true } }, - "title": "{i18n:api-usage.javascript-functions-daily-activity}", + "title": "{i18n:api-usage.scripts-daily-activity}", "dropShadow": true, "enableFullscreen": true, "titleStyle": { @@ -2318,7 +2342,10 @@ "showTitleIcon": false, "iconColor": "rgba(0, 0, 0, 0.87)", "iconSize": "24px", - "titleTooltip": "" + "titleTooltip": "", + "widgetCss": "", + "pageSize": 1024, + "noDataDisplayMessage": "" }, "row": 0, "col": 0, @@ -2371,6 +2398,20 @@ "funcBody": null, "usePostProcessing": null, "postFuncBody": null + }, + { + "name": "tbelExecutionCount", + "type": "timeseries", + "label": "{i18n:api-usage.tbel-executions}", + "color": "#4caf50", + "settings": {}, + "_hash": 0.49748239768082403, + "aggregationType": null, + "units": null, + "decimals": null, + "funcBody": null, + "usePostProcessing": null, + "postFuncBody": null } ] } @@ -2436,7 +2477,7 @@ "showTotal": true } }, - "title": "{i18n:api-usage.javascript-functions-monthly-activity}", + "title": "{i18n:api-usage.scripts-monthly-activity}", "dropShadow": true, "enableFullscreen": true, "titleStyle": { @@ -2450,7 +2491,10 @@ "showTitleIcon": false, "iconColor": "rgba(0, 0, 0, 0.87)", "iconSize": "24px", - "titleTooltip": "" + "titleTooltip": "", + "widgetCss": "", + "pageSize": 1024, + "noDataDisplayMessage": "" }, "row": 0, "col": 0, @@ -4465,288 +4509,6 @@ "col": 0, "id": "aa875b7f-e7c8-7529-1ae7-f456211b59cc", "typeFullFqn": "system.charts.timeseries_bars_flot" - }, - "16d469c0-b3f5-d8a6-c62c-5c245c2cc865": { - "type": "timeseries", - "sizeX": 8, - "sizeY": 5, - "config": { - "datasources": [ - { - "type": "entity", - "name": null, - "entityAliasId": "40193437-33ac-3172-eefd-0b08eb849062", - "filterId": null, - "dataKeys": [ - { - "name": "tbelExecutionCountHourly", - "type": "timeseries", - "label": "{i18n:api-usage.tbel-executions}", - "color": "#4CAF50", - "settings": { - "excludeFromStacking": false, - "hideDataByDefault": false, - "disableDataHiding": false, - "removeFromLegend": false, - "showLines": false, - "fillLines": false, - "showPoints": false, - "showPointShape": "circle", - "pointShapeFormatter": "", - "showPointsLineWidth": 5, - "showPointsRadius": 3, - "showSeparateAxis": false, - "axisPosition": "left", - "thresholds": [ - { - "thresholdValueSource": "predefinedValue" - } - ], - "comparisonSettings": { - "showValuesForComparison": true - } - }, - "_hash": 0.0661644137210089, - "units": null, - "decimals": null, - "funcBody": null, - "usePostProcessing": null, - "postFuncBody": null, - "aggregationType": null - } - ], - "alarmFilterConfig": { - "statusList": [ - "ACTIVE" - ] - } - } - ], - "timewindow": { - "hideInterval": false, - "hideAggregation": false, - "hideAggInterval": false, - "selectedTab": 1, - "history": { - "historyType": 0, - "timewindowMs": 2592000000, - "interval": 86400000 - }, - "aggregation": { - "type": "SUM", - "limit": 1000 - } - }, - "showTitle": true, - "backgroundColor": "#fff", - "color": "rgba(0, 0, 0, 0.87)", - "padding": "8px", - "settings": { - "shadowSize": 4, - "fontColor": "#545454", - "fontSize": 10, - "xaxis": { - "showLabels": true, - "color": "#545454" - }, - "yaxis": { - "showLabels": true, - "color": "#545454", - "min": 0, - "tickDecimals": 0, - "ticksFormatter": "var rounder = Math.pow(10, 1);\nvar powers = [\n {key: 'Q', value: Math.pow(10, 15)},\n {key: 'T', value: Math.pow(10, 12)},\n {key: 'B', value: Math.pow(10, 9)},\n {key: 'M', value: Math.pow(10, 6)},\n {key: 'K', value: 1000}\n];\n\nvar key = '';\n\nfor (var i = 0; i < powers.length; i++) {\n var reduced = value / powers[i].value;\n reduced = Math.round(reduced * rounder) / rounder;\n if (reduced >= 1) {\n value = reduced;\n key = powers[i].key;\n break;\n }\n}\nreturn value + key;" - }, - "grid": { - "color": "#545454", - "tickColor": "#DDDDDD", - "verticalLines": true, - "horizontalLines": true, - "outlineWidth": 1 - }, - "stack": false, - "tooltipIndividual": false, - "defaultBarWidth": 1800000, - "barAlignment": "left", - "timeForComparison": "months", - "xaxisSecond": { - "axisPosition": "top", - "showLabels": true - }, - "showLegend": true, - "legendConfig": { - "direction": "column", - "position": "bottom", - "sortDataKeys": false, - "showMin": false, - "showMax": false, - "showAvg": false, - "showTotal": true - } - }, - "title": "{i18n:api-usage.tbel-functions-daily-activity}", - "dropShadow": true, - "enableFullscreen": true, - "titleStyle": { - "fontSize": "16px", - "fontWeight": 400 - }, - "widgetStyle": {}, - "useDashboardTimewindow": false, - "actions": {}, - "displayTimewindow": true, - "showTitleIcon": false, - "iconColor": "rgba(0, 0, 0, 0.87)", - "iconSize": "24px", - "titleTooltip": "", - "widgetCss": "", - "pageSize": 1024, - "noDataDisplayMessage": "" - }, - "row": 0, - "col": 0, - "id": "16d469c0-b3f5-d8a6-c62c-5c245c2cc865", - "typeFullFqn": "system.charts.timeseries_bars_flot" - }, - "70978475-c9d4-a54d-384a-851b4bba3917": { - "type": "timeseries", - "sizeX": 8, - "sizeY": 5, - "config": { - "datasources": [ - { - "type": "entity", - "name": null, - "entityAliasId": "40193437-33ac-3172-eefd-0b08eb849062", - "filterId": null, - "dataKeys": [ - { - "name": "tbelExecutionCount", - "type": "timeseries", - "label": "{i18n:api-usage.tbel-executions}", - "color": "#4CAF50", - "settings": { - "excludeFromStacking": false, - "hideDataByDefault": false, - "disableDataHiding": false, - "removeFromLegend": false, - "showLines": false, - "fillLines": false, - "showPoints": false, - "showPointShape": "circle", - "pointShapeFormatter": "", - "showPointsLineWidth": 5, - "showPointsRadius": 3, - "showSeparateAxis": false, - "axisPosition": "left", - "thresholds": [ - { - "thresholdValueSource": "predefinedValue" - } - ], - "comparisonSettings": { - "showValuesForComparison": true - } - }, - "_hash": 0.0661644137210089, - "units": null, - "decimals": null, - "funcBody": null, - "usePostProcessing": null, - "postFuncBody": null, - "aggregationType": null - } - ], - "alarmFilterConfig": { - "statusList": [ - "ACTIVE" - ] - } - } - ], - "timewindow": { - "hideInterval": false, - "hideAggregation": false, - "hideAggInterval": false, - "selectedTab": 1, - "history": { - "historyType": 0, - "timewindowMs": 31536000000, - "interval": 1000 - }, - "aggregation": { - "type": "NONE", - "limit": 1000 - } - }, - "showTitle": true, - "backgroundColor": "#fff", - "color": "rgba(0, 0, 0, 0.87)", - "padding": "8px", - "settings": { - "shadowSize": 4, - "fontColor": "#545454", - "fontSize": 10, - "xaxis": { - "showLabels": true, - "color": "#545454" - }, - "yaxis": { - "showLabels": true, - "color": "#545454", - "min": 0, - "tickDecimals": 0, - "ticksFormatter": "var rounder = Math.pow(10, 1);\nvar powers = [\n {key: 'Q', value: Math.pow(10, 15)},\n {key: 'T', value: Math.pow(10, 12)},\n {key: 'B', value: Math.pow(10, 9)},\n {key: 'M', value: Math.pow(10, 6)},\n {key: 'K', value: 1000}\n];\n\nvar key = '';\n\nfor (var i = 0; i < powers.length; i++) {\n var reduced = value / powers[i].value;\n reduced = Math.round(reduced * rounder) / rounder;\n if (reduced >= 1) {\n value = reduced;\n key = powers[i].key;\n break;\n }\n}\nreturn value + key;" - }, - "grid": { - "color": "#545454", - "tickColor": "#DDDDDD", - "verticalLines": true, - "horizontalLines": true, - "outlineWidth": 1 - }, - "stack": false, - "tooltipIndividual": false, - "defaultBarWidth": 900000000, - "barAlignment": "left", - "timeForComparison": "months", - "xaxisSecond": { - "axisPosition": "top", - "showLabels": true - }, - "showLegend": true, - "legendConfig": { - "direction": "column", - "position": "bottom", - "sortDataKeys": false, - "showMin": false, - "showMax": false, - "showAvg": false, - "showTotal": true - } - }, - "title": "{i18n:api-usage.tbel-functions-monthly-activity}", - "dropShadow": true, - "enableFullscreen": true, - "titleStyle": { - "fontSize": "16px", - "fontWeight": 400 - }, - "widgetStyle": {}, - "useDashboardTimewindow": false, - "actions": {}, - "displayTimewindow": true, - "showTitleIcon": false, - "iconColor": "rgba(0, 0, 0, 0.87)", - "iconSize": "24px", - "titleTooltip": "", - "widgetCss": "", - "pageSize": 1024, - "noDataDisplayMessage": "" - }, - "row": 0, - "col": 0, - "id": "70978475-c9d4-a54d-384a-851b4bba3917", - "typeFullFqn": "system.charts.timeseries_bars_flot" } }, "states": { @@ -5074,35 +4836,23 @@ } } }, - "user_defined_functions": { - "name": "{i18n:api-usage.user-defined-functions}", + "script_functions": { + "name": "{i18n:api-usage.scripts}", "root": false, "layouts": { "main": { "widgets": { "5f5ca59c-e507-5301-5910-7ad8cd34df40": { - "sizeX": 12, + "sizeX": 24, "sizeY": 6, "row": 0, "col": 0 }, "ada32ee9-44ed-48d1-c368-fd0c94b7607f": { - "sizeX": 12, + "sizeX": 24, "sizeY": 6, "row": 6, "col": 0 - }, - "16d469c0-b3f5-d8a6-c62c-5c245c2cc865": { - "sizeX": 12, - "sizeY": 6, - "row": 0, - "col": 12 - }, - "70978475-c9d4-a54d-384a-851b4bba3917": { - "sizeX": 12, - "sizeY": 6, - "row": 6, - "col": 12 } }, "gridSettings": { diff --git a/ui-ngx/src/assets/locale/locale.constant-ca_ES.json b/ui-ngx/src/assets/locale/locale.constant-ca_ES.json index 12b3412b8e..16b72c0700 100644 --- a/ui-ngx/src/assets/locale/locale.constant-ca_ES.json +++ b/ui-ngx/src/assets/locale/locale.constant-ca_ES.json @@ -677,8 +677,6 @@ "executions": "Execucions", "javascript": "JavaScript", "javascript-executions": "Execucions JavaScript", - "javascript-functions-daily-activity": "Activitat diària de funcions JavaScript", - "javascript-functions-monthly-activity": "Activitat mensual de funcions JavaScript", "latest-error": "Últim error", "messages": "Missatges", "notifications": "Notificacions", diff --git a/ui-ngx/src/assets/locale/locale.constant-cs_CZ.json b/ui-ngx/src/assets/locale/locale.constant-cs_CZ.json index 87c5527c7b..1c31471928 100644 --- a/ui-ngx/src/assets/locale/locale.constant-cs_CZ.json +++ b/ui-ngx/src/assets/locale/locale.constant-cs_CZ.json @@ -488,8 +488,6 @@ "executions": "Zpracování", "javascript": "JavaScript", "javascript-executions": "JavaScript výjimky", - "javascript-functions-daily-activity": "Denní aktivita JavaScript funkcí", - "javascript-functions-monthly-activity": "Měsíční aktivita JavaScript funkcí", "latest-error": "Poslední chyba", "messages": "Zprávy", "notifications": "Notifikace", diff --git a/ui-ngx/src/assets/locale/locale.constant-da_DK.json b/ui-ngx/src/assets/locale/locale.constant-da_DK.json index c2dc6c87f7..7c6da04280 100644 --- a/ui-ngx/src/assets/locale/locale.constant-da_DK.json +++ b/ui-ngx/src/assets/locale/locale.constant-da_DK.json @@ -493,8 +493,6 @@ "executions": "Udførelser", "javascript": "JavaScript", "javascript-executions": "JavaScript-udførelser", - "javascript-functions-daily-activity": "JavaScript-funktioners daglige aktivitet", - "javascript-functions-monthly-activity": "JavaScript-funktioners månedlige aktivitet", "latest-error": "Seneste fejl", "messages": "Beskeder", "permanent-failures": "${entityName} Permanente fejl", diff --git a/ui-ngx/src/assets/locale/locale.constant-en_US.json b/ui-ngx/src/assets/locale/locale.constant-en_US.json index 9c28f42cd8..27e1177d28 100644 --- a/ui-ngx/src/assets/locale/locale.constant-en_US.json +++ b/ui-ngx/src/assets/locale/locale.constant-en_US.json @@ -770,17 +770,14 @@ "email-messages-monthly-activity": "Email messages monthly activity", "exceptions": "Exceptions", "executions": "Executions", - "udf-executions": "UDF executions", - "user-defined-functions": "User-defined functions", - "user-defined-functions-hourly-activity": "User-defined functions hourly activity", + "scripts": "Scripts", + "scripts-hourly-activity": "Scripts hourly activity", + "scripts-daily-activity": "Scripts daily activity", + "scripts-monthly-activity": "Scripts monthly activity", "javascript": "JavaScript", "javascript-executions": "JavaScript executions", - "javascript-functions-daily-activity": "JavaScript functions daily activity", - "javascript-functions-monthly-activity": "JavaScript functions monthly activity", "tbel": "TBEL", "tbel-executions": "TBEL executions", - "tbel-functions-daily-activity": "TBEL functions daily activity", - "tbel-functions-monthly-activity": "TBEL functions monthly activity", "latest-error": "Latest Error", "messages": "Messages", "notifications": "Notifications", diff --git a/ui-ngx/src/assets/locale/locale.constant-es_ES.json b/ui-ngx/src/assets/locale/locale.constant-es_ES.json index 679c60a220..6891156d75 100644 --- a/ui-ngx/src/assets/locale/locale.constant-es_ES.json +++ b/ui-ngx/src/assets/locale/locale.constant-es_ES.json @@ -772,8 +772,6 @@ "executions": "Ejecuciones", "javascript": "JavaScript", "javascript-executions": "Ejecuciones JavaScript", - "javascript-functions-daily-activity": "Actividad diaria de funciones JavaScript", - "javascript-functions-monthly-activity": "Actividad mensual de funciones JavaScript", "latest-error": "Último error", "messages": "Mensajes", "notifications": "Notificaciones", diff --git a/ui-ngx/src/assets/locale/locale.constant-fr_FR.json b/ui-ngx/src/assets/locale/locale.constant-fr_FR.json index acf547354e..ec97ca6047 100644 --- a/ui-ngx/src/assets/locale/locale.constant-fr_FR.json +++ b/ui-ngx/src/assets/locale/locale.constant-fr_FR.json @@ -488,8 +488,6 @@ "email-messages-monthly-activity": "Activité menuselle de courriels", "executions": "Exécutions", "javascript-executions": "Exécutions JavaScript", - "javascript-functions-daily-activity": "Activité hebdomadaire de fonctions JavaScript", - "javascript-functions-monthly-activity": "Activité mensuelle de fonctions JavaScript", "latest-error": "Dernière erreur", "notifications-email-sms": "Notifications (Coourriel/SMS)", "notifications-hourly-activity": "Activité horaire de notifications", diff --git a/ui-ngx/src/assets/locale/locale.constant-ko_KR.json b/ui-ngx/src/assets/locale/locale.constant-ko_KR.json index 142ef1491d..a5660c5ceb 100644 --- a/ui-ngx/src/assets/locale/locale.constant-ko_KR.json +++ b/ui-ngx/src/assets/locale/locale.constant-ko_KR.json @@ -447,8 +447,6 @@ "executions": "Executions", "javascript": "JavaScript", "javascript-executions": "JavaScript executions", - "javascript-functions-daily-activity": "JavaScript functions daily activity", - "javascript-functions-monthly-activity": "JavaScript functions monthly activity", "latest-error": "최근 오류", "messages": "메시지", "permanent-failures": "${entityName} Permanent Failures", diff --git a/ui-ngx/src/assets/locale/locale.constant-sl_SI.json b/ui-ngx/src/assets/locale/locale.constant-sl_SI.json index 2c9173b78d..f2943e6145 100644 --- a/ui-ngx/src/assets/locale/locale.constant-sl_SI.json +++ b/ui-ngx/src/assets/locale/locale.constant-sl_SI.json @@ -447,8 +447,6 @@ "executions": "Executions", "javascript": "JavaScript", "javascript-executions": "JavaScript executions", - "javascript-functions-daily-activity": "JavaScript functions daily activity", - "javascript-functions-monthly-activity": "JavaScript functions monthly activity", "latest-error": "Latest Error", "messages": "Messages", "permanent-failures": "${entityName} Permanent Failures", diff --git a/ui-ngx/src/assets/locale/locale.constant-tr_TR.json b/ui-ngx/src/assets/locale/locale.constant-tr_TR.json index 5f05774d94..50758fb1eb 100644 --- a/ui-ngx/src/assets/locale/locale.constant-tr_TR.json +++ b/ui-ngx/src/assets/locale/locale.constant-tr_TR.json @@ -488,8 +488,6 @@ "executions": "Çalıştırmalar", "javascript": "JavaScript", "javascript-executions": "JavaScript çalıştırmaları", - "javascript-functions-daily-activity": "Günlük JavaScript fonksiyonları", - "javascript-functions-monthly-activity": "Aylık JavaScript fonksiyonları", "latest-error": "Son Hata", "messages": "Mesajlar", "notifications": "Bildirimler", diff --git a/ui-ngx/src/assets/locale/locale.constant-zh_CN.json b/ui-ngx/src/assets/locale/locale.constant-zh_CN.json index 4003705a48..b8c0a36fe0 100644 --- a/ui-ngx/src/assets/locale/locale.constant-zh_CN.json +++ b/ui-ngx/src/assets/locale/locale.constant-zh_CN.json @@ -715,8 +715,6 @@ "executions": "执行数", "javascript": "JavaScript", "javascript-executions": "JavaScript 执行数", - "javascript-functions-daily-activity": "每天执行的JavaScript函数", - "javascript-functions-monthly-activity": "每月执行的JavaScript函数", "latest-error": "最新错误", "messages": "消息", "notifications": "通知", diff --git a/ui-ngx/src/assets/locale/locale.constant-zh_TW.json b/ui-ngx/src/assets/locale/locale.constant-zh_TW.json index f3d3d13660..0091acbb61 100644 --- a/ui-ngx/src/assets/locale/locale.constant-zh_TW.json +++ b/ui-ngx/src/assets/locale/locale.constant-zh_TW.json @@ -563,8 +563,6 @@ "executions": "執行", "javascript": "JavaScript", "javascript-executions": "JavaScript執行", - "javascript-functions-daily-activity": "JavaScript功能每日活動", - "javascript-functions-monthly-activity": "JavaScript功能每月活動", "latest-error": "最新錯誤", "messages": "訊息", "notifications": "通知", From f97350cd8a97dd2ec1b2309e0142fae8ecbbcf9e Mon Sep 17 00:00:00 2001 From: Igor Kulikov Date: Tue, 17 Oct 2023 10:00:34 +0300 Subject: [PATCH 03/29] UI: Implement 'Simple Value and chart card' widget. --- .../json/system/widget_bundles/cards.json | 1 + .../simple_value_and_chart_card.json | 27 ++ .../basic/basic-widget-config.module.ts | 12 +- ...lue-chart-card-basic-config.component.html | 134 ++++++++++ ...value-chart-card-basic-config.component.ts | 250 ++++++++++++++++++ .../timewindow-config-panel.component.ts | 2 +- .../value-chart-card-widget.component.html | 25 ++ .../value-chart-card-widget.component.scss | 58 ++++ .../value-chart-card-widget.component.ts | 247 +++++++++++++++++ .../cards/value-chart-card-widget.models.ts | 77 ++++++ ...-chart-card-widget-settings.component.html | 54 ++++ ...ue-chart-card-widget-settings.component.ts | 98 +++++++ .../lib/settings/widget-settings.module.ts | 12 +- .../widget/widget-components.module.ts | 7 +- .../assets/locale/locale.constant-en_US.json | 10 + .../widget/value-chart-card/left-layout.svg | 21 ++ .../widget/value-chart-card/right-layout.svg | 30 +++ 17 files changed, 1056 insertions(+), 9 deletions(-) create mode 100644 application/src/main/data/json/system/widget_types/simple_value_and_chart_card.json create mode 100644 ui-ngx/src/app/modules/home/components/widget/config/basic/cards/value-chart-card-basic-config.component.html create mode 100644 ui-ngx/src/app/modules/home/components/widget/config/basic/cards/value-chart-card-basic-config.component.ts create mode 100644 ui-ngx/src/app/modules/home/components/widget/lib/cards/value-chart-card-widget.component.html create mode 100644 ui-ngx/src/app/modules/home/components/widget/lib/cards/value-chart-card-widget.component.scss create mode 100644 ui-ngx/src/app/modules/home/components/widget/lib/cards/value-chart-card-widget.component.ts create mode 100644 ui-ngx/src/app/modules/home/components/widget/lib/cards/value-chart-card-widget.models.ts create mode 100644 ui-ngx/src/app/modules/home/components/widget/lib/settings/cards/value-chart-card-widget-settings.component.html create mode 100644 ui-ngx/src/app/modules/home/components/widget/lib/settings/cards/value-chart-card-widget-settings.component.ts create mode 100644 ui-ngx/src/assets/widget/value-chart-card/left-layout.svg create mode 100644 ui-ngx/src/assets/widget/value-chart-card/right-layout.svg diff --git a/application/src/main/data/json/system/widget_bundles/cards.json b/application/src/main/data/json/system/widget_bundles/cards.json index f07f1e858e..d49db3581d 100644 --- a/application/src/main/data/json/system/widget_bundles/cards.json +++ b/application/src/main/data/json/system/widget_bundles/cards.json @@ -11,6 +11,7 @@ "cards.value_card", "cards.horizontal_value_card", "cards.aggregated_value_card", + "simple_value_and_chart_card", "cards.label_widget", "cards.dashboard_state_widget", "cards.qr_code", diff --git a/application/src/main/data/json/system/widget_types/simple_value_and_chart_card.json b/application/src/main/data/json/system/widget_types/simple_value_and_chart_card.json new file mode 100644 index 0000000000..7fa97f4a52 --- /dev/null +++ b/application/src/main/data/json/system/widget_types/simple_value_and_chart_card.json @@ -0,0 +1,27 @@ +{ + "fqn": "simple_value_and_chart_card", + "name": "Simple Value and chart card", + "deprecated": false, + "image": "data:image/png;base64,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", + "description": "Displays a single entity historical telemetry values as a simplified chart. Optionally may display the corresponding latest telemetry value.", + "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 };\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\":\"Temperature\",\"color\":\"rgb(63, 82, 221)\",\"settings\":{},\"_hash\":0.8587686344902596,\"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}],\"latestDataKeys\":[{\"name\":\"f(x)\",\"type\":\"function\",\"label\":\"Latest\",\"color\":\"rgb(63, 82, 221)\",\"settings\":{},\"_hash\":0.8587686344902596,\"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}]}],\"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\":\"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';\"},\"background\":{\"type\":\"color\",\"color\":\"#fff\",\"overlay\":{\"enabled\":false,\"color\":\"rgba(255,255,255,0.72)\",\"blur\":3}}},\"title\":\"Simple Value and chart card\",\"dropShadow\":true,\"enableFullscreen\":false,\"titleStyle\":null,\"mobileHeight\":null,\"configMode\":\"basic\",\"actions\":{},\"showTitleIcon\":false,\"titleIcon\":\"thermostat\",\"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\":\"°C\",\"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": null +} \ No newline at end of file diff --git a/ui-ngx/src/app/modules/home/components/widget/config/basic/basic-widget-config.module.ts b/ui-ngx/src/app/modules/home/components/widget/config/basic/basic-widget-config.module.ts index 639ede30f4..fd0e48322d 100644 --- a/ui-ngx/src/app/modules/home/components/widget/config/basic/basic-widget-config.module.ts +++ b/ui-ngx/src/app/modules/home/components/widget/config/basic/basic-widget-config.module.ts @@ -64,6 +64,9 @@ import { import { SignalStrengthBasicConfigComponent } from '@home/components/widget/config/basic/indicator/signal-strength-basic-config.component'; +import { + ValueChartCardBasicConfigComponent +} from '@home/components/widget/config/basic/cards/value-chart-card-basic-config.component'; @NgModule({ declarations: [ @@ -83,7 +86,8 @@ import { EntityCountBasicConfigComponent, BatteryLevelBasicConfigComponent, WindSpeedDirectionBasicConfigComponent, - SignalStrengthBasicConfigComponent + SignalStrengthBasicConfigComponent, + ValueChartCardBasicConfigComponent ], imports: [ CommonModule, @@ -107,7 +111,8 @@ import { EntityCountBasicConfigComponent, BatteryLevelBasicConfigComponent, WindSpeedDirectionBasicConfigComponent, - SignalStrengthBasicConfigComponent + SignalStrengthBasicConfigComponent, + ValueChartCardBasicConfigComponent ] }) export class BasicWidgetConfigModule { @@ -125,5 +130,6 @@ export const basicWidgetConfigComponentsMap: {[key: string]: Type + + + + + +
+
widget-config.appearance
+ + + {{ valueChartCardLayoutTranslationMap.get(layout) | translate }} + + +
+ + {{ 'widgets.value-chart-card.auto-scale' | translate }} + +
+
+ + {{ 'widget-config.title' | translate }} + +
+ + + + + + + +
+
+
+ + {{ 'widgets.value-chart-card.icon' | translate }} + +
+ + + + + + + + +
+
+
+ + {{ 'widgets.value-chart-card.value' | translate }} + +
+ + + +
widget-config.decimals-suffix
+
+ + + + +
+
+
+
{{ 'widgets.value-chart-card.chart' | translate }}
+ + +
+
+
+
widget-config.card-appearance
+
+
{{ 'widgets.background.background' | translate }}
+ + +
+
+
widget-config.show-card-buttons
+ + {{ 'fullscreen.fullscreen' | translate }} + +
+
+
{{ 'widget-config.card-border-radius' | translate }}
+ + + +
+
+ + +
diff --git a/ui-ngx/src/app/modules/home/components/widget/config/basic/cards/value-chart-card-basic-config.component.ts b/ui-ngx/src/app/modules/home/components/widget/config/basic/cards/value-chart-card-basic-config.component.ts new file mode 100644 index 0000000000..f2c3a853a0 --- /dev/null +++ b/ui-ngx/src/app/modules/home/components/widget/config/basic/cards/value-chart-card-basic-config.component.ts @@ -0,0 +1,250 @@ +/// +/// Copyright © 2016-2023 The Thingsboard Authors +/// +/// Licensed under the Apache License, Version 2.0 (the "License"); +/// you may not use this file except in compliance with the License. +/// You may obtain a copy of the License at +/// +/// http://www.apache.org/licenses/LICENSE-2.0 +/// +/// Unless required by applicable law or agreed to in writing, software +/// distributed under the License is distributed on an "AS IS" BASIS, +/// WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. +/// See the License for the specific language governing permissions and +/// limitations under the License. +/// + +import { Component } from '@angular/core'; +import { UntypedFormBuilder, UntypedFormGroup, Validators } from '@angular/forms'; +import { Store } from '@ngrx/store'; +import { AppState } from '@core/core.state'; +import { BasicWidgetConfigComponent } from '@home/components/widget/config/widget-config.component.models'; +import { WidgetConfigComponentData } from '@home/models/widget-component.models'; +import { DataKey, Datasource, WidgetConfig, } from '@shared/models/widget.models'; +import { WidgetConfigComponent } from '@home/components/widget/widget-config.component'; +import { DataKeyType } from '@shared/models/telemetry/telemetry.models'; +import { + getTimewindowConfig, + setTimewindowConfig +} from '@home/components/widget/config/timewindow-config-panel.component'; +import { formatValue, isUndefined } from '@core/utils'; +import { cssSizeToStrSize, getDataKey, resolveCssSize } from '@shared/models/widget-settings.models'; +import { + valueCartCardLayouts, + valueChartCardDefaultSettings, + valueChartCardLayoutImages, + valueChartCardLayoutTranslations, + ValueChartCardWidgetSettings +} from '@home/components/widget/lib/cards/value-chart-card-widget.models'; + +@Component({ + selector: 'tb-value-chart-card-basic-config', + templateUrl: './value-chart-card-basic-config.component.html', + styleUrls: ['../basic-config.scss'] +}) +export class ValueChartCardBasicConfigComponent extends BasicWidgetConfigComponent { + + public get datasource(): Datasource { + const datasources: Datasource[] = this.valueChartCardWidgetConfigForm.get('datasources').value; + if (datasources && datasources.length) { + return datasources[0]; + } else { + return null; + } + } + + valueChartCardLayouts = valueCartCardLayouts; + + valueChartCardLayoutTranslationMap = valueChartCardLayoutTranslations; + valueChartCardLayoutImageMap = valueChartCardLayoutImages; + + valueChartCardWidgetConfigForm: UntypedFormGroup; + + valuePreviewFn = this._valuePreviewFn.bind(this); + + constructor(protected store: Store, + protected widgetConfigComponent: WidgetConfigComponent, + private fb: UntypedFormBuilder) { + super(store, widgetConfigComponent); + } + + protected configForm(): UntypedFormGroup { + return this.valueChartCardWidgetConfigForm; + } + + protected setupDefaults(configData: WidgetConfigComponentData) { + this.setupDefaultDatasource(configData, [ + { name: 'temperature', label: 'Temperature', type: DataKeyType.timeseries, color: 'rgba(63, 82, 221, 1)'} + ], + [{ name: 'temperature', label: 'Latest', type: DataKeyType.timeseries}] + ); + } + + protected onConfigSet(configData: WidgetConfigComponentData) { + const settings: ValueChartCardWidgetSettings = {...valueChartCardDefaultSettings, ...(configData.config.settings || {})}; + const dataKey = getDataKey(configData.config.datasources); + const iconSize = resolveCssSize(configData.config.iconSize); + this.valueChartCardWidgetConfigForm = this.fb.group({ + timewindowConfig: [getTimewindowConfig(configData.config), []], + datasources: [configData.config.datasources, []], + + layout: [settings.layout, []], + autoScale: [settings.autoScale, []], + + showTitle: [configData.config.showTitle, []], + title: [configData.config.title, []], + titleFont: [configData.config.titleFont, []], + titleColor: [configData.config.titleColor, []], + + showIcon: [configData.config.showTitleIcon, []], + iconSize: [iconSize[0], [Validators.min(0)]], + iconSizeUnit: [iconSize[1], []], + icon: [configData.config.titleIcon, []], + iconColor: [configData.config.iconColor, []], + + showValue: [settings.showValue, []], + units: [configData.config.units, []], + decimals: [configData.config.decimals, []], + valueFont: [settings.valueFont, []], + valueColor: [settings.valueColor, []], + + chartColor: [dataKey?.color, []], + + background: [settings.background, []], + + cardButtons: [this.getCardButtons(configData.config), []], + borderRadius: [configData.config.borderRadius, []], + + actions: [configData.config.actions || {}, []] + }); + } + + protected prepareOutputConfig(config: any): WidgetConfigComponentData { + setTimewindowConfig(this.widgetConfig.config, config.timewindowConfig); + this.widgetConfig.config.datasources = config.datasources; + + this.widgetConfig.config.showTitle = config.showTitle; + this.widgetConfig.config.title = config.title; + this.widgetConfig.config.titleFont = config.titleFont; + this.widgetConfig.config.titleColor = config.titleColor; + + this.widgetConfig.config.showTitleIcon = config.showIcon; + this.widgetConfig.config.iconSize = cssSizeToStrSize(config.iconSize, config.iconSizeUnit); + this.widgetConfig.config.titleIcon = config.icon; + this.widgetConfig.config.iconColor = config.iconColor; + + this.widgetConfig.config.settings = this.widgetConfig.config.settings || {}; + + this.widgetConfig.config.settings.layout = config.layout; + this.widgetConfig.config.settings.autoScale = config.autoScale; + + this.widgetConfig.config.settings.showValue = config.showValue; + this.widgetConfig.config.units = config.units; + this.widgetConfig.config.decimals = config.decimals; + this.widgetConfig.config.settings.valueFont = config.valueFont; + this.widgetConfig.config.settings.valueColor = config.valueColor; + + const dataKey = getDataKey(this.widgetConfig.config.datasources); + if (dataKey) { + dataKey.color = config.chartColor; + this.updateLatestValues(dataKey, this.widgetConfig.config.datasources); + } + + this.widgetConfig.config.settings.background = config.background; + + this.setCardButtons(config.cardButtons, this.widgetConfig.config); + this.widgetConfig.config.borderRadius = config.borderRadius; + + this.widgetConfig.config.actions = config.actions; + return this.widgetConfig; + } + + protected validatorTriggers(): string[] { + return ['showTitle', 'showIcon', 'showValue']; + } + + protected updateValidators(emitEvent: boolean, trigger?: string) { + const showTitle: boolean = this.valueChartCardWidgetConfigForm.get('showTitle').value; + const showIcon: boolean = this.valueChartCardWidgetConfigForm.get('showIcon').value; + const showValue: boolean = this.valueChartCardWidgetConfigForm.get('showValue').value; + + if (showTitle) { + this.valueChartCardWidgetConfigForm.get('title').enable(); + this.valueChartCardWidgetConfigForm.get('titleFont').enable(); + this.valueChartCardWidgetConfigForm.get('titleColor').enable(); + this.valueChartCardWidgetConfigForm.get('showIcon').enable({emitEvent: false}); + if (showIcon) { + this.valueChartCardWidgetConfigForm.get('iconSize').enable(); + this.valueChartCardWidgetConfigForm.get('iconSizeUnit').enable(); + this.valueChartCardWidgetConfigForm.get('icon').enable(); + this.valueChartCardWidgetConfigForm.get('iconColor').enable(); + } else { + this.valueChartCardWidgetConfigForm.get('iconSize').disable(); + this.valueChartCardWidgetConfigForm.get('iconSizeUnit').disable(); + this.valueChartCardWidgetConfigForm.get('icon').disable(); + this.valueChartCardWidgetConfigForm.get('iconColor').disable(); + } + } else { + this.valueChartCardWidgetConfigForm.get('title').disable(); + this.valueChartCardWidgetConfigForm.get('titleFont').disable(); + this.valueChartCardWidgetConfigForm.get('titleColor').disable(); + this.valueChartCardWidgetConfigForm.get('showIcon').disable({emitEvent: false}); + this.valueChartCardWidgetConfigForm.get('iconSize').disable(); + this.valueChartCardWidgetConfigForm.get('iconSizeUnit').disable(); + this.valueChartCardWidgetConfigForm.get('icon').disable(); + this.valueChartCardWidgetConfigForm.get('iconColor').disable(); + } + + if (showValue) { + this.valueChartCardWidgetConfigForm.get('units').enable(); + this.valueChartCardWidgetConfigForm.get('decimals').enable(); + this.valueChartCardWidgetConfigForm.get('valueFont').enable(); + this.valueChartCardWidgetConfigForm.get('valueColor').enable(); + } else { + this.valueChartCardWidgetConfigForm.get('units').disable(); + this.valueChartCardWidgetConfigForm.get('decimals').disable(); + this.valueChartCardWidgetConfigForm.get('valueFont').disable(); + this.valueChartCardWidgetConfigForm.get('valueColor').disable(); + } + } + + private updateLatestValues(sourceDataKey: DataKey, datasources?: Datasource[]) { + if (datasources && datasources.length) { + let latestDataKeys = datasources[0].latestDataKeys; + if (!latestDataKeys) { + latestDataKeys = []; + datasources[0].latestDataKeys = latestDataKeys; + } + let dataKey: DataKey; + if (!latestDataKeys.length) { + dataKey = {...sourceDataKey}; + latestDataKeys.push(dataKey); + } else { + dataKey = latestDataKeys[0]; + dataKey = {...dataKey, ...sourceDataKey}; + latestDataKeys[0] = dataKey; + } + dataKey.label = 'Latest'; + dataKey.units = null; + dataKey.decimals = null; + } + } + + private getCardButtons(config: WidgetConfig): string[] { + const buttons: string[] = []; + if (isUndefined(config.enableFullscreen) || config.enableFullscreen) { + buttons.push('fullscreen'); + } + return buttons; + } + + private setCardButtons(buttons: string[], config: WidgetConfig) { + config.enableFullscreen = buttons.includes('fullscreen'); + } + + private _valuePreviewFn(): string { + const units: string = this.widgetConfig.config.units; + const decimals: number = this.widgetConfig.config.decimals; + return formatValue(22, decimals, units, true); + } +} diff --git a/ui-ngx/src/app/modules/home/components/widget/config/timewindow-config-panel.component.ts b/ui-ngx/src/app/modules/home/components/widget/config/timewindow-config-panel.component.ts index 93fc304b7a..556d6e283c 100644 --- a/ui-ngx/src/app/modules/home/components/widget/config/timewindow-config-panel.component.ts +++ b/ui-ngx/src/app/modules/home/components/widget/config/timewindow-config-panel.component.ts @@ -92,7 +92,7 @@ export class TimewindowConfigPanelComponent implements ControlValueAccessor, OnI timewindowStyle: [null, []] }); this.timewindowConfig.valueChanges.subscribe( - (val) => this.propagateChange(val) + () => this.propagateChange(this.timewindowConfig.getRawValue()) ); this.timewindowConfig.get('useDashboardTimewindow').valueChanges.subscribe(() => { this.updateTimewindowConfigEnabledState(); diff --git a/ui-ngx/src/app/modules/home/components/widget/lib/cards/value-chart-card-widget.component.html b/ui-ngx/src/app/modules/home/components/widget/lib/cards/value-chart-card-widget.component.html new file mode 100644 index 0000000000..b1789800eb --- /dev/null +++ b/ui-ngx/src/app/modules/home/components/widget/lib/cards/value-chart-card-widget.component.html @@ -0,0 +1,25 @@ + +
+
+ +
+
{{ valueText }}
+
+
+
diff --git a/ui-ngx/src/app/modules/home/components/widget/lib/cards/value-chart-card-widget.component.scss b/ui-ngx/src/app/modules/home/components/widget/lib/cards/value-chart-card-widget.component.scss new file mode 100644 index 0000000000..3ea61fdcec --- /dev/null +++ b/ui-ngx/src/app/modules/home/components/widget/lib/cards/value-chart-card-widget.component.scss @@ -0,0 +1,58 @@ +/** + * Copyright © 2016-2023 The Thingsboard Authors + * + * Licensed under the Apache License, Version 2.0 (the "License"); + * you may not use this file except in compliance with the License. + * You may obtain a copy of the License at + * + * http://www.apache.org/licenses/LICENSE-2.0 + * + * Unless required by applicable law or agreed to in writing, software + * distributed under the License is distributed on an "AS IS" BASIS, + * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. + * See the License for the specific language governing permissions and + * limitations under the License. + */ +.tb-value-chart-card-panel { + width: 100%; + height: 100%; + position: relative; + display: flex; + flex-direction: column; + gap: 8px; + padding: 20px 24px 24px 24px; + > div:not(.tb-value-chart-card-overlay) { + z-index: 1; + } + div.tb-widget-title { + padding: 0; + } + .tb-value-chart-card-overlay { + position: absolute; + top: 12px; + left: 12px; + bottom: 12px; + right: 12px; + } + .tb-value-chart-card-content { + min-height: 0; + flex: 1; + display: flex; + align-items: flex-end; + gap: 16px; + position: relative; + &.left { + flex-direction: row; + } + &.right { + flex-direction: row-reverse; + } + .tb-value-chart-card-value { + white-space: nowrap; + } + .tb-value-chart-card-chart { + flex: 1; + height: 100%; + } + } +} diff --git a/ui-ngx/src/app/modules/home/components/widget/lib/cards/value-chart-card-widget.component.ts b/ui-ngx/src/app/modules/home/components/widget/lib/cards/value-chart-card-widget.component.ts new file mode 100644 index 0000000000..7cd58e3c13 --- /dev/null +++ b/ui-ngx/src/app/modules/home/components/widget/lib/cards/value-chart-card-widget.component.ts @@ -0,0 +1,247 @@ +/// +/// Copyright © 2016-2023 The Thingsboard Authors +/// +/// Licensed under the Apache License, Version 2.0 (the "License"); +/// you may not use this file except in compliance with the License. +/// You may obtain a copy of the License at +/// +/// http://www.apache.org/licenses/LICENSE-2.0 +/// +/// Unless required by applicable law or agreed to in writing, software +/// distributed under the License is distributed on an "AS IS" BASIS, +/// WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. +/// See the License for the specific language governing permissions and +/// limitations under the License. +/// + +import { + AfterViewInit, + ChangeDetectorRef, + Component, + ElementRef, + Input, + OnDestroy, + OnInit, + Renderer2, + TemplateRef, + ViewChild, + ViewEncapsulation +} from '@angular/core'; +import { WidgetContext } from '@home/models/widget-component.models'; +import { formatValue, isDefinedAndNotNull } from '@core/utils'; +import { + backgroundStyle, + ColorProcessor, + ComponentStyle, + getDataKey, + overlayStyle, resolveCssSize, + textStyle +} from '@shared/models/widget-settings.models'; +import { WidgetComponent } from '@home/components/widget/widget.component'; +import { ResizeObserver } from '@juggle/resize-observer'; +import { + valueChartCardDefaultSettings, + ValueChartCardLayout, + ValueChartCardWidgetSettings +} from '@home/components/widget/lib/cards/value-chart-card-widget.models'; +import { TbFlot } from '@home/components/widget/lib/flot-widget'; +import { DataKey } from '@shared/models/widget.models'; +import { TbFlotKeySettings, TbFlotSettings } from '@home/components/widget/lib/flot-widget.models'; +import { getTsValueByLatestDataKey } from '@home/components/widget/lib/cards/aggregated-value-card.models'; + +const layoutWidth = 218; +const layoutValueWidth = 68; +const valueRelativeWidth = layoutValueWidth / layoutWidth; + +@Component({ + selector: 'tb-value-chart-card-widget', + templateUrl: './value-chart-card-widget.component.html', + styleUrls: ['./value-chart-card-widget.component.scss'], + encapsulation: ViewEncapsulation.None +}) +export class ValueChartCardWidgetComponent implements OnInit, AfterViewInit, OnDestroy { + + @ViewChild('chartElement', {static: false}) + chartElement: ElementRef; + + @ViewChild('valueChartCardContent', {static: false}) + valueChartCardContent: ElementRef; + + @ViewChild('valueChartCardValue', {static: false}) + valueChartCardValue: ElementRef; + + settings: ValueChartCardWidgetSettings; + + @Input() + ctx: WidgetContext; + + @Input() + widgetTitlePanel: TemplateRef; + + layout: ValueChartCardLayout; + + showValue = true; + valueText = 'N/A'; + valueStyle: ComponentStyle = {}; + valueColor: ColorProcessor; + + backgroundStyle: ComponentStyle = {}; + overlayStyle: ComponentStyle = {}; + + private flot: TbFlot; + private flotDataKey: DataKey; + + private valueKey: DataKey; + + private contentResize$: ResizeObserver; + + private decimals = 0; + private units = ''; + + constructor(private renderer: Renderer2, + private widgetComponent: WidgetComponent, + private cd: ChangeDetectorRef) { + } + + ngOnInit(): void { + this.ctx.$scope.valueChartCardWidget = this; + this.settings = {...valueChartCardDefaultSettings, ...this.ctx.settings}; + + if (this.showValue) { + this.decimals = this.ctx.decimals; + this.units = this.ctx.units; + const dataKey = getDataKey(this.ctx.datasources); + if (dataKey?.name && this.ctx.defaultSubscription.firstDatasource?.latestDataKeys?.length) { + const dataKeys = this.ctx.defaultSubscription.firstDatasource?.latestDataKeys; + this.valueKey = dataKeys?.find(k => k.name === dataKey.name); + if (isDefinedAndNotNull(this.valueKey?.decimals)) { + this.decimals = this.valueKey.decimals; + } + if (this.valueKey?.units) { + this.units = dataKey.units; + } + } + } + + this.layout = this.settings.layout; + + this.showValue = this.settings.showValue; + this.valueStyle = textStyle(this.settings.valueFont, '0.25px'); + this.valueColor = ColorProcessor.fromSettings(this.settings.valueColor); + + this.backgroundStyle = backgroundStyle(this.settings.background); + this.overlayStyle = overlayStyle(this.settings.background.overlay); + + if (this.ctx.defaultSubscription.firstDatasource?.dataKeys?.length) { + this.flotDataKey = this.ctx.defaultSubscription.firstDatasource?.dataKeys[0]; + this.flotDataKey.settings = { + fillLines: false, + showLines: true, + lineWidth: 2 + } as TbFlotKeySettings; + } + } + + public ngAfterViewInit() { + const settings = { + shadowSize: 0, + enableSelection: false, + smoothLines: true, + grid: { + tickColor: 'rgba(0,0,0,0.12)', + horizontalLines: false, + verticalLines: false, + outlineWidth: 0, + minBorderMargin: 0, + margin: 0 + }, + yaxis: { + showLabels: false, + tickGenerator: 'return [(axis.max + axis.min) / 2];' + }, + xaxis: { + showLabels: false + } + } as TbFlotSettings; + this.flot = new TbFlot(this.ctx, 'line', $(this.chartElement.nativeElement), settings); + + this.contentResize$ = new ResizeObserver(() => { + this.onResize(); + }); + this.contentResize$.observe(this.valueChartCardContent.nativeElement); + this.onResize(); + } + + ngOnDestroy() { + if (this.contentResize$) { + this.contentResize$.disconnect(); + } + } + + public onInit() { + const borderRadius = this.ctx.$widgetElement.css('borderRadius'); + this.overlayStyle = {...this.overlayStyle, ...{borderRadius}}; + this.cd.detectChanges(); + } + + public onDataUpdated() { + this.flot.update(); + } + + public onLatestDataUpdated() { + if (this.showValue && this.valueKey) { + const tsValue = getTsValueByLatestDataKey(this.ctx.latestData, this.valueKey); + let value; + if (tsValue) { + value = tsValue[1]; + this.valueText = formatValue(value, this.decimals, this.units, true); + } else { + this.valueText = 'N/A'; + } + this.valueColor.update(value); + this.cd.detectChanges(); + setTimeout(() => { + this.onResize(false); + }, 0); + } + } + + public onEditModeChanged() { + this.flot.checkMouseEvents(); + } + + public onDestroy() { + this.flot.destroy(); + } + + private onResize(fitMaxWidth = true) { + if (this.settings.autoScale && this.showValue) { + const contentWidth = this.valueChartCardContent.nativeElement.getBoundingClientRect().width; + const contentHeight = this.valueChartCardContent.nativeElement.getBoundingClientRect().height; + const targetValueWidth = valueRelativeWidth * contentWidth; + this.setValueFontSize(targetValueWidth, contentHeight, fitMaxWidth); + } + this.flot.resize(); + } + + private setValueFontSize(maxWidth: number, maxHeight: number, fitMaxWidth = true) { + const fontSize = getComputedStyle(this.valueChartCardValue.nativeElement).fontSize; + let valueFontSize = resolveCssSize(fontSize)[0]; + this.renderer.setStyle(this.valueChartCardValue.nativeElement, 'fontSize', valueFontSize + 'px'); + this.renderer.setStyle(this.valueChartCardValue.nativeElement, 'lineHeight', '1'); + let valueWidth = this.valueChartCardValue.nativeElement.getBoundingClientRect().width; + while (fitMaxWidth && valueWidth < maxWidth) { + valueFontSize++; + this.renderer.setStyle(this.valueChartCardValue.nativeElement, 'fontSize', valueFontSize + 'px'); + valueWidth = this.valueChartCardValue.nativeElement.getBoundingClientRect().width; + } + let valueHeight = this.valueChartCardValue.nativeElement.getBoundingClientRect().height; + while ((valueWidth > maxWidth || valueHeight > maxHeight) && valueFontSize > 6) { + valueFontSize--; + this.renderer.setStyle(this.valueChartCardValue.nativeElement, 'fontSize', valueFontSize + 'px'); + valueWidth = this.valueChartCardValue.nativeElement.getBoundingClientRect().width; + valueHeight = this.valueChartCardValue.nativeElement.getBoundingClientRect().height; + } + } + +} diff --git a/ui-ngx/src/app/modules/home/components/widget/lib/cards/value-chart-card-widget.models.ts b/ui-ngx/src/app/modules/home/components/widget/lib/cards/value-chart-card-widget.models.ts new file mode 100644 index 0000000000..e7a4a6d356 --- /dev/null +++ b/ui-ngx/src/app/modules/home/components/widget/lib/cards/value-chart-card-widget.models.ts @@ -0,0 +1,77 @@ +/// +/// Copyright © 2016-2023 The Thingsboard Authors +/// +/// Licensed under the Apache License, Version 2.0 (the "License"); +/// you may not use this file except in compliance with the License. +/// You may obtain a copy of the License at +/// +/// http://www.apache.org/licenses/LICENSE-2.0 +/// +/// Unless required by applicable law or agreed to in writing, software +/// distributed under the License is distributed on an "AS IS" BASIS, +/// WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. +/// See the License for the specific language governing permissions and +/// limitations under the License. +/// + +import { + BackgroundSettings, + BackgroundType, + ColorSettings, + constantColor, + Font +} from '@shared/models/widget-settings.models'; + +export enum ValueChartCardLayout { + left = 'left', + right = 'right' +} + +export const valueCartCardLayouts = Object.keys(ValueChartCardLayout) as ValueChartCardLayout[]; + +export const valueChartCardLayoutTranslations = new Map( + [ + [ValueChartCardLayout.left, 'widgets.value-chart-card.layout-left'], + [ValueChartCardLayout.right, 'widgets.value-chart-card.layout-right'] + ] +); + +export const valueChartCardLayoutImages = new Map( + [ + [ValueChartCardLayout.left, 'assets/widget/value-chart-card/left-layout.svg'], + [ValueChartCardLayout.right, 'assets/widget/value-chart-card/right-layout.svg'] + ] +); + +export interface ValueChartCardWidgetSettings { + layout: ValueChartCardLayout; + autoScale: boolean; + showValue: boolean; + valueFont: Font; + valueColor: ColorSettings; + background: BackgroundSettings; +} + +export const valueChartCardDefaultSettings: ValueChartCardWidgetSettings = { + layout: ValueChartCardLayout.left, + autoScale: true, + showValue: true, + valueFont: { + family: 'Roboto', + size: 28, + sizeUnit: 'px', + style: 'normal', + weight: '500', + lineHeight: '32px' + }, + valueColor: constantColor('rgba(0, 0, 0, 0.87)'), + background: { + type: BackgroundType.color, + color: '#fff', + overlay: { + enabled: false, + color: 'rgba(255,255,255,0.72)', + blur: 3 + } + } +}; diff --git a/ui-ngx/src/app/modules/home/components/widget/lib/settings/cards/value-chart-card-widget-settings.component.html b/ui-ngx/src/app/modules/home/components/widget/lib/settings/cards/value-chart-card-widget-settings.component.html new file mode 100644 index 0000000000..5b4a671772 --- /dev/null +++ b/ui-ngx/src/app/modules/home/components/widget/lib/settings/cards/value-chart-card-widget-settings.component.html @@ -0,0 +1,54 @@ + + +
+
widgets.value-chart-card.value-chart-card-style
+ + + {{ valueChartCardLayoutTranslationMap.get(layout) | translate }} + + +
+ + {{ 'widgets.value-chart-card.auto-scale' | translate }} + +
+
+ + {{ 'widgets.value-chart-card.value' | translate }} + +
+ + + + +
+
+
+
{{ 'widgets.background.background' | translate }}
+ + +
+
+
diff --git a/ui-ngx/src/app/modules/home/components/widget/lib/settings/cards/value-chart-card-widget-settings.component.ts b/ui-ngx/src/app/modules/home/components/widget/lib/settings/cards/value-chart-card-widget-settings.component.ts new file mode 100644 index 0000000000..88db47b3ad --- /dev/null +++ b/ui-ngx/src/app/modules/home/components/widget/lib/settings/cards/value-chart-card-widget-settings.component.ts @@ -0,0 +1,98 @@ +/// +/// Copyright © 2016-2023 The Thingsboard Authors +/// +/// Licensed under the Apache License, Version 2.0 (the "License"); +/// you may not use this file except in compliance with the License. +/// You may obtain a copy of the License at +/// +/// http://www.apache.org/licenses/LICENSE-2.0 +/// +/// Unless required by applicable law or agreed to in writing, software +/// distributed under the License is distributed on an "AS IS" BASIS, +/// WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. +/// See the License for the specific language governing permissions and +/// limitations under the License. +/// + +import { Component, Injector } from '@angular/core'; +import { WidgetSettings, WidgetSettingsComponent } from '@shared/models/widget.models'; +import { UntypedFormBuilder, UntypedFormGroup } from '@angular/forms'; +import { Store } from '@ngrx/store'; +import { AppState } from '@core/core.state'; +import { formatValue } from '@core/utils'; +import { + valueCartCardLayouts, + valueChartCardDefaultSettings, + valueChartCardLayoutImages, + valueChartCardLayoutTranslations +} from '@home/components/widget/lib/cards/value-chart-card-widget.models'; + +@Component({ + selector: 'tb-value-chart-card-widget-settings', + templateUrl: './value-chart-card-widget-settings.component.html', + styleUrls: [] +}) +export class ValueChartCardWidgetSettingsComponent extends WidgetSettingsComponent { + + valueChartCardLayouts = valueCartCardLayouts; + + valueChartCardLayoutTranslationMap = valueChartCardLayoutTranslations; + valueChartCardLayoutImageMap = valueChartCardLayoutImages; + + valueChartCardWidgetSettingsForm: UntypedFormGroup; + + valuePreviewFn = this._valuePreviewFn.bind(this); + + constructor(protected store: Store, + private $injector: Injector, + private fb: UntypedFormBuilder) { + super(store); + } + + protected settingsForm(): UntypedFormGroup { + return this.valueChartCardWidgetSettingsForm; + } + + protected defaultSettings(): WidgetSettings { + return {...valueChartCardDefaultSettings}; + } + + protected onSettingsSet(settings: WidgetSettings) { + this.valueChartCardWidgetSettingsForm = this.fb.group({ + layout: [settings.layout, []], + autoScale: [settings.autoScale, []], + + showValue: [settings.showValue, []], + valueFont: [settings.valueFont, []], + valueColor: [settings.valueColor, []], + + background: [settings.background, []] + }); + } + + protected validatorTriggers(): string[] { + return ['showValue']; + } + + protected updateValidators(emitEvent: boolean) { + const showValue: boolean = this.valueChartCardWidgetSettingsForm.get('showValue').value; + + if (showValue) { + this.valueChartCardWidgetSettingsForm.get('valueFont').enable(); + this.valueChartCardWidgetSettingsForm.get('valueColor').enable(); + } else { + this.valueChartCardWidgetSettingsForm.get('valueFont').disable(); + this.valueChartCardWidgetSettingsForm.get('valueColor').disable(); + } + + this.valueChartCardWidgetSettingsForm.get('valueFont').updateValueAndValidity({emitEvent}); + this.valueChartCardWidgetSettingsForm.get('valueColor').updateValueAndValidity({emitEvent}); + } + + private _valuePreviewFn(): string { + const units: string = this.widgetConfig.config.units; + const decimals: number = this.widgetConfig.config.decimals; + return formatValue(22, decimals, units, true); + } + +} diff --git a/ui-ngx/src/app/modules/home/components/widget/lib/settings/widget-settings.module.ts b/ui-ngx/src/app/modules/home/components/widget/lib/settings/widget-settings.module.ts index 595b2bdc41..c4d2a1edc5 100644 --- a/ui-ngx/src/app/modules/home/components/widget/lib/settings/widget-settings.module.ts +++ b/ui-ngx/src/app/modules/home/components/widget/lib/settings/widget-settings.module.ts @@ -294,6 +294,9 @@ import { import { SignalStrengthWidgetSettingsComponent } from '@home/components/widget/lib/settings/indicator/signal-strength-widget-settings.component'; +import { + ValueChartCardWidgetSettingsComponent +} from '@home/components/widget/lib/settings/cards/value-chart-card-widget-settings.component'; @NgModule({ declarations: [ @@ -402,7 +405,8 @@ import { EntityCountWidgetSettingsComponent, BatteryLevelWidgetSettingsComponent, WindSpeedDirectionWidgetSettingsComponent, - SignalStrengthWidgetSettingsComponent + SignalStrengthWidgetSettingsComponent, + ValueChartCardWidgetSettingsComponent ], imports: [ CommonModule, @@ -516,7 +520,8 @@ import { EntityCountWidgetSettingsComponent, BatteryLevelWidgetSettingsComponent, WindSpeedDirectionWidgetSettingsComponent, - SignalStrengthWidgetSettingsComponent + SignalStrengthWidgetSettingsComponent, + ValueChartCardWidgetSettingsComponent ] }) export class WidgetSettingsModule { @@ -595,5 +600,6 @@ export const widgetSettingsComponentsMap: {[key: string]: Type + + + + + + + + + + + + + + + + + + + + diff --git a/ui-ngx/src/assets/widget/value-chart-card/right-layout.svg b/ui-ngx/src/assets/widget/value-chart-card/right-layout.svg new file mode 100644 index 0000000000..662b62d47a --- /dev/null +++ b/ui-ngx/src/assets/widget/value-chart-card/right-layout.svg @@ -0,0 +1,30 @@ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + From f23b249abcc8caf1306aa8192d2a28b212940d77 Mon Sep 17 00:00:00 2001 From: Vladyslav_Prykhodko Date: Tue, 17 Oct 2023 17:15:23 +0300 Subject: [PATCH 04/29] UI: Improvement default widget bundle in attributes/timeseries tables --- .../home/components/attribute/attribute-table.component.ts | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/ui-ngx/src/app/modules/home/components/attribute/attribute-table.component.ts b/ui-ngx/src/app/modules/home/components/attribute/attribute-table.component.ts index 119c7a829f..8bd711b175 100644 --- a/ui-ngx/src/app/modules/home/components/attribute/attribute-table.component.ts +++ b/ui-ngx/src/app/modules/home/components/attribute/attribute-table.component.ts @@ -501,7 +501,7 @@ export class AttributeTableComponent extends PageComponent implements AfterViewI this.widgetsLoaded = false; this.widgetBundleSet = false; this.widgetsCarouselIndex = 0; - this.selectedWidgetsBundleAlias = 'cards'; + this.selectedWidgetsBundleAlias = 'tables'; const entityAlias: EntityAlias = { id: this.utils.guid(), From 1320881a19fcd52ea12d1180aead6f1cd9054642 Mon Sep 17 00:00:00 2001 From: Igor Kulikov Date: Tue, 17 Oct 2023 18:30:17 +0300 Subject: [PATCH 05/29] UI: Implement 'Progress bar' widget. --- .../json/system/widget_bundles/cards.json | 1 + .../widget_bundles/status_indicators.json | 3 +- .../system/widget_types/progress_bar.json | 26 ++ .../basic/basic-widget-config.module.ts | 12 +- .../progress-bar-basic-config.component.html | 171 ++++++++++++ .../progress-bar-basic-config.component.ts | 262 ++++++++++++++++++ .../cards/progress-bar-widget.component.html | 42 +++ .../cards/progress-bar-widget.component.scss | 84 ++++++ .../cards/progress-bar-widget.component.ts | 221 +++++++++++++++ .../lib/cards/progress-bar-widget.models.ts | 98 +++++++ .../battery-level-widget.component.scss | 5 +- .../battery-level-widget.component.ts | 1 + ...rogress-bar-widget-settings.component.html | 94 +++++++ .../progress-bar-widget-settings.component.ts | 133 +++++++++ .../lib/settings/widget-settings.module.ts | 12 +- ...wind-speed-direction-widget.component.scss | 5 +- .../widget/widget-components.module.ts | 7 +- .../assets/locale/locale.constant-en_US.json | 16 ++ .../widget/progress-bar/default-layout.svg | 38 +++ .../widget/progress-bar/simplified-layout.svg | 36 +++ ui-ngx/src/form.scss | 7 + 21 files changed, 1263 insertions(+), 11 deletions(-) create mode 100644 application/src/main/data/json/system/widget_types/progress_bar.json create mode 100644 ui-ngx/src/app/modules/home/components/widget/config/basic/cards/progress-bar-basic-config.component.html create mode 100644 ui-ngx/src/app/modules/home/components/widget/config/basic/cards/progress-bar-basic-config.component.ts create mode 100644 ui-ngx/src/app/modules/home/components/widget/lib/cards/progress-bar-widget.component.html create mode 100644 ui-ngx/src/app/modules/home/components/widget/lib/cards/progress-bar-widget.component.scss create mode 100644 ui-ngx/src/app/modules/home/components/widget/lib/cards/progress-bar-widget.component.ts create mode 100644 ui-ngx/src/app/modules/home/components/widget/lib/cards/progress-bar-widget.models.ts create mode 100644 ui-ngx/src/app/modules/home/components/widget/lib/settings/cards/progress-bar-widget-settings.component.html create mode 100644 ui-ngx/src/app/modules/home/components/widget/lib/settings/cards/progress-bar-widget-settings.component.ts create mode 100644 ui-ngx/src/assets/widget/progress-bar/default-layout.svg create mode 100644 ui-ngx/src/assets/widget/progress-bar/simplified-layout.svg diff --git a/application/src/main/data/json/system/widget_bundles/cards.json b/application/src/main/data/json/system/widget_bundles/cards.json index d49db3581d..c1420e6549 100644 --- a/application/src/main/data/json/system/widget_bundles/cards.json +++ b/application/src/main/data/json/system/widget_bundles/cards.json @@ -12,6 +12,7 @@ "cards.horizontal_value_card", "cards.aggregated_value_card", "simple_value_and_chart_card", + "progress_bar", "cards.label_widget", "cards.dashboard_state_widget", "cards.qr_code", diff --git a/application/src/main/data/json/system/widget_bundles/status_indicators.json b/application/src/main/data/json/system/widget_bundles/status_indicators.json index e175ffa5bb..429d3fe016 100644 --- a/application/src/main/data/json/system/widget_bundles/status_indicators.json +++ b/application/src/main/data/json/system/widget_bundles/status_indicators.json @@ -9,6 +9,7 @@ }, "widgetTypeFqns": [ "battery_level", - "signal_strength" + "signal_strength", + "progress_bar" ] } \ No newline at end of file diff --git a/application/src/main/data/json/system/widget_types/progress_bar.json b/application/src/main/data/json/system/widget_types/progress_bar.json new file mode 100644 index 0000000000..df3dcf6268 --- /dev/null +++ b/application/src/main/data/json/system/widget_types/progress_bar.json @@ -0,0 +1,26 @@ +{ + "fqn": "progress_bar", + "name": "Progress bar", + "deprecated": false, + "image": "data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAAMgAAACgCAMAAAB+IdObAAAAeFBMVEXg4ODf39/g4ODg4OAAAAD////g4OD19fUhISE/Ut3j4+OsrKzHx8eQkJB0dHQ8PDzx8fEvLy+6urrV1dWCgoJYWFienp5KSkrv7++GhoZmZmaXl5f39/epqanLy8vCwsL29vZtfORiceJ+fn7m5ubU1NTn6fve4fIbcz38AAAABXRSTlPvIL+vAC9A4IoAAASZSURBVHja7d0NT9swEIDhMji4nb/jxEk/NmCM7f//w/niQLtJyxamtdfiF6EmDkh+1Di0IojVzdWH1e25d311s7paDXD2+cy49nABDfm0gotodSmQ2woRVoVIq0KkVSHSqhBpVYi0KkRaFSKtGUijctrDv6XQwEzHgDjkXLoAiKaoAurzhxAAGGxBm2gMgE+25SHeUNE0QKbRNo/otlWQo2QNQa6xrdpD1DSqW6vyBhmtrD86RKHNGIcOyOUHZJDDEEIe1xgQdT487gGF0CNmgUXnsH+BhPzhCKDFfNh50OgQ6dgQv0HFEB2hw8QYDQo3HlqGZFf0066GDiNQFmvcMEZNEMdH2zza8WhivopwVEjX9QF7yBCVSbwFCc04YdBoy4xhkw3QYAsWjQciiNhH8OT3a8RnXo4ooRm/M3dMSN91m+QnCM+6zN9h2ShTyq4xy08X9mpcVxgswR4yfktymDsJhICbIPEA4n+GJJXTfNS48atIWQzxABKQl0YEJQDiQ/Dl1LeoDyHtONWYj41TDtDYvJMwTZA2w7ADwwNJAAQS9sqgY4NLyb1CKGCrGNeh0QY7Pq6bHvUEQaMcKh5VJkiAgAmIHfGGw7B5hQD1iMHkR4vlC5TLA+l1jeS9dlo5LdojQeYj/7rBp8xrnvz+kSOCg349WjolpES9itphBEm9BeI3OJ46omLI8qhppP2e6z28sTqvKkRaFSKtCpFWhUirQqRVIdKqEGlViLQqRFoVIq0KkVaFSKtCpFUh0qoQaVWItCpEWhUirQqR1jzER609HEbSbhT4G4g3AXOWYKrpAnYgszlIjyVXJNTl7XOEJMQ+ArXT5L3LpBQJZDYD6RGJAQED5DKoBbnN3uTfvIAAgBB7EFyBzBbQlXsTNV/EQGh/hPgWUZW7e1PglR+hJOw6PA/RfCs2Gsg5nApFYvtO1L2A8xC1n3ne6DWQRewKEfQGSM7FeB5CSrUOUY0QN13D0DPEQuzANiAlhsxHAYNnSA9ci6gZ5Jq2VRbEVCCzWcRYrl2cKRAgk6gT9NPx9xBvbTqYeofBTyz9IlTaiDm3Zp6RckoxAePIScxzGKBEPTnVK5DRDMS+vtZyLMguBbTZv1BxpAw0UpbJDMQ7LAWCXIMl52EsGVAtKCmvv2YgQNYxY0PTbs97xh9SN07KemfITFHHw4nzntA3jO/kPfsZVSHSqhBpVYi0KkRaFSKtCpHWO4B8e/y4rC/f7/5/D8shXz4u7fHuCO0WQz4u7+4YLYY8LnZ8uTtCu+VrZOm59XiMNbJ7x1etM6tCpFUh0qoQac1A7s325L+P2t1/AoBhu90O04SWQ4b1ANsTP10Pa7XOD5/u4fMWbte74WlYDnlOAM3Jn5KBIesBHp7gXmXS5+WQz5/EQOz42TQVIgWyHgDyqfVGyPD0AOkZThxD+JrznBf7NpO+LodAszZbOHEF8nW9ZYEyZvnll9vtQErDNKH3/ZP9vKoQaVWItCpEWhUirQqRVoVIq0KkVSHSqhBpVYi0LgiygovodvXhAv71NIC/Xl2txPzpxNsbMuPm6vr23Ft9uLr5AdpbpSAPQyy7AAAAAElFTkSuQmCC", + "description": "Displays any value reading as a horizontal progress bar. Allows to configure value range, bar colors, and other settings.", + "descriptor": { + "type": "latest", + "sizeX": 3, + "sizeY": 2, + "resources": [], + "templateHtml": "\n", + "templateCss": "", + "controllerScript": "self.onInit = function() {\n self.ctx.$scope.progressBarWidget.onInit();\n};\n\nself.onDataUpdated = function() {\n self.ctx.$scope.progressBarWidget.onDataUpdated();\n};\n\nself.typeParameters = function() {\n return {\n maxDatasources: 1,\n maxDataKeys: 1,\n singleEntity: true,\n previewWidth: '280px',\n previewHeight: '180px',\n embedTitlePanel: true\n };\n};\n\n\nself.onDestroy = function() {\n};\n", + "settingsSchema": "", + "dataKeySettingsSchema": "", + "settingsDirective": "tb-progress-bar-widget-settings", + "hasBasicMode": true, + "basicModeDirective": "tb-progress-bar-basic-config", + "defaultConfig": "{\"datasources\":[{\"type\":\"function\",\"name\":\"function\",\"dataKeys\":[{\"name\":\"f(x)\",\"type\":\"function\",\"label\":\"humidity\",\"color\":\"#2196f3\",\"settings\":{},\"_hash\":0.2392660816082064,\"funcBody\":\"var value = prevValue + Math.random() * 7;\\nif (value < 0) {\\n\\tvalue = 0;\\n} else if (value > 100) {\\n\\tvalue = 0;\\n}\\nreturn value;\",\"aggregationType\":null,\"units\":null,\"decimals\":null,\"usePostProcessing\":null,\"postFuncBody\":null}],\"alarmFilterConfig\":{\"statusList\":[\"ACTIVE\"]}}],\"timewindow\":{\"realtime\":{\"timewindowMs\":60000}},\"showTitle\":true,\"backgroundColor\":\"rgba(0, 0, 0, 0)\",\"color\":\"rgba(0, 0, 0, 0.87)\",\"padding\":\"0px\",\"settings\":{\"layout\":\"default\",\"autoScale\":true,\"showValue\":true,\"valueFont\":{\"family\":\"Roboto\",\"size\":24,\"sizeUnit\":\"px\",\"style\":\"normal\",\"weight\":\"500\",\"lineHeight\":\"32px\"},\"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';\"},\"tickMin\":0,\"tickMax\":100,\"showTicks\":true,\"ticksFont\":{\"family\":\"Roboto\",\"size\":11,\"sizeUnit\":\"px\",\"style\":\"normal\",\"weight\":\"400\",\"lineHeight\":\"16px\"},\"ticksColor\":\"rgba(0,0,0,0.54)\",\"background\":{\"type\":\"color\",\"color\":\"#fff\",\"overlay\":{\"enabled\":false,\"color\":\"rgba(255,255,255,0.72)\",\"blur\":3}}},\"title\":\"Progress bar\",\"dropShadow\":true,\"enableFullscreen\":false,\"titleStyle\":{\"fontSize\":\"16px\",\"fontWeight\":400},\"units\":\"%\",\"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\":16,\"sizeUnit\":\"px\",\"family\":\"Roboto\",\"weight\":\"500\",\"style\":\"normal\",\"lineHeight\":\"24px\"},\"titleIcon\":\"mdi:water-percent\",\"iconColor\":\"rgba(0, 0, 0, 0.87)\",\"iconSize\":\"18px\",\"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},\"titleColor\":\"rgba(0, 0, 0, 0.87)\"}" + }, + "externalId": null, + "tags": [ + "progress" + ] +} \ No newline at end of file diff --git a/ui-ngx/src/app/modules/home/components/widget/config/basic/basic-widget-config.module.ts b/ui-ngx/src/app/modules/home/components/widget/config/basic/basic-widget-config.module.ts index fd0e48322d..c26cf43542 100644 --- a/ui-ngx/src/app/modules/home/components/widget/config/basic/basic-widget-config.module.ts +++ b/ui-ngx/src/app/modules/home/components/widget/config/basic/basic-widget-config.module.ts @@ -67,6 +67,9 @@ import { import { ValueChartCardBasicConfigComponent } from '@home/components/widget/config/basic/cards/value-chart-card-basic-config.component'; +import { + ProgressBarBasicConfigComponent +} from '@home/components/widget/config/basic/cards/progress-bar-basic-config.component'; @NgModule({ declarations: [ @@ -87,7 +90,8 @@ import { BatteryLevelBasicConfigComponent, WindSpeedDirectionBasicConfigComponent, SignalStrengthBasicConfigComponent, - ValueChartCardBasicConfigComponent + ValueChartCardBasicConfigComponent, + ProgressBarBasicConfigComponent ], imports: [ CommonModule, @@ -112,7 +116,8 @@ import { BatteryLevelBasicConfigComponent, WindSpeedDirectionBasicConfigComponent, SignalStrengthBasicConfigComponent, - ValueChartCardBasicConfigComponent + ValueChartCardBasicConfigComponent, + ProgressBarBasicConfigComponent ] }) export class BasicWidgetConfigModule { @@ -131,5 +136,6 @@ export const basicWidgetConfigComponentsMap: {[key: string]: Type + + + + + +
+
widget-config.appearance
+ + + {{ progressBarLayoutTranslationMap.get(layout) | translate }} + + +
+ + {{ 'widgets.progress-bar.auto-scale' | translate }} + +
+
+ + {{ 'widget-config.title' | translate }} + +
+ + + + + + + +
+
+
+ + {{ 'widgets.progress-bar.icon' | translate }} + +
+ + + + + + + + +
+
+
+ + {{ 'widgets.progress-bar.value' | translate }} + +
+ + + +
widget-config.decimals-suffix
+
+ + + + +
+
+
+
{{ 'widgets.progress-bar.range' | translate }}
+
+
widgets.progress-bar.min
+ + + +
widgets.progress-bar.max
+ + + +
+
+
+ + {{ 'widgets.progress-bar.range-ticks' | translate }} + +
+ + + + +
+
+
+
+
widgets.progress-bar.bar
+
+
{{ 'widgets.progress-bar.bar-color' | translate }}
+ + +
+
+
{{ 'widgets.progress-bar.bar-background' | translate }}
+ + +
+
+
+
widget-config.card-appearance
+
+
{{ 'widgets.background.background' | translate }}
+ + +
+
+
widget-config.show-card-buttons
+ + {{ 'fullscreen.fullscreen' | translate }} + +
+
+
{{ 'widget-config.card-border-radius' | translate }}
+ + + +
+
+ + +
diff --git a/ui-ngx/src/app/modules/home/components/widget/config/basic/cards/progress-bar-basic-config.component.ts b/ui-ngx/src/app/modules/home/components/widget/config/basic/cards/progress-bar-basic-config.component.ts new file mode 100644 index 0000000000..ef54d64861 --- /dev/null +++ b/ui-ngx/src/app/modules/home/components/widget/config/basic/cards/progress-bar-basic-config.component.ts @@ -0,0 +1,262 @@ +/// +/// Copyright © 2016-2023 The Thingsboard Authors +/// +/// Licensed under the Apache License, Version 2.0 (the "License"); +/// you may not use this file except in compliance with the License. +/// You may obtain a copy of the License at +/// +/// http://www.apache.org/licenses/LICENSE-2.0 +/// +/// Unless required by applicable law or agreed to in writing, software +/// distributed under the License is distributed on an "AS IS" BASIS, +/// WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. +/// See the License for the specific language governing permissions and +/// limitations under the License. +/// + +import { Component } from '@angular/core'; +import { UntypedFormBuilder, UntypedFormGroup, Validators } from '@angular/forms'; +import { Store } from '@ngrx/store'; +import { AppState } from '@core/core.state'; +import { BasicWidgetConfigComponent } from '@home/components/widget/config/widget-config.component.models'; +import { WidgetConfigComponentData } from '@home/models/widget-component.models'; +import { + datasourcesHasAggregation, + datasourcesHasOnlyComparisonAggregation, + WidgetConfig, +} from '@shared/models/widget.models'; +import { WidgetConfigComponent } from '@home/components/widget/widget-config.component'; +import { DataKeyType } from '@shared/models/telemetry/telemetry.models'; +import { + getTimewindowConfig, + setTimewindowConfig +} from '@home/components/widget/config/timewindow-config-panel.component'; +import { formatValue, isUndefined } from '@core/utils'; +import { cssSizeToStrSize, resolveCssSize } from '@shared/models/widget-settings.models'; +import { + progressBarDefaultSettings, + ProgressBarLayout, + progressBarLayoutImages, + progressBarLayouts, + progressBarLayoutTranslations, + ProgressBarWidgetSettings +} from '@home/components/widget/lib/cards/progress-bar-widget.models'; + +@Component({ + selector: 'tb-progress-bar-basic-config', + templateUrl: './progress-bar-basic-config.component.html', + styleUrls: ['../basic-config.scss'] +}) +export class ProgressBarBasicConfigComponent extends BasicWidgetConfigComponent { + + public get displayTimewindowConfig(): boolean { + const datasources = this.progressBarWidgetConfigForm.get('datasources').value; + return datasourcesHasAggregation(datasources); + } + + public onlyHistoryTimewindow(): boolean { + const datasources = this.progressBarWidgetConfigForm.get('datasources').value; + return datasourcesHasOnlyComparisonAggregation(datasources); + } + + progressBarLayout = ProgressBarLayout; + + progressBarLayouts = progressBarLayouts; + + progressBarLayoutTranslationMap = progressBarLayoutTranslations; + progressBarLayoutImageMap = progressBarLayoutImages; + + progressBarWidgetConfigForm: UntypedFormGroup; + + valuePreviewFn = this._valuePreviewFn.bind(this); + + constructor(protected store: Store, + protected widgetConfigComponent: WidgetConfigComponent, + private fb: UntypedFormBuilder) { + super(store, widgetConfigComponent); + } + + protected configForm(): UntypedFormGroup { + return this.progressBarWidgetConfigForm; + } + + protected setupDefaults(configData: WidgetConfigComponentData) { + this.setupDefaultDatasource(configData, [{ name: 'humidity', label: 'humidity', type: DataKeyType.timeseries }]); + } + + protected onConfigSet(configData: WidgetConfigComponentData) { + const settings: ProgressBarWidgetSettings = {...progressBarDefaultSettings, ...(configData.config.settings || {})}; + const iconSize = resolveCssSize(configData.config.iconSize); + this.progressBarWidgetConfigForm = this.fb.group({ + timewindowConfig: [getTimewindowConfig(configData.config), []], + datasources: [configData.config.datasources, []], + + layout: [settings.layout, []], + autoScale: [settings.autoScale, []], + + showTitle: [configData.config.showTitle, []], + title: [configData.config.title, []], + titleFont: [configData.config.titleFont, []], + titleColor: [configData.config.titleColor, []], + + showIcon: [configData.config.showTitleIcon, []], + iconSize: [iconSize[0], [Validators.min(0)]], + iconSizeUnit: [iconSize[1], []], + icon: [configData.config.titleIcon, []], + iconColor: [configData.config.iconColor, []], + + showValue: [settings.showValue, []], + units: [configData.config.units, []], + decimals: [configData.config.decimals, []], + valueFont: [settings.valueFont, []], + valueColor: [settings.valueColor, []], + + tickMin: [settings.tickMin, []], + tickMax: [settings.tickMax, []], + + showTicks: [settings.showTicks, []], + ticksFont: [settings.ticksFont, []], + ticksColor: [settings.ticksColor, []], + + barColor: [settings.barColor, []], + barBackground: [settings.barBackground, []], + + background: [settings.background, []], + + cardButtons: [this.getCardButtons(configData.config), []], + borderRadius: [configData.config.borderRadius, []], + + actions: [configData.config.actions || {}, []] + }); + } + + protected prepareOutputConfig(config: any): WidgetConfigComponentData { + setTimewindowConfig(this.widgetConfig.config, config.timewindowConfig); + this.widgetConfig.config.datasources = config.datasources; + + this.widgetConfig.config.showTitle = config.showTitle; + this.widgetConfig.config.title = config.title; + this.widgetConfig.config.titleFont = config.titleFont; + this.widgetConfig.config.titleColor = config.titleColor; + + this.widgetConfig.config.showTitleIcon = config.showIcon; + this.widgetConfig.config.iconSize = cssSizeToStrSize(config.iconSize, config.iconSizeUnit); + this.widgetConfig.config.titleIcon = config.icon; + this.widgetConfig.config.iconColor = config.iconColor; + + this.widgetConfig.config.settings = this.widgetConfig.config.settings || {}; + + this.widgetConfig.config.settings.layout = config.layout; + this.widgetConfig.config.settings.autoScale = config.autoScale; + + this.widgetConfig.config.settings.showValue = config.showValue; + this.widgetConfig.config.units = config.units; + this.widgetConfig.config.decimals = config.decimals; + this.widgetConfig.config.settings.valueFont = config.valueFont; + this.widgetConfig.config.settings.valueColor = config.valueColor; + + this.widgetConfig.config.settings.tickMin = config.tickMin; + this.widgetConfig.config.settings.tickMax = config.tickMax; + + this.widgetConfig.config.settings.showTicks = config.showTicks; + this.widgetConfig.config.settings.ticksFont = config.ticksFont; + this.widgetConfig.config.settings.ticksColor = config.ticksColor; + + this.widgetConfig.config.settings.barColor = config.barColor; + this.widgetConfig.config.settings.barBackground = config.barBackground; + + this.widgetConfig.config.settings.background = config.background; + + this.setCardButtons(config.cardButtons, this.widgetConfig.config); + this.widgetConfig.config.borderRadius = config.borderRadius; + + this.widgetConfig.config.actions = config.actions; + return this.widgetConfig; + } + + protected validatorTriggers(): string[] { + return ['showTitle', 'showIcon', 'showValue', 'showTicks', 'layout']; + } + + protected updateValidators(emitEvent: boolean, trigger?: string) { + const showTitle: boolean = this.progressBarWidgetConfigForm.get('showTitle').value; + const showIcon: boolean = this.progressBarWidgetConfigForm.get('showIcon').value; + const showValue: boolean = this.progressBarWidgetConfigForm.get('showValue').value; + const showTicks: boolean = this.progressBarWidgetConfigForm.get('showTicks').value; + const layout: ProgressBarLayout = this.progressBarWidgetConfigForm.get('layout').value; + + const ticksEnabled = layout === ProgressBarLayout.default; + + if (showTitle) { + this.progressBarWidgetConfigForm.get('title').enable(); + this.progressBarWidgetConfigForm.get('titleFont').enable(); + this.progressBarWidgetConfigForm.get('titleColor').enable(); + this.progressBarWidgetConfigForm.get('showIcon').enable({emitEvent: false}); + if (showIcon) { + this.progressBarWidgetConfigForm.get('iconSize').enable(); + this.progressBarWidgetConfigForm.get('iconSizeUnit').enable(); + this.progressBarWidgetConfigForm.get('icon').enable(); + this.progressBarWidgetConfigForm.get('iconColor').enable(); + } else { + this.progressBarWidgetConfigForm.get('iconSize').disable(); + this.progressBarWidgetConfigForm.get('iconSizeUnit').disable(); + this.progressBarWidgetConfigForm.get('icon').disable(); + this.progressBarWidgetConfigForm.get('iconColor').disable(); + } + } else { + this.progressBarWidgetConfigForm.get('title').disable(); + this.progressBarWidgetConfigForm.get('titleFont').disable(); + this.progressBarWidgetConfigForm.get('titleColor').disable(); + this.progressBarWidgetConfigForm.get('showIcon').disable({emitEvent: false}); + this.progressBarWidgetConfigForm.get('iconSize').disable(); + this.progressBarWidgetConfigForm.get('iconSizeUnit').disable(); + this.progressBarWidgetConfigForm.get('icon').disable(); + this.progressBarWidgetConfigForm.get('iconColor').disable(); + } + + if (showValue) { + this.progressBarWidgetConfigForm.get('units').enable(); + this.progressBarWidgetConfigForm.get('decimals').enable(); + this.progressBarWidgetConfigForm.get('valueFont').enable(); + this.progressBarWidgetConfigForm.get('valueColor').enable(); + } else { + this.progressBarWidgetConfigForm.get('units').disable(); + this.progressBarWidgetConfigForm.get('decimals').disable(); + this.progressBarWidgetConfigForm.get('valueFont').disable(); + this.progressBarWidgetConfigForm.get('valueColor').disable(); + } + + if (ticksEnabled) { + this.progressBarWidgetConfigForm.get('showTicks').enable({emitEvent: false}); + if (showTicks) { + this.progressBarWidgetConfigForm.get('ticksFont').enable(); + this.progressBarWidgetConfigForm.get('ticksColor').enable(); + } else { + this.progressBarWidgetConfigForm.get('ticksFont').disable(); + this.progressBarWidgetConfigForm.get('ticksColor').disable(); + } + } else { + this.progressBarWidgetConfigForm.get('showTicks').disable({emitEvent: false}); + this.progressBarWidgetConfigForm.get('ticksFont').disable(); + this.progressBarWidgetConfigForm.get('ticksColor').disable(); + } + } + + private getCardButtons(config: WidgetConfig): string[] { + const buttons: string[] = []; + if (isUndefined(config.enableFullscreen) || config.enableFullscreen) { + buttons.push('fullscreen'); + } + return buttons; + } + + private setCardButtons(buttons: string[], config: WidgetConfig) { + config.enableFullscreen = buttons.includes('fullscreen'); + } + + private _valuePreviewFn(): string { + const units: string = this.widgetConfig.config.units; + const decimals: number = this.widgetConfig.config.decimals; + return formatValue(78, decimals, units, true); + } +} diff --git a/ui-ngx/src/app/modules/home/components/widget/lib/cards/progress-bar-widget.component.html b/ui-ngx/src/app/modules/home/components/widget/lib/cards/progress-bar-widget.component.html new file mode 100644 index 0000000000..3f788aaf82 --- /dev/null +++ b/ui-ngx/src/app/modules/home/components/widget/lib/cards/progress-bar-widget.component.html @@ -0,0 +1,42 @@ + +
+
+
+ + + +
+
+ + + +
{{ valueText }}
+
+
+
+
+
+
+
{{ settings.tickMin }}
+
{{ settings.tickMax }}
+
+
+
+
+
diff --git a/ui-ngx/src/app/modules/home/components/widget/lib/cards/progress-bar-widget.component.scss b/ui-ngx/src/app/modules/home/components/widget/lib/cards/progress-bar-widget.component.scss new file mode 100644 index 0000000000..7f83997987 --- /dev/null +++ b/ui-ngx/src/app/modules/home/components/widget/lib/cards/progress-bar-widget.component.scss @@ -0,0 +1,84 @@ +/** + * Copyright © 2016-2023 The Thingsboard Authors + * + * Licensed under the Apache License, Version 2.0 (the "License"); + * you may not use this file except in compliance with the License. + * You may obtain a copy of the License at + * + * http://www.apache.org/licenses/LICENSE-2.0 + * + * Unless required by applicable law or agreed to in writing, software + * distributed under the License is distributed on an "AS IS" BASIS, + * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. + * See the License for the specific language governing permissions and + * limitations under the License. + */ +.tb-progress-bar-panel { + width: 100%; + height: 100%; + position: relative; + display: flex; + flex-direction: column; + align-items: center; + justify-content: center; + padding: 20px 24px 24px 24px; + > div:not(.tb-progress-bar-overlay) { + z-index: 1; + } + .tb-progress-bar-overlay { + position: absolute; + top: 12px; + left: 12px; + bottom: 12px; + right: 12px; + } + div.tb-widget-title { + padding: 0; + } + .tb-progress-bar-container { + width: 100%; + height: 100%; + position: relative; + display: flex; + flex-direction: column; + justify-content: space-between; + align-items: flex-start; + &.simplified { + justify-content: center; + } + } + .tb-progress-bar-content { + display: flex; + flex-direction: column; + align-self: stretch; + gap: 4px; + .tb-progress-bar-title-value-row { + display: flex; + flex-direction: row; + justify-content: space-between; + &.flex-end { + justify-content: flex-end; + } + .tb-progress-bar-value { + white-space: nowrap; + } + } + .tb-progress-bar { + display: flex; + flex-direction: column; + .tb-progress-bar-background { + border-radius: 12px; + .tb-progress-bar-progress { + height: 5px; + border-radius: 8px; + transition: background-color .2s, width .2s; + } + } + .tb-progress-bar-ticks { + display: flex; + flex-direction: row; + justify-content: space-between; + } + } + } +} diff --git a/ui-ngx/src/app/modules/home/components/widget/lib/cards/progress-bar-widget.component.ts b/ui-ngx/src/app/modules/home/components/widget/lib/cards/progress-bar-widget.component.ts new file mode 100644 index 0000000000..fe1ac58ab4 --- /dev/null +++ b/ui-ngx/src/app/modules/home/components/widget/lib/cards/progress-bar-widget.component.ts @@ -0,0 +1,221 @@ +/// +/// Copyright © 2016-2023 The Thingsboard Authors +/// +/// Licensed under the Apache License, Version 2.0 (the "License"); +/// you may not use this file except in compliance with the License. +/// You may obtain a copy of the License at +/// +/// http://www.apache.org/licenses/LICENSE-2.0 +/// +/// Unless required by applicable law or agreed to in writing, software +/// distributed under the License is distributed on an "AS IS" BASIS, +/// WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. +/// See the License for the specific language governing permissions and +/// limitations under the License. +/// + +import { + AfterViewInit, + ChangeDetectorRef, + Component, + ElementRef, + Input, + OnDestroy, + OnInit, + Renderer2, + TemplateRef, + ViewChild, + ViewEncapsulation +} from '@angular/core'; +import { WidgetContext } from '@home/models/widget-component.models'; +import { formatValue, isDefinedAndNotNull, isNumeric } from '@core/utils'; +import { DatePipe } from '@angular/common'; +import { + backgroundStyle, + ColorProcessor, + ComponentStyle, + getDataKey, + getSingleTsValue, + overlayStyle, + resolveCssSize, + textStyle +} from '@shared/models/widget-settings.models'; +import { WidgetComponent } from '@home/components/widget/widget.component'; +import { progressBarDefaultSettings, ProgressBarLayout, ProgressBarWidgetSettings } from './progress-bar-widget.models'; +import { ResizeObserver } from '@juggle/resize-observer'; + +const defaultLayoutHeight = 80; +const simplifiedLayoutHeight = 75; +const defaultAspect = defaultLayoutHeight / 150; +const simplifiedAspect = simplifiedLayoutHeight / 150; + +@Component({ + selector: 'tb-progress-bar-widget', + templateUrl: './progress-bar-widget.component.html', + styleUrls: ['./progress-bar-widget.component.scss'], + encapsulation: ViewEncapsulation.None +}) +export class ProgressBarWidgetComponent implements OnInit, OnDestroy, AfterViewInit { + + @ViewChild('progressBarPanel', {static: true}) + progressBarPanel: ElementRef; + + @ViewChild('progressBarContainer', {static: true}) + progressBarContainer: ElementRef; + + progressBarLayout = ProgressBarLayout; + + settings: ProgressBarWidgetSettings; + + @Input() + ctx: WidgetContext; + + @Input() + widgetTitlePanel: TemplateRef; + + layout: ProgressBarLayout; + + layoutClass = ''; + + showTitleValueRow = true; + titleValueRowClass = ''; + + showValue = true; + valueText = 'N/A'; + valueStyle: ComponentStyle = {}; + valueColor: ColorProcessor; + + barWidth = '0%'; + barColor: ColorProcessor; + + showTicks = true; + ticksStyle: ComponentStyle = {}; + + value: number; + + backgroundStyle: ComponentStyle = {}; + overlayStyle: ComponentStyle = {}; + + progressBarPanelResize$: ResizeObserver; + + private decimals = 0; + private units = ''; + + constructor(private date: DatePipe, + private widgetComponent: WidgetComponent, + private renderer: Renderer2, + private cd: ChangeDetectorRef) { + } + + ngOnInit(): void { + this.ctx.$scope.progressBarWidget = this; + this.settings = {...progressBarDefaultSettings, ...this.ctx.settings}; + + this.decimals = this.ctx.decimals; + this.units = this.ctx.units; + const dataKey = getDataKey(this.ctx.datasources); + if (isDefinedAndNotNull(dataKey?.decimals)) { + this.decimals = dataKey.decimals; + } + if (dataKey?.units) { + this.units = dataKey.units; + } + + this.layout = this.settings.layout; + + this.showValue = this.settings.showValue; + this.valueStyle = textStyle(this.settings.valueFont, '0.1px'); + this.valueColor = ColorProcessor.fromSettings(this.settings.valueColor); + + this.showTitleValueRow = this.showValue || + (this.layout === ProgressBarLayout.simplified && this.widgetComponent.dashboardWidget.showWidgetTitlePanel); + + this.layoutClass = (this.layout === ProgressBarLayout.simplified || !this.widgetComponent.dashboardWidget.showWidgetTitlePanel) + ? 'simplified' : ''; + + this.titleValueRowClass = (this.layout === ProgressBarLayout.simplified && + !this.widgetComponent.dashboardWidget.showWidgetTitlePanel) ? 'flex-end' : ''; + + this.barColor = ColorProcessor.fromSettings(this.settings.barColor); + + this.showTicks = this.settings.showTicks && this.layout === ProgressBarLayout.default; + if (this.showTicks) { + this.ticksStyle = textStyle(this.settings.ticksFont, '0.1px'); + this.ticksStyle.color = this.settings.ticksColor; + } + + this.backgroundStyle = backgroundStyle(this.settings.background); + this.overlayStyle = overlayStyle(this.settings.background.overlay); + } + + ngAfterViewInit() { + if (this.settings.autoScale) { + this.renderer.setStyle(this.progressBarContainer.nativeElement, 'overflow', 'visible'); + this.renderer.setStyle(this.progressBarContainer.nativeElement, 'position', 'absolute'); + this.progressBarPanelResize$ = new ResizeObserver(() => { + this.onResize(); + }); + this.progressBarPanelResize$.observe(this.progressBarPanel.nativeElement); + this.onResize(); + } + } + + ngOnDestroy() { + } + + public onInit() { + const borderRadius = this.ctx.$widgetElement.css('borderRadius'); + this.overlayStyle = {...this.overlayStyle, ...{borderRadius}}; + this.cd.detectChanges(); + } + + public onDataUpdated() { + const tsValue = getSingleTsValue(this.ctx.data); + this.value = 0; + if (tsValue && isDefinedAndNotNull(tsValue[1]) && isNumeric(tsValue[1])) { + this.value = tsValue[1]; + this.valueText = formatValue(this.value, this.decimals, this.units, true); + } else { + this.valueText = 'N/A'; + } + this.valueColor.update(this.value); + this.barColor.update(this.value); + const range = this.settings.tickMax - this.settings.tickMin; + this.barWidth = `${(this.value / range) * 100}%`; + this.cd.detectChanges(); + } + + private onResize() { + const paddingLeft = getComputedStyle(this.progressBarPanel.nativeElement).paddingLeft; + const paddingRight = getComputedStyle(this.progressBarPanel.nativeElement).paddingRight; + const paddingTop = getComputedStyle(this.progressBarPanel.nativeElement).paddingTop; + const paddingBottom = getComputedStyle(this.progressBarPanel.nativeElement).paddingBottom; + const pLeft = resolveCssSize(paddingLeft)[0]; + const pRight = resolveCssSize(paddingRight)[0]; + const pTop = resolveCssSize(paddingTop)[0]; + const pBottom = resolveCssSize(paddingBottom)[0]; + const panelWidth = this.progressBarPanel.nativeElement.getBoundingClientRect().width - (pLeft + pRight); + const panelHeight = this.progressBarPanel.nativeElement.getBoundingClientRect().height - (pTop + pBottom); + const defaultLayout = this.layout === ProgressBarLayout.default && this.widgetComponent.dashboardWidget.showWidgetTitlePanel; + let minAspect = defaultLayout ? defaultAspect : simplifiedAspect; + let layoutHeight = defaultLayout ? defaultLayoutHeight : simplifiedLayoutHeight; + if (!this.showTitleValueRow) { + minAspect -= (40 / 150); + layoutHeight -= 40; + } + if (!this.showTicks) { + minAspect -= (10 / 150); + layoutHeight -= 10; + } + const aspect = Math.min(panelHeight / panelWidth, minAspect); + const targetWidth = panelWidth; + const targetHeight = targetWidth * aspect; + const scale = targetHeight / layoutHeight; + const width = targetWidth / scale; + const height = panelHeight / scale; + this.renderer.setStyle(this.progressBarContainer.nativeElement, 'width', width + 'px'); + this.renderer.setStyle(this.progressBarContainer.nativeElement, 'height', height + 'px'); + this.renderer.setStyle(this.progressBarContainer.nativeElement, 'transform', `scale(${scale})`); + } + +} diff --git a/ui-ngx/src/app/modules/home/components/widget/lib/cards/progress-bar-widget.models.ts b/ui-ngx/src/app/modules/home/components/widget/lib/cards/progress-bar-widget.models.ts new file mode 100644 index 0000000000..d0aff79ba5 --- /dev/null +++ b/ui-ngx/src/app/modules/home/components/widget/lib/cards/progress-bar-widget.models.ts @@ -0,0 +1,98 @@ +/// +/// Copyright © 2016-2023 The Thingsboard Authors +/// +/// Licensed under the Apache License, Version 2.0 (the "License"); +/// you may not use this file except in compliance with the License. +/// You may obtain a copy of the License at +/// +/// http://www.apache.org/licenses/LICENSE-2.0 +/// +/// Unless required by applicable law or agreed to in writing, software +/// distributed under the License is distributed on an "AS IS" BASIS, +/// WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. +/// See the License for the specific language governing permissions and +/// limitations under the License. +/// + +import { + BackgroundSettings, + BackgroundType, + ColorSettings, + constantColor, + Font +} from '@shared/models/widget-settings.models'; + +export enum ProgressBarLayout { + default = 'default', + simplified = 'simplified' +} + +export const progressBarLayouts = Object.keys(ProgressBarLayout) as ProgressBarLayout[]; + +export const progressBarLayoutTranslations = new Map( + [ + [ProgressBarLayout.default, 'widgets.progress-bar.layout-default'], + [ProgressBarLayout.simplified, 'widgets.progress-bar.layout-simplified'] + ] +); + +export const progressBarLayoutImages = new Map( + [ + [ProgressBarLayout.default, 'assets/widget/progress-bar/default-layout.svg'], + [ProgressBarLayout.simplified, 'assets/widget/progress-bar/simplified-layout.svg'] + ] +); + +export interface ProgressBarWidgetSettings { + layout: ProgressBarLayout; + autoScale: boolean; + showValue: boolean; + valueFont: Font; + valueColor: ColorSettings; + showTicks: boolean; + tickMin: number; + tickMax: number; + ticksFont: Font; + ticksColor: string; + barColor: ColorSettings; + barBackground: string; + background: BackgroundSettings; +} + +export const progressBarDefaultSettings: ProgressBarWidgetSettings = { + layout: ProgressBarLayout.default, + autoScale: true, + showValue: true, + valueFont: { + family: 'Roboto', + size: 24, + sizeUnit: 'px', + style: 'normal', + weight: '500', + lineHeight: '32px' + }, + valueColor: constantColor('rgba(0, 0, 0, 0.87)'), + showTicks: true, + tickMin: 0, + tickMax: 100, + ticksFont: { + family: 'Roboto', + size: 11, + sizeUnit: 'px', + style: 'normal', + weight: '400', + lineHeight: '16px' + }, + ticksColor: 'rgba(0,0,0,0.54)', + barColor: constantColor('rgba(63, 82, 221, 1)'), + barBackground: 'rgba(0, 0, 0, 0.04)', + background: { + type: BackgroundType.color, + color: '#fff', + overlay: { + enabled: false, + color: 'rgba(255,255,255,0.72)', + blur: 3 + } + } +}; diff --git a/ui-ngx/src/app/modules/home/components/widget/lib/indicator/battery-level-widget.component.scss b/ui-ngx/src/app/modules/home/components/widget/lib/indicator/battery-level-widget.component.scss index 441391d95a..fbf244a383 100644 --- a/ui-ngx/src/app/modules/home/components/widget/lib/indicator/battery-level-widget.component.scss +++ b/ui-ngx/src/app/modules/home/components/widget/lib/indicator/battery-level-widget.component.scss @@ -20,7 +20,7 @@ display: flex; flex-direction: column; gap: 16px; - padding: 24px; + padding: 20px 24px 24px 24px; &.tb-battery-level-pointer { cursor: pointer; } @@ -34,6 +34,9 @@ bottom: 12px; right: 12px; } + div.tb-widget-title { + padding: 0; + } .tb-battery-level-content { min-height: 0; flex: 1; diff --git a/ui-ngx/src/app/modules/home/components/widget/lib/indicator/battery-level-widget.component.ts b/ui-ngx/src/app/modules/home/components/widget/lib/indicator/battery-level-widget.component.ts index 9161764223..a2793234f4 100644 --- a/ui-ngx/src/app/modules/home/components/widget/lib/indicator/battery-level-widget.component.ts +++ b/ui-ngx/src/app/modules/home/components/widget/lib/indicator/battery-level-widget.component.ts @@ -263,6 +263,7 @@ export class BatteryLevelWidgetComponent implements OnInit, OnDestroy, AfterView if (this.autoScaleValueSize) { const valueFontSize = ratios.valueFontSizeRatio * boxSize; const valueLineHeight = ratios.valueLineHeightRaio * boxSize; + this.renderer.setStyle(this.batteryLevelValue.nativeElement, 'minWidth', '0'); this.setValueFontSize(valueFontSize, valueLineHeight, boxWidth); } const fontSize = parseInt(window.getComputedStyle(this.batteryLevelValue.nativeElement).fontSize, 10) || 10; diff --git a/ui-ngx/src/app/modules/home/components/widget/lib/settings/cards/progress-bar-widget-settings.component.html b/ui-ngx/src/app/modules/home/components/widget/lib/settings/cards/progress-bar-widget-settings.component.html new file mode 100644 index 0000000000..bb7089991d --- /dev/null +++ b/ui-ngx/src/app/modules/home/components/widget/lib/settings/cards/progress-bar-widget-settings.component.html @@ -0,0 +1,94 @@ + + +
+
widgets.progress-bar.progress-bar-card-style
+ + + {{ progressBarLayoutTranslationMap.get(layout) | translate }} + + +
+ + {{ 'widgets.progress-bar.auto-scale' | translate }} + +
+
+ + {{ 'widgets.progress-bar.value' | translate }} + +
+ + + + +
+
+
+
{{ 'widgets.progress-bar.range' | translate }}
+
+
widgets.progress-bar.min
+ + + +
widgets.progress-bar.max
+ + + +
+
+
+ + {{ 'widgets.progress-bar.range-ticks' | translate }} + +
+ + + + +
+
+
+
{{ 'widgets.progress-bar.bar-color' | translate }}
+ + +
+
+
{{ 'widgets.progress-bar.bar-background' | translate }}
+ + +
+
+
{{ 'widgets.background.background' | translate }}
+ + +
+
+
diff --git a/ui-ngx/src/app/modules/home/components/widget/lib/settings/cards/progress-bar-widget-settings.component.ts b/ui-ngx/src/app/modules/home/components/widget/lib/settings/cards/progress-bar-widget-settings.component.ts new file mode 100644 index 0000000000..b56d8bff3b --- /dev/null +++ b/ui-ngx/src/app/modules/home/components/widget/lib/settings/cards/progress-bar-widget-settings.component.ts @@ -0,0 +1,133 @@ +/// +/// Copyright © 2016-2023 The Thingsboard Authors +/// +/// Licensed under the Apache License, Version 2.0 (the "License"); +/// you may not use this file except in compliance with the License. +/// You may obtain a copy of the License at +/// +/// http://www.apache.org/licenses/LICENSE-2.0 +/// +/// Unless required by applicable law or agreed to in writing, software +/// distributed under the License is distributed on an "AS IS" BASIS, +/// WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. +/// See the License for the specific language governing permissions and +/// limitations under the License. +/// + +import { Component, Injector } from '@angular/core'; +import { WidgetSettings, WidgetSettingsComponent } from '@shared/models/widget.models'; +import { UntypedFormBuilder, UntypedFormGroup } from '@angular/forms'; +import { Store } from '@ngrx/store'; +import { AppState } from '@core/core.state'; +import { formatValue } from '@core/utils'; +import { + progressBarDefaultSettings, + ProgressBarLayout, + progressBarLayoutImages, + progressBarLayouts, + progressBarLayoutTranslations +} from '@home/components/widget/lib/cards/progress-bar-widget.models'; + +@Component({ + selector: 'tb-progress-bar-widget-settings', + templateUrl: './progress-bar-widget-settings.component.html', + styleUrls: [] +}) +export class ProgressBarWidgetSettingsComponent extends WidgetSettingsComponent { + + progressBarLayout = ProgressBarLayout; + + progressBarLayouts = progressBarLayouts; + + progressBarLayoutTranslationMap = progressBarLayoutTranslations; + progressBarLayoutImageMap = progressBarLayoutImages; + + progressBarWidgetSettingsForm: UntypedFormGroup; + + valuePreviewFn = this._valuePreviewFn.bind(this); + + constructor(protected store: Store, + private $injector: Injector, + private fb: UntypedFormBuilder) { + super(store); + } + + protected settingsForm(): UntypedFormGroup { + return this.progressBarWidgetSettingsForm; + } + + protected defaultSettings(): WidgetSettings { + return {...progressBarDefaultSettings}; + } + + protected onSettingsSet(settings: WidgetSettings) { + this.progressBarWidgetSettingsForm = this.fb.group({ + layout: [settings.layout, []], + autoScale: [settings.autoScale, []], + + showValue: [settings.showValue, []], + valueFont: [settings.valueFont, []], + valueColor: [settings.valueColor, []], + + tickMin: [settings.tickMin, []], + tickMax: [settings.tickMax, []], + + showTicks: [settings.showTicks, []], + ticksFont: [settings.ticksFont, []], + ticksColor: [settings.ticksColor, []], + + barColor: [settings.barColor, []], + barBackground: [settings.barBackground, []], + + background: [settings.background, []] + }); + } + + protected validatorTriggers(): string[] { + return ['showValue', 'showTicks', 'layout']; + } + + protected updateValidators(emitEvent: boolean) { + const showValue: boolean = this.progressBarWidgetSettingsForm.get('showValue').value; + const showTicks: boolean = this.progressBarWidgetSettingsForm.get('showTicks').value; + const layout: ProgressBarLayout = this.progressBarWidgetSettingsForm.get('layout').value; + + const ticksEnabled = layout === ProgressBarLayout.default; + + if (showValue) { + this.progressBarWidgetSettingsForm.get('valueFont').enable(); + this.progressBarWidgetSettingsForm.get('valueColor').enable(); + } else { + this.progressBarWidgetSettingsForm.get('valueFont').disable(); + this.progressBarWidgetSettingsForm.get('valueColor').disable(); + } + + if (ticksEnabled) { + this.progressBarWidgetSettingsForm.get('showTicks').enable({emitEvent: false}); + if (showTicks) { + this.progressBarWidgetSettingsForm.get('ticksFont').enable(); + this.progressBarWidgetSettingsForm.get('ticksColor').enable(); + } else { + this.progressBarWidgetSettingsForm.get('ticksFont').disable(); + this.progressBarWidgetSettingsForm.get('ticksColor').disable(); + } + } else { + this.progressBarWidgetSettingsForm.get('showTicks').disable({emitEvent: false}); + this.progressBarWidgetSettingsForm.get('ticksFont').disable(); + this.progressBarWidgetSettingsForm.get('ticksColor').disable(); + } + + this.progressBarWidgetSettingsForm.get('valueFont').updateValueAndValidity({emitEvent}); + this.progressBarWidgetSettingsForm.get('valueColor').updateValueAndValidity({emitEvent}); + this.progressBarWidgetSettingsForm.get('showTicks').updateValueAndValidity({emitEvent: false}); + this.progressBarWidgetSettingsForm.get('ticksFont').updateValueAndValidity({emitEvent}); + this.progressBarWidgetSettingsForm.get('ticksColor').updateValueAndValidity({emitEvent}); + } + + private _valuePreviewFn(): string { + const units: string = this.widgetConfig.config.units; + const decimals: number = this.widgetConfig.config.decimals; + return formatValue(78, decimals, units, true); + } + +} diff --git a/ui-ngx/src/app/modules/home/components/widget/lib/settings/widget-settings.module.ts b/ui-ngx/src/app/modules/home/components/widget/lib/settings/widget-settings.module.ts index c4d2a1edc5..33b4323fdf 100644 --- a/ui-ngx/src/app/modules/home/components/widget/lib/settings/widget-settings.module.ts +++ b/ui-ngx/src/app/modules/home/components/widget/lib/settings/widget-settings.module.ts @@ -297,6 +297,9 @@ import { import { ValueChartCardWidgetSettingsComponent } from '@home/components/widget/lib/settings/cards/value-chart-card-widget-settings.component'; +import { + ProgressBarWidgetSettingsComponent +} from '@home/components/widget/lib/settings/cards/progress-bar-widget-settings.component'; @NgModule({ declarations: [ @@ -406,7 +409,8 @@ import { BatteryLevelWidgetSettingsComponent, WindSpeedDirectionWidgetSettingsComponent, SignalStrengthWidgetSettingsComponent, - ValueChartCardWidgetSettingsComponent + ValueChartCardWidgetSettingsComponent, + ProgressBarWidgetSettingsComponent ], imports: [ CommonModule, @@ -521,7 +525,8 @@ import { BatteryLevelWidgetSettingsComponent, WindSpeedDirectionWidgetSettingsComponent, SignalStrengthWidgetSettingsComponent, - ValueChartCardWidgetSettingsComponent + ValueChartCardWidgetSettingsComponent, + ProgressBarWidgetSettingsComponent ] }) export class WidgetSettingsModule { @@ -601,5 +606,6 @@ export const widgetSettingsComponentsMap: {[key: string]: Type + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + diff --git a/ui-ngx/src/assets/widget/progress-bar/simplified-layout.svg b/ui-ngx/src/assets/widget/progress-bar/simplified-layout.svg new file mode 100644 index 0000000000..2e5f60f77c --- /dev/null +++ b/ui-ngx/src/assets/widget/progress-bar/simplified-layout.svg @@ -0,0 +1,36 @@ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + diff --git a/ui-ngx/src/form.scss b/ui-ngx/src/form.scss index 82794cbbc5..93272af3ca 100644 --- a/ui-ngx/src/form.scss +++ b/ui-ngx/src/form.scss @@ -225,6 +225,13 @@ margin-left: 12px; } } + .tb-small-label { + height: 40px; + font-size: 14px; + line-height: 40px; + letter-spacing: 0.2px; + color: rgba(0, 0, 0, 0.38); + } } .tb-form-row:not(.tb-standard-fields) .mat-mdc-form-field:not(.tb-not-inline-field), .mat-mdc-form-field.tb-inline-field { From 6701ef46f533e5a9632d40542caf7f4fce1dd768 Mon Sep 17 00:00:00 2001 From: ShvaykaD Date: Wed, 18 Oct 2023 11:00:20 +0300 Subject: [PATCH 06/29] fixed upgrade script for rule nodes --- .../update/DefaultDataUpdateService.java | 101 ++++++++++-------- .../server/dao/rule/RuleChainService.java | 4 + .../server/dao/rule/BaseRuleChainService.java | 18 ++++ .../server/dao/rule/RuleNodeDao.java | 5 + .../server/dao/sql/rule/JpaRuleNodeDao.java | 16 +++ .../dao/sql/rule/RuleNodeRepository.java | 5 + .../dao/sql/rule/JpaRuleNodeDaoTest.java | 39 ++++++- 7 files changed, 140 insertions(+), 48 deletions(-) diff --git a/application/src/main/java/org/thingsboard/server/service/install/update/DefaultDataUpdateService.java b/application/src/main/java/org/thingsboard/server/service/install/update/DefaultDataUpdateService.java index 8c3b78040b..d16b8c362b 100644 --- a/application/src/main/java/org/thingsboard/server/service/install/update/DefaultDataUpdateService.java +++ b/application/src/main/java/org/thingsboard/server/service/install/update/DefaultDataUpdateService.java @@ -17,7 +17,7 @@ package org.thingsboard.server.service.install.update; import com.fasterxml.jackson.databind.JsonNode; import com.fasterxml.jackson.databind.node.ObjectNode; -import com.google.common.collect.Iterables; +import com.google.common.collect.Lists; import com.google.common.util.concurrent.Futures; import com.google.common.util.concurrent.ListenableFuture; import com.google.common.util.concurrent.MoreExecutors; @@ -84,6 +84,7 @@ import org.thingsboard.server.dao.tenant.TenantProfileService; import org.thingsboard.server.dao.tenant.TenantService; import org.thingsboard.server.dao.timeseries.TimeseriesService; import org.thingsboard.server.service.component.ComponentDiscoveryService; +import org.thingsboard.server.service.component.RuleNodeClassInfo; import org.thingsboard.server.service.install.InstallScripts; import org.thingsboard.server.service.install.SystemDataLoaderService; @@ -102,7 +103,8 @@ import static org.thingsboard.server.common.data.StringUtils.isBlank; @Slf4j public class DefaultDataUpdateService implements DataUpdateService { - private static final int MAX_PENDING_SAVE_RULE_NODE_FUTURES = 100; + private static final int MAX_PENDING_SAVE_RULE_NODE_FUTURES = 256; + private static final int DEFAULT_PAGE_SIZE = 1024; @Autowired private TenantService tenantService; @@ -231,67 +233,77 @@ public class DefaultDataUpdateService implements DataUpdateService { @Override public void upgradeRuleNodes() { try { - var futures = new ArrayList>(100); int totalRuleNodesUpgraded = 0; log.info("Starting rule nodes upgrade ..."); var nodeClassToVersionMap = componentDiscoveryService.getVersionedNodes(); log.debug("Found {} versioned nodes to check for upgrade!", nodeClassToVersionMap.size()); for (var ruleNodeClassInfo : nodeClassToVersionMap) { - var ruleNodeType = ruleNodeClassInfo.getClassName(); var ruleNodeTypeForLogs = ruleNodeClassInfo.getSimpleName(); var toVersion = ruleNodeClassInfo.getCurrentVersion(); log.debug("Going to check for nodes with type: {} to upgrade to version: {}.", ruleNodeTypeForLogs, toVersion); - var ruleNodesToUpdate = new PageDataIterable<>( - pageLink -> ruleChainService.findAllRuleNodesByTypeAndVersionLessThan(ruleNodeType, toVersion, pageLink), 1024 - ); - if (Iterables.isEmpty(ruleNodesToUpdate)) { - log.debug("There are no active nodes with type: {}, or all nodes with this type already set to latest version!", ruleNodeTypeForLogs); - } else { - for (var ruleNode : ruleNodesToUpdate) { - var ruleNodeId = ruleNode.getId(); - var oldConfiguration = ruleNode.getConfiguration(); - int fromVersion = ruleNode.getConfigurationVersion(); - log.debug("Going to upgrade rule node with id: {} type: {} fromVersion: {} toVersion: {}", - ruleNodeId, ruleNodeTypeForLogs, fromVersion, toVersion); - try { - var tbVersionedNode = (TbNode) ruleNodeClassInfo.getClazz().getDeclaredConstructor().newInstance(); - TbPair upgradeRuleNodeConfigurationResult = tbVersionedNode.upgrade(fromVersion, oldConfiguration); - if (upgradeRuleNodeConfigurationResult.getFirst()) { - ruleNode.setConfiguration(upgradeRuleNodeConfigurationResult.getSecond()); - } - ruleNode.setConfigurationVersion(toVersion); - futures.add(jpaExecutorService.submit(() -> { - ruleChainService.saveRuleNode(TenantId.SYS_TENANT_ID, ruleNode); - log.debug("Successfully upgrade rule node with id: {} type: {} fromVersion: {} toVersion: {}", - ruleNodeId, ruleNodeTypeForLogs, fromVersion, toVersion); - })); - if (futures.size() >= MAX_PENDING_SAVE_RULE_NODE_FUTURES) { - log.info("{} upgraded rule nodes so far ...", - totalRuleNodesUpgraded += awaitFuturesToCompleteAndGetCount(futures)); - futures.clear(); - } - } catch (Exception e) { - log.warn("Failed to upgrade rule node with id: {} type: {} fromVersion: {} toVersion: {} due to: ", - ruleNodeId, ruleNodeTypeForLogs, fromVersion, toVersion, e); - } - } + var ruleNodesIdsToUpgrade = getRuleNodesIdsWithTypeAndVersionLessThan(ruleNodeClassInfo.getClassName(), toVersion); + if (ruleNodesIdsToUpgrade.isEmpty()) { + log.debug("There are no active nodes with type {}, or all nodes with this type already set to latest version!", ruleNodeTypeForLogs); + continue; + } + var ruleNodeIdsPartitions = Lists.partition(ruleNodesIdsToUpgrade, MAX_PENDING_SAVE_RULE_NODE_FUTURES); + for (var ruleNodePack : ruleNodeIdsPartitions) { + totalRuleNodesUpgraded += processRuleNodePack(ruleNodePack, ruleNodeClassInfo); + log.info("{} upgraded rule nodes so far ...", totalRuleNodesUpgraded); } } - log.info("Finished rule nodes upgrade. Upgraded rule nodes count: {}", - totalRuleNodesUpgraded + awaitFuturesToCompleteAndGetCount(futures)); + log.info("Finished rule nodes upgrade. Upgraded rule nodes count: {}", totalRuleNodesUpgraded); } catch (Exception e) { log.error("Unexpected error during rule nodes upgrade: ", e); } } - private int awaitFuturesToCompleteAndGetCount(List> futures) { + private int processRuleNodePack(List ruleNodeIdsBatch, RuleNodeClassInfo ruleNodeClassInfo) { + var saveFutures = new ArrayList>(MAX_PENDING_SAVE_RULE_NODE_FUTURES); + String ruleNodeType = ruleNodeClassInfo.getSimpleName(); + int toVersion = ruleNodeClassInfo.getCurrentVersion(); + var ruleNodesPack = ruleChainService.findAllRuleNodesByIds(ruleNodeIdsBatch); + for (var ruleNode : ruleNodesPack) { + if (ruleNode == null) { + continue; + } + var ruleNodeId = ruleNode.getId(); + var oldConfiguration = ruleNode.getConfiguration(); + int fromVersion = ruleNode.getConfigurationVersion(); + log.debug("Going to upgrade rule node with id: {} type: {} fromVersion: {} toVersion: {}", + ruleNodeId, ruleNodeType, fromVersion, toVersion); + try { + var tbVersionedNode = (TbNode) ruleNodeClassInfo.getClazz().getDeclaredConstructor().newInstance(); + TbPair upgradeRuleNodeConfigurationResult = tbVersionedNode.upgrade(fromVersion, oldConfiguration); + if (upgradeRuleNodeConfigurationResult.getFirst()) { + ruleNode.setConfiguration(upgradeRuleNodeConfigurationResult.getSecond()); + } + ruleNode.setConfigurationVersion(toVersion); + saveFutures.add(jpaExecutorService.submit(() -> { + ruleChainService.saveRuleNode(TenantId.SYS_TENANT_ID, ruleNode); + log.debug("Successfully upgrade rule node with id: {} type: {} fromVersion: {} toVersion: {}", + ruleNodeId, ruleNodeType, fromVersion, toVersion); + })); + } catch (Exception e) { + log.warn("Failed to upgrade rule node with id: {} type: {} fromVersion: {} toVersion: {} due to: ", + ruleNodeId, ruleNodeType, fromVersion, toVersion, e); + } + } try { - return Futures.allAsList(futures).get().size(); + return Futures.allAsList(saveFutures).get().size(); } catch (ExecutionException | InterruptedException e) { throw new RuntimeException("Failed to process save rule nodes requests due to: ", e); } } + private List getRuleNodesIdsWithTypeAndVersionLessThan(String type, int toVersion) { + var ruleNodeIds = new ArrayList(); + new PageDataIterable<>(pageLink -> + ruleChainService.findAllRuleNodeIdsByTypeAndVersionLessThan(type, toVersion, pageLink), DEFAULT_PAGE_SIZE + ).forEach(ruleNodeIds::add); + return ruleNodeIds; + } + private final PaginatedUpdater deviceProfileEntityDynamicConditionsUpdater = new PaginatedUpdater<>() { @@ -373,12 +385,11 @@ public class DefaultDataUpdateService implements DataUpdateService { private void updateNestedRuleChains() { try { - var packSize = 1024; var updated = 0; boolean hasNext = true; while (hasNext) { - List relations = relationService.findRuleNodeToRuleChainRelations(TenantId.SYS_TENANT_ID, RuleChainType.CORE, packSize); - hasNext = relations.size() == packSize; + List relations = relationService.findRuleNodeToRuleChainRelations(TenantId.SYS_TENANT_ID, RuleChainType.CORE, DEFAULT_PAGE_SIZE); + hasNext = relations.size() == DEFAULT_PAGE_SIZE; for (EntityRelation relation : relations) { try { RuleNodeId sourceNodeId = new RuleNodeId(relation.getFrom().getId()); diff --git a/common/dao-api/src/main/java/org/thingsboard/server/dao/rule/RuleChainService.java b/common/dao-api/src/main/java/org/thingsboard/server/dao/rule/RuleChainService.java index 95cdc0e02d..532da4ac00 100644 --- a/common/dao-api/src/main/java/org/thingsboard/server/dao/rule/RuleChainService.java +++ b/common/dao-api/src/main/java/org/thingsboard/server/dao/rule/RuleChainService.java @@ -102,6 +102,10 @@ public interface RuleChainService extends EntityDaoService { PageData findAllRuleNodesByTypeAndVersionLessThan(String type, int version, PageLink pageLink); + PageData findAllRuleNodeIdsByTypeAndVersionLessThan(String type, int version, PageLink pageLink); + + List findAllRuleNodesByIds(List ruleNodeIds); + RuleNode saveRuleNode(TenantId tenantId, RuleNode ruleNode); void deleteRuleNodes(TenantId tenantId, RuleChainId ruleChainId); diff --git a/dao/src/main/java/org/thingsboard/server/dao/rule/BaseRuleChainService.java b/dao/src/main/java/org/thingsboard/server/dao/rule/BaseRuleChainService.java index 5e6b1e8009..956e4b83f6 100644 --- a/dao/src/main/java/org/thingsboard/server/dao/rule/BaseRuleChainService.java +++ b/dao/src/main/java/org/thingsboard/server/dao/rule/BaseRuleChainService.java @@ -78,6 +78,7 @@ import java.util.stream.Collectors; import static org.thingsboard.server.common.data.DataConstants.TENANT; import static org.thingsboard.server.dao.service.Validator.validateId; +import static org.thingsboard.server.dao.service.Validator.validateIds; import static org.thingsboard.server.dao.service.Validator.validatePageLink; import static org.thingsboard.server.dao.service.Validator.validatePositiveNumber; import static org.thingsboard.server.dao.service.Validator.validateString; @@ -726,6 +727,23 @@ public class BaseRuleChainService extends AbstractEntityService implements RuleC return ruleNodeDao.findAllRuleNodesByTypeAndVersionLessThan(type, version, pageLink); } + @Override + public PageData findAllRuleNodeIdsByTypeAndVersionLessThan(String type, int version, PageLink pageLink) { + log.trace("Executing findAllRuleNodeIdsByTypeAndVersionLessThan, type {}, pageLink {}, version {}", type, pageLink, version); + validateString(type, "Incorrect type of the rule node"); + validatePositiveNumber(version, "Incorrect version to compare with. Version should be greater than 0!"); + validatePageLink(pageLink); + return ruleNodeDao.findAllRuleNodeIdsByTypeAndVersionLessThan(type, version, pageLink); + } + + @Override + public List findAllRuleNodesByIds(List ruleNodeIds) { + log.trace("Executing findAllRuleNodesByIds, ruleNodeIds {}", ruleNodeIds); + validateIds(ruleNodeIds, "Incorrect ruleNodeIds " + ruleNodeIds); + assert ruleNodeIds.size() <= 1024; + return ruleNodeDao.findAllRuleNodeByIds(ruleNodeIds); + } + @Override public RuleNode saveRuleNode(TenantId tenantId, RuleNode ruleNode) { return ruleNodeDao.save(tenantId, ruleNode); diff --git a/dao/src/main/java/org/thingsboard/server/dao/rule/RuleNodeDao.java b/dao/src/main/java/org/thingsboard/server/dao/rule/RuleNodeDao.java index cd8fbb0a3c..b6f2dd097e 100644 --- a/dao/src/main/java/org/thingsboard/server/dao/rule/RuleNodeDao.java +++ b/dao/src/main/java/org/thingsboard/server/dao/rule/RuleNodeDao.java @@ -36,7 +36,12 @@ public interface RuleNodeDao extends Dao { PageData findAllRuleNodesByTypeAndVersionLessThan(String type, int version, PageLink pageLink); + PageData findAllRuleNodeIdsByTypeAndVersionLessThan(String type, int version, PageLink pageLink); + + List findAllRuleNodeByIds(List ruleNodeIds); + List findByExternalIds(RuleChainId ruleChainId, List externalIds); void deleteByIdIn(List ruleNodeIds); + } diff --git a/dao/src/main/java/org/thingsboard/server/dao/sql/rule/JpaRuleNodeDao.java b/dao/src/main/java/org/thingsboard/server/dao/sql/rule/JpaRuleNodeDao.java index 827b73a0c1..de5ff109d3 100644 --- a/dao/src/main/java/org/thingsboard/server/dao/sql/rule/JpaRuleNodeDao.java +++ b/dao/src/main/java/org/thingsboard/server/dao/sql/rule/JpaRuleNodeDao.java @@ -79,6 +79,22 @@ public class JpaRuleNodeDao extends JpaAbstractDao imp DaoUtil.toPageable(pageLink))); } + @Override + public PageData findAllRuleNodeIdsByTypeAndVersionLessThan(String type, int version, PageLink pageLink) { + return DaoUtil.pageToPageData(ruleNodeRepository + .findAllRuleNodeIdsByTypeAndVersionLessThan( + type, + version, + DaoUtil.toPageable(pageLink))) + .mapData(RuleNodeId::new); + } + + @Override + public List findAllRuleNodeByIds(List ruleNodeIds) { + return DaoUtil.convertDataList(ruleNodeRepository.findAllById( + ruleNodeIds.stream().map(RuleNodeId::getId).collect(Collectors.toList()))); + } + @Override public List findByExternalIds(RuleChainId ruleChainId, List externalIds) { return DaoUtil.convertDataList(ruleNodeRepository.findRuleNodesByRuleChainIdAndExternalIdIn(ruleChainId.getId(), diff --git a/dao/src/main/java/org/thingsboard/server/dao/sql/rule/RuleNodeRepository.java b/dao/src/main/java/org/thingsboard/server/dao/sql/rule/RuleNodeRepository.java index c8ecb8000b..f02072b356 100644 --- a/dao/src/main/java/org/thingsboard/server/dao/sql/rule/RuleNodeRepository.java +++ b/dao/src/main/java/org/thingsboard/server/dao/sql/rule/RuleNodeRepository.java @@ -50,6 +50,11 @@ public interface RuleNodeRepository extends JpaRepository @Param("searchText") String searchText, Pageable pageable); + @Query("SELECT r.id FROM RuleNodeEntity r WHERE r.type = :ruleType AND r.configurationVersion < :version") + Page findAllRuleNodeIdsByTypeAndVersionLessThan(@Param("ruleType") String ruleType, + @Param("version") int version, + Pageable pageable); + List findRuleNodesByRuleChainIdAndExternalIdIn(UUID ruleChainId, List externalIds); @Transactional diff --git a/dao/src/test/java/org/thingsboard/server/dao/sql/rule/JpaRuleNodeDaoTest.java b/dao/src/test/java/org/thingsboard/server/dao/sql/rule/JpaRuleNodeDaoTest.java index 6e77927233..2f1c73da01 100644 --- a/dao/src/test/java/org/thingsboard/server/dao/sql/rule/JpaRuleNodeDaoTest.java +++ b/dao/src/test/java/org/thingsboard/server/dao/sql/rule/JpaRuleNodeDaoTest.java @@ -22,6 +22,7 @@ import org.junit.Before; import org.junit.Test; import org.springframework.beans.factory.annotation.Autowired; import org.thingsboard.common.util.JacksonUtil; +import org.thingsboard.server.common.data.StringUtils; import org.thingsboard.server.common.data.id.RuleChainId; import org.thingsboard.server.common.data.id.RuleNodeId; import org.thingsboard.server.common.data.id.TenantId; @@ -36,10 +37,10 @@ import org.thingsboard.server.dao.rule.RuleNodeDao; import java.util.ArrayList; import java.util.List; import java.util.UUID; +import java.util.stream.Collectors; import static org.assertj.core.api.Assertions.assertThatThrownBy; import static org.junit.Assert.assertEquals; -import static org.junit.Assert.assertNotNull; public class JpaRuleNodeDaoTest extends AbstractJpaDaoTest { @@ -124,7 +125,39 @@ public class JpaRuleNodeDaoTest extends AbstractJpaDaoTest { assertEquals(10, ruleNodes.getData().size()); } + @Test + public void testFindRuleNodeIdsByTypeAndVersionLessThan() { + PageData ruleNodeIds = ruleNodeDao.findAllRuleNodeIdsByTypeAndVersionLessThan( "A", 1, new PageLink(10, 0, PREFIX_FOR_RULE_NODE_NAME)); + assertEquals(20, ruleNodeIds.getTotalElements()); + assertEquals(2, ruleNodeIds.getTotalPages()); + assertEquals(10, ruleNodeIds.getData().size()); + + ruleNodeIds = ruleNodeDao.findAllRuleNodeIdsByTypeAndVersionLessThan( "A", 1, new PageLink(10, 0)); + assertEquals(20, ruleNodeIds.getTotalElements()); + assertEquals(2, ruleNodeIds.getTotalPages()); + assertEquals(10, ruleNodeIds.getData().size()); + + // test - search text ignored + ruleNodeIds = ruleNodeDao.findAllRuleNodeIdsByTypeAndVersionLessThan( "A", 1, new PageLink(10, 0, StringUtils.randomAlphabetic(5))); + assertEquals(20, ruleNodeIds.getTotalElements()); + assertEquals(2, ruleNodeIds.getTotalPages()); + assertEquals(10, ruleNodeIds.getData().size()); + } + + @Test + public void testFindAllRuleNodeByIds() { + var fromUUIDs = ruleNodeIds.stream().map(RuleNodeId::new).collect(Collectors.toList()); + var ruleNodes = ruleNodeDao.findAllRuleNodeByIds(fromUUIDs); + assertEquals(40, ruleNodes.size()); + } + private List createRuleNodes(TenantId tenantId1, TenantId tenantId2, RuleChainId ruleChainId1, RuleChainId ruleChainId2, int count) { + return createRuleNodes(tenantId1, tenantId2, ruleChainId1, ruleChainId2, "A", "B", count); + } + + private List createRuleNodes(TenantId tenantId1, TenantId tenantId2, + RuleChainId ruleChainId1, RuleChainId ruleChainId2, + String typeA, String typeB, int count) { var chain1 = new RuleChain(ruleChainId1); chain1.setTenantId(tenantId1); chain1.setName(ruleChainId1.toString()); @@ -135,8 +168,8 @@ public class JpaRuleNodeDaoTest extends AbstractJpaDaoTest { ruleChainDao.save(tenantId2, chain2); List savedRuleNodeIds = new ArrayList<>(); for (int i = 0; i < count / 2; i++) { - savedRuleNodeIds.add(ruleNodeDao.save(tenantId1, getRuleNode(ruleChainId1, "A", Integer.toString(i))).getUuidId()); - savedRuleNodeIds.add(ruleNodeDao.save(tenantId2, getRuleNode(ruleChainId2, "B", Integer.toString(i + count / 2))).getUuidId()); + savedRuleNodeIds.add(ruleNodeDao.save(tenantId1, getRuleNode(ruleChainId1, typeA, Integer.toString(i))).getUuidId()); + savedRuleNodeIds.add(ruleNodeDao.save(tenantId2, getRuleNode(ruleChainId2, typeB, Integer.toString(i + count / 2))).getUuidId()); } return savedRuleNodeIds; } From 0abe2f24521e9587febf4dd6590c61b72458d685 Mon Sep 17 00:00:00 2001 From: Artem Dzhereleiko Date: Wed, 18 Oct 2023 11:10:15 +0300 Subject: [PATCH 07/29] UI: Disabled line height --- .../lib/settings/common/font-settings-panel.component.ts | 6 +++++- .../widget/lib/settings/common/font-settings.component.ts | 7 ++++++- 2 files changed, 11 insertions(+), 2 deletions(-) diff --git a/ui-ngx/src/app/modules/home/components/widget/lib/settings/common/font-settings-panel.component.ts b/ui-ngx/src/app/modules/home/components/widget/lib/settings/common/font-settings-panel.component.ts index c99efa8931..562001e3c4 100644 --- a/ui-ngx/src/app/modules/home/components/widget/lib/settings/common/font-settings-panel.component.ts +++ b/ui-ngx/src/app/modules/home/components/widget/lib/settings/common/font-settings-panel.component.ts @@ -69,6 +69,10 @@ export class FontSettingsPanelComponent extends PageComponent implements OnInit @coerceBoolean() autoScale = false; + @Input() + @coerceBoolean() + disabledLineHeight = false; + @Input() popover: TbPopoverComponent; @@ -106,7 +110,7 @@ export class FontSettingsPanelComponent extends PageComponent implements OnInit family: [this.font?.family, []], weight: [this.font?.weight, []], style: [this.font?.style, []], - lineHeight: [{ value: this.font?.lineHeight, disabled: this.autoScale }, []] + lineHeight: [{ value: this.font?.lineHeight, disabled: this.autoScale || this.disabledLineHeight }, []] } ); this.updatePreviewStyle(this.font); diff --git a/ui-ngx/src/app/modules/home/components/widget/lib/settings/common/font-settings.component.ts b/ui-ngx/src/app/modules/home/components/widget/lib/settings/common/font-settings.component.ts index 2c3780f1fe..0fc3b20da1 100644 --- a/ui-ngx/src/app/modules/home/components/widget/lib/settings/common/font-settings.component.ts +++ b/ui-ngx/src/app/modules/home/components/widget/lib/settings/common/font-settings.component.ts @@ -54,6 +54,10 @@ export class FontSettingsComponent implements OnInit, ControlValueAccessor { @coerceBoolean() autoScale = false; + @Input() + @coerceBoolean() + disabledLineHeight = false; + private modelValue: Font; private propagateChange = null; @@ -92,7 +96,8 @@ export class FontSettingsComponent implements OnInit, ControlValueAccessor { font: this.modelValue, initialPreviewStyle: this.initialPreviewStyle, clearButton: this.clearButton, - autoScale: this.autoScale + autoScale: this.autoScale, + disabledLineHeight: this.disabledLineHeight }; if (isDefinedAndNotNull(this.previewText)) { const previewText = typeof this.previewText === 'string' ? this.previewText : this.previewText(); From 954961f064ec509e9e8eb0df7bae2d77b7ffc236 Mon Sep 17 00:00:00 2001 From: Artem Dzhereleiko Date: Wed, 18 Oct 2023 12:51:14 +0300 Subject: [PATCH 08/29] UI: Hide line height --- .../lib/settings/common/font-settings-panel.component.html | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/ui-ngx/src/app/modules/home/components/widget/lib/settings/common/font-settings-panel.component.html b/ui-ngx/src/app/modules/home/components/widget/lib/settings/common/font-settings-panel.component.html index ac103fe395..44163fae26 100644 --- a/ui-ngx/src/app/modules/home/components/widget/lib/settings/common/font-settings-panel.component.html +++ b/ui-ngx/src/app/modules/home/components/widget/lib/settings/common/font-settings-panel.component.html @@ -73,7 +73,7 @@ -
+
widgets.widget-font.line-height
From 114419775391c974f8ab09b75c75c6c216ec154b Mon Sep 17 00:00:00 2001 From: Igor Kulikov Date: Wed, 18 Oct 2023 15:14:16 +0300 Subject: [PATCH 09/29] UI: Add default data keys/latest data keys functions to widget type parameters. --- .../system/widget_types/battery_level.json | 2 +- .../system/widget_types/entities_table.json | 5 +- .../system/widget_types/progress_bar.json | 2 +- .../system/widget_types/signal_strength.json | 2 +- .../json/system/widget_types/simple_card.json | 5 +- .../simple_value_and_chart_card.json | 2 +- .../json/system/widget_types/state_chart.json | 5 +- .../widget_types/timeseries_bar_chart.json | 5 +- .../widget_types/timeseries_line_chart.json | 5 +- .../system/widget_types/timeseries_table.json | 5 +- .../widget_types/value_and_chart_card.json | 5 +- .../json/system/widget_types/value_card.json | 5 +- .../wind_speed_and_direction.json | 2 +- ...gated-value-card-basic-config.component.ts | 99 +++++++++++++++++-- .../progress-bar-basic-config.component.ts | 5 +- .../simple-card-basic-config.component.ts | 5 +- ...timeseries-table-basic-config.component.ts | 5 +- .../value-card-basic-config.component.ts | 5 +- ...value-chart-card-basic-config.component.ts | 14 +-- .../chart/flot-basic-config.component.ts | 5 +- .../entities-table-basic-config.component.ts | 4 +- .../battery-level-basic-config.component.ts | 5 +- .../signal-strength-basic-config.component.ts | 5 +- ...-speed-direction-basic-config.component.ts | 8 +- .../config/widget-config.component.models.ts | 29 +++++- .../lib/cards/aggregated-value-card.models.ts | 69 ------------- .../widget/widget-component.service.ts | 6 ++ ui-ngx/src/app/shared/models/widget.models.ts | 2 + 28 files changed, 188 insertions(+), 128 deletions(-) diff --git a/application/src/main/data/json/system/widget_types/battery_level.json b/application/src/main/data/json/system/widget_types/battery_level.json index 695a0dc525..1a9bdd1afd 100644 --- a/application/src/main/data/json/system/widget_types/battery_level.json +++ b/application/src/main/data/json/system/widget_types/battery_level.json @@ -11,7 +11,7 @@ "resources": [], "templateHtml": "\n", "templateCss": "", - "controllerScript": "self.onInit = function() {\n self.ctx.$scope.batteryLevelWidget.onInit();\n};\n\nself.onDataUpdated = function() {\n self.ctx.$scope.batteryLevelWidget.onDataUpdated();\n};\n\nself.typeParameters = function() {\n return {\n maxDatasources: 1,\n maxDataKeys: 1,\n singleEntity: true,\n previewWidth: '200px',\n previewHeight: '200px',\n embedTitlePanel: true\n };\n};\n\nself.actionSources = function() {\n return {\n 'cardClick': {\n name: 'widget-action.card-click',\n multiple: false\n }\n };\n}\n\nself.onDestroy = function() {\n};\n", + "controllerScript": "self.onInit = function() {\n self.ctx.$scope.batteryLevelWidget.onInit();\n};\n\nself.onDataUpdated = function() {\n self.ctx.$scope.batteryLevelWidget.onDataUpdated();\n};\n\nself.typeParameters = function() {\n return {\n maxDatasources: 1,\n maxDataKeys: 1,\n singleEntity: true,\n previewWidth: '200px',\n previewHeight: '200px',\n embedTitlePanel: true,\n defaultDataKeysFunction: function() {\n return [{ name: 'batteryLevel', label: 'batteryLevel', type: 'timeseries' }];\n }\n };\n};\n\nself.actionSources = function() {\n return {\n 'cardClick': {\n name: 'widget-action.card-click',\n multiple: false\n }\n };\n}\n\nself.onDestroy = function() {\n};\n", "settingsSchema": "", "dataKeySettingsSchema": "", "settingsDirective": "tb-battery-level-widget-settings", diff --git a/application/src/main/data/json/system/widget_types/entities_table.json b/application/src/main/data/json/system/widget_types/entities_table.json index f7dbf57972..ec137f81cb 100644 --- a/application/src/main/data/json/system/widget_types/entities_table.json +++ b/application/src/main/data/json/system/widget_types/entities_table.json @@ -11,7 +11,7 @@ "resources": [], "templateHtml": "\n", "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", + "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 defaultDataKeysFunction: function() {\n return [{ name: 'name', type: 'entityField' }];\n }\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", @@ -20,5 +20,6 @@ "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}" }, - "externalId": null + "externalId": null, + "tags": null } \ No newline at end of file diff --git a/application/src/main/data/json/system/widget_types/progress_bar.json b/application/src/main/data/json/system/widget_types/progress_bar.json index df3dcf6268..cd22b4b73e 100644 --- a/application/src/main/data/json/system/widget_types/progress_bar.json +++ b/application/src/main/data/json/system/widget_types/progress_bar.json @@ -11,7 +11,7 @@ "resources": [], "templateHtml": "\n", "templateCss": "", - "controllerScript": "self.onInit = function() {\n self.ctx.$scope.progressBarWidget.onInit();\n};\n\nself.onDataUpdated = function() {\n self.ctx.$scope.progressBarWidget.onDataUpdated();\n};\n\nself.typeParameters = function() {\n return {\n maxDatasources: 1,\n maxDataKeys: 1,\n singleEntity: true,\n previewWidth: '280px',\n previewHeight: '180px',\n embedTitlePanel: true\n };\n};\n\n\nself.onDestroy = function() {\n};\n", + "controllerScript": "self.onInit = function() {\n self.ctx.$scope.progressBarWidget.onInit();\n};\n\nself.onDataUpdated = function() {\n self.ctx.$scope.progressBarWidget.onDataUpdated();\n};\n\nself.typeParameters = function() {\n return {\n maxDatasources: 1,\n maxDataKeys: 1,\n singleEntity: true,\n previewWidth: '280px',\n previewHeight: '180px',\n embedTitlePanel: true,\n defaultDataKeysFunction: function() {\n return [{ name: 'humidity', label: 'humidity', type: 'timeseries' }];\n }\n };\n};\n\n\nself.onDestroy = function() {\n};\n", "settingsSchema": "", "dataKeySettingsSchema": "", "settingsDirective": "tb-progress-bar-widget-settings", diff --git a/application/src/main/data/json/system/widget_types/signal_strength.json b/application/src/main/data/json/system/widget_types/signal_strength.json index 90c051c803..a24a00edd5 100644 --- a/application/src/main/data/json/system/widget_types/signal_strength.json +++ b/application/src/main/data/json/system/widget_types/signal_strength.json @@ -11,7 +11,7 @@ "resources": [], "templateHtml": "\n", "templateCss": "", - "controllerScript": "self.onInit = function() {\n self.ctx.$scope.signalStrengthWidget.onInit();\n};\n\nself.onDataUpdated = function() {\n self.ctx.$scope.signalStrengthWidget.onDataUpdated();\n};\n\nself.typeParameters = function() {\n return {\n maxDatasources: 1,\n maxDataKeys: 1,\n singleEntity: true,\n previewWidth: '200px',\n previewHeight: '200px',\n embedTitlePanel: true\n };\n};\n\nself.actionSources = function() {\n return {\n 'cardClick': {\n name: 'widget-action.card-click',\n multiple: false\n }\n };\n}\n\nself.onDestroy = function() {\n};\n", + "controllerScript": "self.onInit = function() {\n self.ctx.$scope.signalStrengthWidget.onInit();\n};\n\nself.onDataUpdated = function() {\n self.ctx.$scope.signalStrengthWidget.onDataUpdated();\n};\n\nself.typeParameters = function() {\n return {\n maxDatasources: 1,\n maxDataKeys: 1,\n singleEntity: true,\n previewWidth: '200px',\n previewHeight: '200px',\n embedTitlePanel: true,\n defaultDataKeysFunction: function() {\n return [{ name: 'rssi', label: 'rssi', type: 'timeseries' }];\n }\n };\n};\n\nself.actionSources = function() {\n return {\n 'cardClick': {\n name: 'widget-action.card-click',\n multiple: false\n }\n };\n}\n\nself.onDestroy = function() {\n};\n", "settingsSchema": "", "dataKeySettingsSchema": "", "settingsDirective": "tb-signal-strength-widget-settings", diff --git a/application/src/main/data/json/system/widget_types/simple_card.json b/application/src/main/data/json/system/widget_types/simple_card.json index 063454ee6f..b43f4a12af 100644 --- a/application/src/main/data/json/system/widget_types/simple_card.json +++ b/application/src/main/data/json/system/widget_types/simple_card.json @@ -11,7 +11,7 @@ "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 \"
\"\n );\n \n self.ctx.datasourceContainer = $('#' + datasourceId,\n self.ctx.$container);\n \n var tableId = 'table' + 0;\n self.ctx.datasourceContainer.append(\n \"
\"\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 \"\" +\n dataKey.label +\n \"\");\n } else {\n table.append(\n \"\" +\n dataKey.label +\n \"\");\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 = '' + html_org + '';\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", + "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 \"
\"\n );\n \n self.ctx.datasourceContainer = $('#' + datasourceId,\n self.ctx.$container);\n \n var tableId = 'table' + 0;\n self.ctx.datasourceContainer.append(\n \"
\"\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 \"\" +\n dataKey.label +\n \"\");\n } else {\n table.append(\n \"\" +\n dataKey.label +\n \"\");\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 = '' + html_org + '';\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 defaultDataKeysFunction: function() {\n return [{ name: 'temperature', label: 'Temperature', type: 'timeseries' }];\n }\n };\n};\n\n\nself.onDestroy = function() {\n};\n", "settingsSchema": "", "dataKeySettingsSchema": "", "settingsDirective": "tb-simple-card-widget-settings", @@ -19,5 +19,6 @@ "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}" }, - "externalId": null + "externalId": null, + "tags": null } \ No newline at end of file diff --git a/application/src/main/data/json/system/widget_types/simple_value_and_chart_card.json b/application/src/main/data/json/system/widget_types/simple_value_and_chart_card.json index 7fa97f4a52..e19ff918be 100644 --- a/application/src/main/data/json/system/widget_types/simple_value_and_chart_card.json +++ b/application/src/main/data/json/system/widget_types/simple_value_and_chart_card.json @@ -11,7 +11,7 @@ "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 };\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: 'temperature', label: 'Temperature', type: 'timeseries', color: 'rgba(63, 82, 221, 1)'}\n ];\n },\n defaultLatestDataKeysFunction: function(configComponent) {\n return [{ name: 'temperature', label: 'Latest', type: 'timeseries'}];\n }\n };\n}\n", "settingsSchema": "{}", "dataKeySettingsSchema": "{}", "latestDataKeySettingsSchema": "{}", diff --git a/application/src/main/data/json/system/widget_types/state_chart.json b/application/src/main/data/json/system/widget_types/state_chart.json index 2b04282d17..25a3130d48 100644 --- a/application/src/main/data/json/system/widget_types/state_chart.json +++ b/application/src/main/data/json/system/widget_types/state_chart.json @@ -11,7 +11,7 @@ "resources": [], "templateHtml": "\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}\n\nself.onDataUpdated = function() {\n self.ctx.$scope.flotWidget.onDataUpdated();\n}\n\nself.onLatestDataUpdated = function() {\n self.ctx.$scope.flotWidget.onLatestDataUpdated();\n}\n\nself.onResize = function() {\n self.ctx.$scope.flotWidget.onResize();\n}\n\nself.onEditModeChanged = function() {\n self.ctx.$scope.flotWidget.onEditModeChanged();\n}\n\nself.onDestroy = function() {\n self.ctx.$scope.flotWidget.onDestroy();\n}\n\nself.typeParameters = function() {\n return {\n stateData: true,\n hasAdditionalLatestDataKeys: true\n };\n}\n\n", + "controllerScript": "self.onInit = function() {\n}\n\nself.onDataUpdated = function() {\n self.ctx.$scope.flotWidget.onDataUpdated();\n}\n\nself.onLatestDataUpdated = function() {\n self.ctx.$scope.flotWidget.onLatestDataUpdated();\n}\n\nself.onResize = function() {\n self.ctx.$scope.flotWidget.onResize();\n}\n\nself.onEditModeChanged = function() {\n self.ctx.$scope.flotWidget.onEditModeChanged();\n}\n\nself.onDestroy = function() {\n self.ctx.$scope.flotWidget.onDestroy();\n}\n\nself.typeParameters = function() {\n return {\n stateData: true,\n hasAdditionalLatestDataKeys: true,\n defaultDataKeysFunction: function() {\n return [{ name: 'temperature', label: 'Temperature', type: 'timeseries', units: '°C', decimals: 0 }];\n }\n };\n}\n\n", "settingsSchema": "{}", "dataKeySettingsSchema": "{}", "settingsDirective": "tb-flot-line-widget-settings", @@ -21,5 +21,6 @@ "basicModeDirective": "tb-flot-basic-config", "defaultConfig": "{\"datasources\":[{\"type\":\"function\",\"name\":\"function\",\"dataKeys\":[{\"name\":\"f(x)\",\"type\":\"function\",\"label\":\"Switch 1\",\"color\":\"#2196f3\",\"settings\":{\"showLines\":true,\"fillLines\":true,\"showPoints\":false,\"axisPosition\":\"left\",\"showSeparateAxis\":false},\"_hash\":0.8587686344902596,\"funcBody\":\"return Math.random() > 0.5 ? 1 : 0;\"},{\"name\":\"f(x)\",\"type\":\"function\",\"label\":\"Switch 2\",\"color\":\"#ffc107\",\"settings\":{\"showLines\":true,\"fillLines\":false,\"showPoints\":false,\"axisPosition\":\"left\"},\"_hash\":0.12775350966079668,\"funcBody\":\"return Math.random() <= 0.5 ? 1 : 0;\"}]}],\"timewindow\":{\"realtime\":{\"timewindowMs\":60000}},\"showTitle\":true,\"backgroundColor\":\"#fff\",\"color\":\"rgba(0, 0, 0, 0.87)\",\"padding\":\"8px\",\"settings\":{\"stack\":false,\"fontSize\":10,\"fontColor\":\"#545454\",\"showTooltip\":true,\"tooltipIndividual\":false,\"tooltipCumulative\":false,\"hideZeros\":false,\"tooltipValueFormatter\":\"if (value > 0 && value <= 1) {\\n return 'On';\\n} else if (value === 0) {\\n return 'Off';\\n} else {\\n return '';\\n}\",\"grid\":{\"verticalLines\":true,\"horizontalLines\":true,\"outlineWidth\":1,\"color\":\"#545454\",\"backgroundColor\":null,\"tickColor\":\"#DDDDDD\"},\"xaxis\":{\"title\":null,\"showLabels\":true,\"color\":\"#545454\"},\"yaxis\":{\"min\":0,\"max\":1.2,\"title\":null,\"showLabels\":true,\"color\":\"#545454\",\"tickSize\":null,\"tickDecimals\":0,\"ticksFormatter\":\"if (value > 0 && value <= 1) {\\n return 'On';\\n} else if (value === 0) {\\n return 'Off';\\n} else {\\n return '';\\n}\"},\"shadowSize\":4,\"smoothLines\":false,\"comparisonEnabled\":false,\"timeForComparison\":\"previousInterval\",\"comparisonCustomIntervalValue\":7200000,\"xaxisSecond\":{\"axisPosition\":\"top\",\"title\":null,\"showLabels\":true},\"showLegend\":true,\"legendConfig\":{\"direction\":\"column\",\"position\":\"right\",\"sortDataKeys\":false,\"showMin\":false,\"showMax\":false,\"showAvg\":false,\"showTotal\":false,\"showLatest\":false},\"customLegendEnabled\":false,\"dataKeysListForLabels\":[]},\"title\":\"State Chart\",\"dropShadow\":true,\"enableFullscreen\":true,\"titleStyle\":{\"fontSize\":\"16px\",\"fontWeight\":400},\"mobileHeight\":null,\"widgetStyle\":{},\"useDashboardTimewindow\":true,\"showLegend\":true,\"actions\":{},\"legendConfig\":{\"direction\":\"column\",\",position\":\"bottom\",\"showMin\":false,\"showMax\":false,\"showAvg\":false,\"showTotal\":false},\"configMode\":\"basic\",\"showTitleIcon\":false,\"titleIcon\":\"waterfall_chart\",\"iconColor\":\"#1F6BDD\"}" }, - "externalId": null + "externalId": null, + "tags": null } \ No newline at end of file diff --git a/application/src/main/data/json/system/widget_types/timeseries_bar_chart.json b/application/src/main/data/json/system/widget_types/timeseries_bar_chart.json index baf662a9de..ff9c7971f0 100644 --- a/application/src/main/data/json/system/widget_types/timeseries_bar_chart.json +++ b/application/src/main/data/json/system/widget_types/timeseries_bar_chart.json @@ -11,7 +11,7 @@ "resources": [], "templateHtml": "\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}\n\nself.onDataUpdated = function() {\n self.ctx.$scope.flotWidget.onDataUpdated();\n}\n\nself.onLatestDataUpdated = function() {\n self.ctx.$scope.flotWidget.onLatestDataUpdated();\n}\n\nself.onResize = function() {\n self.ctx.$scope.flotWidget.onResize();\n}\n\nself.onEditModeChanged = function() {\n self.ctx.$scope.flotWidget.onEditModeChanged();\n}\n\nself.onDestroy = function() {\n self.ctx.$scope.flotWidget.onDestroy();\n}\n\nself.typeParameters = function() {\n return {\n hasAdditionalLatestDataKeys: true\n };\n}\n", + "controllerScript": "self.onInit = function() {\n}\n\nself.onDataUpdated = function() {\n self.ctx.$scope.flotWidget.onDataUpdated();\n}\n\nself.onLatestDataUpdated = function() {\n self.ctx.$scope.flotWidget.onLatestDataUpdated();\n}\n\nself.onResize = function() {\n self.ctx.$scope.flotWidget.onResize();\n}\n\nself.onEditModeChanged = function() {\n self.ctx.$scope.flotWidget.onEditModeChanged();\n}\n\nself.onDestroy = function() {\n self.ctx.$scope.flotWidget.onDestroy();\n}\n\nself.typeParameters = function() {\n return {\n hasAdditionalLatestDataKeys: true,\n defaultDataKeysFunction: function() {\n return [{ name: 'temperature', label: 'Temperature', type: 'timeseries', units: '°C', decimals: 0 }];\n }\n };\n}\n", "settingsSchema": "{}", "dataKeySettingsSchema": "{}", "settingsDirective": "tb-flot-bar-widget-settings", @@ -21,5 +21,6 @@ "basicModeDirective": "tb-flot-basic-config", "defaultConfig": "{\"datasources\":[{\"type\":\"function\",\"name\":\"function\",\"dataKeys\":[{\"name\":\"f(x)\",\"type\":\"function\",\"label\":\"First\",\"color\":\"#2196f3\",\"settings\":{\"showLines\":false,\"fillLines\":false,\"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 > 1000) {\\n\\tvalue = 1000;\\n}\\nreturn value;\"},{\"name\":\"f(x)\",\"type\":\"function\",\"label\":\"Second\",\"color\":\"#ffc107\",\"settings\":{\"showLines\":false,\"fillLines\":false,\"showPoints\":false},\"_hash\":0.12775350966079668,\"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 > 1000) {\\n\\tvalue = 1000;\\n}\\nreturn value;\"}]}],\"timewindow\":{\"realtime\":{\"timewindowMs\":60000},\"aggregation\":{\"limit\":200,\"type\":\"AVG\"}},\"showTitle\":true,\"backgroundColor\":\"#fff\",\"color\":\"rgba(0, 0, 0, 0.87)\",\"padding\":\"8px\",\"settings\":{\"stack\":true,\"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\":\"\"},\"defaultBarWidth\":600,\"barAlignment\":\"left\",\"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},\"title\":\"Timeseries Bar Chart\",\"dropShadow\":true,\"enableFullscreen\":true,\"titleStyle\":{\"fontSize\":\"16px\",\"fontWeight\":400},\"mobileHeight\":null,\"widgetStyle\":{},\"useDashboardTimewindow\":true,\"showLegend\":true,\"actions\":{},\"configMode\":\"basic\",\"showTitleIcon\":false,\"titleIcon\":\"thermostat\",\"iconColor\":\"#1F6BDD\"}" }, - "externalId": null + "externalId": null, + "tags": null } \ No newline at end of file diff --git a/application/src/main/data/json/system/widget_types/timeseries_line_chart.json b/application/src/main/data/json/system/widget_types/timeseries_line_chart.json index 27d2b8881e..e83b213ae0 100644 --- a/application/src/main/data/json/system/widget_types/timeseries_line_chart.json +++ b/application/src/main/data/json/system/widget_types/timeseries_line_chart.json @@ -11,7 +11,7 @@ "resources": [], "templateHtml": "\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}\n\nself.onDataUpdated = function() {\n self.ctx.$scope.flotWidget.onDataUpdated();\n}\n\nself.onLatestDataUpdated = function() {\n self.ctx.$scope.flotWidget.onLatestDataUpdated();\n}\n\nself.onResize = function() {\n self.ctx.$scope.flotWidget.onResize();\n}\n\nself.onEditModeChanged = function() {\n self.ctx.$scope.flotWidget.onEditModeChanged();\n}\n\nself.onDestroy = function() {\n self.ctx.$scope.flotWidget.onDestroy();\n}\n\nself.typeParameters = function() {\n return {\n hasAdditionalLatestDataKeys: true\n };\n}\n", + "controllerScript": "self.onInit = function() {\n}\n\nself.onDataUpdated = function() {\n self.ctx.$scope.flotWidget.onDataUpdated();\n}\n\nself.onLatestDataUpdated = function() {\n self.ctx.$scope.flotWidget.onLatestDataUpdated();\n}\n\nself.onResize = function() {\n self.ctx.$scope.flotWidget.onResize();\n}\n\nself.onEditModeChanged = function() {\n self.ctx.$scope.flotWidget.onEditModeChanged();\n}\n\nself.onDestroy = function() {\n self.ctx.$scope.flotWidget.onDestroy();\n}\n\nself.typeParameters = function() {\n return {\n hasAdditionalLatestDataKeys: true,\n defaultDataKeysFunction: function() {\n return [{ name: 'temperature', label: 'Temperature', type: 'timeseries', units: '°C', decimals: 0 }];\n }\n };\n}\n", "settingsSchema": "{}", "dataKeySettingsSchema": "{}", "latestDataKeySettingsSchema": "{}", @@ -22,5 +22,6 @@ "basicModeDirective": "tb-flot-basic-config", "defaultConfig": "{\"datasources\":[{\"type\":\"function\",\"name\":\"function\",\"dataKeys\":[{\"name\":\"f(x)\",\"type\":\"function\",\"label\":\"First\",\"color\":\"#2196f3\",\"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 < -1000) {\\n\\tvalue = -1000;\\n} else if (value > 1000) {\\n\\tvalue = 1000;\\n}\\nreturn value;\"},{\"name\":\"f(x)\",\"type\":\"function\",\"label\":\"Second\",\"color\":\"#ffc107\",\"settings\":{\"showLines\":true,\"fillLines\":false,\"showPoints\":false},\"_hash\":0.12775350966079668,\"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\":{\"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},\"title\":\"Timeseries Line Chart\",\"dropShadow\":true,\"enableFullscreen\":true,\"titleStyle\":{\"fontSize\":\"16px\",\"fontWeight\":400},\"mobileHeight\":null,\"configMode\":\"basic\",\"actions\":{},\"showTitleIcon\":false,\"titleIcon\":\"thermostat\",\"iconColor\":\"#1F6BDD\"}" }, - "externalId": null + "externalId": null, + "tags": null } \ No newline at end of file diff --git a/application/src/main/data/json/system/widget_types/timeseries_table.json b/application/src/main/data/json/system/widget_types/timeseries_table.json index b16672a942..d267d42763 100644 --- a/application/src/main/data/json/system/widget_types/timeseries_table.json +++ b/application/src/main/data/json/system/widget_types/timeseries_table.json @@ -11,7 +11,7 @@ "resources": [], "templateHtml": "\n", "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", + "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 defaultDataKeysFunction: function() {\n return [{ name: 'temperature', label: 'Temperature', type: 'timeseries', units: '°C', decimals: 0 }];\n }\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": "", @@ -22,5 +22,6 @@ "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\"}" }, - "externalId": null + "externalId": null, + "tags": null } \ No newline at end of file diff --git a/application/src/main/data/json/system/widget_types/value_and_chart_card.json b/application/src/main/data/json/system/widget_types/value_and_chart_card.json index 3efb2c3b44..aa8e6b31ee 100644 --- a/application/src/main/data/json/system/widget_types/value_and_chart_card.json +++ b/application/src/main/data/json/system/widget_types/value_and_chart_card.json @@ -11,7 +11,7 @@ "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 };\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: 'watermeter', label: 'Watermeter', type: 'timeseries', color: 'rgba(0, 0, 0, 0.87)', units: 'm³', decimals: 0 }\n ];\n },\n defaultLatestDataKeysFunction: function(configComponent) {\n return configComponent.createDefaultAggregatedValueLatestDataKeys('watermeter', 'm³');\n }\n };\n}\n", "settingsSchema": "{}", "dataKeySettingsSchema": "{}", "latestDataKeySettingsSchema": "{}", @@ -22,5 +22,6 @@ "basicModeDirective": "tb-aggregated-value-card-basic-config", "defaultConfig": "{\"datasources\":[{\"type\":\"function\",\"name\":\"Main building\",\"dataKeys\":[{\"name\":\"f(x)\",\"type\":\"function\",\"label\":\"watermeter\",\"color\":\"rgba(0, 0, 0, 0.87)\",\"settings\":{\"showLines\":true,\"fillLines\":true,\"showPoints\":false},\"_hash\":0.8587686344902596,\"funcBody\":\"var value = prevValue + Math.random() * 10 - 5;\\nvar multiplier = Math.pow(10, 2 || 0);\\nvar value = Math.round(value * multiplier) / multiplier;\\nif (value < 5) {\\n\\tvalue = 5;\\n} else if (value > 80) {\\n\\tvalue = 80;\\n}\\nreturn value;\",\"aggregationType\":null,\"units\":\"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\":\"constant\",\"color\":\"rgba(0, 0, 0, 0.87)\",\"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.9408410830697858,\"funcBody\":\"var value = prevValue + Math.random() * 10 - 5;\\nvar multiplier = Math.pow(10, 2 || 0);\\nvar value = Math.round(value * multiplier) / multiplier;\\nif (value < 5) {\\n\\tvalue = 5;\\n} else if (value > 80) {\\n\\tvalue = 80;\\n}\\nreturn value;\",\"aggregationType\":null,\"units\":\"m³\",\"decimals\":null,\"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() * 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;\",\"aggregationType\":null,\"units\":\"m³\",\"decimals\":1,\"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}}},\"title\":\"Value and chart card\",\"dropShadow\":true,\"enableFullscreen\":false,\"titleStyle\":{\"fontSize\":\"16px\",\"fontWeight\":400},\"mobileHeight\":null,\"configMode\":\"basic\",\"actions\":{},\"showTitleIcon\":true,\"titleIcon\":\"water_drop\",\"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 + "externalId": null, + "tags": null } \ No newline at end of file diff --git a/application/src/main/data/json/system/widget_types/value_card.json b/application/src/main/data/json/system/widget_types/value_card.json index c2fb6dd274..eb676a517f 100644 --- a/application/src/main/data/json/system/widget_types/value_card.json +++ b/application/src/main/data/json/system/widget_types/value_card.json @@ -11,7 +11,7 @@ "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 };\n};\n\nself.onDestroy = function() {\n};\n", + "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: 'temperature', label: 'Temperature', type: 'timeseries' }];\n }\n };\n};\n\nself.onDestroy = function() {\n};\n", "settingsSchema": "", "dataKeySettingsSchema": "", "settingsDirective": "tb-value-card-widget-settings", @@ -19,5 +19,6 @@ "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}}" }, - "externalId": null + "externalId": null, + "tags": null } \ No newline at end of file diff --git a/application/src/main/data/json/system/widget_types/wind_speed_and_direction.json b/application/src/main/data/json/system/widget_types/wind_speed_and_direction.json index 1c4f7ecb7c..dff8b3cacc 100644 --- a/application/src/main/data/json/system/widget_types/wind_speed_and_direction.json +++ b/application/src/main/data/json/system/widget_types/wind_speed_and_direction.json @@ -11,7 +11,7 @@ "resources": [], "templateHtml": "\n", "templateCss": "", - "controllerScript": "self.onInit = function() {\n self.ctx.$scope.windSpeedDirectionWidget.onInit();\n};\n\nself.onDataUpdated = function() {\n self.ctx.$scope.windSpeedDirectionWidget.onDataUpdated();\n};\n\nself.typeParameters = function() {\n return {\n maxDatasources: 1,\n maxDataKeys: 2,\n singleEntity: true,\n previewWidth: '270px',\n previewHeight: '270px',\n embedTitlePanel: true\n };\n};\n\nself.actionSources = function() {\n return {\n 'cardClick': {\n name: 'widget-action.card-click',\n multiple: false\n }\n };\n}\n\nself.onDestroy = function() {\n};\n", + "controllerScript": "self.onInit = function() {\n self.ctx.$scope.windSpeedDirectionWidget.onInit();\n};\n\nself.onDataUpdated = function() {\n self.ctx.$scope.windSpeedDirectionWidget.onDataUpdated();\n};\n\nself.typeParameters = function() {\n return {\n maxDatasources: 1,\n maxDataKeys: 2,\n singleEntity: true,\n previewWidth: '270px',\n previewHeight: '270px',\n embedTitlePanel: true,\n defaultDataKeysFunction: function() {\n return [{ name: 'winddirection', label: 'windDirection', type: 'timeseries' },\n { name: 'windspeed', label: 'centerValue', type: 'timeseries',\n units: 'm/s', decimals: 1 }];\n }\n };\n};\n\nself.actionSources = function() {\n return {\n 'cardClick': {\n name: 'widget-action.card-click',\n multiple: false\n }\n };\n}\n\nself.onDestroy = function() {\n};\n", "settingsSchema": "", "dataKeySettingsSchema": "", "settingsDirective": "tb-wind-speed-direction-widget-settings", diff --git a/ui-ngx/src/app/modules/home/components/widget/config/basic/cards/aggregated-value-card-basic-config.component.ts b/ui-ngx/src/app/modules/home/components/widget/config/basic/cards/aggregated-value-card-basic-config.component.ts index 90a020cac8..ad88ee79a0 100644 --- a/ui-ngx/src/app/modules/home/components/widget/config/basic/cards/aggregated-value-card-basic-config.component.ts +++ b/ui-ngx/src/app/modules/home/components/widget/config/basic/cards/aggregated-value-card-basic-config.component.ts @@ -20,7 +20,7 @@ import { Store } from '@ngrx/store'; import { AppState } from '@core/core.state'; import { BasicWidgetConfigComponent } from '@home/components/widget/config/widget-config.component.models'; import { WidgetConfigComponentData } from '@home/models/widget-component.models'; -import { DataKey, Datasource, WidgetConfig, } from '@shared/models/widget.models'; +import { ComparisonResultType, DataKey, Datasource, WidgetConfig, } from '@shared/models/widget.models'; import { WidgetConfigComponent } from '@home/components/widget/widget-config.component'; import { DataKeyType } from '@shared/models/telemetry/telemetry.models'; import { @@ -29,15 +29,19 @@ import { } from '@home/components/widget/config/timewindow-config-panel.component'; import { isUndefined } from '@core/utils'; import { + ColorType, + constantColor, cssSizeToStrSize, DateFormatProcessor, - DateFormatSettings, getDataKey, + DateFormatSettings, + getDataKey, resolveCssSize } from '@shared/models/widget-settings.models'; import { aggregatedValueCardDefaultSettings, - AggregatedValueCardWidgetSettings, - createDefaultAggregatedValueLatestDataKeys + AggregatedValueCardKeyPosition, + AggregatedValueCardKeySettings, + AggregatedValueCardWidgetSettings } from '@home/components/widget/lib/cards/aggregated-value-card.models'; import { AggregationType, @@ -89,11 +93,7 @@ export class AggregatedValueCardBasicConfigComponent extends BasicWidgetConfigCo } protected setupDefaults(configData: WidgetConfigComponentData) { - this.setupDefaultDatasource(configData, [ - { name: 'watermeter', label: 'Watermeter', type: DataKeyType.timeseries, color: 'rgba(0, 0, 0, 0.87)', units: 'm³', decimals: 0 } - ], - createDefaultAggregatedValueLatestDataKeys('watermeter', 'm³') - ); + super.setupDefaults(configData); configData.config.useDashboardTimewindow = false; configData.config.displayTimewindow = true; configData.config.timewindow = { @@ -110,6 +110,87 @@ export class AggregatedValueCardBasicConfigComponent extends BasicWidgetConfigCo }; } + protected defaultDataKeys(configData: WidgetConfigComponentData): DataKey[] { + return [ + { name: 'watermeter', label: 'Watermeter', type: DataKeyType.timeseries, color: 'rgba(0, 0, 0, 0.87)', units: 'm³', decimals: 0 } + ]; + } + + protected defaultLatestDataKeys(configData: WidgetConfigComponentData): DataKey[] { + return this.createDefaultAggregatedValueLatestDataKeys('watermeter', 'm³'); + } + + createDefaultAggregatedValueLatestDataKeys(keyName: string, units): DataKey[] { + return [ + { + name: keyName, label: 'Latest', type: DataKeyType.timeseries, units, decimals: 0, + aggregationType: AggregationType.NONE, + settings: { + position: AggregatedValueCardKeyPosition.center, + font: { + family: 'Roboto', + size: 52, + sizeUnit: 'px', + style: 'normal', + weight: '500', + lineHeight: '1' + }, + color: constantColor('rgba(0, 0, 0, 0.87)'), + showArrow: false + } as AggregatedValueCardKeySettings + }, + { + name: keyName, label: 'Delta percent', type: DataKeyType.timeseries, units: '%', decimals: 0, + aggregationType: AggregationType.AVG, + comparisonEnabled: true, + timeForComparison: 'previousInterval', + comparisonResultType: ComparisonResultType.DELTA_PERCENT, + settings: { + position: AggregatedValueCardKeyPosition.rightTop, + font: { + family: 'Roboto', + size: 14, + sizeUnit: 'px', + style: 'normal', + weight: '500', + lineHeight: '1' + }, + color: { + color: 'rgba(0, 0, 0, 0.87)', + type: ColorType.range, + rangeList: [ + {to: 0, color: '#198038'}, + {from: 0, to: 0, color: 'rgba(0, 0, 0, 0.87)'}, + {from: 0, color: '#D12730'} + ], + colorFunction: '' + }, + showArrow: true + } as AggregatedValueCardKeySettings + }, + { + name: keyName, label: 'Delta absolute', type: DataKeyType.timeseries, units, decimals: 1, + aggregationType: AggregationType.AVG, + comparisonEnabled: true, + timeForComparison: 'previousInterval', + comparisonResultType: ComparisonResultType.DELTA_ABSOLUTE, + settings: { + position: AggregatedValueCardKeyPosition.rightBottom, + font: { + family: 'Roboto', + size: 11, + sizeUnit: 'px', + style: 'normal', + weight: '400', + lineHeight: '1' + }, + color: constantColor('rgba(0, 0, 0, 0.38)'), + showArrow: false + } as AggregatedValueCardKeySettings + } + ]; + } + protected onConfigSet(configData: WidgetConfigComponentData) { const settings: AggregatedValueCardWidgetSettings = {...aggregatedValueCardDefaultSettings, ...(configData.config.settings || {})}; const dataKey = getDataKey(configData.config.datasources); diff --git a/ui-ngx/src/app/modules/home/components/widget/config/basic/cards/progress-bar-basic-config.component.ts b/ui-ngx/src/app/modules/home/components/widget/config/basic/cards/progress-bar-basic-config.component.ts index ef54d64861..7a2a1d7291 100644 --- a/ui-ngx/src/app/modules/home/components/widget/config/basic/cards/progress-bar-basic-config.component.ts +++ b/ui-ngx/src/app/modules/home/components/widget/config/basic/cards/progress-bar-basic-config.component.ts @@ -21,6 +21,7 @@ import { AppState } from '@core/core.state'; import { BasicWidgetConfigComponent } from '@home/components/widget/config/widget-config.component.models'; import { WidgetConfigComponentData } from '@home/models/widget-component.models'; import { + DataKey, datasourcesHasAggregation, datasourcesHasOnlyComparisonAggregation, WidgetConfig, @@ -80,8 +81,8 @@ export class ProgressBarBasicConfigComponent extends BasicWidgetConfigComponent return this.progressBarWidgetConfigForm; } - protected setupDefaults(configData: WidgetConfigComponentData) { - this.setupDefaultDatasource(configData, [{ name: 'humidity', label: 'humidity', type: DataKeyType.timeseries }]); + protected defaultDataKeys(configData: WidgetConfigComponentData): DataKey[] { + return [{ name: 'humidity', label: 'humidity', type: DataKeyType.timeseries }]; } protected onConfigSet(configData: WidgetConfigComponentData) { diff --git a/ui-ngx/src/app/modules/home/components/widget/config/basic/cards/simple-card-basic-config.component.ts b/ui-ngx/src/app/modules/home/components/widget/config/basic/cards/simple-card-basic-config.component.ts index 9b2a6a764b..55f56466af 100644 --- a/ui-ngx/src/app/modules/home/components/widget/config/basic/cards/simple-card-basic-config.component.ts +++ b/ui-ngx/src/app/modules/home/components/widget/config/basic/cards/simple-card-basic-config.component.ts @@ -21,6 +21,7 @@ import { AppState } from '@core/core.state'; import { BasicWidgetConfigComponent } from '@home/components/widget/config/widget-config.component.models'; import { WidgetConfigComponentData } from '@home/models/widget-component.models'; import { + DataKey, datasourcesHasAggregation, datasourcesHasOnlyComparisonAggregation, WidgetConfig, @@ -63,8 +64,8 @@ export class SimpleCardBasicConfigComponent extends BasicWidgetConfigComponent { return this.simpleCardWidgetConfigForm; } - protected setupDefaults(configData: WidgetConfigComponentData) { - this.setupDefaultDatasource(configData, [{ name: 'temperature', label: 'Temperature', type: DataKeyType.timeseries }]); + protected defaultDataKeys(configData: WidgetConfigComponentData): DataKey[] { + return [{ name: 'temperature', label: 'Temperature', type: DataKeyType.timeseries }]; } protected onConfigSet(configData: WidgetConfigComponentData) { diff --git a/ui-ngx/src/app/modules/home/components/widget/config/basic/cards/timeseries-table-basic-config.component.ts b/ui-ngx/src/app/modules/home/components/widget/config/basic/cards/timeseries-table-basic-config.component.ts index dc2a41b816..b99c005da0 100644 --- a/ui-ngx/src/app/modules/home/components/widget/config/basic/cards/timeseries-table-basic-config.component.ts +++ b/ui-ngx/src/app/modules/home/components/widget/config/basic/cards/timeseries-table-basic-config.component.ts @@ -57,9 +57,8 @@ export class TimeseriesTableBasicConfigComponent extends BasicWidgetConfigCompon return this.timeseriesTableWidgetConfigForm; } - protected setupDefaults(configData: WidgetConfigComponentData) { - this.setupDefaultDatasource(configData, - [{ name: 'temperature', label: 'Temperature', type: DataKeyType.timeseries, units: '°C', decimals: 0 }]); + protected defaultDataKeys(configData: WidgetConfigComponentData): DataKey[] { + return [{ name: 'temperature', label: 'Temperature', type: DataKeyType.timeseries, units: '°C', decimals: 0 }]; } protected onConfigSet(configData: WidgetConfigComponentData) { diff --git a/ui-ngx/src/app/modules/home/components/widget/config/basic/cards/value-card-basic-config.component.ts b/ui-ngx/src/app/modules/home/components/widget/config/basic/cards/value-card-basic-config.component.ts index 629fce4081..19eeb2e301 100644 --- a/ui-ngx/src/app/modules/home/components/widget/config/basic/cards/value-card-basic-config.component.ts +++ b/ui-ngx/src/app/modules/home/components/widget/config/basic/cards/value-card-basic-config.component.ts @@ -21,6 +21,7 @@ import { AppState } from '@core/core.state'; import { BasicWidgetConfigComponent } from '@home/components/widget/config/widget-config.component.models'; import { WidgetConfigComponentData } from '@home/models/widget-component.models'; import { + DataKey, datasourcesHasAggregation, datasourcesHasOnlyComparisonAggregation, WidgetConfig, @@ -106,8 +107,8 @@ export class ValueCardBasicConfigComponent extends BasicWidgetConfigComponent { super.setupConfig(widgetConfig); } - protected setupDefaults(configData: WidgetConfigComponentData) { - this.setupDefaultDatasource(configData, [{ name: 'temperature', label: 'Temperature', type: DataKeyType.timeseries }]); + protected defaultDataKeys(configData: WidgetConfigComponentData): DataKey[] { + return [{ name: 'temperature', label: 'Temperature', type: DataKeyType.timeseries }]; } protected onConfigSet(configData: WidgetConfigComponentData) { diff --git a/ui-ngx/src/app/modules/home/components/widget/config/basic/cards/value-chart-card-basic-config.component.ts b/ui-ngx/src/app/modules/home/components/widget/config/basic/cards/value-chart-card-basic-config.component.ts index f2c3a853a0..8980a3ced4 100644 --- a/ui-ngx/src/app/modules/home/components/widget/config/basic/cards/value-chart-card-basic-config.component.ts +++ b/ui-ngx/src/app/modules/home/components/widget/config/basic/cards/value-chart-card-basic-config.component.ts @@ -72,12 +72,14 @@ export class ValueChartCardBasicConfigComponent extends BasicWidgetConfigCompone return this.valueChartCardWidgetConfigForm; } - protected setupDefaults(configData: WidgetConfigComponentData) { - this.setupDefaultDatasource(configData, [ - { name: 'temperature', label: 'Temperature', type: DataKeyType.timeseries, color: 'rgba(63, 82, 221, 1)'} - ], - [{ name: 'temperature', label: 'Latest', type: DataKeyType.timeseries}] - ); + protected defaultDataKeys(configData: WidgetConfigComponentData): DataKey[] { + return [ + { name: 'temperature', label: 'Temperature', type: DataKeyType.timeseries, color: 'rgba(63, 82, 221, 1)'} + ]; + } + + protected defaultLatestDataKeys(configData: WidgetConfigComponentData): DataKey[] { + return [{ name: 'temperature', label: 'Latest', type: DataKeyType.timeseries}]; } protected onConfigSet(configData: WidgetConfigComponentData) { diff --git a/ui-ngx/src/app/modules/home/components/widget/config/basic/chart/flot-basic-config.component.ts b/ui-ngx/src/app/modules/home/components/widget/config/basic/chart/flot-basic-config.component.ts index 050d362868..2b2618e25f 100644 --- a/ui-ngx/src/app/modules/home/components/widget/config/basic/chart/flot-basic-config.component.ts +++ b/ui-ngx/src/app/modules/home/components/widget/config/basic/chart/flot-basic-config.component.ts @@ -57,9 +57,8 @@ export class FlotBasicConfigComponent extends BasicWidgetConfigComponent { return this.flotWidgetConfigForm; } - protected setupDefaults(configData: WidgetConfigComponentData) { - this.setupDefaultDatasource(configData, - [{ name: 'temperature', label: 'Temperature', type: DataKeyType.timeseries, units: '°C', decimals: 0 }]); + protected defaultDataKeys(configData: WidgetConfigComponentData): DataKey[] { + return [{ name: 'temperature', label: 'Temperature', type: DataKeyType.timeseries, units: '°C', decimals: 0 }]; } protected onConfigSet(configData: WidgetConfigComponentData) { diff --git a/ui-ngx/src/app/modules/home/components/widget/config/basic/entity/entities-table-basic-config.component.ts b/ui-ngx/src/app/modules/home/components/widget/config/basic/entity/entities-table-basic-config.component.ts index 228879e2ef..416c5ba404 100644 --- a/ui-ngx/src/app/modules/home/components/widget/config/basic/entity/entities-table-basic-config.component.ts +++ b/ui-ngx/src/app/modules/home/components/widget/config/basic/entity/entities-table-basic-config.component.ts @@ -72,8 +72,8 @@ export class EntitiesTableBasicConfigComponent extends BasicWidgetConfigComponen return this.entitiesTableWidgetConfigForm; } - protected setupDefaults(configData: WidgetConfigComponentData) { - this.setupDefaultDatasource(configData, [{ name: 'name', type: DataKeyType.entityField }]); + protected defaultDataKeys(configData: WidgetConfigComponentData): DataKey[] { + return [{ name: 'name', type: DataKeyType.entityField }]; } protected onConfigSet(configData: WidgetConfigComponentData) { diff --git a/ui-ngx/src/app/modules/home/components/widget/config/basic/indicator/battery-level-basic-config.component.ts b/ui-ngx/src/app/modules/home/components/widget/config/basic/indicator/battery-level-basic-config.component.ts index bb6af9d5ad..5ad6ca4fb4 100644 --- a/ui-ngx/src/app/modules/home/components/widget/config/basic/indicator/battery-level-basic-config.component.ts +++ b/ui-ngx/src/app/modules/home/components/widget/config/basic/indicator/battery-level-basic-config.component.ts @@ -21,6 +21,7 @@ import { AppState } from '@core/core.state'; import { BasicWidgetConfigComponent } from '@home/components/widget/config/widget-config.component.models'; import { WidgetConfigComponentData } from '@home/models/widget-component.models'; import { + DataKey, datasourcesHasAggregation, datasourcesHasOnlyComparisonAggregation, WidgetConfig, @@ -83,8 +84,8 @@ export class BatteryLevelBasicConfigComponent extends BasicWidgetConfigComponent return this.batteryLevelWidgetConfigForm; } - protected setupDefaults(configData: WidgetConfigComponentData) { - this.setupDefaultDatasource(configData, [{ name: 'batteryLevel', label: 'batteryLevel', type: DataKeyType.timeseries }]); + protected defaultDataKeys(configData: WidgetConfigComponentData): DataKey[] { + return [{ name: 'batteryLevel', label: 'batteryLevel', type: DataKeyType.timeseries }]; } protected onConfigSet(configData: WidgetConfigComponentData) { diff --git a/ui-ngx/src/app/modules/home/components/widget/config/basic/indicator/signal-strength-basic-config.component.ts b/ui-ngx/src/app/modules/home/components/widget/config/basic/indicator/signal-strength-basic-config.component.ts index 9dd0325b75..86fe727447 100644 --- a/ui-ngx/src/app/modules/home/components/widget/config/basic/indicator/signal-strength-basic-config.component.ts +++ b/ui-ngx/src/app/modules/home/components/widget/config/basic/indicator/signal-strength-basic-config.component.ts @@ -21,6 +21,7 @@ import { AppState } from '@core/core.state'; import { BasicWidgetConfigComponent } from '@home/components/widget/config/widget-config.component.models'; import { WidgetConfigComponentData } from '@home/models/widget-component.models'; import { + DataKey, datasourcesHasAggregation, datasourcesHasOnlyComparisonAggregation, WidgetConfig, @@ -85,8 +86,8 @@ export class SignalStrengthBasicConfigComponent extends BasicWidgetConfigCompone return this.signalStrengthWidgetConfigForm; } - protected setupDefaults(configData: WidgetConfigComponentData) { - this.setupDefaultDatasource(configData, [{ name: 'rssi', label: 'rssi', type: DataKeyType.timeseries }]); + protected defaultDataKeys(configData: WidgetConfigComponentData): DataKey[] { + return [{ name: 'rssi', label: 'rssi', type: DataKeyType.timeseries }]; } protected onConfigSet(configData: WidgetConfigComponentData) { diff --git a/ui-ngx/src/app/modules/home/components/widget/config/basic/weather/wind-speed-direction-basic-config.component.ts b/ui-ngx/src/app/modules/home/components/widget/config/basic/weather/wind-speed-direction-basic-config.component.ts index 8435170ed3..45344aba84 100644 --- a/ui-ngx/src/app/modules/home/components/widget/config/basic/weather/wind-speed-direction-basic-config.component.ts +++ b/ui-ngx/src/app/modules/home/components/widget/config/basic/weather/wind-speed-direction-basic-config.component.ts @@ -107,10 +107,10 @@ export class WindSpeedDirectionBasicConfigComponent extends BasicWidgetConfigCom return this.windSpeedDirectionWidgetConfigForm; } - protected setupDefaults(configData: WidgetConfigComponentData) { - this.setupDefaultDatasource(configData, [{ name: 'winddirection', label: windDirectionLabel, type: DataKeyType.timeseries }, - { name: 'windspeed', label: centerValueLabel, type: DataKeyType.timeseries, - units: 'm/s', decimals: 1 }]); + protected defaultDataKeys(configData: WidgetConfigComponentData): DataKey[] { + return [{ name: 'winddirection', label: windDirectionLabel, type: DataKeyType.timeseries }, + { name: 'windspeed', label: centerValueLabel, type: DataKeyType.timeseries, + units: 'm/s', decimals: 1 }]; } protected onConfigSet(configData: WidgetConfigComponentData) { diff --git a/ui-ngx/src/app/modules/home/components/widget/config/widget-config.component.models.ts b/ui-ngx/src/app/modules/home/components/widget/config/widget-config.component.models.ts index 75112d7cfa..cfa0cedbee 100644 --- a/ui-ngx/src/app/modules/home/components/widget/config/widget-config.component.models.ts +++ b/ui-ngx/src/app/modules/home/components/widget/config/widget-config.component.models.ts @@ -97,7 +97,34 @@ export abstract class BasicWidgetConfigComponent extends PageComponent implement }); } - protected setupDefaults(configData: WidgetConfigComponentData) {} + protected setupDefaults(configData: WidgetConfigComponentData) { + const params = configData.typeParameters; + let dataKeys: DataKey[]; + let latestDataKeys: DataKey[]; + if (params.defaultDataKeysFunction) { + dataKeys = params.defaultDataKeysFunction(this, configData); + } + if (params.defaultLatestDataKeysFunction) { + latestDataKeys = params.defaultLatestDataKeysFunction(this, configData); + } + if (!dataKeys) { + dataKeys = this.defaultDataKeys(configData); + } + if (!latestDataKeys) { + latestDataKeys = this.defaultLatestDataKeys(configData); + } + if (dataKeys || latestDataKeys) { + this.setupDefaultDatasource(configData, dataKeys, latestDataKeys); + } + } + + protected defaultDataKeys(configData: WidgetConfigComponentData): DataKey[] { + return null; + } + + protected defaultLatestDataKeys(configData: WidgetConfigComponentData): DataKey[] { + return null; + } protected updateValidators(emitEvent: boolean, trigger?: string) { } diff --git a/ui-ngx/src/app/modules/home/components/widget/lib/cards/aggregated-value-card.models.ts b/ui-ngx/src/app/modules/home/components/widget/lib/cards/aggregated-value-card.models.ts index c27fe9df96..b199aaa9c6 100644 --- a/ui-ngx/src/app/modules/home/components/widget/lib/cards/aggregated-value-card.models.ts +++ b/ui-ngx/src/app/modules/home/components/widget/lib/cards/aggregated-value-card.models.ts @@ -161,72 +161,3 @@ export const aggregatedValueCardDefaultKeySettings: AggregatedValueCardKeySettin color: constantColor('rgba(0, 0, 0, 0.87)'), showArrow: false }; - -export const createDefaultAggregatedValueLatestDataKeys = (keyName: string, units): DataKey[] => [ - { - name: keyName, label: 'Latest', type: DataKeyType.timeseries, units, decimals: 0, - aggregationType: AggregationType.NONE, - settings: { - position: AggregatedValueCardKeyPosition.center, - font: { - family: 'Roboto', - size: 52, - sizeUnit: 'px', - style: 'normal', - weight: '500', - lineHeight: '1' - }, - color: constantColor('rgba(0, 0, 0, 0.87)'), - showArrow: false - } as AggregatedValueCardKeySettings - }, - { - name: keyName, label: 'Delta percent', type: DataKeyType.timeseries, units: '%', decimals: 0, - aggregationType: AggregationType.AVG, - comparisonEnabled: true, - timeForComparison: 'previousInterval', - comparisonResultType: ComparisonResultType.DELTA_PERCENT, - settings: { - position: AggregatedValueCardKeyPosition.rightTop, - font: { - family: 'Roboto', - size: 14, - sizeUnit: 'px', - style: 'normal', - weight: '500', - lineHeight: '1' - }, - color: { - color: 'rgba(0, 0, 0, 0.87)', - type: ColorType.range, - rangeList: [ - {to: 0, color: '#198038'}, - {from: 0, to: 0, color: 'rgba(0, 0, 0, 0.87)'}, - {from: 0, color: '#D12730'} - ], - colorFunction: '' - }, - showArrow: true - } as AggregatedValueCardKeySettings - }, - { - name: keyName, label: 'Delta absolute', type: DataKeyType.timeseries, units, decimals: 1, - aggregationType: AggregationType.AVG, - comparisonEnabled: true, - timeForComparison: 'previousInterval', - comparisonResultType: ComparisonResultType.DELTA_ABSOLUTE, - settings: { - position: AggregatedValueCardKeyPosition.rightBottom, - font: { - family: 'Roboto', - size: 11, - sizeUnit: 'px', - style: 'normal', - weight: '400', - lineHeight: '1' - }, - color: constantColor('rgba(0, 0, 0, 0.38)'), - showArrow: false - } as AggregatedValueCardKeySettings - } - ]; diff --git a/ui-ngx/src/app/modules/home/components/widget/widget-component.service.ts b/ui-ngx/src/app/modules/home/components/widget/widget-component.service.ts index f8023008f1..313993167d 100644 --- a/ui-ngx/src/app/modules/home/components/widget/widget-component.service.ts +++ b/ui-ngx/src/app/modules/home/components/widget/widget-component.service.ts @@ -552,6 +552,12 @@ export class WidgetComponentService { if (isUndefined(result.typeParameters.hideDataSettings)) { result.typeParameters.hideDataSettings = false; } + if (!isFunction(result.typeParameters.defaultDataKeysFunction)) { + result.typeParameters.defaultDataKeysFunction = null; + } + if (!isFunction(result.typeParameters.defaultLatestDataKeysFunction)) { + result.typeParameters.defaultLatestDataKeysFunction = null; + } if (isFunction(widgetTypeInstance.actionSources)) { result.actionSources = widgetTypeInstance.actionSources(); } else { diff --git a/ui-ngx/src/app/shared/models/widget.models.ts b/ui-ngx/src/app/shared/models/widget.models.ts index d10bbc433d..fd99eb37ee 100644 --- a/ui-ngx/src/app/shared/models/widget.models.ts +++ b/ui-ngx/src/app/shared/models/widget.models.ts @@ -180,6 +180,8 @@ export interface WidgetTypeParameters { previewHeight?: string; embedTitlePanel?: boolean; hideDataSettings?: boolean; + defaultDataKeysFunction?: (configComponent: any, configData: any) => DataKey[]; + defaultLatestDataKeysFunction?: (configComponent: any, configData: any) => DataKey[]; } export interface WidgetControllerDescriptor { From 9b5bea618c6b3b9fa7e4efe9d074b991342f944a Mon Sep 17 00:00:00 2001 From: Vladyslav_Prykhodko Date: Wed, 18 Oct 2023 17:04:42 +0300 Subject: [PATCH 10/29] UI: Rename widget type to widget --- .../import-export/import-export.service.ts | 6 +-- .../save-widget-type-as-dialog.component.html | 4 +- .../pages/widget/widget-type.component.html | 6 +-- .../widget-types-table-config.resolver.ts | 22 ++++----- .../widgets-bundle-widgets.component.html | 4 +- .../app/shared/models/entity-type.models.ts | 14 +++--- .../assets/locale/locale.constant-ca_ES.json | 4 -- .../assets/locale/locale.constant-cs_CZ.json | 4 -- .../assets/locale/locale.constant-da_DK.json | 4 -- .../assets/locale/locale.constant-de_DE.json | 4 -- .../assets/locale/locale.constant-el_GR.json | 4 -- .../assets/locale/locale.constant-en_US.json | 46 ++++++++----------- .../assets/locale/locale.constant-es_ES.json | 30 +++++------- .../assets/locale/locale.constant-fa_IR.json | 4 -- .../assets/locale/locale.constant-fr_FR.json | 4 -- .../assets/locale/locale.constant-it_IT.json | 4 -- .../assets/locale/locale.constant-ja_JP.json | 4 -- .../assets/locale/locale.constant-ka_GE.json | 4 -- .../assets/locale/locale.constant-ko_KR.json | 4 -- .../assets/locale/locale.constant-lv_LV.json | 4 -- .../assets/locale/locale.constant-pt_BR.json | 4 -- .../assets/locale/locale.constant-ro_RO.json | 4 -- .../assets/locale/locale.constant-ru_RU.json | 4 -- .../assets/locale/locale.constant-sl_SI.json | 4 -- .../assets/locale/locale.constant-tr_TR.json | 4 -- .../assets/locale/locale.constant-uk_UA.json | 4 -- .../assets/locale/locale.constant-zh_CN.json | 4 -- .../assets/locale/locale.constant-zh_TW.json | 4 -- 28 files changed, 58 insertions(+), 154 deletions(-) diff --git a/ui-ngx/src/app/modules/home/components/import-export/import-export.service.ts b/ui-ngx/src/app/modules/home/components/import-export/import-export.service.ts index e91375e75e..f279972101 100644 --- a/ui-ngx/src/app/modules/home/components/import-export/import-export.service.ts +++ b/ui-ngx/src/app/modules/home/components/import-export/import-export.service.ts @@ -298,13 +298,13 @@ export class ImportExportService { } public importWidgetType(): Observable { - return this.openImportDialog('widget-type.import', 'widget-type.widget-type-file').pipe( + return this.openImportDialog('widget.import', 'widget-type.widget-file').pipe( mergeMap((widgetTypeDetails: WidgetTypeDetails) => { if (!this.validateImportedWidgetTypeDetails(widgetTypeDetails)) { this.store.dispatch(new ActionNotificationShow( - {message: this.translate.instant('widget-type.invalid-widget-type-file-error'), + {message: this.translate.instant('widget-type.invalid-widget-file-error'), type: 'error'})); - throw new Error('Invalid widget type file'); + throw new Error('Invalid widget file'); } else { return this.widgetService.saveImportedWidgetTypeDetails(widgetTypeDetails); } diff --git a/ui-ngx/src/app/modules/home/pages/widget/save-widget-type-as-dialog.component.html b/ui-ngx/src/app/modules/home/pages/widget/save-widget-type-as-dialog.component.html index 2ce7acd7e1..7588d1d8f5 100644 --- a/ui-ngx/src/app/modules/home/pages/widget/save-widget-type-as-dialog.component.html +++ b/ui-ngx/src/app/modules/home/pages/widget/save-widget-type-as-dialog.component.html @@ -17,7 +17,7 @@ -->
-

widget.save-widget-type-as

+

widget.save-widget-as

- widget.save-widget-type-as-text + widget.save-widget-as-text widget.title diff --git a/ui-ngx/src/app/modules/home/pages/widget/widget-type.component.html b/ui-ngx/src/app/modules/home/pages/widget/widget-type.component.html index 19309e8660..9db9780b70 100644 --- a/ui-ngx/src/app/modules/home/pages/widget/widget-type.component.html +++ b/ui-ngx/src/app/modules/home/pages/widget/widget-type.component.html @@ -20,19 +20,19 @@ [disabled]="(isLoading$ | async)" (click)="onEntityAction($event, 'edit')" [fxShow]="!isEdit"> - {{'widget.edit-widget-type' | translate }} + {{ 'widget.edit' | translate }}
diff --git a/ui-ngx/src/app/modules/home/pages/widget/widget-types-table-config.resolver.ts b/ui-ngx/src/app/modules/home/pages/widget/widget-types-table-config.resolver.ts index 8fcf76f1fe..0363aa6117 100644 --- a/ui-ngx/src/app/modules/home/pages/widget/widget-types-table-config.resolver.ts +++ b/ui-ngx/src/app/modules/home/pages/widget/widget-types-table-config.resolver.ts @@ -87,13 +87,13 @@ export class WidgetTypesTableConfigResolver implements Resolve true, onAction: ($event) => this.addWidgetType($event) }, { - name: this.translate.instant('widget-type.import'), + name: this.translate.instant('widget.import'), icon: 'file_upload', isEnabled: () => true, onAction: ($event) => this.importWidgetType($event) @@ -102,13 +102,13 @@ export class WidgetTypesTableConfigResolver implements Resolve true, onAction: ($event, entity) => this.exportWidgetType($event, entity) }, { - name: this.translate.instant('widget.widget-type-details'), + name: this.translate.instant('widget.widget-details'), icon: 'edit', isEnabled: () => true, onAction: ($event, entity) => this.config.toggleEntityDetails($event, entity) @@ -117,18 +117,18 @@ export class WidgetTypesTableConfigResolver implements Resolve this.exportWidgetTypes($event, entities) } ); - this.config.deleteEntityTitle = widgetType => this.translate.instant('widget.delete-widget-type-title', - { widgetTypeName: widgetType.name }); - this.config.deleteEntityContent = () => this.translate.instant('widget.delete-widget-type-text'); - this.config.deleteEntitiesTitle = count => this.translate.instant('widget.delete-widget-types-title', {count}); - this.config.deleteEntitiesContent = () => this.translate.instant('widget.delete-widget-types-text'); + this.config.deleteEntityTitle = widgetType => this.translate.instant('widget.delete-widget-title', + { widgetName: widgetType.name }); + this.config.deleteEntityContent = () => this.translate.instant('widget.delete-widget-text'); + this.config.deleteEntitiesTitle = count => this.translate.instant('widget.delete-widgets-title', {count}); + this.config.deleteEntitiesContent = () => this.translate.instant('widget.delete-widgets-text'); this.config.loadEntity = id => this.widgetsService.getWidgetTypeById(id.id); @@ -147,7 +147,7 @@ export class WidgetTypesTableConfigResolver implements Resolve { - this.config.tableTitle = this.translate.instant('widget.widget-types'); + this.config.tableTitle = this.translate.instant('widget.widgets'); const authUser = getCurrentAuthUser(this.store); this.config.deleteEnabled = (widgetType) => this.isWidgetTypeEditable(widgetType, authUser.authority); this.config.entitySelectionEnabled = (widgetType) => this.isWidgetTypeEditable(widgetType, authUser.authority); diff --git a/ui-ngx/src/app/modules/home/pages/widget/widgets-bundle-widgets.component.html b/ui-ngx/src/app/modules/home/pages/widget/widgets-bundle-widgets.component.html index 2d95fd1fdb..bf1818faf1 100644 --- a/ui-ngx/src/app/modules/home/pages/widget/widgets-bundle-widgets.component.html +++ b/ui-ngx/src/app/modules/home/pages/widget/widgets-bundle-widgets.component.html @@ -54,14 +54,14 @@ diff --git a/ui-ngx/src/app/shared/models/entity-type.models.ts b/ui-ngx/src/app/shared/models/entity-type.models.ts index d7858965d7..5c9390f80f 100644 --- a/ui-ngx/src/app/shared/models/entity-type.models.ts +++ b/ui-ngx/src/app/shared/models/entity-type.models.ts @@ -271,14 +271,14 @@ export const entityTypeTranslations = new Map Le type de widget associé a probablement été supprimé.", "no-data": "Aucune donnée à afficher sur le widget" }, diff --git a/ui-ngx/src/assets/locale/locale.constant-it_IT.json b/ui-ngx/src/assets/locale/locale.constant-it_IT.json index 24555cc332..f2e1ffa240 100644 --- a/ui-ngx/src/assets/locale/locale.constant-it_IT.json +++ b/ui-ngx/src/assets/locale/locale.constant-it_IT.json @@ -1488,11 +1488,7 @@ "settings-schema": "Impostazioni schema", "datakey-settings-schema": "Impostazioni Data key schema", "javascript": "Javascript", - "remove-widget-type-title": "Sei sicuro di voler rimuovere il tipo di widget '{{widgetName}}'?", - "remove-widget-type-text": "Dopo la conferma il tipo di widget e tutti i suoi dati non saranno più recuperabili.", - "remove-widget-type": "Rimuovi tipo widget", "add-widget-type": "Aggiungi nuovo tipo widget", - "widget-type-load-failed-error": "Caricamento tipo widget fallito!", "widget-template-load-failed-error": "Caricamento template widget fallito!", "add": "Aggiungi Widget", "undo": "Annulla modifiche widget", diff --git a/ui-ngx/src/assets/locale/locale.constant-ja_JP.json b/ui-ngx/src/assets/locale/locale.constant-ja_JP.json index 875b0a8266..c65928e452 100644 --- a/ui-ngx/src/assets/locale/locale.constant-ja_JP.json +++ b/ui-ngx/src/assets/locale/locale.constant-ja_JP.json @@ -1331,11 +1331,7 @@ "settings-schema": "設定スキーマ", "datakey-settings-schema": "データキー設定のスキーマ", "javascript": "Javascript", - "remove-widget-type-title": "'{{widgetName}}'?", - "remove-widget-type-text": "確認後、ウィジェットのタイプと関連するすべてのデータは回復不能になります。", - "remove-widget-type": "ウィジェットタイプを削除", "add-widget-type": "新しいウィジェットタイプを追加する", - "widget-type-load-failed-error": "ウィジェットタイプの読み込みに失敗しました!", "widget-template-load-failed-error": "ウィジェットテンプレートを読み込めませんでした!", "add": "ウィジェットを追加", "undo": "ウィジェットの変更を元に戻す", diff --git a/ui-ngx/src/assets/locale/locale.constant-ka_GE.json b/ui-ngx/src/assets/locale/locale.constant-ka_GE.json index b401c3b594..28458f0a70 100644 --- a/ui-ngx/src/assets/locale/locale.constant-ka_GE.json +++ b/ui-ngx/src/assets/locale/locale.constant-ka_GE.json @@ -1578,11 +1578,7 @@ "datakey-settings-schema": "მონაცემტა გასაღები პარამეტრების სქემა", "javascript": "javascript", "js": "JS", - "remove-widget-type-title": "დარწმუნებული ხართ რომ გსურთ ვიჯეტის ტიპი '{{widgetName}}'?", - "remove-widget-type-text": "დასტურის შემთხვევაში ვიჯეტი და მასთან ასოცირებული მონაცემები დაიკარგება.", - "remove-widget-type": "ვიჯეტის ტიპის ამოღება", "add-widget-type": "ახალი ვიჯეტის ტიპი", - "widget-type-load-failed-error": "ვიჯეტის ტიპის ჩატვირთვა ვერ მოხერხდა!", "widget-template-load-failed-error": "ვიჯეტის შაბლონი ჩატვირთვა ვერ მოხერხდა!", "add": "ვიჯეტის დამატება", "undo": "ვიჯეტის ცვლილების გაუქმება", diff --git a/ui-ngx/src/assets/locale/locale.constant-ko_KR.json b/ui-ngx/src/assets/locale/locale.constant-ko_KR.json index a5660c5ceb..09cea16190 100644 --- a/ui-ngx/src/assets/locale/locale.constant-ko_KR.json +++ b/ui-ngx/src/assets/locale/locale.constant-ko_KR.json @@ -2213,11 +2213,7 @@ "datakey-settings-schema": "데이터 키 설정 스키마", "javascript": "Javascript", "js": "JS", - "remove-widget-type-title": "'{{widgetName}}' 위젯 타입을 삭제하시겠습니까?", - "remove-widget-type-text": "위젯 타입 및 관련된 모든 데이터를 복구할 수 없으므로 주의하십시오.", - "remove-widget-type": "위젯 타입 삭제", "add-widget-type": "새로운 위젯 타입 추가", - "widget-type-load-failed-error": "위젯 타입을 로드하지 못했습니다!", "widget-template-load-failed-error": "위젯 템플릿을 로드하지 못했습니다!", "add": "위젯 추가", "undo": "위젯 변경사항 취소", diff --git a/ui-ngx/src/assets/locale/locale.constant-lv_LV.json b/ui-ngx/src/assets/locale/locale.constant-lv_LV.json index c489cd3402..63e7fb6db2 100644 --- a/ui-ngx/src/assets/locale/locale.constant-lv_LV.json +++ b/ui-ngx/src/assets/locale/locale.constant-lv_LV.json @@ -1493,11 +1493,7 @@ "settings-schema": "Iestatījumu shēma", "datakey-settings-schema": "Datu atslēgas iestatījumu shēma", "javascript": "Javascript", - "remove-widget-type-title": "Vai esat pārliecināts, ka vēlaties noņemt logrīka tipu '{{widgetName}}'?", - "remove-widget-type-text": "Pēc apstiprinājuma logrīka tips un tā saistītie dati nebūs atjaunojami.", - "remove-widget-type": "Noņemt logrīka tipu", "add-widget-type": "Pievienot jaunu logrīka tipu", - "widget-type-load-failed-error": "Neveiksme ielādēt logrīka tipu!", "widget-template-load-failed-error": "Neveiksme ielādēt logrīka paraugu!", "add": "Pievienot logrīku", "undo": "Atcelt logrīka izmaiņas", diff --git a/ui-ngx/src/assets/locale/locale.constant-pt_BR.json b/ui-ngx/src/assets/locale/locale.constant-pt_BR.json index e8a105bcc2..51c8579980 100644 --- a/ui-ngx/src/assets/locale/locale.constant-pt_BR.json +++ b/ui-ngx/src/assets/locale/locale.constant-pt_BR.json @@ -1803,11 +1803,7 @@ "datakey-settings-schema": "Esquema de configuração de chave de dados", "javascript": "Javascript", "js": "JS", - "remove-widget-type-title": "Tem certeza de que deseja remover o tipo de widget '{{widgetName}}'?", - "remove-widget-type-text": "Após confirmar, não será possível recuperar o tipo de widget e nenhum dado associado.", - "remove-widget-type": "Remover tipo de widget", "add-widget-type": "Adicionar novo tipo de widget", - "widget-type-load-failed-error": "Erro ao carregar tipo de widget!", "widget-template-load-failed-error": "Erro ao carregar modelo de widget!", "add": "Adicionar widget", "undo": "Desfazer alterações de widget", diff --git a/ui-ngx/src/assets/locale/locale.constant-ro_RO.json b/ui-ngx/src/assets/locale/locale.constant-ro_RO.json index 8ea796cbc3..67f8d839be 100644 --- a/ui-ngx/src/assets/locale/locale.constant-ro_RO.json +++ b/ui-ngx/src/assets/locale/locale.constant-ro_RO.json @@ -1561,11 +1561,7 @@ "datakey-settings-schema": "Schemă setări chei date", "javascript": "Javascript", "js": "JS", - "remove-widget-type-title": "Sigur vrei să ștergi tip widget '{{widgetName}}'?", - "remove-widget-type-text": "ATENŢIE! După confirmare, tipul de widget şi toate datele aferente acestuia, vor fi șterse IREVERSIBIL!", - "remove-widget-type": "Şterge Tip Widget", "add-widget-type": "Adaugă Tip Nou Widget", - "widget-type-load-failed-error": "Eroare încărcare tip widget!", "widget-template-load-failed-error": "Eroare încarcare şablon widget!", "add": "Adaugă Widget Nou", "undo": "Anulează Modificări Widget", diff --git a/ui-ngx/src/assets/locale/locale.constant-ru_RU.json b/ui-ngx/src/assets/locale/locale.constant-ru_RU.json index 70aa4b3a23..5e15a3496e 100644 --- a/ui-ngx/src/assets/locale/locale.constant-ru_RU.json +++ b/ui-ngx/src/assets/locale/locale.constant-ru_RU.json @@ -1599,11 +1599,7 @@ "settings-schema": "Схема конфигурации", "datakey-settings-schema": "Схема конфигурации ключа данных", "javascript": "Javascript", - "remove-widget-type-title": "Вы точно хотите удалить виджет '{{widgetName}}'?", - "remove-widget-type-text": "Внимание, после подтверждения тип виджета и все связанные с ним данные будут безвозвратно утеряны.", - "remove-widget-type": "Удалить тип виджета", "add-widget-type": "Добавить новый тип виджета", - "widget-type-load-failed-error": "Не удалось загрузить тип виджета!", "widget-template-load-failed-error": "Не удалось загрузить шаблон виджета!", "add": "Добавить виджет", "undo": "Откатить изменения в виджете", diff --git a/ui-ngx/src/assets/locale/locale.constant-sl_SI.json b/ui-ngx/src/assets/locale/locale.constant-sl_SI.json index f2943e6145..4fded7d020 100644 --- a/ui-ngx/src/assets/locale/locale.constant-sl_SI.json +++ b/ui-ngx/src/assets/locale/locale.constant-sl_SI.json @@ -2214,11 +2214,7 @@ "datakey-settings-schema": "Shema nastavitev podatkovnega ključa", "javascript": "Javascript", "js": "JS", - "remove-widget-type-title": "Ali ste prepričani, da želite odstraniti vrsto pripomočka '{{widgetName}}'?", - "remove-widget-type-text": "Po potrditvi bodo vrsta pripomočka in vsi povezani podatki nepopravljivi.", - "remove-widget-type": "Odstrani vrsto pripomočka", "add-widget-type": "Dodaj novo vrsto pripomočka", - "widget-type-load-failed-error": "Vrste pripomočka ni bilo mogoče naložiti!", "widget-template-load-failed-error": "Predloge pripomočka ni bilo mogoče naložiti!", "add": "Dodaj pripomoček", "undo": "Razveljavi spremembe pripomočka", diff --git a/ui-ngx/src/assets/locale/locale.constant-tr_TR.json b/ui-ngx/src/assets/locale/locale.constant-tr_TR.json index 50758fb1eb..e9be2e691a 100644 --- a/ui-ngx/src/assets/locale/locale.constant-tr_TR.json +++ b/ui-ngx/src/assets/locale/locale.constant-tr_TR.json @@ -2831,11 +2831,7 @@ "image-preview": "Resim Önizleme", "javascript": "Javascript", "js": "JS", - "remove-widget-type-title": "'{{widgetName}}' isimli gösterge türünü kaldırmak istediğinizden emin misiniz?", - "remove-widget-type-text": "UYARI: Onaylandıktan sonra, gösterge türü ve ilgili tüm veriler geri yüklenemez şekilde silinecektir.", - "remove-widget-type": "Gösterge türünü kaldır", "add-widget-type": "Yeni gösterge türü ekle", - "widget-type-load-failed-error": "Gösterge türü yüklenemedi!", "widget-template-load-failed-error": "Gösterge şablonu yüklenemedi!", "add": "Gösterge ekle", "undo": "Gösterge değişikliklerini geri al", diff --git a/ui-ngx/src/assets/locale/locale.constant-uk_UA.json b/ui-ngx/src/assets/locale/locale.constant-uk_UA.json index 10d998d031..da3b6ecaee 100644 --- a/ui-ngx/src/assets/locale/locale.constant-uk_UA.json +++ b/ui-ngx/src/assets/locale/locale.constant-uk_UA.json @@ -2170,11 +2170,7 @@ "settings-schema": "Схема налаштувань", "datakey-settings-schema": "Схема налаштувань ключів даних", "javascript": "Javascript", - "remove-widget-type-title": "Ви впевнені, що хочете видалити тип віджета '{{widgetName}}'?", - "remove-widget-type-text": "Будьте обережні, після підтвердження, тип віджета і всі пов'язані з ним дані стануть недоступними.", - "remove-widget-type": "Видалити тип віджета", "add-widget-type": "Додати новий тип віджета", - "widget-type-load-failed-error": "Не вдалося завантажити тип віджета!", "widget-template-load-failed-error": "Не вдалося завантажити шаблон віджета!", "add": "Додати віджет", "undo": "Скасувати зміни віджета", diff --git a/ui-ngx/src/assets/locale/locale.constant-zh_CN.json b/ui-ngx/src/assets/locale/locale.constant-zh_CN.json index b8c0a36fe0..5df0238594 100644 --- a/ui-ngx/src/assets/locale/locale.constant-zh_CN.json +++ b/ui-ngx/src/assets/locale/locale.constant-zh_CN.json @@ -3965,11 +3965,7 @@ "latest-data-key-settings-form-selector": "最新值数据键设置表单选择器", "javascript": "Javascript", "js": "JS", - "remove-widget-type-title": "确定要删除部件类型 '{{widgetName}}'吗?", - "remove-widget-type-text": "确认后,窗口部件类型和所有相关数据将不可恢复。", - "remove-widget-type": "删除部件类型", "add-widget-type": "添加部件类型", - "widget-type-load-failed-error": "无法加载部件类型!", "widget-template-load-failed-error": "无法加载部件模板!", "add": "添加部件", "undo": "撤消部件更改", diff --git a/ui-ngx/src/assets/locale/locale.constant-zh_TW.json b/ui-ngx/src/assets/locale/locale.constant-zh_TW.json index 0091acbb61..85c9181ae8 100644 --- a/ui-ngx/src/assets/locale/locale.constant-zh_TW.json +++ b/ui-ngx/src/assets/locale/locale.constant-zh_TW.json @@ -3390,11 +3390,7 @@ "latest-data-key-settings-form-selector": "最新資料鍵設置表單選擇器", "javascript": "Javascript", "js": "JS", - "remove-widget-type-title": "您確定要刪除部件類型 '{{widgetName}}'嗎?", - "remove-widget-type-text": "確認後,窗口部件類型和所有相關資料將無法恢復。", - "remove-widget-type": "刪除部件類型", "add-widget-type": "增加新的部件類型", - "widget-type-load-failed-error": "無法加載部件類型!", "widget-template-load-failed-error": "無法加載部件模板!", "add": "增加部件", "undo": "復原部件更改", From e1f034500fa9ada62a7f142d2e712e1a8706d3e5 Mon Sep 17 00:00:00 2001 From: Igor Kulikov Date: Wed, 18 Oct 2023 18:02:49 +0300 Subject: [PATCH 11/29] UI: Outdoor Environment: Temperature widgets --- .../widget_bundles/outdoor_environment.json | 20 +++ .../horizontal_temperature_card.json | 28 ++++ ...ntal_temperature_card_with_background.json | 28 ++++ .../simple_temperature_chart_card.json | 31 +++++ ...emperature_chart_card_with_background.json | 31 +++++ .../system/widget_types/temperature_card.json | 28 ++++ .../temperature_card_with_background.json | 28 ++++ .../widget_types/temperature_chart_card.json | 31 +++++ ...emperature_chart_card_with_background.json | 31 +++++ .../widget_types/value_and_chart_card.json | 2 +- .../DefaultSystemDataLoaderService.java | 1 + ...gated-value-card-basic-config.component.ts | 121 ++++++++++-------- .../pages/widget/widget-editor.component.ts | 4 +- 13 files changed, 332 insertions(+), 52 deletions(-) create mode 100644 application/src/main/data/json/system/widget_bundles/outdoor_environment.json create mode 100644 application/src/main/data/json/system/widget_types/horizontal_temperature_card.json create mode 100644 application/src/main/data/json/system/widget_types/horizontal_temperature_card_with_background.json create mode 100644 application/src/main/data/json/system/widget_types/simple_temperature_chart_card.json create mode 100644 application/src/main/data/json/system/widget_types/simple_temperature_chart_card_with_background.json create mode 100644 application/src/main/data/json/system/widget_types/temperature_card.json create mode 100644 application/src/main/data/json/system/widget_types/temperature_card_with_background.json create mode 100644 application/src/main/data/json/system/widget_types/temperature_chart_card.json create mode 100644 application/src/main/data/json/system/widget_types/temperature_chart_card_with_background.json diff --git a/application/src/main/data/json/system/widget_bundles/outdoor_environment.json b/application/src/main/data/json/system/widget_bundles/outdoor_environment.json new file mode 100644 index 0000000000..a21eaf65f0 --- /dev/null +++ b/application/src/main/data/json/system/widget_bundles/outdoor_environment.json @@ -0,0 +1,20 @@ +{ + "widgetsBundle": { + "alias": "outdoor_environment", + "title": "Outdoor Environment", + "image": null, + "description": null, + "externalId": null, + "name": "Outdoor Environment" + }, + "widgetTypeFqns": [ + "temperature_card", + "temperature_card_with_background", + "horizontal_temperature_card", + "horizontal_temperature_card_with_background", + "temperature_chart_card", + "temperature_chart_card_with_background", + "simple_temperature_chart_card", + "simple_temperature_chart_card_with_background" + ] +} \ No newline at end of file diff --git a/application/src/main/data/json/system/widget_types/horizontal_temperature_card.json b/application/src/main/data/json/system/widget_types/horizontal_temperature_card.json new file mode 100644 index 0000000000..153195a499 --- /dev/null +++ b/application/src/main/data/json/system/widget_types/horizontal_temperature_card.json @@ -0,0 +1,28 @@ +{ + "fqn": "horizontal_temperature_card", + "name": "Horizontal temperature card", + "deprecated": false, + "image": "data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAAMgAAACgCAMAAAB+IdObAAAAsVBMVEUAAADf39/u7u7x8fHr6+vl5eXf39/f39/r6+vq6ur////z8/MjTMc+Ys7IyMjj4+Pk6fitvOqRpePPz8/x8fGtra2QkJDCwsLy9Pv5+fnI0vHV1dW2trZYWFg9PT3n5+cwV8vt7e1aeNXW3fV1j9zb29tog9laedW8vLxmZma6x+5MbtGCgoIvLy88PDyfsOeDmt+enp50dHRKSkrU1NSRpuNMbtIhISHd3d0xV8qdnZ2QKY5sAAAACnRSTlMAIN/vz6AQML+/B+y1FwAAA4lJREFUeNrt2glzmkAYxnHTptfLsssNCgoqGPCsR8/v/8H6LjTVaqsZ66TGeX4ZDbDMZP+yDpPRFgAAAAAAAAAAAAAAAAAAAAAAAAAAAMBzenv3wr1tae8+GC+dd3/Xat29phvw+q71hm7Cm9Y93YRXrVd0ExBybRBybRBybRBybW47ZGiKPKL/IurY9pAalm13dofs8a8te2zRrr+EmOZIOLTVZT4d4cV0GXYm2Mgi9lEwk6salpmJSZ3BA81Jp0Is4TjZgLaU31UexYqUkiqWPG/eJk8SxbHnSUX+WilFkmJ+5vGzdYQYOLkQD7z9SYiPjim+RdTIzcgS+ppM+KSPI26MnhASmQPaIbtE3elaBvNpb9VdynUwl/F82qVeFfe+z+V0LgOfvvCunK6qJZ3roU5whLCITL0oooyfG6MRUWYT2ULYepJ65HTIMNsPUbOgmgYB9cgPeDdYrqpg5vV4bNrz+UATomgWrCo6lxCL+u+Ljr44Q72+OK1hi9FDVgfmxHjEfELI4jCkp5S3DVktp0uleM+bedVvIXp5ncuyomaBWTQWgthiO117MOK0SPD60obOU64IHS6tYF3Jx5BZtVZqXa10yLya+d7cl71qpkO+97pL+je5GNQrqLkO5sHbqENbJ0LMBzGgfd5Ol7dzwGse3va8f8PvcusyIUPBPtPfqYAuzBSsQ0yvKYcuEzIR2oKe0cBkHWLDjDuOhAyfHmKL2reIHvXpj/oG7Wi3+ZHSP7JM7tgJcfaXRvT4Eo/z/ETISDTG9ChpZs3T3Gx4tvqH2/puyr/aZTP92NcnuFQPGf12nXlOR/5zq3nlR2L0x3uNHvl8IiQXjc5uSOom7cRVUhKFRmj4sfwqwzRWYT8xEtclfdjw9YarSqOUxUaW7XM6JtsFntc59uHd/1NzxewTIQvRiHZDvrqJUci0KJqQhEI3LVJ3UxJXuXEd0ncNHbJJiiItSnLTM+7sIjO1vH7Tmw+ZMGmfowdMwcknQqKJ0BzahoSyKH0jCeM0JCpC3/C5IyzT0k0oMUpX1SHtRHIIH2uXYRGHCZ0T0hjwjm3qDYv2NQOZQ6dCKMozMbHpmOOTbBdS0QVYw+hvA9x3GHKGPh1l9Ol53fp/iC8RQq4NQq4NQq4NQq7N/e18PH0zXxho3d17xkv3/t0tfakGAAAAAAAAAAAAAAAAAAAAAAAAAAAA4Jn8AJ01hSMevW95AAAAAElFTkSuQmCC", + "description": "Displays a latest temperature telemetry data in a horizontal layout.", + "descriptor": { + "type": "latest", + "sizeX": 5, + "sizeY": 1.5, + "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: '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\":\"range\",\"color\":\"rgba(0, 0, 0, 0.87)\",\"rangeList\":[{\"from\":null,\"to\":-20,\"color\":\"#234CC7\"},{\"from\":-20,\"to\":0,\"color\":\"#305AD7\"},{\"from\":0,\"to\":10,\"color\":\"#7191EF\"},{\"from\":10,\"to\":20,\"color\":\"#FFA600\"},{\"from\":20,\"to\":30,\"color\":\"#F36900\"},{\"from\":30,\"to\":40,\"color\":\"#F04022\"},{\"from\":40,\"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)\",\"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';\",\"rangeList\":[{\"from\":null,\"to\":-20,\"color\":\"#234CC7\"},{\"from\":-20,\"to\":0,\"color\":\"#305AD7\"},{\"from\":0,\"to\":10,\"color\":\"#7191EF\"},{\"from\":10,\"to\":20,\"color\":\"#FFA600\"},{\"from\":20,\"to\":30,\"color\":\"#F36900\"},{\"from\":30,\"to\":40,\"color\":\"#F04022\"},{\"from\":40,\"to\":null,\"color\":\"#D81838\"}]},\"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\":\"Horizontal temperature 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}}" + }, + "externalId": null, + "tags": [ + "temperature", + "weather", + "environment" + ] +} \ No newline at end of file diff --git a/application/src/main/data/json/system/widget_types/horizontal_temperature_card_with_background.json b/application/src/main/data/json/system/widget_types/horizontal_temperature_card_with_background.json new file mode 100644 index 0000000000..1c711e7e1f --- /dev/null +++ b/application/src/main/data/json/system/widget_types/horizontal_temperature_card_with_background.json @@ -0,0 +1,28 @@ +{ + "fqn": "horizontal_temperature_card_with_background", + "name": "Horizontal temperature card with background", + "deprecated": false, + "image": "data:image/png;base64,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", + "description": "Displays a latest temperature telemetry data in a horizontal layout with background.", + "descriptor": { + "type": "latest", + "sizeX": 5, + "sizeY": 1.5, + "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: '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\":\"range\",\"color\":\"rgba(0, 0, 0, 0.87)\",\"rangeList\":[{\"from\":null,\"to\":-20,\"color\":\"#224AC2\"},{\"from\":-20,\"to\":0,\"color\":\"#2B54CE\"},{\"from\":0,\"to\":10,\"color\":\"#6083EC\"},{\"from\":10,\"to\":20,\"color\":\"#F89E0D\"},{\"from\":20,\"to\":30,\"color\":\"#F77410\"},{\"from\":30,\"to\":40,\"color\":\"#F04022\"},{\"from\":40,\"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)\",\"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';\",\"rangeList\":[{\"from\":null,\"to\":-20,\"color\":\"#224AC2\"},{\"from\":-20,\"to\":0,\"color\":\"#2B54CE\"},{\"from\":0,\"to\":10,\"color\":\"#6083EC\"},{\"from\":10,\"to\":20,\"color\":\"#F89E0D\"},{\"from\":20,\"to\":30,\"color\":\"#F77410\"},{\"from\":30,\"to\":40,\"color\":\"#F04022\"},{\"from\":40,\"to\":null,\"color\":\"#DE2343\"}]},\"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\",\"imageBase64\":\"data:image/png;base64,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\",\"imageUrl\":null,\"color\":\"#fff\",\"overlay\":{\"enabled\":true,\"color\":\"rgba(255,255,255,0.72)\",\"blur\":3}},\"autoScale\":true},\"title\":\"Horizontal temperature card with background\",\"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}}" + }, + "externalId": null, + "tags": [ + "temperature", + "weather", + "environment" + ] +} \ No newline at end of file diff --git a/application/src/main/data/json/system/widget_types/simple_temperature_chart_card.json b/application/src/main/data/json/system/widget_types/simple_temperature_chart_card.json new file mode 100644 index 0000000000..f89e7ec47b --- /dev/null +++ b/application/src/main/data/json/system/widget_types/simple_temperature_chart_card.json @@ -0,0 +1,31 @@ +{ + "fqn": "simple_temperature_chart_card", + "name": "Simple temperature chart card", + "deprecated": false, + "image": "data:image/png;base64,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", + "description": "Displays historical temperature values as a simplified chart. Optionally may display the corresponding latest temperature value.", + "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: 'temperature', label: 'Temperature', type: 'timeseries', color: 'rgba(0, 0, 0, 0.87)'}\n ];\n },\n defaultLatestDataKeysFunction: function(configComponent) {\n return [{ name: 'temperature', 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\":\"Temperature\",\"color\":\"rgba(0, 0, 0, 0.87)\",\"settings\":{},\"_hash\":0.8587686344902596,\"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}],\"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() * 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}]}],\"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\":null,\"to\":-20,\"color\":\"#234CC7\"},{\"from\":-20,\"to\":0,\"color\":\"#305AD7\"},{\"from\":0,\"to\":10,\"color\":\"#7191EF\"},{\"from\":10,\"to\":20,\"color\":\"#FFA600\"},{\"from\":20,\"to\":30,\"color\":\"#F36900\"},{\"from\":30,\"to\":40,\"color\":\"#F04022\"},{\"from\":40,\"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\":\"Temperature\",\"dropShadow\":true,\"enableFullscreen\":false,\"titleStyle\":null,\"mobileHeight\":null,\"configMode\":\"basic\",\"actions\":{},\"showTitleIcon\":true,\"titleIcon\":\"thermostat\",\"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\":\"°C\",\"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": [ + "temperature", + "weather", + "environment" + ] +} \ No newline at end of file diff --git a/application/src/main/data/json/system/widget_types/simple_temperature_chart_card_with_background.json b/application/src/main/data/json/system/widget_types/simple_temperature_chart_card_with_background.json new file mode 100644 index 0000000000..9c8d069c8e --- /dev/null +++ b/application/src/main/data/json/system/widget_types/simple_temperature_chart_card_with_background.json @@ -0,0 +1,31 @@ +{ + "fqn": "simple_temperature_chart_card_with_background", + "name": "Simple temperature chart card with background", + "deprecated": false, + "image": "data:image/png;base64,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", + "description": "Displays historical temperature values as a simplified chart with background. Optionally may display the corresponding latest temperature value.", + "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: 'temperature', label: 'Temperature', type: 'timeseries', color: 'rgba(0, 0, 0, 0.87)'}\n ];\n },\n defaultLatestDataKeysFunction: function(configComponent) {\n return [{ name: 'temperature', 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\":\"Temperature\",\"color\":\"rgba(0, 0, 0, 0.87)\",\"settings\":{},\"_hash\":0.8587686344902596,\"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}],\"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() * 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}]}],\"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\":null,\"to\":-20,\"color\":\"#224AC2\"},{\"from\":-20,\"to\":0,\"color\":\"#2B54CE\"},{\"from\":0,\"to\":10,\"color\":\"#6083EC\"},{\"from\":10,\"to\":20,\"color\":\"#F89E0D\"},{\"from\":20,\"to\":30,\"color\":\"#F77410\"},{\"from\":30,\"to\":40,\"color\":\"#F04022\"},{\"from\":40,\"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\",\"imageBase64\":\"data:image/png;base64,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\",\"imageUrl\":null,\"color\":\"#fff\",\"overlay\":{\"enabled\":true,\"color\":\"rgba(255,255,255,0.72)\",\"blur\":3}}},\"title\":\"Temperature\",\"dropShadow\":true,\"enableFullscreen\":false,\"titleStyle\":null,\"mobileHeight\":null,\"configMode\":\"basic\",\"actions\":{},\"showTitleIcon\":true,\"titleIcon\":\"thermostat\",\"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\":\"°C\",\"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": [ + "temperature", + "weather", + "environment" + ] +} \ No newline at end of file diff --git a/application/src/main/data/json/system/widget_types/temperature_card.json b/application/src/main/data/json/system/widget_types/temperature_card.json new file mode 100644 index 0000000000..8986d46d23 --- /dev/null +++ b/application/src/main/data/json/system/widget_types/temperature_card.json @@ -0,0 +1,28 @@ +{ + "fqn": "temperature_card", + "name": "Temperature card", + "deprecated": false, + "image": "data:image/png;base64,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", + "description": "Displays a latest temperature telemetry data in a box layout.", + "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: 'temperature', label: 'Temperature', 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\":\"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\":\"range\",\"color\":\"rgba(0, 0, 0, 0.87)\",\"rangeList\":[{\"from\":null,\"to\":-20,\"color\":\"#234CC7\"},{\"from\":-20,\"to\":0,\"color\":\"#305AD7\"},{\"from\":0,\"to\":10,\"color\":\"#7191EF\"},{\"from\":10,\"to\":20,\"color\":\"#FFA600\"},{\"from\":20,\"to\":30,\"color\":\"#F36900\"},{\"from\":30,\"to\":40,\"color\":\"#F04022\"},{\"from\":40,\"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\":{\"family\":\"Roboto\",\"size\":52,\"sizeUnit\":\"px\",\"style\":\"normal\",\"weight\":\"500\"},\"valueColor\":{\"type\":\"range\",\"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';\",\"rangeList\":[{\"from\":null,\"to\":-20,\"color\":\"#234CC7\"},{\"from\":-20,\"to\":0,\"color\":\"#305AD7\"},{\"from\":0,\"to\":10,\"color\":\"#7191EF\"},{\"from\":10,\"to\":20,\"color\":\"#FFA600\"},{\"from\":20,\"to\":30,\"color\":\"#F36900\"},{\"from\":30,\"to\":40,\"color\":\"#F04022\"},{\"from\":40,\"to\":null,\"color\":\"#D81838\"}]},\"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\":\"Temperature 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}}" + }, + "externalId": null, + "tags": [ + "temperature", + "weather", + "environment" + ] +} \ No newline at end of file diff --git a/application/src/main/data/json/system/widget_types/temperature_card_with_background.json b/application/src/main/data/json/system/widget_types/temperature_card_with_background.json new file mode 100644 index 0000000000..e6743fbe8a --- /dev/null +++ b/application/src/main/data/json/system/widget_types/temperature_card_with_background.json @@ -0,0 +1,28 @@ +{ + "fqn": "temperature_card_with_background", + "name": "Temperature card with background", + "deprecated": false, + "image": "data:image/png;base64,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", + "description": "Displays a latest temperature telemetry data in a box layout with background.", + "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: 'temperature', label: 'Temperature', 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\":\"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\":\"range\",\"color\":\"rgba(0, 0, 0, 0.87)\",\"rangeList\":[{\"from\":null,\"to\":-20,\"color\":\"#224AC2\"},{\"from\":-20,\"to\":0,\"color\":\"#2B54CE\"},{\"from\":0,\"to\":10,\"color\":\"#6083EC\"},{\"from\":10,\"to\":20,\"color\":\"#F89E0D\"},{\"from\":20,\"to\":30,\"color\":\"#F77410\"},{\"from\":30,\"to\":40,\"color\":\"#F04022\"},{\"from\":40,\"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\":{\"family\":\"Roboto\",\"size\":52,\"sizeUnit\":\"px\",\"style\":\"normal\",\"weight\":\"500\"},\"valueColor\":{\"type\":\"range\",\"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';\",\"rangeList\":[{\"from\":null,\"to\":-20,\"color\":\"#224AC2\"},{\"from\":-20,\"to\":0,\"color\":\"#2B54CE\"},{\"from\":0,\"to\":10,\"color\":\"#6083EC\"},{\"from\":10,\"to\":20,\"color\":\"#F89E0D\"},{\"from\":20,\"to\":30,\"color\":\"#F77410\"},{\"from\":30,\"to\":40,\"color\":\"#F04022\"},{\"from\":40,\"to\":null,\"color\":\"#DE2343\"}]},\"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\",\"imageBase64\":\"data:image/png;base64,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\",\"imageUrl\":null,\"color\":\"#fff\",\"overlay\":{\"enabled\":true,\"color\":\"rgba(255,255,255,0.72)\",\"blur\":3}},\"autoScale\":true},\"title\":\"Temperature card with background\",\"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}}" + }, + "externalId": null, + "tags": [ + "temperature", + "weather", + "environment" + ] +} \ No newline at end of file diff --git a/application/src/main/data/json/system/widget_types/temperature_chart_card.json b/application/src/main/data/json/system/widget_types/temperature_chart_card.json new file mode 100644 index 0000000000..3f23b0e277 --- /dev/null +++ b/application/src/main/data/json/system/widget_types/temperature_chart_card.json @@ -0,0 +1,31 @@ +{ + "fqn": "temperature_chart_card", + "name": "Temperature chart card", + "deprecated": false, + "image": "data:image/png;base64,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", + "description": "Displays a temperature data as a combination of the latest and aggregated values. Optionally may display the corresponding historical values as a 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: 'temperature', label: 'Temperature', type: 'timeseries', color: 'rgba(0, 0, 0, 0.87)', units: '°C', decimals: 0 }\n ];\n },\n defaultLatestDataKeysFunction: function(configComponent, configData) {\n return configComponent.createDefaultAggregatedValueLatestDataKeys(configData, 'temperature', '°C');\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\":\"Temperature\",\"color\":\"rgba(0, 0, 0, 0.87)\",\"settings\":{\"showLines\":true,\"fillLines\":true,\"showPoints\":false},\"_hash\":0.8587686344902596,\"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\":\"°C\",\"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\":null,\"to\":-20,\"color\":\"#234CC7\"},{\"from\":-20,\"to\":0,\"color\":\"#305AD7\"},{\"from\":0,\"to\":10,\"color\":\"#7191EF\"},{\"from\":10,\"to\":20,\"color\":\"#FFA600\"},{\"from\":20,\"to\":30,\"color\":\"#F36900\"},{\"from\":30,\"to\":40,\"color\":\"#F04022\"},{\"from\":40,\"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() * 40 - 20;\\nif (value < -60) {\\n\\tvalue = -60;\\n} else if (value > 60) {\\n\\tvalue = 60;\\n}\\nreturn value;\",\"aggregationType\":null,\"units\":\"°C\",\"decimals\":null,\"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() * 4 - 2;\\nif (value < -6) {\\n\\tvalue = -6;\\n} else if (value > 6) {\\n\\tvalue = 6;\\n}\\nreturn value;\",\"aggregationType\":null,\"units\":\"°C\",\"decimals\":1,\"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\":\"Temperature\",\"dropShadow\":true,\"enableFullscreen\":false,\"titleStyle\":{\"fontSize\":\"16px\",\"fontWeight\":400},\"mobileHeight\":null,\"configMode\":\"basic\",\"actions\":{},\"showTitleIcon\":true,\"titleIcon\":\"device_thermostat\",\"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": [ + "temperature", + "weather", + "environment" + ] +} \ No newline at end of file diff --git a/application/src/main/data/json/system/widget_types/temperature_chart_card_with_background.json b/application/src/main/data/json/system/widget_types/temperature_chart_card_with_background.json new file mode 100644 index 0000000000..9d5ebe5911 --- /dev/null +++ b/application/src/main/data/json/system/widget_types/temperature_chart_card_with_background.json @@ -0,0 +1,31 @@ +{ + "fqn": "temperature_chart_card_with_background", + "name": "Temperature chart card with background", + "deprecated": false, + "image": "data:image/png;base64,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", + "description": "Displays a temperature data as a combination of the latest and aggregated values with background. Optionally may display the corresponding historical values as a 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: 'temperature', label: 'Temperature', type: 'timeseries', color: 'rgba(0, 0, 0, 0.87)', units: '°C', decimals: 0 }\n ];\n },\n defaultLatestDataKeysFunction: function(configComponent, configData) {\n return configComponent.createDefaultAggregatedValueLatestDataKeys(configData, 'temperature', '°C');\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\":\"Temperature\",\"color\":\"rgba(0, 0, 0, 0.87)\",\"settings\":{\"showLines\":true,\"fillLines\":true,\"showPoints\":false},\"_hash\":0.8587686344902596,\"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\":\"°C\",\"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\":null,\"to\":-20,\"color\":\"#224AC2\"},{\"from\":-20,\"to\":0,\"color\":\"#2B54CE\"},{\"from\":0,\"to\":10,\"color\":\"#6083EC\"},{\"from\":10,\"to\":20,\"color\":\"#F89E0D\"},{\"from\":20,\"to\":30,\"color\":\"#F77410\"},{\"from\":30,\"to\":40,\"color\":\"#F04022\"},{\"from\":40,\"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() * 40 - 20;\\nif (value < -60) {\\n\\tvalue = -60;\\n} else if (value > 60) {\\n\\tvalue = 60;\\n}\\nreturn value;\",\"aggregationType\":null,\"units\":\"°C\",\"decimals\":null,\"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() * 4 - 2;\\nif (value < -6) {\\n\\tvalue = -6;\\n} else if (value > 6) {\\n\\tvalue = 6;\\n}\\nreturn value;\",\"aggregationType\":null,\"units\":\"°C\",\"decimals\":1,\"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\",\"imageBase64\":\"data:image/png;base64,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\",\"imageUrl\":null,\"color\":\"#fff\",\"overlay\":{\"enabled\":true,\"color\":\"rgba(255,255,255,0.72)\",\"blur\":3}},\"autoScale\":true},\"title\":\"Temperature\",\"dropShadow\":true,\"enableFullscreen\":false,\"titleStyle\":{\"fontSize\":\"16px\",\"fontWeight\":400},\"mobileHeight\":null,\"configMode\":\"basic\",\"actions\":{},\"showTitleIcon\":true,\"titleIcon\":\"device_thermostat\",\"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": [ + "temperature", + "weather", + "environment" + ] +} \ No newline at end of file diff --git a/application/src/main/data/json/system/widget_types/value_and_chart_card.json b/application/src/main/data/json/system/widget_types/value_and_chart_card.json index aa8e6b31ee..10cfba9105 100644 --- a/application/src/main/data/json/system/widget_types/value_and_chart_card.json +++ b/application/src/main/data/json/system/widget_types/value_and_chart_card.json @@ -11,7 +11,7 @@ "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: 'watermeter', label: 'Watermeter', type: 'timeseries', color: 'rgba(0, 0, 0, 0.87)', units: 'm³', decimals: 0 }\n ];\n },\n defaultLatestDataKeysFunction: function(configComponent) {\n return configComponent.createDefaultAggregatedValueLatestDataKeys('watermeter', 'm³');\n }\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: 'watermeter', label: 'Watermeter', type: 'timeseries', color: 'rgba(0, 0, 0, 0.87)', units: 'm³', decimals: 0 }\n ];\n },\n defaultLatestDataKeysFunction: function(configComponent, configData) {\n return configComponent.createDefaultAggregatedValueLatestDataKeys(configData, 'watermeter', 'm³');\n }\n };\n}\n", "settingsSchema": "{}", "dataKeySettingsSchema": "{}", "latestDataKeySettingsSchema": "{}", diff --git a/application/src/main/java/org/thingsboard/server/service/install/DefaultSystemDataLoaderService.java b/application/src/main/java/org/thingsboard/server/service/install/DefaultSystemDataLoaderService.java index 0bb9d67c07..19d7780a79 100644 --- a/application/src/main/java/org/thingsboard/server/service/install/DefaultSystemDataLoaderService.java +++ b/application/src/main/java/org/thingsboard/server/service/install/DefaultSystemDataLoaderService.java @@ -534,6 +534,7 @@ public class DefaultSystemDataLoaderService implements SystemDataLoaderService { this.deleteSystemWidgetBundle("count_widgets"); this.deleteSystemWidgetBundle("weather_widgets"); this.deleteSystemWidgetBundle("status_indicators"); + this.deleteSystemWidgetBundle("outdoor_environment"); installScripts.loadSystemWidgets(); } diff --git a/ui-ngx/src/app/modules/home/components/widget/config/basic/cards/aggregated-value-card-basic-config.component.ts b/ui-ngx/src/app/modules/home/components/widget/config/basic/cards/aggregated-value-card-basic-config.component.ts index ad88ee79a0..b8794b37fc 100644 --- a/ui-ngx/src/app/modules/home/components/widget/config/basic/cards/aggregated-value-card-basic-config.component.ts +++ b/ui-ngx/src/app/modules/home/components/widget/config/basic/cards/aggregated-value-card-basic-config.component.ts @@ -117,27 +117,81 @@ export class AggregatedValueCardBasicConfigComponent extends BasicWidgetConfigCo } protected defaultLatestDataKeys(configData: WidgetConfigComponentData): DataKey[] { - return this.createDefaultAggregatedValueLatestDataKeys('watermeter', 'm³'); + return this.createDefaultAggregatedValueLatestDataKeys(configData, 'watermeter', 'm³'); } - createDefaultAggregatedValueLatestDataKeys(keyName: string, units): DataKey[] { + createDefaultAggregatedValueLatestDataKeys(configData: WidgetConfigComponentData, keyName: string, units): DataKey[] { + let centerKeySettings: AggregatedValueCardKeySettings = { + position: AggregatedValueCardKeyPosition.center, + font: { + family: 'Roboto', + size: 52, + sizeUnit: 'px', + style: 'normal', + weight: '500', + lineHeight: '1' + }, + color: constantColor('rgba(0, 0, 0, 0.87)'), + showArrow: false + }; + let rightTopKeySettings: AggregatedValueCardKeySettings = { + position: AggregatedValueCardKeyPosition.rightTop, + font: { + family: 'Roboto', + size: 14, + sizeUnit: 'px', + style: 'normal', + weight: '500', + lineHeight: '1' + }, + color: { + color: 'rgba(0, 0, 0, 0.87)', + type: ColorType.range, + rangeList: [ + {to: 0, color: '#198038'}, + {from: 0, to: 0, color: 'rgba(0, 0, 0, 0.87)'}, + {from: 0, color: '#D12730'} + ], + colorFunction: '' + }, + showArrow: true + }; + let rightBottomKeySettings: AggregatedValueCardKeySettings = { + position: AggregatedValueCardKeyPosition.rightBottom, + font: { + family: 'Roboto', + size: 11, + sizeUnit: 'px', + style: 'normal', + weight: '400', + lineHeight: '1' + }, + color: constantColor('rgba(0, 0, 0, 0.38)'), + showArrow: false + }; + const datasources: Datasource[] = configData.config.datasources; + if (datasources?.length) { + const latestDataKeys = datasources[0].latestDataKeys; + if (latestDataKeys) { + const center = latestDataKeys.find(dataKey => dataKey.settings?.position === AggregatedValueCardKeyPosition.center); + if (center) { + centerKeySettings = {...centerKeySettings, ...center.settings}; + } + const rightTop = latestDataKeys.find(dataKey => dataKey.settings?.position === AggregatedValueCardKeyPosition.rightTop); + if (rightTop) { + rightTopKeySettings = {...rightTopKeySettings, ...rightTop.settings}; + } + const rightBottom = latestDataKeys.find(dataKey => dataKey.settings?.position === AggregatedValueCardKeyPosition.rightBottom); + if (rightBottom) { + rightBottomKeySettings = {...rightBottomKeySettings, ...rightBottom.settings}; + } + } + } return [ { name: keyName, label: 'Latest', type: DataKeyType.timeseries, units, decimals: 0, aggregationType: AggregationType.NONE, - settings: { - position: AggregatedValueCardKeyPosition.center, - font: { - family: 'Roboto', - size: 52, - sizeUnit: 'px', - style: 'normal', - weight: '500', - lineHeight: '1' - }, - color: constantColor('rgba(0, 0, 0, 0.87)'), - showArrow: false - } as AggregatedValueCardKeySettings + settings: centerKeySettings }, { name: keyName, label: 'Delta percent', type: DataKeyType.timeseries, units: '%', decimals: 0, @@ -145,28 +199,7 @@ export class AggregatedValueCardBasicConfigComponent extends BasicWidgetConfigCo comparisonEnabled: true, timeForComparison: 'previousInterval', comparisonResultType: ComparisonResultType.DELTA_PERCENT, - settings: { - position: AggregatedValueCardKeyPosition.rightTop, - font: { - family: 'Roboto', - size: 14, - sizeUnit: 'px', - style: 'normal', - weight: '500', - lineHeight: '1' - }, - color: { - color: 'rgba(0, 0, 0, 0.87)', - type: ColorType.range, - rangeList: [ - {to: 0, color: '#198038'}, - {from: 0, to: 0, color: 'rgba(0, 0, 0, 0.87)'}, - {from: 0, color: '#D12730'} - ], - colorFunction: '' - }, - showArrow: true - } as AggregatedValueCardKeySettings + settings: rightTopKeySettings }, { name: keyName, label: 'Delta absolute', type: DataKeyType.timeseries, units, decimals: 1, @@ -174,19 +207,7 @@ export class AggregatedValueCardBasicConfigComponent extends BasicWidgetConfigCo comparisonEnabled: true, timeForComparison: 'previousInterval', comparisonResultType: ComparisonResultType.DELTA_ABSOLUTE, - settings: { - position: AggregatedValueCardKeyPosition.rightBottom, - font: { - family: 'Roboto', - size: 11, - sizeUnit: 'px', - style: 'normal', - weight: '400', - lineHeight: '1' - }, - color: constantColor('rgba(0, 0, 0, 0.38)'), - showArrow: false - } as AggregatedValueCardKeySettings + settings: rightBottomKeySettings } ]; } diff --git a/ui-ngx/src/app/modules/home/pages/widget/widget-editor.component.ts b/ui-ngx/src/app/modules/home/pages/widget/widget-editor.component.ts index d3ba1d1daa..ea9a6bbcb2 100644 --- a/ui-ngx/src/app/modules/home/pages/widget/widget-editor.component.ts +++ b/ui-ngx/src/app/modules/home/pages/widget/widget-editor.component.ts @@ -607,7 +607,9 @@ export class WidgetEditorComponent extends PageComponent implements OnInit, OnDe this.gotError = false; this.iframeWidgetEditModeInited = false; const config: WidgetConfig = JSON.parse(this.widget.defaultConfig); - config.title = this.widget.widgetName; + if (!config.title) { + config.title = this.widget.widgetName; + } this.widget.defaultConfig = JSON.stringify(config); this.iframe.attr('data-widget', JSON.stringify(this.widget)); // @ts-ignore From 9cb16b1c14812f67891bb06d825648468d796b63 Mon Sep 17 00:00:00 2001 From: Igor Kulikov Date: Wed, 18 Oct 2023 18:47:10 +0300 Subject: [PATCH 12/29] UI: Update temperature widgets preview images --- .../json/system/widget_types/simple_temperature_chart_card.json | 2 +- .../data/json/system/widget_types/temperature_chart_card.json | 2 +- 2 files changed, 2 insertions(+), 2 deletions(-) diff --git a/application/src/main/data/json/system/widget_types/simple_temperature_chart_card.json b/application/src/main/data/json/system/widget_types/simple_temperature_chart_card.json index f89e7ec47b..6645b0e427 100644 --- a/application/src/main/data/json/system/widget_types/simple_temperature_chart_card.json +++ b/application/src/main/data/json/system/widget_types/simple_temperature_chart_card.json @@ -2,7 +2,7 @@ "fqn": "simple_temperature_chart_card", "name": "Simple temperature chart card", "deprecated": false, - "image": "data:image/png;base64,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", + "image": "data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAAMgAAACgCAMAAAB+IdObAAAAe1BMVEUAAADg4ODf39/g4ODg4OD////g4OAjTMchISHHx8c8PDzj4+Px8fGQkJCsrKx0dHRaedXk6fhYWFgvLy8+Ys7I0vGCgoKsvOry9PuRpeN1j9yenp5KSkrV1dWfsedohNkwV8tmZma6urqDmt+RpuNMbtLW3fW6x+65ubn1i4vJAAAABXRSTlMA7yC/r1EOHTEAAATQSURBVHja7M9JAcAgDAAwytEX/vUOGdAlDtIAAAAAAAB+p4/I181+HrHX83b0Ngs8zmS0XCVElUiKXEbkNh979q7qOAxFYbhasPZFEkjgxnJhV3n/JxwfJwzKSQwDw3iUg34wEtuNvsJg0ID01oD01oD01oD01oD01oD01inEpohP6hSSkzYSD0cbuu0UorGGBpJSZUoRf5yo4crOIbcc0BZ4iOJmgJhE27eAy7EA+wCwRQQeo8Fn3twFMIHLsgESBW2XQbZ3ECtV1UHdl5qZIdTMBKwlc0YqXE3zSlkq6xIJBEVkqQgl64SmyyCpvoHkDJQABmzcMBPCBYG+0RAUSQ1LAGqC0PAbYjDGY9R0DcQLmV4hqjmXhONUgkjIcUgJJWclUgYwr1q+QQBhzpWCpmsgiXvyCllFxL5BFkqg7B2QSPH8BhJFxNF0DYRfpRfIpIb5GRKR1IUzZD4goZhperxffL1DvEzwgLZrIIV70wvEV1KfIcoyA4Esd4gpS81wZfSv7R2Cm5L/42OfSRbDa/48FJr5fe54ZP5Y7k8zbrsIgpgmw2ktBF10QP4iC53cSvz8v99Pa0B6a0B6a0B6a0B6a0B6a0D+cb7Ns/jHQ36xa25LjoJAAH3qAgFFvBITo1k35v//cMHWwR3NxBqtmVjleZjh9tAnDaSpCpfUEmdi3yIli31PCE9SxvcswtkQfxkzsWMRGXP3kva3EkmLMKyu6qPbmG6u3HxehTn06GuFs6vgNHOdKBabiKiQdNR9sH+xm7SA4ECD7Wvdz17XJYRyQDAlW4joxDhUlflL0iHs0HZr3YuSRKs7aYfJ+t6ZrzJhEhCXknUiGFuiAEyopOq9bGoqQk7QkdqY824wtwLGT5+c51LEWUYZx3ZAPRjh0fMGIkmfidQIAcDD5AMMrQkVOlorWHSLkg+7EFvL4YyyiOImEozBf0RsvYgmhIBFYaMxEQ6Cagg6ScgdXYexnJiR53g3xm4BIH3snrHJqPR4wGj5aTn9sz4jSmFsKYYWdjsLG4/etajrRtuTbrOFqKIovjrLsbyx8c3kU97/N1inzynhK0UcBZ7fEHcaGk2XNLCADHeQ70w4lYAILyhhQhkzvokIHhH1QmTZwcCoUUgAwhh/WbHI0mpKRulF8uUiqkN/dPGy2kTkTPs4BM2GkWBRDWkkYun7t5hKvlSEdIQjjwY2ErlE0JPhverFtyWJDDLpe9j0mVH5hoi+E1LAS5FikUjpPn4R0cj3I1fgLgRVskUiaUeLncpdptXk1nI0VhfRSqmnR30UdnChlPkCHMtVzq9FpgEmenx5We6YmjG5WefuhhrmYRFsjxN5XaQgV0KK4YsS5Ry6Rjn0rWAWz+2sHxZxHr1ArVAonE2dGsqA/NlLQ8AKVhWNpDghDzwbySO1o/lspZyc8rypJ5pzNfnPioTEUeBNjJxggpskoZ73GD9cf1cEVPHFy0mdkk5jflZk9PIDv0VZTtsqeIpKWw2zeIxmAhy/L/ItRDYpa3cpMpeOPYr4c+nYo8htLh17FJnhEDlE9sIh8m4cIu/GIfJuHCLvxiHyr507NwIghIEgKJ6TdfnHSxA4ArozWH9rqjGkmoz2XSFjFDm37/nnPRGk6DNP10YPAAAAAACA1yz9maqJM0bCeAAAAABJRU5ErkJggg==", "description": "Displays historical temperature values as a simplified chart. Optionally may display the corresponding latest temperature value.", "descriptor": { "type": "timeseries", diff --git a/application/src/main/data/json/system/widget_types/temperature_chart_card.json b/application/src/main/data/json/system/widget_types/temperature_chart_card.json index 3f23b0e277..4aecc59cdf 100644 --- a/application/src/main/data/json/system/widget_types/temperature_chart_card.json +++ b/application/src/main/data/json/system/widget_types/temperature_chart_card.json @@ -2,7 +2,7 @@ "fqn": "temperature_chart_card", "name": "Temperature chart card", "deprecated": false, - "image": "data:image/png;base64,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", + "image": "data:image/png;base64,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", "description": "Displays a temperature data as a combination of the latest and aggregated values. Optionally may display the corresponding historical values as a simplified chart.", "descriptor": { "type": "timeseries", From a0505ee0e4353ef23bb272dad705ba766d8f82ce Mon Sep 17 00:00:00 2001 From: Igor Kulikov Date: Thu, 19 Oct 2023 12:42:45 +0300 Subject: [PATCH 13/29] UI: Outdoor environment: Humidity widgets. --- .../widget_bundles/outdoor_environment.json | 12 ++++++- .../horizontal_humidity_card.json | 28 +++++++++++++++++ ...izontal_humidity_card_with_background.json | 28 +++++++++++++++++ .../system/widget_types/humidity_card.json | 28 +++++++++++++++++ .../humidity_card_with_background.json | 28 +++++++++++++++++ .../widget_types/humidity_chart_card.json | 31 +++++++++++++++++++ .../humidity_chart_card_with_background.json | 31 +++++++++++++++++++ .../widget_types/humidity_progress_bar.json | 29 +++++++++++++++++ ...humidity_progress_bar_with_background.json | 29 +++++++++++++++++ .../simple_humidity_chart_card.json | 31 +++++++++++++++++++ ...e_humidity_chart_card_with_background.json | 31 +++++++++++++++++++ 11 files changed, 305 insertions(+), 1 deletion(-) create mode 100644 application/src/main/data/json/system/widget_types/horizontal_humidity_card.json create mode 100644 application/src/main/data/json/system/widget_types/horizontal_humidity_card_with_background.json create mode 100644 application/src/main/data/json/system/widget_types/humidity_card.json create mode 100644 application/src/main/data/json/system/widget_types/humidity_card_with_background.json create mode 100644 application/src/main/data/json/system/widget_types/humidity_chart_card.json create mode 100644 application/src/main/data/json/system/widget_types/humidity_chart_card_with_background.json create mode 100644 application/src/main/data/json/system/widget_types/humidity_progress_bar.json create mode 100644 application/src/main/data/json/system/widget_types/humidity_progress_bar_with_background.json create mode 100644 application/src/main/data/json/system/widget_types/simple_humidity_chart_card.json create mode 100644 application/src/main/data/json/system/widget_types/simple_humidity_chart_card_with_background.json diff --git a/application/src/main/data/json/system/widget_bundles/outdoor_environment.json b/application/src/main/data/json/system/widget_bundles/outdoor_environment.json index a21eaf65f0..71c148d22c 100644 --- a/application/src/main/data/json/system/widget_bundles/outdoor_environment.json +++ b/application/src/main/data/json/system/widget_bundles/outdoor_environment.json @@ -15,6 +15,16 @@ "temperature_chart_card", "temperature_chart_card_with_background", "simple_temperature_chart_card", - "simple_temperature_chart_card_with_background" + "simple_temperature_chart_card_with_background", + "humidity_card", + "humidity_card_with_background", + "horizontal_humidity_card", + "horizontal_humidity_card_with_background", + "humidity_chart_card", + "humidity_chart_card_with_background", + "simple_humidity_chart_card", + "simple_humidity_chart_card_with_background", + "humidity_progress_bar", + "humidity_progress_bar_with_background" ] } \ No newline at end of file diff --git a/application/src/main/data/json/system/widget_types/horizontal_humidity_card.json b/application/src/main/data/json/system/widget_types/horizontal_humidity_card.json new file mode 100644 index 0000000000..105929125d --- /dev/null +++ b/application/src/main/data/json/system/widget_types/horizontal_humidity_card.json @@ -0,0 +1,28 @@ +{ + "fqn": "horizontal_humidity_card", + "name": "Horizontal humidity card", + "deprecated": false, + "image": "data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAAMgAAACgCAMAAAB+IdObAAAAnFBMVEUAAADf39/f39/g4ODg4OD////k5OQjTMfg4ODz8/M+Ys7k6fjOzs51j9zIyMjy9PusrKz5+fm2trbb29vCwsKQkJCRpeMwV8usvOq8vLw9PT3n5+eesefW3fWRpuODm+DV1dVYWFhMbdHI0vF0dHS6x+1aedVmZmZohNnW3fTt7e2CgoJKSkpaeNUxV8ovLy8hISG6x+6enp6dnZ2UGhvnAAAABXRSTlMAIETfv0i0+14AAANBSURBVHja7dp5b9owHMZxxvrkh+OcJOSA0HCUY4WtO97/e5sdygCpg2orbVo9nz+Qa0uVvzKOUEuHiIiIiIiIiIiIiIiIiIiIiIiIiIiI6DV9evc6Vvez8971PndNhxPj3VNOt3Oj8AHEN50ePoQeQ1qGIW3DkLZhSNswpG2eDqlmIY5EDiYljmwABFEQoT2f054MuRVxNQ6mAaI7peDAaV4RAU40mATBVjlQ16oJq6zQsOZVttBH0/psyHHHacn0Z7C5C+4wdYab4Wo1xRCb1XAQDQbD/oPaRHhhx9v4AsDfjyztujP58pyQW2nMwkPI3WD1GGIOAt9NyAMiE+JMMfg5dHANWmQ+zsS1G3LnY1+WaGTfQri+6ZlfCBnLo/rkrXUaoob7kGC4wlUUsgaQi8ZM5kAoEu5CTNrSR+1eOhFX9uand2S7ejicyGC1NSFqW2Ia4SoKWTYhIYrCJoigUYnWbq1FXwgpRPwql3wt4uKUeuIH5WwVriJ0pdK1+Pt97UfhzF5g18eFENeW+/kYM3skl/3q40rGxzdV54cjGI9RufpCyBcRuV3Mxs2Vr/GGQlfWmSu3uw5XKhzovBhnmT4XMhcjtx2GjzdUid/ckfkuKsMR39f5V/MQPhOiHzvWVf7GJ7KWwm7Zvoaz045CdP0NcOszITD7X5jzsL9Cfpxe7FPqHqeUwkvypW6u7A/bVJ++6TL4zUP4XEgm4tb2nriHp1Z/F6Nwn6ARx4h7np3oIQYwikaIk2S3YCZeImku4mdLu4najKwFdhZmrvqmdV6cCwld2SuOQiYTLwkCz4xSpElaxv3Um0wCr7z3yhjwRqosEyivWfCCEv9vYXfyVQNL2cmOt7k0a+G5EOh9SYXjEK+vAm/k7UJGk8SMzdwo8dKgCekliQkJ+qNAmdxU4QWEOsRfaX3ps1ZYzERyf4w/Ii9Jvf4kSJU9Ea9M0r7qB56Zuy9HgQcbEtsTGZWRXZikKV7F+ZDLkhH+bhIkeI42hMTxuUWF52hFSBsxpG0Y0jYMaRuGtE2vc/MB/s0OqJtO12nPH3D/Wex07Vc4es5797n7kb5UQ0RERERERERERERERERERERERERERPRKfgPNbdZin3BhXgAAAABJRU5ErkJggg==", + "description": "Displays a latest humidity telemetry data in a horizontal layout.", + "descriptor": { + "type": "latest", + "sizeX": 5, + "sizeY": 1.5, + "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: '130px',\n embedTitlePanel: true,\n defaultDataKeysFunction: function() {\n return [{ name: 'humidity', label: 'Humidity', 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\":\"Humidity\",\"color\":\"#2196f3\",\"settings\":{},\"_hash\":0.2392660816082064,\"funcBody\":\"var value = prevValue + Math.random() * 7;\\nif (value < 0) {\\n\\tvalue = 0;\\n} else if (value > 100) {\\n\\tvalue = 0;\\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:water-percent\",\"iconColor\":{\"type\":\"range\",\"color\":\"rgba(0, 0, 0, 0.87)\",\"rangeList\":[{\"from\":0,\"to\":20,\"color\":\"#D81838\"},{\"from\":20,\"to\":40,\"color\":\"#FFA600\"},{\"from\":40,\"to\":60,\"color\":\"#5B7EE6\"},{\"from\":60,\"to\":80,\"color\":\"#305AD7\"},{\"from\":80,\"to\":100,\"color\":\"#234CC7\"}],\"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)\",\"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';\",\"rangeList\":[{\"from\":0,\"to\":20,\"color\":\"#D81838\"},{\"from\":20,\"to\":40,\"color\":\"#FFA600\"},{\"from\":40,\"to\":60,\"color\":\"#5B7EE6\"},{\"from\":60,\"to\":80,\"color\":\"#305AD7\"},{\"from\":80,\"to\":100,\"color\":\"#234CC7\"}]},\"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\":\"Horizontal humidity card\",\"dropShadow\":true,\"enableFullscreen\":false,\"titleStyle\":{\"fontSize\":\"16px\",\"fontWeight\":400},\"units\":\"%\",\"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": [ + "weather", + "environment", + "humidity" + ] +} \ No newline at end of file diff --git a/application/src/main/data/json/system/widget_types/horizontal_humidity_card_with_background.json b/application/src/main/data/json/system/widget_types/horizontal_humidity_card_with_background.json new file mode 100644 index 0000000000..14882ac7e6 --- /dev/null +++ b/application/src/main/data/json/system/widget_types/horizontal_humidity_card_with_background.json @@ -0,0 +1,28 @@ +{ + "fqn": "horizontal_humidity_card_with_background", + "name": "Horizontal humidity card with background", + "deprecated": false, + "image": "data:image/png;base64,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", + "description": "Displays a latest humidity telemetry data in a horizontal layout with background.", + "descriptor": { + "type": "latest", + "sizeX": 5, + "sizeY": 1.5, + "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: '130px',\n embedTitlePanel: true,\n defaultDataKeysFunction: function() {\n return [{ name: 'humidity', label: 'Humidity', 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\":\"Humidity\",\"color\":\"#2196f3\",\"settings\":{},\"_hash\":0.2392660816082064,\"funcBody\":\"var value = prevValue + Math.random() * 7;\\nif (value < 0) {\\n\\tvalue = 0;\\n} else if (value > 100) {\\n\\tvalue = 0;\\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:water-percent\",\"iconColor\":{\"type\":\"range\",\"color\":\"rgba(0, 0, 0, 0.87)\",\"rangeList\":[{\"from\":0,\"to\":20,\"color\":\"#DE2343\"},{\"from\":20,\"to\":40,\"color\":\"#F89E0D\"},{\"from\":40,\"to\":60,\"color\":\"#5579E5\"},{\"from\":60,\"to\":80,\"color\":\"#2B54CE\"},{\"from\":80,\"to\":100,\"color\":\"#224AC2\"}],\"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)\",\"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';\",\"rangeList\":[{\"from\":0,\"to\":20,\"color\":\"#DE2343\"},{\"from\":20,\"to\":40,\"color\":\"#F89E0D\"},{\"from\":40,\"to\":60,\"color\":\"#5579E5\"},{\"from\":60,\"to\":80,\"color\":\"#2B54CE\"},{\"from\":80,\"to\":100,\"color\":\"#224AC2\"}]},\"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\",\"imageBase64\":\"data:image/png;base64,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\",\"imageUrl\":null,\"color\":\"#fff\",\"overlay\":{\"enabled\":true,\"color\":\"rgba(255,255,255,0.72)\",\"blur\":3}},\"autoScale\":true},\"title\":\"Horizontal humidity card with background\",\"dropShadow\":true,\"enableFullscreen\":false,\"titleStyle\":{\"fontSize\":\"16px\",\"fontWeight\":400},\"units\":\"%\",\"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": [ + "weather", + "environment", + "humidity" + ] +} \ No newline at end of file diff --git a/application/src/main/data/json/system/widget_types/humidity_card.json b/application/src/main/data/json/system/widget_types/humidity_card.json new file mode 100644 index 0000000000..bf034c0bbf --- /dev/null +++ b/application/src/main/data/json/system/widget_types/humidity_card.json @@ -0,0 +1,28 @@ +{ + "fqn": "humidity_card", + "name": "Humidity card", + "deprecated": false, + "image": "data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAAMgAAACgCAMAAAB+IdObAAAAolBMVEXg4ODf39/g4OAAAADg4ODf39////8jTMfg4OA+Ys7k6fiqqqo9PT11j9zy9PvI0vHz8/MhISHCwsKRpeOesecwV8vu7u7m5uaenp50dHTIyMhYWFiQkJD5+fnOzs67u7u2trbW3fWDmt+wsLCsvOqRpuNMbtFohNnV1dW6x+7b29taedVaeNWCgoLx8fGkpKTU1NRmZmYvLy9KSkqtvOqDm+Da1S2FAAAABnRSTlPvIL8Ar7DvmsykAAAGYklEQVR42uzPAQ0AMAgDsHEIQQEy8C/vNgZZHRRuD7VdmMPQud7AEJMH9EPlCbgSKUXIKMJGETaKsFGEjSJsFGGjyKeejnrbhKEwDN99h4TTMatkMxgJtVoTT5mRgP3/3zZzkmln1FHbXFj0Fb44CF88stla74Hs8Ql6B6SmGtvvbcgLEb0g0SA7iwGJekihxOCRLjNEHGlJw8t+06Uc5iLhBqOJYwqTFyIOkXwIAo+/kMIDnPomJ0QcWpKGhADYgNJZntuOZw/vPArHzdTAjnCGQ+8GeavKCanpX/UryFSWpY0Q5+Lg0JnQ8rIcWtOCue9Ms3BbbnxhrMhVGSFPpKvWEMMxDYGswAvEmxJggcjVcm6ZVBkh+x3pdl/SV2sN6QQSH2iInfr4RpUR8kD/d7oBGecEpFidyGAmhi4f5InWVWlImPqS1xA4boO5QpwHXBxUGSFnIjr8rk4Ue5ZbdoYuuGU/WxRucuMIy7gsB88tinkaxyBf2WkErPHQZYPIgfwAcCB6vP4vFe6vYejyQZ4p9hPAMTqAy8Hg7mZTQpcPcqbYcY9aHA8kI+6u67EqF+RA0k456IDN9iZEOWLYbLchO+04XqYdNtttyEk5quv4Cx/r6zfc7HsuyCPF/rBjB62Nw0AYhm8fiYdsB5WMjEHSgNjdRBTsw+7//2uVlKQ18SkHFx30YoywrZAH4Tj4f3UcAVw3v1oqWOcSNnmDmtgVIEg1jsj92HPkOJT74/zr/kd4wCqyyLEtCOtgRy4jVzZ2t6MFIgI3BQcnjNzFzBZwYm8QkbJj58p+ryd7lZzq/t/vcu+fsIF4CuQkhihmnOoalG0MMeIwBzKIgRYb6cCUr/maRxorhPLZ8hlzYlJa9oEM5buvOw9biLCd7RLFMo/4hgCz6ILJOMueyqEpsDePeZZQL3fCXjELYkoBMrtdIHh7glyxhfjoZ4uk9AwhqykPHU2mQkw0xj/mJb1BOJ9VjAxNRTnyPhBcz+v1eHKAErOjA+cVWRA8jw7AEmAyJLN4mvJQZixUeQrmB0RmtgViCUtETI6SjZwIO0EwnL4cHwOeUiI6pKh6YFVlGALAkXTCaOhyHxoyERIvzpAKSmoBT/Vqdz8bKcGTyk6QSnn/+HM8/n1/wyuNeKUkQhZAg+9+Fa8kGi5oE/J6HdIhrdYhrdUhrdUhrdUhrdUhrdUhrdUhrdUhrdUhrdUhrdUhrdUhrdUhrdUhn+ybsZKrMAxFOzHyjKXC8AF4jBkGyn3//2tvV1iDHZOl2MIucirWmxQnwkgklwwenXXjDCW0Oe/dZuAWdtYH05MILdNwggEuzD4kYoCKGQdh6UekCHCuVORslX/vf/heehFJHspe5p4VexNFcFvAK5PHbUU0/2Q3DlGOQhbrPEbmEetUp/x7TIXxsmIG5KYiJsto+6sk8QrgUEzLSsrn6McQNVLlmopsWRyY5MQnLQjmrtNrUB01gIS6QE1FnBQkP81Yd3qARKxiRa4UkY0WoL0IF3+o0QzqV4l8aYn8MBznKyw0FSk/e68io/2GiiQeQQarPYpBkFhYWxHOY3VYpzd1GavcJ85AXhJHhMMwNu8jugG0OrZ2vVneBuWQnoPtGyKfswkBLXJk6oKoao5TD5KrmmkvUs4i0wyvLPd1MjYiriG1kA5GFJn/lMO8TXjeoy2kBxHZsQkM96NY+H1WC10MjfFUwEnn3NrDwXu0hRhmaiqyy4wyAwBjNZYTPj2qIS1Eb2l2004kZFuZUBu6EsUS3pJaCMXrWtFERAtiyu5YjviR4D3SQuR1h13lubpGIlQG/6eih/unC1ZqISbps8yfbURM2SQwH9iXJw9tIZvonOVdW4qsRUWmR4+yhZRD/dHy1JoKrQjCqJv3qYX0IQJ7dWNls6lwA+GhhYw9iLhBTbTFswwmky4/tZBvvvR2ZW0oQunRq9WukxzZdPdewfDChsmU5G3nWBZ6+V4rkm6WWqRizK7TaPdGfUQx63DhCZ5Earro7D+wPc8k9KxyWMPwCw71LqCRiELMhuAvzDxT+58VuuAj0hsfkd74iPTGR6Q3PiL/27sDGoBhGIiBn3abgqb84Y2GG/kYGIFpDKExhMYQGkNoDKExhMYQGkNoDKExhMYQGkNoDKExhMYQGkNoDKHp5Buhs0Ysm8+byoCSk8qup2+XVfsHA4NK7Q8jCjEAAAAASUVORK5CYII=", + "description": "Displays a latest humidity telemetry data in a box layout.", + "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: 'humidity', label: 'Humidity', 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\":\"Humidity\",\"color\":\"#2196f3\",\"settings\":{},\"_hash\":0.2392660816082064,\"funcBody\":\"var value = prevValue + Math.random() * 7;\\nif (value < 0) {\\n\\tvalue = 0;\\n} else if (value > 100) {\\n\\tvalue = 0;\\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:water-percent\",\"iconColor\":{\"type\":\"range\",\"color\":\"rgba(0, 0, 0, 0.87)\",\"rangeList\":[{\"from\":0,\"to\":20,\"color\":\"#D81838\"},{\"from\":20,\"to\":40,\"color\":\"#FFA600\"},{\"from\":40,\"to\":60,\"color\":\"#5B7EE6\"},{\"from\":60,\"to\":80,\"color\":\"#305AD7\"},{\"from\":80,\"to\":100,\"color\":\"#234CC7\"}],\"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\":\"range\",\"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';\",\"rangeList\":[{\"from\":0,\"to\":20,\"color\":\"#D81838\"},{\"from\":20,\"to\":40,\"color\":\"#FFA600\"},{\"from\":40,\"to\":60,\"color\":\"#5B7EE6\"},{\"from\":60,\"to\":80,\"color\":\"#305AD7\"},{\"from\":80,\"to\":100,\"color\":\"#234CC7\"}]},\"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\":\"Humidity card\",\"dropShadow\":true,\"enableFullscreen\":false,\"titleStyle\":{\"fontSize\":\"16px\",\"fontWeight\":400},\"units\":\"%\",\"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": [ + "weather", + "environment", + "humidity" + ] +} \ No newline at end of file diff --git a/application/src/main/data/json/system/widget_types/humidity_card_with_background.json b/application/src/main/data/json/system/widget_types/humidity_card_with_background.json new file mode 100644 index 0000000000..bd7c696405 --- /dev/null +++ b/application/src/main/data/json/system/widget_types/humidity_card_with_background.json @@ -0,0 +1,28 @@ +{ + "fqn": "humidity_card_with_background", + "name": "Humidity card with background", + "deprecated": false, + "image": "data:image/png;base64,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", + "description": "Displays a latest humidity telemetry data in a box layout with background.", + "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: 'humidity', label: 'Humidity', 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\":\"Humidity\",\"color\":\"#2196f3\",\"settings\":{},\"_hash\":0.2392660816082064,\"funcBody\":\"var value = prevValue + Math.random() * 7;\\nif (value < 0) {\\n\\tvalue = 0;\\n} else if (value > 100) {\\n\\tvalue = 0;\\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:water-percent\",\"iconColor\":{\"type\":\"range\",\"color\":\"rgba(0, 0, 0, 0.87)\",\"rangeList\":[{\"from\":0,\"to\":20,\"color\":\"#DE2343\"},{\"from\":20,\"to\":40,\"color\":\"#F89E0D\"},{\"from\":40,\"to\":60,\"color\":\"#5579E5\"},{\"from\":60,\"to\":80,\"color\":\"#2B54CE\"},{\"from\":80,\"to\":100,\"color\":\"#224AC2\"}],\"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\":\"range\",\"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';\",\"rangeList\":[{\"from\":0,\"to\":20,\"color\":\"#DE2343\"},{\"from\":20,\"to\":40,\"color\":\"#F89E0D\"},{\"from\":40,\"to\":60,\"color\":\"#5579E5\"},{\"from\":60,\"to\":80,\"color\":\"#2B54CE\"},{\"from\":80,\"to\":100,\"color\":\"#224AC2\"}]},\"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\",\"imageBase64\":\"data:image/png;base64,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\",\"imageUrl\":null,\"color\":\"#fff\",\"overlay\":{\"enabled\":true,\"color\":\"rgba(255,255,255,0.72)\",\"blur\":3}},\"autoScale\":true},\"title\":\"Humidity card with background\",\"dropShadow\":true,\"enableFullscreen\":false,\"titleStyle\":{\"fontSize\":\"16px\",\"fontWeight\":400},\"units\":\"%\",\"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": [ + "weather", + "environment", + "humidity" + ] +} \ No newline at end of file diff --git a/application/src/main/data/json/system/widget_types/humidity_chart_card.json b/application/src/main/data/json/system/widget_types/humidity_chart_card.json new file mode 100644 index 0000000000..3cfeaa2c90 --- /dev/null +++ b/application/src/main/data/json/system/widget_types/humidity_chart_card.json @@ -0,0 +1,31 @@ +{ + "fqn": "humidity_chart_card", + "name": "Humidity chart card", + "deprecated": false, + "image": "data:image/png;base64,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", + "description": "Displays a humidity data as a combination of the latest and aggregated values. Optionally may display the corresponding historical values as a 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: 'humidity', label: 'Humidity', type: 'timeseries', color: 'rgba(0, 0, 0, 0.87)', units: '%', decimals: 0 }\n ];\n },\n defaultLatestDataKeysFunction: function(configComponent, configData) {\n return configComponent.createDefaultAggregatedValueLatestDataKeys(configData, 'humidity', '%');\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\":\"Humidity\",\"color\":\"rgba(0, 0, 0, 0.87)\",\"settings\":{\"showLines\":true,\"fillLines\":true,\"showPoints\":false},\"_hash\":0.8587686344902596,\"funcBody\":\"var value = prevValue + Math.random() * 7;\\nif (value < 0) {\\n\\tvalue = 0;\\n} else if (value > 100) {\\n\\tvalue = 0;\\n}\\nreturn value;\",\"aggregationType\":null,\"units\":\"%\",\"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\":20,\"color\":\"#D81838\"},{\"from\":20,\"to\":40,\"color\":\"#FFA600\"},{\"from\":40,\"to\":60,\"color\":\"#5B7EE6\"},{\"from\":60,\"to\":80,\"color\":\"#305AD7\"},{\"from\":80,\"to\":100,\"color\":\"#234CC7\"}],\"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() * 7;\\nif (value < 0) {\\n\\tvalue = 0;\\n} else if (value > 100) {\\n\\tvalue = 0;\\n}\\nreturn value;\",\"aggregationType\":null,\"units\":\"%\",\"decimals\":null,\"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() * 4 - 2;\\nif (value < -6) {\\n\\tvalue = -6;\\n} else if (value > 6) {\\n\\tvalue = 6;\\n}\\nreturn value;\",\"aggregationType\":null,\"units\":\"%\",\"decimals\":1,\"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\":\"Humidity\",\"dropShadow\":true,\"enableFullscreen\":false,\"titleStyle\":{\"fontSize\":\"16px\",\"fontWeight\":400},\"mobileHeight\":null,\"configMode\":\"basic\",\"actions\":{},\"showTitleIcon\":true,\"titleIcon\":\"mdi:water-percent\",\"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": [ + "weather", + "environment", + "humidity" + ] +} \ No newline at end of file diff --git a/application/src/main/data/json/system/widget_types/humidity_chart_card_with_background.json b/application/src/main/data/json/system/widget_types/humidity_chart_card_with_background.json new file mode 100644 index 0000000000..571f299340 --- /dev/null +++ b/application/src/main/data/json/system/widget_types/humidity_chart_card_with_background.json @@ -0,0 +1,31 @@ +{ + "fqn": "humidity_chart_card_with_background", + "name": "Humidity chart card with background", + "deprecated": false, + "image": "data:image/png;base64,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", + "description": "Displays a humidity data as a combination of the latest and aggregated values with background. Optionally may display the corresponding historical values as a 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: 'humidity', label: 'Humidity', type: 'timeseries', color: 'rgba(0, 0, 0, 0.87)', units: '%', decimals: 0 }\n ];\n },\n defaultLatestDataKeysFunction: function(configComponent, configData) {\n return configComponent.createDefaultAggregatedValueLatestDataKeys(configData, 'humidity', '%');\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\":\"Humidity\",\"color\":\"rgba(0, 0, 0, 0.87)\",\"settings\":{\"showLines\":true,\"fillLines\":true,\"showPoints\":false},\"_hash\":0.8587686344902596,\"funcBody\":\"var value = prevValue + Math.random() * 7;\\nif (value < 0) {\\n\\tvalue = 0;\\n} else if (value > 100) {\\n\\tvalue = 0;\\n}\\nreturn value;\",\"aggregationType\":null,\"units\":\"%\",\"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\":20,\"color\":\"#DE2343\"},{\"from\":20,\"to\":40,\"color\":\"#F89E0D\"},{\"from\":40,\"to\":60,\"color\":\"#5579E5\"},{\"from\":60,\"to\":80,\"color\":\"#2B54CE\"},{\"from\":80,\"to\":100,\"color\":\"#224AC2\"}],\"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() * 7;\\nif (value < 0) {\\n\\tvalue = 0;\\n} else if (value > 100) {\\n\\tvalue = 0;\\n}\\nreturn value;\",\"aggregationType\":null,\"units\":\"%\",\"decimals\":null,\"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() * 4 - 2;\\nif (value < -6) {\\n\\tvalue = -6;\\n} else if (value > 6) {\\n\\tvalue = 6;\\n}\\nreturn value;\",\"aggregationType\":null,\"units\":\"%\",\"decimals\":1,\"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\",\"imageBase64\":\"data:image/png;base64,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\",\"imageUrl\":null,\"color\":\"#fff\",\"overlay\":{\"enabled\":true,\"color\":\"rgba(255,255,255,0.72)\",\"blur\":3}},\"autoScale\":true},\"title\":\"Humidity\",\"dropShadow\":true,\"enableFullscreen\":false,\"titleStyle\":{\"fontSize\":\"16px\",\"fontWeight\":400},\"mobileHeight\":null,\"configMode\":\"basic\",\"actions\":{},\"showTitleIcon\":true,\"titleIcon\":\"mdi:water-percent\",\"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": [ + "weather", + "environment", + "humidity" + ] +} \ No newline at end of file diff --git a/application/src/main/data/json/system/widget_types/humidity_progress_bar.json b/application/src/main/data/json/system/widget_types/humidity_progress_bar.json new file mode 100644 index 0000000000..12b81e5be7 --- /dev/null +++ b/application/src/main/data/json/system/widget_types/humidity_progress_bar.json @@ -0,0 +1,29 @@ +{ + "fqn": "humidity_progress_bar", + "name": "Humidity progress bar", + "deprecated": false, + "image": "data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAAMgAAACgCAMAAAB+IdObAAAAn1BMVEXg4ODf39/g4ODg4OAAAAD///8jTMfg4OD29vYhISHHx8fj4+M9PT10dHSQkJDx8fHk6fitra3I0vG6urpYWFjy9Pvv7++svOo+Ys5aedWGhoZ1j9y6x+7V1dWpqamenp6Xl5eCgoIvLy+Dmt9LbdEwV8vX3vSRpeOesefLy8tmZmbCwsJohNmOjo6RpuPY2Nh+fn7l5eVXdtJKSkrm5uZgoBxmAAAABXRSTlPvIL+vAC9A4IoAAAQhSURBVHja7M/BEQBABAPAOIynn/5LvTbCZDtYhD3Udm4Bw+R6DYN3HjAPlSfgSqQUIaMIG0XYKMJGETaKsFGEjSKf3TrWcRAGoihaveJ5xjNCoWUtu3Sb//+3JVgrlA2KqYBIuUg2yNURU/hqvYHcBl+37czQigyQGHBCfYhSMDe2bSsnfYUk5pltgn1dCYJpwgpB8Payq3MgwSZgsgCxEHKesCyAJQCS8xAZlnO7M/5MdgOQzNHpeIhxAAYaApWFrI8lAFRACh9PWM61UKuzAEJFp+MgNc7pP4ggtyU2yEiDKBukjda4fGV0Og6ij/gMiUBgBYRjg7AAiE+QRFt+ZK8zR6tB4gqZ9xeIU513vO9qEKe+QDAy8QedzoAkJiBtQqB0oD5DbizdyToFEqgp6TbEqINxhdQb4IUjOp0CgZGlbkOQSc1/kEkXQjx0slZIPxd/cwasiS8Qwc6ufPuVwIpenwAZWQS9PgESBke3T4Ds6Av5Qn7Zn2MUAGEgAIJVUocDwWBrxMr/P09DsI3tCjs/mL8wQmOExgiNERojNEZojNAYoTFCY4TGCI0RGiM0RmiM0BihMUJjhOYjckSU9FoiYklQ08jZ8qOOSqm526CVWeTKQyv9seZhT0iTSLnZL3sVh2EgCFczpMtiEJKwO8s/hau8/8Od8JokBG6PwIE3RB8ujCt/jGYlkewQRjIDyOQYMFedCI8YIgPZAwgTJ2BWHf3oEUMkkhGaxS6wHDFleMQQ6cgRlcQEBJFw/+gRQ6QaTMNe+QV3erLDjrPpZYlIIqdJS/HozXYYlTzDEZZI0Pk7xWe1SXTdZXQbxE9fLJFSw4hrIteniAaoSI85ox/gBXtqLQBCTSFoQup0vA/jGB1NYkMkk4LKeozhUNRMkWWVLHCDLRI0Gc1hU48HfewWN2vLENmOSdtrMcbXHUSKpFi8HFjsjiQ9a6WwbyelUwQ7SeKCwUtNDBH0PBgA4QMNYV0QR0Qv+7wlgphYyR1eRQ5C2pKXvv95Q5wDDMTNQeVb7uyfQxPxRhPxRhPxRhPxRhPxRhPxxheISOYZlPli8r5I4TncLjZvi/AsLpXrr8/7IpnnUOrv/msiUngGN+2IylxfXipfPLU+jCbijSby094dqzgMwwAYdtr+1MtxBIMGQVKtwYSkcO//bFdK5kK6WE31g3d9eNAobwXEWy8gdbZC43IdATEz2QbaDxEVbKFpWXsFxspkLJpllf2Q4Qal+ZeIAirkldrDOO2HTKMbyM/zlRIQLxAVWKlvQmTN3AaatkFsYTAWA/3bD6HobLRtg9zV9A79PBfegJAzXpJtoO/e7J9VQLwVEG8FxFsB8VZAvBUQbwXEWwHxVkC8FRBvHQiSOETXdDrA6Wn4PacuHeD4tDwYl+58/fTSqbv8A8IwqxFwwnsYAAAAAElFTkSuQmCC", + "description": "Displays humidity reading as a horizontal progress bar. Allows to configure value range, bar colors, and other settings.", + "descriptor": { + "type": "latest", + "sizeX": 3, + "sizeY": 2, + "resources": [], + "templateHtml": "\n", + "templateCss": "", + "controllerScript": "self.onInit = function() {\n self.ctx.$scope.progressBarWidget.onInit();\n};\n\nself.onDataUpdated = function() {\n self.ctx.$scope.progressBarWidget.onDataUpdated();\n};\n\nself.typeParameters = function() {\n return {\n maxDatasources: 1,\n maxDataKeys: 1,\n singleEntity: true,\n previewWidth: '280px',\n previewHeight: '180px',\n embedTitlePanel: true,\n defaultDataKeysFunction: function() {\n return [{ name: 'humidity', label: 'humidity', type: 'timeseries' }];\n }\n };\n};\n\n\nself.onDestroy = function() {\n};\n", + "settingsSchema": "", + "dataKeySettingsSchema": "", + "settingsDirective": "tb-progress-bar-widget-settings", + "hasBasicMode": true, + "basicModeDirective": "tb-progress-bar-basic-config", + "defaultConfig": "{\"datasources\":[{\"type\":\"function\",\"name\":\"function\",\"dataKeys\":[{\"name\":\"f(x)\",\"type\":\"function\",\"label\":\"humidity\",\"color\":\"#2196f3\",\"settings\":{},\"_hash\":0.2392660816082064,\"funcBody\":\"var value = prevValue + Math.random() * 7;\\nif (value < 0) {\\n\\tvalue = 0;\\n} else if (value > 100) {\\n\\tvalue = 0;\\n}\\nreturn value;\",\"aggregationType\":null,\"units\":null,\"decimals\":null,\"usePostProcessing\":null,\"postFuncBody\":null}],\"alarmFilterConfig\":{\"statusList\":[\"ACTIVE\"]}}],\"timewindow\":{\"realtime\":{\"timewindowMs\":60000}},\"showTitle\":true,\"backgroundColor\":\"rgba(0, 0, 0, 0)\",\"color\":\"rgba(0, 0, 0, 0.87)\",\"padding\":\"0px\",\"settings\":{\"layout\":\"default\",\"autoScale\":true,\"showValue\":true,\"valueFont\":{\"family\":\"Roboto\",\"size\":24,\"sizeUnit\":\"px\",\"style\":\"normal\",\"weight\":\"500\",\"lineHeight\":\"32px\"},\"valueColor\":{\"type\":\"range\",\"color\":\"rgba(0, 0, 0, 0.87)\",\"rangeList\":[{\"from\":0,\"to\":20,\"color\":\"#D81838\"},{\"from\":20,\"to\":40,\"color\":\"#FFA600\"},{\"from\":40,\"to\":60,\"color\":\"#5B7EE6\"},{\"from\":60,\"to\":80,\"color\":\"#305AD7\"},{\"from\":80,\"to\":100,\"color\":\"#234CC7\"}],\"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';\"},\"tickMin\":0,\"tickMax\":100,\"showTicks\":true,\"ticksFont\":{\"family\":\"Roboto\",\"size\":11,\"sizeUnit\":\"px\",\"style\":\"normal\",\"weight\":\"400\",\"lineHeight\":\"16px\"},\"ticksColor\":\"rgba(0,0,0,0.54)\",\"background\":{\"type\":\"color\",\"color\":\"#fff\",\"overlay\":{\"enabled\":false,\"color\":\"rgba(255,255,255,0.72)\",\"blur\":3}},\"barColor\":{\"type\":\"range\",\"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';\",\"rangeList\":[{\"from\":0,\"to\":20,\"color\":\"#D81838\"},{\"from\":20,\"to\":40,\"color\":\"#FFA600\"},{\"from\":40,\"to\":60,\"color\":\"#5B7EE6\"},{\"from\":60,\"to\":80,\"color\":\"#305AD7\"},{\"from\":80,\"to\":100,\"color\":\"#234CC7\"}]},\"barBackground\":\"rgba(0, 0, 0, 0.04)\"},\"title\":\"Humidity\",\"dropShadow\":true,\"enableFullscreen\":false,\"titleStyle\":{\"fontSize\":\"16px\",\"fontWeight\":400},\"units\":\"%\",\"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\":16,\"sizeUnit\":\"px\",\"family\":\"Roboto\",\"weight\":\"500\",\"style\":\"normal\",\"lineHeight\":\"24px\"},\"titleIcon\":\"mdi:water-percent\",\"iconColor\":\"rgba(0, 0, 0, 0.87)\",\"iconSize\":\"18px\",\"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},\"titleColor\":\"rgba(0, 0, 0, 0.87)\"}" + }, + "externalId": null, + "tags": [ + "progress", + "weather", + "environment", + "humidity" + ] +} \ No newline at end of file diff --git a/application/src/main/data/json/system/widget_types/humidity_progress_bar_with_background.json b/application/src/main/data/json/system/widget_types/humidity_progress_bar_with_background.json new file mode 100644 index 0000000000..e5b42cce70 --- /dev/null +++ b/application/src/main/data/json/system/widget_types/humidity_progress_bar_with_background.json @@ -0,0 +1,29 @@ +{ + "fqn": "humidity_progress_bar_with_background", + "name": "Humidity progress bar with background", + "deprecated": false, + "image": "data:image/png;base64,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", + "description": "Displays humidity reading as a horizontal progress bar with background. Allows to configure value range, bar colors, and other settings.", + "descriptor": { + "type": "latest", + "sizeX": 3, + "sizeY": 2, + "resources": [], + "templateHtml": "\n", + "templateCss": "", + "controllerScript": "self.onInit = function() {\n self.ctx.$scope.progressBarWidget.onInit();\n};\n\nself.onDataUpdated = function() {\n self.ctx.$scope.progressBarWidget.onDataUpdated();\n};\n\nself.typeParameters = function() {\n return {\n maxDatasources: 1,\n maxDataKeys: 1,\n singleEntity: true,\n previewWidth: '280px',\n previewHeight: '180px',\n embedTitlePanel: true,\n defaultDataKeysFunction: function() {\n return [{ name: 'humidity', label: 'humidity', type: 'timeseries' }];\n }\n };\n};\n\n\nself.onDestroy = function() {\n};\n", + "settingsSchema": "", + "dataKeySettingsSchema": "", + "settingsDirective": "tb-progress-bar-widget-settings", + "hasBasicMode": true, + "basicModeDirective": "tb-progress-bar-basic-config", + "defaultConfig": "{\"datasources\":[{\"type\":\"function\",\"name\":\"function\",\"dataKeys\":[{\"name\":\"f(x)\",\"type\":\"function\",\"label\":\"humidity\",\"color\":\"#2196f3\",\"settings\":{},\"_hash\":0.2392660816082064,\"funcBody\":\"var value = prevValue + Math.random() * 7;\\nif (value < 0) {\\n\\tvalue = 0;\\n} else if (value > 100) {\\n\\tvalue = 0;\\n}\\nreturn value;\",\"aggregationType\":null,\"units\":null,\"decimals\":null,\"usePostProcessing\":null,\"postFuncBody\":null}],\"alarmFilterConfig\":{\"statusList\":[\"ACTIVE\"]}}],\"timewindow\":{\"realtime\":{\"timewindowMs\":60000}},\"showTitle\":true,\"backgroundColor\":\"rgba(0, 0, 0, 0)\",\"color\":\"rgba(0, 0, 0, 0.87)\",\"padding\":\"0px\",\"settings\":{\"layout\":\"default\",\"autoScale\":true,\"showValue\":true,\"valueFont\":{\"family\":\"Roboto\",\"size\":24,\"sizeUnit\":\"px\",\"style\":\"normal\",\"weight\":\"500\",\"lineHeight\":\"32px\"},\"valueColor\":{\"type\":\"range\",\"color\":\"rgba(0, 0, 0, 0.87)\",\"rangeList\":[{\"from\":0,\"to\":20,\"color\":\"#DE2343\"},{\"from\":20,\"to\":40,\"color\":\"#F89E0D\"},{\"from\":40,\"to\":60,\"color\":\"#5579E5\"},{\"from\":60,\"to\":80,\"color\":\"#2B54CE\"},{\"from\":80,\"to\":100,\"color\":\"#224AC2\"}],\"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';\"},\"tickMin\":0,\"tickMax\":100,\"showTicks\":true,\"ticksFont\":{\"family\":\"Roboto\",\"size\":11,\"sizeUnit\":\"px\",\"style\":\"normal\",\"weight\":\"400\",\"lineHeight\":\"16px\"},\"ticksColor\":\"rgba(0,0,0,0.54)\",\"background\":{\"type\":\"image\",\"imageBase64\":\"data:image/png;base64,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\",\"imageUrl\":null,\"color\":\"#fff\",\"overlay\":{\"enabled\":true,\"color\":\"rgba(255,255,255,0.72)\",\"blur\":3}},\"barColor\":{\"type\":\"range\",\"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';\",\"rangeList\":[{\"from\":0,\"to\":20,\"color\":\"#DE2343\"},{\"from\":20,\"to\":40,\"color\":\"#F89E0D\"},{\"from\":40,\"to\":60,\"color\":\"#5579E5\"},{\"from\":60,\"to\":80,\"color\":\"#2B54CE\"},{\"from\":80,\"to\":100,\"color\":\"#224AC2\"}]},\"barBackground\":\"rgba(0, 0, 0, 0.04)\"},\"title\":\"Humidity\",\"dropShadow\":true,\"enableFullscreen\":false,\"titleStyle\":{\"fontSize\":\"16px\",\"fontWeight\":400},\"units\":\"%\",\"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\":16,\"sizeUnit\":\"px\",\"family\":\"Roboto\",\"weight\":\"500\",\"style\":\"normal\",\"lineHeight\":\"24px\"},\"titleIcon\":\"mdi:water-percent\",\"iconColor\":\"rgba(0, 0, 0, 0.87)\",\"iconSize\":\"18px\",\"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},\"titleColor\":\"rgba(0, 0, 0, 0.87)\"}" + }, + "externalId": null, + "tags": [ + "progress", + "weather", + "environment", + "humidity" + ] +} \ No newline at end of file diff --git a/application/src/main/data/json/system/widget_types/simple_humidity_chart_card.json b/application/src/main/data/json/system/widget_types/simple_humidity_chart_card.json new file mode 100644 index 0000000000..e3870774cd --- /dev/null +++ b/application/src/main/data/json/system/widget_types/simple_humidity_chart_card.json @@ -0,0 +1,31 @@ +{ + "fqn": "simple_humidity_chart_card", + "name": "Simple humidity chart card", + "deprecated": false, + "image": "data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAAMgAAACgCAMAAAB+IdObAAAAhFBMVEUAAADg4ODf39/g4ODg4OD////g4OAhISEjTMfj4+PHx8c8PDysrKzx8fGQkJAvLy/k6fhYWFg+Ys50dHSsvOqenp6CgoLV1dXy9Pt1j9wwV8tohNlmZmZKSkqDmt9aedXI0vGRpeO5ublMbtK6urq6x+6eseeRpuNaeNXW3fXW3vTW3fS+UfxxAAAABXRSTlMA7yC/r1EOHTEAAAR+SURBVHja7M9JAcAgDAAwytEf/u0OGdAlDtIAAAAAAAB+p4/I181+HrHX83b0Ngs8zmS0XCVElUiKXEbkNh/79bIiNwxEYXh1OFSVLohG1ka9MX7/Z8zIYdJm3EFhIMJm9CPjonYfeGFNyNWakKs1IVdrQq7WD4Dc7JryV4g8Aw5pbrsgOCV1JyvF14LB9SFi5FESDIBScapU+YQkRU4YWR/y5Ef5DcQJvPMfxznxbgPEeXwMjuKdaI2uLdrTaQxk4Z6eIXQQqtCS2TMxQSlIMUWK0AVj8sxwFHQaAhFajrEyvSBsHSAZGwuW2CDKDdsO2cEptdNrCGThA6kUsvyBRFXNB4hrAgS2lyOgL0iObeo0BlJJKyWS6+nTeg/xR4iPlR6dxkAejKU8VlJPkPhA/grxDAgvCBIrug2BKG2LS6HhBMlk+gpBaEv5vSSgdOg2BILKPYdzXt4uj9MWMaY+BAtJW/GtFlvQbRQEEME3C8Hj35t/vxNy7Sbkak3I1ZqQqzUhV2tC/k+aQ8h6e0iO3LNwa4g8mZwAfq00uS9ELK6f82omt4VYlKPK/E0hv9gxtx1VYSgMX630Ly20tIgcRtFxO8f3f7/NdKYeCFqICcGE78YGuFhf1gmRTF5//kieVESkdIVV/ClFZPdDP1f2KUXEhjokLHoKkbX8F/V2iCdW6ROI/K4+IX3QQhD1pGQ+ItHK5iveE2Mq+VpuWB7/rcI1UU9K5iLCU8aUYszyrkfiDyKXMldKBgbAAyJ6V1ycdc+dIFypJG5/8s4bB2f2dHxhrWvOqZeN4I+KvFcAGn0+m8xrNADeBnkIH8f6qkhifz34aZarqydjHo8V2QLmA6j0+YwjOUpsdwYF0U4HRBJ2iuL1cijlviHCrJWfB3Fk1U/ybDRGRAMlka6wJcqAvTs35DCHn2tZezCh1WAviiS9qPxk1BuxsCu5ai2U+xVMyOEiR+CLiBociEqYvxxdi7xDj9jVryw5FxyNoZsJ2arkfLCIi7LGB1G2d92x9yJNpVuro0ZJ90nFdZ1Z7uJQIxq4vzci6+dgUKRwRaWBjDwGNTkymAMMNSaQEM5kp2NYaq1iKaeH4VZshjV7VsE0FWryvAHf/l5d7wvXJXexrBMxz1MhfIU8ShwPEylqtFSnYD9dx5/RpqRwq09AqLQMTLYrgczHjQNdUkJ/1k2tA60+If0iGaBduNXJo6ALdthrVLWpbpsEZ9MUIm5ceR/n0elsY2iLr9ZnSzfIgwmZQsTvjjcnUhw6Hm6FNCC6PYLz8NKbQMQZvP9mwq3FTgW5+EsU9H0jI9FmIo9wsx+AygA4/kh5Si+y1UQZ6mONrHfIM/FK0xAev6UB8LFzK70r4nDX9z0DPnHv7tMR/j+iC7pL0fdAJEav7jl+jecpExENY84iK6WGN/mcRV7siOaYs8gYFpFF5FlYRObGIjI3FpG5sYjMjUXkfzv3UQAACANBMLT88G8XAwigzDg4AbenMeQ0GWU8IaNd9mXdm/2dCFLUnrcrrQYAAAAAAMBvFtRAowTiuzzYAAAAAElFTkSuQmCC", + "description": "Displays historical humidity values as a simplified chart. Optionally may display the corresponding latest humidity value.", + "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: 'humidity', label: 'Humidity', type: 'timeseries', color: 'rgba(0, 0, 0, 0.87)'}\n ];\n },\n defaultLatestDataKeysFunction: function(configComponent) {\n return [{ name: 'humidity', 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\":\"Humidity\",\"color\":\"rgba(0, 0, 0, 0.87)\",\"settings\":{},\"_hash\":0.8587686344902596,\"funcBody\":\"var value = prevValue + Math.random() * 7;\\nif (value < 0) {\\n\\tvalue = 0;\\n} else if (value > 100) {\\n\\tvalue = 0;\\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() * 7;\\nif (value < 0) {\\n\\tvalue = 0;\\n} else if (value > 100) {\\n\\tvalue = 0;\\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\":20,\"color\":\"#D81838\"},{\"from\":20,\"to\":40,\"color\":\"#FFA600\"},{\"from\":40,\"to\":60,\"color\":\"#5B7EE6\"},{\"from\":60,\"to\":80,\"color\":\"#305AD7\"},{\"from\":80,\"to\":100,\"color\":\"#234CC7\"}],\"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\":\"Humidity\",\"dropShadow\":true,\"enableFullscreen\":false,\"titleStyle\":null,\"mobileHeight\":null,\"configMode\":\"basic\",\"actions\":{},\"showTitleIcon\":true,\"titleIcon\":\"mdi:water-percent\",\"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\":\"%\",\"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": [ + "weather", + "environment", + "humidity" + ] +} \ No newline at end of file diff --git a/application/src/main/data/json/system/widget_types/simple_humidity_chart_card_with_background.json b/application/src/main/data/json/system/widget_types/simple_humidity_chart_card_with_background.json new file mode 100644 index 0000000000..bd2a4181b4 --- /dev/null +++ b/application/src/main/data/json/system/widget_types/simple_humidity_chart_card_with_background.json @@ -0,0 +1,31 @@ +{ + "fqn": "simple_humidity_chart_card_with_background", + "name": "Simple humidity chart card with background", + "deprecated": false, + "image": "data:image/png;base64,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", + "description": "Displays historical humidity values as a simplified chart with background. Optionally may display the corresponding latest humidity value.", + "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: 'humidity', label: 'Humidity', type: 'timeseries', color: 'rgba(0, 0, 0, 0.87)'}\n ];\n },\n defaultLatestDataKeysFunction: function(configComponent) {\n return [{ name: 'humidity', 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\":\"Humidity\",\"color\":\"rgba(0, 0, 0, 0.87)\",\"settings\":{},\"_hash\":0.8587686344902596,\"funcBody\":\"var value = prevValue + Math.random() * 7;\\nif (value < 0) {\\n\\tvalue = 0;\\n} else if (value > 100) {\\n\\tvalue = 0;\\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() * 7;\\nif (value < 0) {\\n\\tvalue = 0;\\n} else if (value > 100) {\\n\\tvalue = 0;\\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\":20,\"color\":\"#DE2343\"},{\"from\":20,\"to\":40,\"color\":\"#F89E0D\"},{\"from\":40,\"to\":60,\"color\":\"#5579E5\"},{\"from\":60,\"to\":80,\"color\":\"#2B54CE\"},{\"from\":80,\"to\":100,\"color\":\"#224AC2\"}],\"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\",\"imageBase64\":\"data:image/png;base64,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\",\"imageUrl\":null,\"color\":\"#fff\",\"overlay\":{\"enabled\":true,\"color\":\"rgba(255,255,255,0.72)\",\"blur\":3}}},\"title\":\"Humidity\",\"dropShadow\":true,\"enableFullscreen\":false,\"titleStyle\":null,\"mobileHeight\":null,\"configMode\":\"basic\",\"actions\":{},\"showTitleIcon\":true,\"titleIcon\":\"mdi:water-percent\",\"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\":\"%\",\"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": [ + "weather", + "environment", + "humidity" + ] +} \ No newline at end of file From ec907c66bad9387c6d8aac5b3970a037ea91a7bd Mon Sep 17 00:00:00 2001 From: Igor Kulikov Date: Thu, 19 Oct 2023 15:05:01 +0300 Subject: [PATCH 14/29] UI: Fix progress bar widget percent value calculation. --- .../widget/lib/cards/progress-bar-widget.component.ts | 4 +++- 1 file changed, 3 insertions(+), 1 deletion(-) diff --git a/ui-ngx/src/app/modules/home/components/widget/lib/cards/progress-bar-widget.component.ts b/ui-ngx/src/app/modules/home/components/widget/lib/cards/progress-bar-widget.component.ts index fe1ac58ab4..22d3cb6f4d 100644 --- a/ui-ngx/src/app/modules/home/components/widget/lib/cards/progress-bar-widget.component.ts +++ b/ui-ngx/src/app/modules/home/components/widget/lib/cards/progress-bar-widget.component.ts @@ -181,7 +181,9 @@ export class ProgressBarWidgetComponent implements OnInit, OnDestroy, AfterViewI this.valueColor.update(this.value); this.barColor.update(this.value); const range = this.settings.tickMax - this.settings.tickMin; - this.barWidth = `${(this.value / range) * 100}%`; + let barWidthValue = ((this.value - this.settings.tickMin) / range) * 100; + barWidthValue = Math.max(0, Math.min(100, barWidthValue)); + this.barWidth = `${barWidthValue}%`; this.cd.detectChanges(); } From b258a11ce35e47272dde125c5b02a02c60748f9b Mon Sep 17 00:00:00 2001 From: Igor Kulikov Date: Thu, 19 Oct 2023 15:23:37 +0300 Subject: [PATCH 15/29] UI: Outdoor Environment: Pressure widgets. --- .../widget_bundles/outdoor_environment.json | 12 ++++++- .../horizontal_pressure_card.json | 28 +++++++++++++++++ ...izontal_pressure_card_with_background.json | 28 +++++++++++++++++ ...humidity_progress_bar_with_background.json | 2 +- .../system/widget_types/pressure_card.json | 28 +++++++++++++++++ .../pressure_card_with_background.json | 28 +++++++++++++++++ .../widget_types/pressure_chart_card.json | 31 +++++++++++++++++++ .../pressure_chart_card_with_background.json | 31 +++++++++++++++++++ .../widget_types/pressure_progress_bar.json | 29 +++++++++++++++++ ...pressure_progress_bar_with_background.json | 29 +++++++++++++++++ .../simple_pressure_chart_card.json | 31 +++++++++++++++++++ ...e_pressure_chart_card_with_background.json | 31 +++++++++++++++++++ 12 files changed, 306 insertions(+), 2 deletions(-) create mode 100644 application/src/main/data/json/system/widget_types/horizontal_pressure_card.json create mode 100644 application/src/main/data/json/system/widget_types/horizontal_pressure_card_with_background.json create mode 100644 application/src/main/data/json/system/widget_types/pressure_card.json create mode 100644 application/src/main/data/json/system/widget_types/pressure_card_with_background.json create mode 100644 application/src/main/data/json/system/widget_types/pressure_chart_card.json create mode 100644 application/src/main/data/json/system/widget_types/pressure_chart_card_with_background.json create mode 100644 application/src/main/data/json/system/widget_types/pressure_progress_bar.json create mode 100644 application/src/main/data/json/system/widget_types/pressure_progress_bar_with_background.json create mode 100644 application/src/main/data/json/system/widget_types/simple_pressure_chart_card.json create mode 100644 application/src/main/data/json/system/widget_types/simple_pressure_chart_card_with_background.json diff --git a/application/src/main/data/json/system/widget_bundles/outdoor_environment.json b/application/src/main/data/json/system/widget_bundles/outdoor_environment.json index 71c148d22c..298437107d 100644 --- a/application/src/main/data/json/system/widget_bundles/outdoor_environment.json +++ b/application/src/main/data/json/system/widget_bundles/outdoor_environment.json @@ -25,6 +25,16 @@ "simple_humidity_chart_card", "simple_humidity_chart_card_with_background", "humidity_progress_bar", - "humidity_progress_bar_with_background" + "humidity_progress_bar_with_background", + "pressure_card", + "pressure_card_with_background", + "horizontal_pressure_card", + "horizontal_pressure_card_with_background", + "pressure_chart_card", + "pressure_chart_card_with_background", + "simple_pressure_chart_card", + "simple_pressure_chart_card_with_background", + "pressure_progress_bar", + "pressure_progress_bar_with_background" ] } \ No newline at end of file diff --git a/application/src/main/data/json/system/widget_types/horizontal_pressure_card.json b/application/src/main/data/json/system/widget_types/horizontal_pressure_card.json new file mode 100644 index 0000000000..c96757cebf --- /dev/null +++ b/application/src/main/data/json/system/widget_types/horizontal_pressure_card.json @@ -0,0 +1,28 @@ +{ + "fqn": "horizontal_pressure_card", + "name": "Horizontal pressure card", + "deprecated": false, + "image": "data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAAMgAAACgCAMAAAB+IdObAAAAolBMVEUAAADf39/f39/g4ODg4ODf39/////k5OTYGDjg4ODri5v64ub1xc3nboLdNVHwqLT98fPOzs5YWFjz8/O3t7faJkXx8fH5+fnb29vCwsK8vLziUmnV1dXHx8fkYHbn5+f409rIyMjzt8HpfY9mZmarq6t0dHTiUmrfQ13umqiQkJCCgoJKSko6Ojrt7e3tmajsi5z39/faJkTgRF3pfY4hISGGGYADAAAABnRSTlMAIEDfv1C6kOEmAAADqUlEQVR42u3ai1LaQBiGYar2z89uzgdIYgKEcBJBrW3v/9a6WUCgUiTMlAnM90hCTHCyr7Aggy0AAAAAAAAAAAAAAAAAAAAAAAAAAACAS/p29XTG3b1x7dr331WH8YOuXmDctR4CugE/HlptuglthDQMQpoGIU2DkKY5HOJKujaHQyy+upJDIc6bxaagrfF8blDDHQqxOVJfQ/rgj/NlZnQ6VOUYHb2otVoZ1eUs5vrqVXycaOCYq31CmLQmWGx+wFGGgzoh0mZmQVt+TqPQX+TPI7/zPFlk88kyn+SGb/xeGP7o+YyKMmKqvLFiS50xZbY2Z2fb/TvEYs2Wp4RsSwTt8Be+T35mLMejsT9JO3O16BCf5qPxkmpyZ6yQItk2ByVPq46ILaca5CNbcjBj8Tmk5zivM5VYY7LLJ9rl59XKMJZ52MlzP83y0XgS6pDnSZ5TTdIWziqk5FJ1RazGZrNDml2NdMj2R4g7HEodopMidlaPQnk8RIodw/0Q0g+t0cKYj/xwvBxVIcZiNKH65CrkUc/EGQ/UyC2S27GZPN2E9Gzmd3MToq/klJW3oyEm77DoL529Zbvv/BBzvS65F20mgCvNn+xsQlg4PZ5+hDzyE/W4NJ2I5bEQ19whqZ7zQ9TClrB5uh68Gu0m5JcaFHMVYpnm0OJIkhAuqRrnjHvkAiFCz5aBfvq1ondzd7KvQrSouoX7Wlo2O3XniHKBkGrL2gzO5NnnkJ7jOLrviaPZowqp+6yl/KcQPXA92fUDRa2HrjMkhflziKAVl1luo794HXmjHQEdELz8vSOoHfLKvWrbrram+rzS5Xc1ygHb/w6R/K6jnVNe2fdKQh2jLi8xad0uddtetaNNXfV9f9ynbhyvDqgdwYkhrq2nuFhv/WSrGqAtyojF4RCtuu2UvwxxV39rOXshWebFReGprYSSOEm7YeJlWeGlL16qRu71gzSNKfD0Aa9ITwvRv7Oo1Fs9Zi5ddXpVwdETHQkZ2MxTi8ujIYoQFps9dz/EC4PC63urkH4Wq221rx97SaFD2nGsQoqwXwQqNwnoRK50P21JSV+Q8qz3I2MvTrwwK5IgVCFeGidhEBae2veS9gsVp0K61T3ST8fVgSxJ6AyXf4cY9+nfsiKmy9MhtXW7xw4GdIpGhDQRQpoGIU2DkKZBSNO0Ww838DE7UfDQujNu4IP2H8Zdq/X9vm1cu/u7W/qnGgAAAAAAAAAAAAAAAAAAAAAAAAAAAIAL+QMW1wDljmkjjQAAAABJRU5ErkJggg==", + "description": "Displays a latest pressure telemetry data in a horizontal layout.", + "descriptor": { + "type": "latest", + "sizeX": 5, + "sizeY": 1.5, + "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: '130px',\n embedTitlePanel: true,\n defaultDataKeysFunction: function() {\n return [{ name: 'pressure', label: 'Pressure', 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\":\"Pressure\",\"color\":\"#2196f3\",\"settings\":{},\"_hash\":0.2392660816082064,\"funcBody\":\"var value = prevValue + Math.random() * 80 - 40;\\nif (value < 980) {\\n\\tvalue = 980;\\n} else if (value > 1040) {\\n\\tvalue = 1040;\\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\":\"compress\",\"iconColor\":{\"type\":\"range\",\"color\":\"rgba(0, 0, 0, 0.87)\",\"rangeList\":[{\"from\":null,\"to\":1000,\"color\":\"#D81838\"},{\"from\":1000,\"to\":1020,\"color\":\"#80C32C\"},{\"from\":1020,\"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)\",\"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';\",\"rangeList\":[{\"from\":null,\"to\":1000,\"color\":\"#D81838\"},{\"from\":1000,\"to\":1020,\"color\":\"#80C32C\"},{\"from\":1020,\"to\":null,\"color\":\"#D81838\"}]},\"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\":\"Horizontal pressure card\",\"dropShadow\":true,\"enableFullscreen\":false,\"titleStyle\":{\"fontSize\":\"16px\",\"fontWeight\":400},\"units\":\"hPa\",\"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": [ + "weather", + "environment", + "pressure" + ] +} \ No newline at end of file diff --git a/application/src/main/data/json/system/widget_types/horizontal_pressure_card_with_background.json b/application/src/main/data/json/system/widget_types/horizontal_pressure_card_with_background.json new file mode 100644 index 0000000000..58d63484ae --- /dev/null +++ b/application/src/main/data/json/system/widget_types/horizontal_pressure_card_with_background.json @@ -0,0 +1,28 @@ +{ + "fqn": "horizontal_pressure_card_with_background", + "name": "Horizontal pressure card with background", + "deprecated": false, + "image": "data:image/png;base64,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", + "description": "Displays a latest pressure telemetry data in a horizontal layout with background.", + "descriptor": { + "type": "latest", + "sizeX": 5, + "sizeY": 1.5, + "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: '130px',\n embedTitlePanel: true,\n defaultDataKeysFunction: function() {\n return [{ name: 'pressure', label: 'Pressure', 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\":\"Pressure\",\"color\":\"#2196f3\",\"settings\":{},\"_hash\":0.2392660816082064,\"funcBody\":\"var value = prevValue + Math.random() * 80 - 40;\\nif (value < 980) {\\n\\tvalue = 980;\\n} else if (value > 1040) {\\n\\tvalue = 1040;\\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\":\"compress\",\"iconColor\":{\"type\":\"range\",\"color\":\"rgba(0, 0, 0, 0.87)\",\"rangeList\":[{\"from\":null,\"to\":1000,\"color\":\"#DE2343\"},{\"from\":1000,\"to\":1020,\"color\":\"#7CC322\"},{\"from\":1020,\"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)\",\"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';\",\"rangeList\":[{\"from\":null,\"to\":1000,\"color\":\"#DE2343\"},{\"from\":1000,\"to\":1020,\"color\":\"#7CC322\"},{\"from\":1020,\"to\":null,\"color\":\"#DE2343\"}]},\"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\",\"imageBase64\":\"data:image/png;base64,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\",\"imageUrl\":null,\"color\":\"#fff\",\"overlay\":{\"enabled\":true,\"color\":\"rgba(255,255,255,0.72)\",\"blur\":3}},\"autoScale\":true},\"title\":\"Horizontal pressure card\",\"dropShadow\":true,\"enableFullscreen\":false,\"titleStyle\":{\"fontSize\":\"16px\",\"fontWeight\":400},\"units\":\"hPa\",\"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": [ + "weather", + "environment", + "pressure" + ] +} \ No newline at end of file diff --git a/application/src/main/data/json/system/widget_types/humidity_progress_bar_with_background.json b/application/src/main/data/json/system/widget_types/humidity_progress_bar_with_background.json index e5b42cce70..697d527eea 100644 --- a/application/src/main/data/json/system/widget_types/humidity_progress_bar_with_background.json +++ b/application/src/main/data/json/system/widget_types/humidity_progress_bar_with_background.json @@ -17,7 +17,7 @@ "settingsDirective": "tb-progress-bar-widget-settings", "hasBasicMode": true, "basicModeDirective": "tb-progress-bar-basic-config", - "defaultConfig": "{\"datasources\":[{\"type\":\"function\",\"name\":\"function\",\"dataKeys\":[{\"name\":\"f(x)\",\"type\":\"function\",\"label\":\"humidity\",\"color\":\"#2196f3\",\"settings\":{},\"_hash\":0.2392660816082064,\"funcBody\":\"var value = prevValue + Math.random() * 7;\\nif (value < 0) {\\n\\tvalue = 0;\\n} else if (value > 100) {\\n\\tvalue = 0;\\n}\\nreturn value;\",\"aggregationType\":null,\"units\":null,\"decimals\":null,\"usePostProcessing\":null,\"postFuncBody\":null}],\"alarmFilterConfig\":{\"statusList\":[\"ACTIVE\"]}}],\"timewindow\":{\"realtime\":{\"timewindowMs\":60000}},\"showTitle\":true,\"backgroundColor\":\"rgba(0, 0, 0, 0)\",\"color\":\"rgba(0, 0, 0, 0.87)\",\"padding\":\"0px\",\"settings\":{\"layout\":\"default\",\"autoScale\":true,\"showValue\":true,\"valueFont\":{\"family\":\"Roboto\",\"size\":24,\"sizeUnit\":\"px\",\"style\":\"normal\",\"weight\":\"500\",\"lineHeight\":\"32px\"},\"valueColor\":{\"type\":\"range\",\"color\":\"rgba(0, 0, 0, 0.87)\",\"rangeList\":[{\"from\":0,\"to\":20,\"color\":\"#DE2343\"},{\"from\":20,\"to\":40,\"color\":\"#F89E0D\"},{\"from\":40,\"to\":60,\"color\":\"#5579E5\"},{\"from\":60,\"to\":80,\"color\":\"#2B54CE\"},{\"from\":80,\"to\":100,\"color\":\"#224AC2\"}],\"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';\"},\"tickMin\":0,\"tickMax\":100,\"showTicks\":true,\"ticksFont\":{\"family\":\"Roboto\",\"size\":11,\"sizeUnit\":\"px\",\"style\":\"normal\",\"weight\":\"400\",\"lineHeight\":\"16px\"},\"ticksColor\":\"rgba(0,0,0,0.54)\",\"background\":{\"type\":\"image\",\"imageBase64\":\"data:image/png;base64,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\",\"imageUrl\":null,\"color\":\"#fff\",\"overlay\":{\"enabled\":true,\"color\":\"rgba(255,255,255,0.72)\",\"blur\":3}},\"barColor\":{\"type\":\"range\",\"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';\",\"rangeList\":[{\"from\":0,\"to\":20,\"color\":\"#DE2343\"},{\"from\":20,\"to\":40,\"color\":\"#F89E0D\"},{\"from\":40,\"to\":60,\"color\":\"#5579E5\"},{\"from\":60,\"to\":80,\"color\":\"#2B54CE\"},{\"from\":80,\"to\":100,\"color\":\"#224AC2\"}]},\"barBackground\":\"rgba(0, 0, 0, 0.04)\"},\"title\":\"Humidity\",\"dropShadow\":true,\"enableFullscreen\":false,\"titleStyle\":{\"fontSize\":\"16px\",\"fontWeight\":400},\"units\":\"%\",\"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\":16,\"sizeUnit\":\"px\",\"family\":\"Roboto\",\"weight\":\"500\",\"style\":\"normal\",\"lineHeight\":\"24px\"},\"titleIcon\":\"mdi:water-percent\",\"iconColor\":\"rgba(0, 0, 0, 0.87)\",\"iconSize\":\"18px\",\"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},\"titleColor\":\"rgba(0, 0, 0, 0.87)\"}" + "defaultConfig": "{\"datasources\":[{\"type\":\"function\",\"name\":\"function\",\"dataKeys\":[{\"name\":\"f(x)\",\"type\":\"function\",\"label\":\"humidity\",\"color\":\"#2196f3\",\"settings\":{},\"_hash\":0.2392660816082064,\"funcBody\":\"var value = prevValue + Math.random() * 7;\\nif (value < 0) {\\n\\tvalue = 0;\\n} else if (value > 100) {\\n\\tvalue = 0;\\n}\\nreturn value;\",\"aggregationType\":null,\"units\":null,\"decimals\":null,\"usePostProcessing\":null,\"postFuncBody\":null}],\"alarmFilterConfig\":{\"statusList\":[\"ACTIVE\"]}}],\"timewindow\":{\"realtime\":{\"timewindowMs\":60000}},\"showTitle\":true,\"backgroundColor\":\"rgba(0, 0, 0, 0)\",\"color\":\"rgba(0, 0, 0, 0.87)\",\"padding\":\"0px\",\"settings\":{\"layout\":\"default\",\"autoScale\":true,\"showValue\":true,\"valueFont\":{\"family\":\"Roboto\",\"size\":24,\"sizeUnit\":\"px\",\"style\":\"normal\",\"weight\":\"500\",\"lineHeight\":\"32px\"},\"valueColor\":{\"type\":\"range\",\"color\":\"rgba(0, 0, 0, 0.87)\",\"rangeList\":[{\"from\":0,\"to\":20,\"color\":\"#DE2343\"},{\"from\":20,\"to\":40,\"color\":\"#F89E0D\"},{\"from\":40,\"to\":60,\"color\":\"#5579E5\"},{\"from\":60,\"to\":80,\"color\":\"#2B54CE\"},{\"from\":80,\"to\":100,\"color\":\"#224AC2\"}],\"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';\"},\"tickMin\":0,\"tickMax\":100,\"showTicks\":true,\"ticksFont\":{\"family\":\"Roboto\",\"size\":11,\"sizeUnit\":\"px\",\"style\":\"normal\",\"weight\":\"400\",\"lineHeight\":\"16px\"},\"ticksColor\":\"rgba(0,0,0,0.54)\",\"background\":{\"type\":\"image\",\"imageBase64\":\"data:image/png;base64,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\",\"imageUrl\":null,\"color\":\"#fff\",\"overlay\":{\"enabled\":true,\"color\":\"rgba(255,255,255,0.72)\",\"blur\":3}},\"barColor\":{\"type\":\"range\",\"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';\",\"rangeList\":[{\"from\":0,\"to\":20,\"color\":\"#DE2343\"},{\"from\":20,\"to\":40,\"color\":\"#F89E0D\"},{\"from\":40,\"to\":60,\"color\":\"#5579E5\"},{\"from\":60,\"to\":80,\"color\":\"#2B54CE\"},{\"from\":80,\"to\":100,\"color\":\"#224AC2\"}]},\"barBackground\":\"rgba(0, 0, 0, 0.1)\"},\"title\":\"Humidity\",\"dropShadow\":true,\"enableFullscreen\":false,\"titleStyle\":{\"fontSize\":\"16px\",\"fontWeight\":400},\"units\":\"%\",\"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\":16,\"sizeUnit\":\"px\",\"family\":\"Roboto\",\"weight\":\"500\",\"style\":\"normal\",\"lineHeight\":\"24px\"},\"titleIcon\":\"mdi:water-percent\",\"iconColor\":\"rgba(0, 0, 0, 0.87)\",\"iconSize\":\"18px\",\"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},\"titleColor\":\"rgba(0, 0, 0, 0.87)\"}" }, "externalId": null, "tags": [ diff --git a/application/src/main/data/json/system/widget_types/pressure_card.json b/application/src/main/data/json/system/widget_types/pressure_card.json new file mode 100644 index 0000000000..db557728f5 --- /dev/null +++ b/application/src/main/data/json/system/widget_types/pressure_card.json @@ -0,0 +1,28 @@ +{ + "fqn": "pressure_card", + "name": "Pressure card", + "deprecated": false, + "image": "data:image/png;base64,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", + "description": "Displays a latest pressure telemetry data in a box layout.", + "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: 'pressure', label: 'Pressure', 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\":\"Pressure\",\"color\":\"#2196f3\",\"settings\":{},\"_hash\":0.2392660816082064,\"funcBody\":\"var value = prevValue + Math.random() * 80 - 40;\\nif (value < 980) {\\n\\tvalue = 980;\\n} else if (value > 1040) {\\n\\tvalue = 1040;\\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\":\"compress\",\"iconColor\":{\"type\":\"range\",\"color\":\"rgba(0, 0, 0, 0.87)\",\"rangeList\":[{\"from\":null,\"to\":1000,\"color\":\"#D81838\"},{\"from\":1000,\"to\":1020,\"color\":\"#80C32C\"},{\"from\":1020,\"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)\",\"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';\",\"rangeList\":[{\"from\":null,\"to\":1000,\"color\":\"#D81838\"},{\"from\":1000,\"to\":1020,\"color\":\"#80C32C\"},{\"from\":1020,\"to\":null,\"color\":\"#D81838\"}]},\"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\":\"Pressure card\",\"dropShadow\":true,\"enableFullscreen\":false,\"titleStyle\":{\"fontSize\":\"16px\",\"fontWeight\":400},\"units\":\"hPa\",\"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": [ + "weather", + "environment", + "pressure" + ] +} \ No newline at end of file diff --git a/application/src/main/data/json/system/widget_types/pressure_card_with_background.json b/application/src/main/data/json/system/widget_types/pressure_card_with_background.json new file mode 100644 index 0000000000..b7d75d7426 --- /dev/null +++ b/application/src/main/data/json/system/widget_types/pressure_card_with_background.json @@ -0,0 +1,28 @@ +{ + "fqn": "pressure_card_with_background", + "name": "Pressure card with background", + "deprecated": false, + "image": "data:image/png;base64,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", + "description": "Displays a latest pressure telemetry data in a box layout with background.", + "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: 'pressure', label: 'Pressure', 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\":\"Pressure\",\"color\":\"#2196f3\",\"settings\":{},\"_hash\":0.2392660816082064,\"funcBody\":\"var value = prevValue + Math.random() * 80 - 40;\\nif (value < 980) {\\n\\tvalue = 980;\\n} else if (value > 1040) {\\n\\tvalue = 1040;\\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\":\"compress\",\"iconColor\":{\"type\":\"range\",\"color\":\"rgba(0, 0, 0, 0.87)\",\"rangeList\":[{\"from\":null,\"to\":1000,\"color\":\"#DE2343\"},{\"from\":1000,\"to\":1020,\"color\":\"#7CC322\"},{\"from\":1020,\"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)\",\"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';\",\"rangeList\":[{\"from\":null,\"to\":1000,\"color\":\"#DE2343\"},{\"from\":1000,\"to\":1020,\"color\":\"#7CC322\"},{\"from\":1020,\"to\":null,\"color\":\"#DE2343\"}]},\"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\",\"imageBase64\":\"data:image/png;base64,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\",\"imageUrl\":null,\"color\":\"#fff\",\"overlay\":{\"enabled\":true,\"color\":\"rgba(255,255,255,0.72)\",\"blur\":3}},\"autoScale\":true},\"title\":\"Pressure card with background\",\"dropShadow\":true,\"enableFullscreen\":false,\"titleStyle\":{\"fontSize\":\"16px\",\"fontWeight\":400},\"units\":\"hPa\",\"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": [ + "weather", + "environment", + "pressure" + ] +} \ No newline at end of file diff --git a/application/src/main/data/json/system/widget_types/pressure_chart_card.json b/application/src/main/data/json/system/widget_types/pressure_chart_card.json new file mode 100644 index 0000000000..055e80730d --- /dev/null +++ b/application/src/main/data/json/system/widget_types/pressure_chart_card.json @@ -0,0 +1,31 @@ +{ + "fqn": "pressure_chart_card", + "name": "Pressure chart card", + "deprecated": false, + "image": "data:image/png;base64,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", + "description": "Displays a pressure data as a combination of the latest and aggregated values. Optionally may display the corresponding historical values as a 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: 'pressure', label: 'Pressure', type: 'timeseries', color: 'rgba(0, 0, 0, 0.87)', units: 'hPa', decimals: 0 }\n ];\n },\n defaultLatestDataKeysFunction: function(configComponent, configData) {\n return configComponent.createDefaultAggregatedValueLatestDataKeys(configData, 'pressure', 'hPa');\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\":\"Pressure\",\"color\":\"rgba(0, 0, 0, 0.87)\",\"settings\":{\"showLines\":true,\"fillLines\":true,\"showPoints\":false},\"_hash\":0.8587686344902596,\"funcBody\":\"var value = prevValue + Math.random() * 80 - 40;\\nif (value < 980) {\\n\\tvalue = 980;\\n} else if (value > 1040) {\\n\\tvalue = 1040;\\n}\\nreturn value;\",\"aggregationType\":null,\"units\":\"hPa\",\"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\":null,\"to\":1000,\"color\":\"#D81838\"},{\"from\":1000,\"to\":1020,\"color\":\"#80C32C\"},{\"from\":1020,\"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() * 80 - 40;\\nif (value < 980) {\\n\\tvalue = 980;\\n} else if (value > 1040) {\\n\\tvalue = 1040;\\n}\\nreturn value;\",\"aggregationType\":null,\"units\":\"hPa\",\"decimals\":null,\"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() * 4 - 2;\\nif (value < -6) {\\n\\tvalue = -6;\\n} else if (value > 6) {\\n\\tvalue = 6;\\n}\\nreturn value;\",\"aggregationType\":null,\"units\":\"hPa\",\"decimals\":1,\"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\":\"Pressure\",\"dropShadow\":true,\"enableFullscreen\":false,\"titleStyle\":{\"fontSize\":\"16px\",\"fontWeight\":400},\"mobileHeight\":null,\"configMode\":\"basic\",\"actions\":{},\"showTitleIcon\":true,\"titleIcon\":\"compress\",\"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": [ + "weather", + "environment", + "pressure" + ] +} \ No newline at end of file diff --git a/application/src/main/data/json/system/widget_types/pressure_chart_card_with_background.json b/application/src/main/data/json/system/widget_types/pressure_chart_card_with_background.json new file mode 100644 index 0000000000..b0477cc2e1 --- /dev/null +++ b/application/src/main/data/json/system/widget_types/pressure_chart_card_with_background.json @@ -0,0 +1,31 @@ +{ + "fqn": "pressure_chart_card_with_background", + "name": "Pressure chart card with background", + "deprecated": false, + "image": "data:image/png;base64,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", + "description": "Displays a pressure data as a combination of the latest and aggregated values with background. Optionally may display the corresponding historical values as a 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: 'pressure', label: 'Pressure', type: 'timeseries', color: 'rgba(0, 0, 0, 0.87)', units: 'hPa', decimals: 0 }\n ];\n },\n defaultLatestDataKeysFunction: function(configComponent, configData) {\n return configComponent.createDefaultAggregatedValueLatestDataKeys(configData, 'pressure', 'hPa');\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\":\"Pressure\",\"color\":\"rgba(0, 0, 0, 0.87)\",\"settings\":{\"showLines\":true,\"fillLines\":true,\"showPoints\":false},\"_hash\":0.8587686344902596,\"funcBody\":\"var value = prevValue + Math.random() * 80 - 40;\\nif (value < 980) {\\n\\tvalue = 980;\\n} else if (value > 1040) {\\n\\tvalue = 1040;\\n}\\nreturn value;\",\"aggregationType\":null,\"units\":\"hPa\",\"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\":null,\"to\":1000,\"color\":\"#DE2343\"},{\"from\":1000,\"to\":1020,\"color\":\"#7CC322\"},{\"from\":1020,\"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() * 80 - 40;\\nif (value < 980) {\\n\\tvalue = 980;\\n} else if (value > 1040) {\\n\\tvalue = 1040;\\n}\\nreturn value;\",\"aggregationType\":null,\"units\":\"hPa\",\"decimals\":null,\"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() * 4 - 2;\\nif (value < -6) {\\n\\tvalue = -6;\\n} else if (value > 6) {\\n\\tvalue = 6;\\n}\\nreturn value;\",\"aggregationType\":null,\"units\":\"hPa\",\"decimals\":1,\"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\",\"imageBase64\":\"data:image/png;base64,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\",\"imageUrl\":null,\"color\":\"#fff\",\"overlay\":{\"enabled\":true,\"color\":\"rgba(255,255,255,0.72)\",\"blur\":3}},\"autoScale\":true},\"title\":\"Pressure\",\"dropShadow\":true,\"enableFullscreen\":false,\"titleStyle\":{\"fontSize\":\"16px\",\"fontWeight\":400},\"mobileHeight\":null,\"configMode\":\"basic\",\"actions\":{},\"showTitleIcon\":true,\"titleIcon\":\"compress\",\"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": [ + "weather", + "environment", + "pressure" + ] +} \ No newline at end of file diff --git a/application/src/main/data/json/system/widget_types/pressure_progress_bar.json b/application/src/main/data/json/system/widget_types/pressure_progress_bar.json new file mode 100644 index 0000000000..1c7c5fce59 --- /dev/null +++ b/application/src/main/data/json/system/widget_types/pressure_progress_bar.json @@ -0,0 +1,29 @@ +{ + "fqn": "pressure_progress_bar", + "name": "Pressure progress bar", + "deprecated": false, + "image": "data:image/png;base64,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", + "description": "Displays pressure reading as a horizontal progress bar. Allows to configure value range, bar colors, and other settings.", + "descriptor": { + "type": "latest", + "sizeX": 3, + "sizeY": 2, + "resources": [], + "templateHtml": "\n", + "templateCss": "", + "controllerScript": "self.onInit = function() {\n self.ctx.$scope.progressBarWidget.onInit();\n};\n\nself.onDataUpdated = function() {\n self.ctx.$scope.progressBarWidget.onDataUpdated();\n};\n\nself.typeParameters = function() {\n return {\n maxDatasources: 1,\n maxDataKeys: 1,\n singleEntity: true,\n previewWidth: '280px',\n previewHeight: '180px',\n embedTitlePanel: true,\n defaultDataKeysFunction: function() {\n return [{ name: 'pressure', label: 'Pressure', type: 'timeseries' }];\n }\n };\n};\n\n\nself.onDestroy = function() {\n};\n", + "settingsSchema": "", + "dataKeySettingsSchema": "", + "settingsDirective": "tb-progress-bar-widget-settings", + "hasBasicMode": true, + "basicModeDirective": "tb-progress-bar-basic-config", + "defaultConfig": "{\"datasources\":[{\"type\":\"function\",\"name\":\"function\",\"dataKeys\":[{\"name\":\"f(x)\",\"type\":\"function\",\"label\":\"Pressure\",\"color\":\"#2196f3\",\"settings\":{},\"_hash\":0.2392660816082064,\"funcBody\":\"var value = prevValue + Math.random() * 80 - 40;\\nif (value < 980) {\\n\\tvalue = 980;\\n} else if (value > 1040) {\\n\\tvalue = 1040;\\n}\\nreturn value;\",\"aggregationType\":null,\"units\":null,\"decimals\":null,\"usePostProcessing\":null,\"postFuncBody\":null}],\"alarmFilterConfig\":{\"statusList\":[\"ACTIVE\"]}}],\"timewindow\":{\"realtime\":{\"timewindowMs\":60000}},\"showTitle\":true,\"backgroundColor\":\"rgba(0, 0, 0, 0)\",\"color\":\"rgba(0, 0, 0, 0.87)\",\"padding\":\"0px\",\"settings\":{\"layout\":\"default\",\"autoScale\":true,\"showValue\":true,\"valueFont\":{\"family\":\"Roboto\",\"size\":24,\"sizeUnit\":\"px\",\"style\":\"normal\",\"weight\":\"500\",\"lineHeight\":\"32px\"},\"valueColor\":{\"type\":\"range\",\"color\":\"rgba(0, 0, 0, 0.87)\",\"rangeList\":[{\"from\":null,\"to\":1000,\"color\":\"#D81838\"},{\"from\":1000,\"to\":1020,\"color\":\"#80C32C\"},{\"from\":1020,\"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';\"},\"tickMin\":870,\"tickMax\":1085,\"showTicks\":true,\"ticksFont\":{\"family\":\"Roboto\",\"size\":11,\"sizeUnit\":\"px\",\"style\":\"normal\",\"weight\":\"400\",\"lineHeight\":\"16px\"},\"ticksColor\":\"rgba(0,0,0,0.54)\",\"background\":{\"type\":\"color\",\"color\":\"#fff\",\"overlay\":{\"enabled\":false,\"color\":\"rgba(255,255,255,0.72)\",\"blur\":3}},\"barColor\":{\"type\":\"range\",\"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';\",\"rangeList\":[{\"from\":null,\"to\":1000,\"color\":\"#D81838\"},{\"from\":1000,\"to\":1020,\"color\":\"#80C32C\"},{\"from\":1020,\"to\":null,\"color\":\"#D81838\"}]},\"barBackground\":\"rgba(0, 0, 0, 0.04)\"},\"title\":\"Pressure\",\"dropShadow\":true,\"enableFullscreen\":false,\"titleStyle\":{\"fontSize\":\"16px\",\"fontWeight\":400},\"units\":\"hPa\",\"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\":16,\"sizeUnit\":\"px\",\"family\":\"Roboto\",\"weight\":\"500\",\"style\":\"normal\",\"lineHeight\":\"24px\"},\"titleIcon\":\"compress\",\"iconColor\":\"rgba(0, 0, 0, 0.87)\",\"iconSize\":\"18px\",\"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},\"titleColor\":\"rgba(0, 0, 0, 0.87)\"}" + }, + "externalId": null, + "tags": [ + "progress", + "weather", + "environment", + "pressure" + ] +} \ No newline at end of file diff --git a/application/src/main/data/json/system/widget_types/pressure_progress_bar_with_background.json b/application/src/main/data/json/system/widget_types/pressure_progress_bar_with_background.json new file mode 100644 index 0000000000..ac4fd7fd6b --- /dev/null +++ b/application/src/main/data/json/system/widget_types/pressure_progress_bar_with_background.json @@ -0,0 +1,29 @@ +{ + "fqn": "pressure_progress_bar_with_background", + "name": "Pressure progress bar with background", + "deprecated": false, + "image": "data:image/png;base64,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", + "description": "Displays pressure reading as a horizontal progress bar with background. Allows to configure value range, bar colors, and other settings.", + "descriptor": { + "type": "latest", + "sizeX": 3, + "sizeY": 2, + "resources": [], + "templateHtml": "\n", + "templateCss": "", + "controllerScript": "self.onInit = function() {\n self.ctx.$scope.progressBarWidget.onInit();\n};\n\nself.onDataUpdated = function() {\n self.ctx.$scope.progressBarWidget.onDataUpdated();\n};\n\nself.typeParameters = function() {\n return {\n maxDatasources: 1,\n maxDataKeys: 1,\n singleEntity: true,\n previewWidth: '280px',\n previewHeight: '180px',\n embedTitlePanel: true,\n defaultDataKeysFunction: function() {\n return [{ name: 'pressure', label: 'Pressure', type: 'timeseries' }];\n }\n };\n};\n\n\nself.onDestroy = function() {\n};\n", + "settingsSchema": "", + "dataKeySettingsSchema": "", + "settingsDirective": "tb-progress-bar-widget-settings", + "hasBasicMode": true, + "basicModeDirective": "tb-progress-bar-basic-config", + "defaultConfig": "{\"datasources\":[{\"type\":\"function\",\"name\":\"function\",\"dataKeys\":[{\"name\":\"f(x)\",\"type\":\"function\",\"label\":\"Pressure\",\"color\":\"#2196f3\",\"settings\":{},\"_hash\":0.2392660816082064,\"funcBody\":\"var value = prevValue + Math.random() * 80 - 40;\\nif (value < 980) {\\n\\tvalue = 980;\\n} else if (value > 1040) {\\n\\tvalue = 1040;\\n}\\nreturn value;\",\"aggregationType\":null,\"units\":null,\"decimals\":null,\"usePostProcessing\":null,\"postFuncBody\":null}],\"alarmFilterConfig\":{\"statusList\":[\"ACTIVE\"]}}],\"timewindow\":{\"realtime\":{\"timewindowMs\":60000}},\"showTitle\":true,\"backgroundColor\":\"rgba(0, 0, 0, 0)\",\"color\":\"rgba(0, 0, 0, 0.87)\",\"padding\":\"0px\",\"settings\":{\"layout\":\"default\",\"autoScale\":true,\"showValue\":true,\"valueFont\":{\"family\":\"Roboto\",\"size\":24,\"sizeUnit\":\"px\",\"style\":\"normal\",\"weight\":\"500\",\"lineHeight\":\"32px\"},\"valueColor\":{\"type\":\"range\",\"color\":\"rgba(0, 0, 0, 0.87)\",\"rangeList\":[{\"from\":null,\"to\":1000,\"color\":\"#DE2343\"},{\"from\":1000,\"to\":1020,\"color\":\"#7CC322\"},{\"from\":1020,\"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';\"},\"tickMin\":870,\"tickMax\":1085,\"showTicks\":true,\"ticksFont\":{\"family\":\"Roboto\",\"size\":11,\"sizeUnit\":\"px\",\"style\":\"normal\",\"weight\":\"400\",\"lineHeight\":\"16px\"},\"ticksColor\":\"rgba(0,0,0,0.54)\",\"background\":{\"type\":\"image\",\"imageBase64\":\"data:image/png;base64,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\",\"imageUrl\":null,\"color\":\"#fff\",\"overlay\":{\"enabled\":true,\"color\":\"rgba(255,255,255,0.72)\",\"blur\":3}},\"barColor\":{\"type\":\"range\",\"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';\",\"rangeList\":[{\"from\":null,\"to\":1000,\"color\":\"#DE2343\"},{\"from\":1000,\"to\":1020,\"color\":\"#7CC322\"},{\"from\":1020,\"to\":null,\"color\":\"#DE2343\"}]},\"barBackground\":\"rgba(0, 0, 0, 0.1)\"},\"title\":\"Pressure\",\"dropShadow\":true,\"enableFullscreen\":false,\"titleStyle\":{\"fontSize\":\"16px\",\"fontWeight\":400},\"units\":\"hPa\",\"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\":16,\"sizeUnit\":\"px\",\"family\":\"Roboto\",\"weight\":\"500\",\"style\":\"normal\",\"lineHeight\":\"24px\"},\"titleIcon\":\"compress\",\"iconColor\":\"rgba(0, 0, 0, 0.87)\",\"iconSize\":\"18px\",\"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},\"titleColor\":\"rgba(0, 0, 0, 0.87)\"}" + }, + "externalId": null, + "tags": [ + "progress", + "weather", + "environment", + "pressure" + ] +} \ No newline at end of file diff --git a/application/src/main/data/json/system/widget_types/simple_pressure_chart_card.json b/application/src/main/data/json/system/widget_types/simple_pressure_chart_card.json new file mode 100644 index 0000000000..5813b377cd --- /dev/null +++ b/application/src/main/data/json/system/widget_types/simple_pressure_chart_card.json @@ -0,0 +1,31 @@ +{ + "fqn": "simple_pressure_chart_card", + "name": "Simple pressure chart card", + "deprecated": false, + "image": "data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAAMgAAACgCAMAAAB+IdObAAAAgVBMVEUAAADg4ODf39/g4ODg4OD////g4ODYGDghISHj4+M8PDziUmnHx8eQkJDsi5tYWFjx8fH1xc3dNVH64uZ0dHQvLy/nb4LwqbRKSkraJkSenp6CgoL98fKsrKzumqj409rV1dXzt8HpfY+rq6tmZmbkYHbgRF26urq5ubnfQ1398fNuhph/AAAABXRSTlMA7yC/r1EOHTEAAAS8SURBVHja7M9JAcAgDAAwytE3/tUOGdAlDtIAAAAAAAB+p4/I181+HrHX83b0Ngs8zmS0XCVElUiKXEbkNh87dqzqMAxDYXg6IAkJebDBJBgMDSTv/4Q3bUNDB8OdgkP9D0YaPzAkeEB6a0B6a0B6a0B66wcgy4o71YJUz7OHc1czmxj91oKwEBnOLMUopOi2FgQsBpyZAHDHVreKUAoD0LIC+7LyfgRwCVz4Nay4tDakquqqe/wFWTI8pYklOSnmFMVR05KFmRRKrJSEV8qScWVtSJSj7bxapRgZ3ANmCfAFMkPjSxj1A5kAiXiuF9aGFDuqHwiJZAM8Ap7cRWDkM6OKRMUH8hyzOxkurA2Z4pF+XS28IYuoagX4IQJgi6RfEFNVxjW1ISem4uwLMlGFPgJN+xQWR0hToBn2hsAzB+sHYpRqA4KZKG0wEjKwpOQMI/IDwrLP3UA0SRa0Cvw+A/b4WPCJL2e0IWAvPX/I/w9Bvdeb8A/8/d6sAemtAemtAemtAemtAemtAemtriHmRCny3SGcyWeLQo+bQ5weh0dvDfljx9yWk4WBAHy1syGRBIKcEX7w0Nr3f8CfZWOpI6XWC0Y6fhdkXaKz3yQbGN9EwUEgzapFDhIchfDWLBJvwREIf8UiG/E+dku2QhEv4LEUHPDe2qxNpIiFOHgUZQYY3lsrE9kJs/NjGQC8Xz09jHx6kX+74su2kdnQHdIvYy593FvPLRIY0WO8zwXZD3JGxGUAcLW3nltkK3wv2McZMJmEbzCx97BI1QAT1rod003aXNJ1CA6FCTiqcKC574gtaHgXb+7jHr7Bi6VHQymlKbzfiIQq11yYwh7rCtM5oh58LKdvREJkbAo/4rsjNja8PnKml6QwWyPiQ3+Ru3tFoi5HVzB0mOvaoq24YDwnLc3I8VT36byaEDkrpSxiDT9hzEWooOtsI3ilkZkfUCRFGdwhwsUoyyIfiGl/zbFmqRCcHplFdPNWJKLvnUlynkCULsiE3GbCwJ34Qnr3rUhdgULt6qJ6EjyOdVM6bWkgWycSJkqlowi0iA1ApY+UnmYzHqp7I80e7mYjs7ub3YnUmNOg8UyxqtKx8Qez1k22SKSjSIMYQsRpBRPwW8iDBMFvRTRaN1DqRL1jIyCasD3h6TIZddRYVKNI3Y8kWFHUzrTIwzwuckZUtc4p5OJRVeDio1s9EmnDsNVIqTZteAPOtcjyIhYVN0FIqTo5InZfj98UkW47FO+wVGsSmWuR5UU45QY+hNMJkWOSJN0gGykkpkW2MSwoknKzd6gmROCIyYRIBBcsnkL+qakFKZcUaaguV2nCxw8tw9F2rjfmRD54F06KbGIZLCbCZXeDTst9DKCp0g7zaEincyIRoqbMhMheZB4sKlIj2pN7FHT9eBrKiiyHFma3luJZdPeaQmQBLCsCqUXMuwoITXFNUZRgH+pqToRn5brD8807xiGAJUSuiaLqS3wTzlIN373x2MLIev/E9ofz6g+IHHy6/gER4iXyElkLL5Fn4yXybLxEno2XyLPxEvnfzn0TAAACQRB80tf4V4sCesKMgxNwexpDTpNRxhMy2l33io3Z34kgRe15u9JqAAAAAAAA/GYBBOmvbsxu/swAAAAASUVORK5CYII=", + "description": "Displays historical pressure values as a simplified chart. Optionally may display the corresponding latest pressure value.", + "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: 'pressure', label: 'Pressure', type: 'timeseries', color: 'rgba(0, 0, 0, 0.87)'}\n ];\n },\n defaultLatestDataKeysFunction: function(configComponent) {\n return [{ name: 'pressure', 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\":\"Pressure\",\"color\":\"rgba(0, 0, 0, 0.87)\",\"settings\":{},\"_hash\":0.8587686344902596,\"funcBody\":\"var value = prevValue + Math.random() * 80 - 40;\\nif (value < 980) {\\n\\tvalue = 980;\\n} else if (value > 1040) {\\n\\tvalue = 1040;\\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() * 80 - 40;\\nif (value < 980) {\\n\\tvalue = 980;\\n} else if (value > 1040) {\\n\\tvalue = 1040;\\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\":null,\"to\":1000,\"color\":\"#D81838\"},{\"from\":1000,\"to\":1020,\"color\":\"#80C32C\"},{\"from\":1020,\"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\":\"Pressure\",\"dropShadow\":true,\"enableFullscreen\":false,\"titleStyle\":null,\"mobileHeight\":null,\"configMode\":\"basic\",\"actions\":{},\"showTitleIcon\":true,\"titleIcon\":\"compress\",\"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\":\"hPa\",\"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": [ + "weather", + "environment", + "pressure" + ] +} \ No newline at end of file diff --git a/application/src/main/data/json/system/widget_types/simple_pressure_chart_card_with_background.json b/application/src/main/data/json/system/widget_types/simple_pressure_chart_card_with_background.json new file mode 100644 index 0000000000..817dd610e2 --- /dev/null +++ b/application/src/main/data/json/system/widget_types/simple_pressure_chart_card_with_background.json @@ -0,0 +1,31 @@ +{ + "fqn": "simple_pressure_chart_card_with_background", + "name": "Simple pressure chart card with background", + "deprecated": false, + "image": "data:image/png;base64,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", + "description": "Displays historical pressure values as a simplified chart with background. Optionally may display the corresponding latest pressure value.", + "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: 'pressure', label: 'Pressure', type: 'timeseries', color: 'rgba(0, 0, 0, 0.87)'}\n ];\n },\n defaultLatestDataKeysFunction: function(configComponent) {\n return [{ name: 'pressure', 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\":\"Pressure\",\"color\":\"rgba(0, 0, 0, 0.87)\",\"settings\":{},\"_hash\":0.8587686344902596,\"funcBody\":\"var value = prevValue + Math.random() * 80 - 40;\\nif (value < 980) {\\n\\tvalue = 980;\\n} else if (value > 1040) {\\n\\tvalue = 1040;\\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() * 80 - 40;\\nif (value < 980) {\\n\\tvalue = 980;\\n} else if (value > 1040) {\\n\\tvalue = 1040;\\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\":null,\"to\":1000,\"color\":\"#DE2343\"},{\"from\":1000,\"to\":1020,\"color\":\"#7CC322\"},{\"from\":1020,\"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\",\"imageBase64\":\"data:image/png;base64,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\",\"imageUrl\":null,\"color\":\"#fff\",\"overlay\":{\"enabled\":true,\"color\":\"rgba(255,255,255,0.72)\",\"blur\":3}}},\"title\":\"Pressure\",\"dropShadow\":true,\"enableFullscreen\":false,\"titleStyle\":null,\"mobileHeight\":null,\"configMode\":\"basic\",\"actions\":{},\"showTitleIcon\":true,\"titleIcon\":\"compress\",\"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\":\"hPa\",\"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": [ + "weather", + "environment", + "pressure" + ] +} \ No newline at end of file From 700aeba963983d01c8ccba2367d1d1fb71753ab7 Mon Sep 17 00:00:00 2001 From: Igor Kulikov Date: Thu, 19 Oct 2023 16:17:06 +0300 Subject: [PATCH 16/29] UI: Improve min/max ticks formatting for value chart card widget. --- .../lib/cards/aggregated-value-card-widget.component.ts | 6 ++---- 1 file changed, 2 insertions(+), 4 deletions(-) diff --git a/ui-ngx/src/app/modules/home/components/widget/lib/cards/aggregated-value-card-widget.component.ts b/ui-ngx/src/app/modules/home/components/widget/lib/cards/aggregated-value-card-widget.component.ts index 5380874811..b5b37df7f8 100644 --- a/ui-ngx/src/app/modules/home/components/widget/lib/cards/aggregated-value-card-widget.component.ts +++ b/ui-ngx/src/app/modules/home/components/widget/lib/cards/aggregated-value-card-widget.component.ts @@ -179,12 +179,10 @@ export class AggregatedValueCardWidgetComponent implements OnInit, AfterViewInit } as TbFlotSettings; this.flot = new TbFlot(this.ctx, 'line', $(this.chartElement.nativeElement), settings); this.tickMin$ = this.flot.yMin$.pipe( - map((value) => formatValue(value, (this.flotDataKey?.decimals || this.ctx.decimals), - (this.flotDataKey?.units || this.ctx.units)) + map((value) => formatValue(value, (this.flotDataKey?.decimals || this.ctx.decimals)) )); this.tickMax$ = this.flot.yMax$.pipe( - map((value) => formatValue(value, (this.flotDataKey?.decimals || this.ctx.decimals), - (this.flotDataKey?.units || this.ctx.units)) + map((value) => formatValue(value, (this.flotDataKey?.decimals || this.ctx.decimals)) )); } if (this.settings.autoScale && this.showValues) { From 6ff4f59e54dd2d1867955541b7a41e5ce874d72d Mon Sep 17 00:00:00 2001 From: Igor Kulikov Date: Thu, 19 Oct 2023 16:49:47 +0300 Subject: [PATCH 17/29] UI: Fix default latest data keys units for value and chart card. --- .../data/json/system/widget_types/humidity_chart_card.json | 2 +- .../widget_types/humidity_chart_card_with_background.json | 2 +- .../data/json/system/widget_types/pressure_chart_card.json | 2 +- .../widget_types/pressure_chart_card_with_background.json | 2 +- .../json/system/widget_types/temperature_chart_card.json | 2 +- .../temperature_chart_card_with_background.json | 2 +- .../json/system/widget_types/value_and_chart_card.json | 2 +- .../cards/aggregated-value-card-basic-config.component.ts | 7 ++++--- 8 files changed, 11 insertions(+), 10 deletions(-) diff --git a/application/src/main/data/json/system/widget_types/humidity_chart_card.json b/application/src/main/data/json/system/widget_types/humidity_chart_card.json index 3cfeaa2c90..9b59059ac2 100644 --- a/application/src/main/data/json/system/widget_types/humidity_chart_card.json +++ b/application/src/main/data/json/system/widget_types/humidity_chart_card.json @@ -11,7 +11,7 @@ "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: 'humidity', label: 'Humidity', type: 'timeseries', color: 'rgba(0, 0, 0, 0.87)', units: '%', decimals: 0 }\n ];\n },\n defaultLatestDataKeysFunction: function(configComponent, configData) {\n return configComponent.createDefaultAggregatedValueLatestDataKeys(configData, 'humidity', '%');\n }\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: 'humidity', label: 'Humidity', type: 'timeseries', color: 'rgba(0, 0, 0, 0.87)', units: '%', decimals: 0 }\n ];\n },\n defaultLatestDataKeysFunction: function(configComponent, configData) {\n return configComponent.createDefaultAggregatedValueLatestDataKeys(configData, 'humidity', '%', 0);\n }\n };\n}\n", "settingsSchema": "{}", "dataKeySettingsSchema": "{}", "latestDataKeySettingsSchema": "{}", diff --git a/application/src/main/data/json/system/widget_types/humidity_chart_card_with_background.json b/application/src/main/data/json/system/widget_types/humidity_chart_card_with_background.json index 571f299340..da6078bac5 100644 --- a/application/src/main/data/json/system/widget_types/humidity_chart_card_with_background.json +++ b/application/src/main/data/json/system/widget_types/humidity_chart_card_with_background.json @@ -11,7 +11,7 @@ "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: 'humidity', label: 'Humidity', type: 'timeseries', color: 'rgba(0, 0, 0, 0.87)', units: '%', decimals: 0 }\n ];\n },\n defaultLatestDataKeysFunction: function(configComponent, configData) {\n return configComponent.createDefaultAggregatedValueLatestDataKeys(configData, 'humidity', '%');\n }\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: 'humidity', label: 'Humidity', type: 'timeseries', color: 'rgba(0, 0, 0, 0.87)', units: '%', decimals: 0 }\n ];\n },\n defaultLatestDataKeysFunction: function(configComponent, configData) {\n return configComponent.createDefaultAggregatedValueLatestDataKeys(configData, 'humidity', '%', 0);\n }\n };\n}\n", "settingsSchema": "{}", "dataKeySettingsSchema": "{}", "latestDataKeySettingsSchema": "{}", diff --git a/application/src/main/data/json/system/widget_types/pressure_chart_card.json b/application/src/main/data/json/system/widget_types/pressure_chart_card.json index 055e80730d..475189d065 100644 --- a/application/src/main/data/json/system/widget_types/pressure_chart_card.json +++ b/application/src/main/data/json/system/widget_types/pressure_chart_card.json @@ -11,7 +11,7 @@ "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: 'pressure', label: 'Pressure', type: 'timeseries', color: 'rgba(0, 0, 0, 0.87)', units: 'hPa', decimals: 0 }\n ];\n },\n defaultLatestDataKeysFunction: function(configComponent, configData) {\n return configComponent.createDefaultAggregatedValueLatestDataKeys(configData, 'pressure', 'hPa');\n }\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: 'pressure', label: 'Pressure', type: 'timeseries', color: 'rgba(0, 0, 0, 0.87)', units: 'hPa', decimals: 0 }\n ];\n },\n defaultLatestDataKeysFunction: function(configComponent, configData) {\n return configComponent.createDefaultAggregatedValueLatestDataKeys(configData, 'pressure', 'hPa', 0);\n }\n };\n}\n", "settingsSchema": "{}", "dataKeySettingsSchema": "{}", "latestDataKeySettingsSchema": "{}", diff --git a/application/src/main/data/json/system/widget_types/pressure_chart_card_with_background.json b/application/src/main/data/json/system/widget_types/pressure_chart_card_with_background.json index b0477cc2e1..63ba24c45e 100644 --- a/application/src/main/data/json/system/widget_types/pressure_chart_card_with_background.json +++ b/application/src/main/data/json/system/widget_types/pressure_chart_card_with_background.json @@ -11,7 +11,7 @@ "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: 'pressure', label: 'Pressure', type: 'timeseries', color: 'rgba(0, 0, 0, 0.87)', units: 'hPa', decimals: 0 }\n ];\n },\n defaultLatestDataKeysFunction: function(configComponent, configData) {\n return configComponent.createDefaultAggregatedValueLatestDataKeys(configData, 'pressure', 'hPa');\n }\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: 'pressure', label: 'Pressure', type: 'timeseries', color: 'rgba(0, 0, 0, 0.87)', units: 'hPa', decimals: 0 }\n ];\n },\n defaultLatestDataKeysFunction: function(configComponent, configData) {\n return configComponent.createDefaultAggregatedValueLatestDataKeys(configData, 'pressure', 'hPa', 0);\n }\n };\n}\n", "settingsSchema": "{}", "dataKeySettingsSchema": "{}", "latestDataKeySettingsSchema": "{}", diff --git a/application/src/main/data/json/system/widget_types/temperature_chart_card.json b/application/src/main/data/json/system/widget_types/temperature_chart_card.json index 4aecc59cdf..cebef335f5 100644 --- a/application/src/main/data/json/system/widget_types/temperature_chart_card.json +++ b/application/src/main/data/json/system/widget_types/temperature_chart_card.json @@ -11,7 +11,7 @@ "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: 'temperature', label: 'Temperature', type: 'timeseries', color: 'rgba(0, 0, 0, 0.87)', units: '°C', decimals: 0 }\n ];\n },\n defaultLatestDataKeysFunction: function(configComponent, configData) {\n return configComponent.createDefaultAggregatedValueLatestDataKeys(configData, 'temperature', '°C');\n }\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: 'temperature', label: 'Temperature', type: 'timeseries', color: 'rgba(0, 0, 0, 0.87)', units: '°C', decimals: 0 }\n ];\n },\n defaultLatestDataKeysFunction: function(configComponent, configData) {\n return configComponent.createDefaultAggregatedValueLatestDataKeys(configData, 'temperature', '°C', 0);\n }\n };\n}\n", "settingsSchema": "{}", "dataKeySettingsSchema": "{}", "latestDataKeySettingsSchema": "{}", diff --git a/application/src/main/data/json/system/widget_types/temperature_chart_card_with_background.json b/application/src/main/data/json/system/widget_types/temperature_chart_card_with_background.json index 9d5ebe5911..d5be89cb73 100644 --- a/application/src/main/data/json/system/widget_types/temperature_chart_card_with_background.json +++ b/application/src/main/data/json/system/widget_types/temperature_chart_card_with_background.json @@ -11,7 +11,7 @@ "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: 'temperature', label: 'Temperature', type: 'timeseries', color: 'rgba(0, 0, 0, 0.87)', units: '°C', decimals: 0 }\n ];\n },\n defaultLatestDataKeysFunction: function(configComponent, configData) {\n return configComponent.createDefaultAggregatedValueLatestDataKeys(configData, 'temperature', '°C');\n }\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: 'temperature', label: 'Temperature', type: 'timeseries', color: 'rgba(0, 0, 0, 0.87)', units: '°C', decimals: 0 }\n ];\n },\n defaultLatestDataKeysFunction: function(configComponent, configData) {\n return configComponent.createDefaultAggregatedValueLatestDataKeys(configData, 'temperature', '°C', 0);\n }\n };\n}\n", "settingsSchema": "{}", "dataKeySettingsSchema": "{}", "latestDataKeySettingsSchema": "{}", diff --git a/application/src/main/data/json/system/widget_types/value_and_chart_card.json b/application/src/main/data/json/system/widget_types/value_and_chart_card.json index 10cfba9105..20b0245488 100644 --- a/application/src/main/data/json/system/widget_types/value_and_chart_card.json +++ b/application/src/main/data/json/system/widget_types/value_and_chart_card.json @@ -11,7 +11,7 @@ "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: 'watermeter', label: 'Watermeter', type: 'timeseries', color: 'rgba(0, 0, 0, 0.87)', units: 'm³', decimals: 0 }\n ];\n },\n defaultLatestDataKeysFunction: function(configComponent, configData) {\n return configComponent.createDefaultAggregatedValueLatestDataKeys(configData, 'watermeter', 'm³');\n }\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: 'watermeter', label: 'Watermeter', type: 'timeseries', color: 'rgba(0, 0, 0, 0.87)', units: 'm³', decimals: 0 }\n ];\n },\n defaultLatestDataKeysFunction: function(configComponent, configData) {\n return configComponent.createDefaultAggregatedValueLatestDataKeys(configData, 'watermeter', 'm³', 0);\n }\n };\n}\n", "settingsSchema": "{}", "dataKeySettingsSchema": "{}", "latestDataKeySettingsSchema": "{}", diff --git a/ui-ngx/src/app/modules/home/components/widget/config/basic/cards/aggregated-value-card-basic-config.component.ts b/ui-ngx/src/app/modules/home/components/widget/config/basic/cards/aggregated-value-card-basic-config.component.ts index b8794b37fc..1956526ca0 100644 --- a/ui-ngx/src/app/modules/home/components/widget/config/basic/cards/aggregated-value-card-basic-config.component.ts +++ b/ui-ngx/src/app/modules/home/components/widget/config/basic/cards/aggregated-value-card-basic-config.component.ts @@ -117,10 +117,11 @@ export class AggregatedValueCardBasicConfigComponent extends BasicWidgetConfigCo } protected defaultLatestDataKeys(configData: WidgetConfigComponentData): DataKey[] { - return this.createDefaultAggregatedValueLatestDataKeys(configData, 'watermeter', 'm³'); + return this.createDefaultAggregatedValueLatestDataKeys(configData, 'watermeter', 'm³', 0); } - createDefaultAggregatedValueLatestDataKeys(configData: WidgetConfigComponentData, keyName: string, units): DataKey[] { + createDefaultAggregatedValueLatestDataKeys(configData: WidgetConfigComponentData, keyName: string, + units: string, decimals: number): DataKey[] { let centerKeySettings: AggregatedValueCardKeySettings = { position: AggregatedValueCardKeyPosition.center, font: { @@ -189,7 +190,7 @@ export class AggregatedValueCardBasicConfigComponent extends BasicWidgetConfigCo } return [ { - name: keyName, label: 'Latest', type: DataKeyType.timeseries, units, decimals: 0, + name: keyName, label: 'Latest', type: DataKeyType.timeseries, units, decimals, aggregationType: AggregationType.NONE, settings: centerKeySettings }, From 4587270e2229cc0535c9725b80514eb0901b3fa8 Mon Sep 17 00:00:00 2001 From: Igor Kulikov Date: Thu, 19 Oct 2023 17:33:55 +0300 Subject: [PATCH 18/29] UI: Outdoor Environment: Wind Speed widgets. --- .../widget_bundles/outdoor_environment.json | 12 ++++++- .../widget_bundles/weather_widgets.json | 13 -------- .../horizontal_wind_speed_card.json | 29 +++++++++++++++++ ...ontal_wind_speed_card_with_background.json | 29 +++++++++++++++++ .../simple_wind_speed_chart_card.json | 32 +++++++++++++++++++ ...wind_speed_chart_card_with_background.json | 32 +++++++++++++++++++ .../wind_speed_and_direction.json | 10 +++--- ...d_speed_and_direction_with_background.json | 31 ++++++++++++++++++ .../system/widget_types/wind_speed_card.json | 29 +++++++++++++++++ .../wind_speed_card_with_background.json | 29 +++++++++++++++++ .../widget_types/wind_speed_chart_card.json | 32 +++++++++++++++++++ ...wind_speed_chart_card_with_background.json | 32 +++++++++++++++++++ 12 files changed, 292 insertions(+), 18 deletions(-) delete mode 100644 application/src/main/data/json/system/widget_bundles/weather_widgets.json create mode 100644 application/src/main/data/json/system/widget_types/horizontal_wind_speed_card.json create mode 100644 application/src/main/data/json/system/widget_types/horizontal_wind_speed_card_with_background.json create mode 100644 application/src/main/data/json/system/widget_types/simple_wind_speed_chart_card.json create mode 100644 application/src/main/data/json/system/widget_types/simple_wind_speed_chart_card_with_background.json create mode 100644 application/src/main/data/json/system/widget_types/wind_speed_and_direction_with_background.json create mode 100644 application/src/main/data/json/system/widget_types/wind_speed_card.json create mode 100644 application/src/main/data/json/system/widget_types/wind_speed_card_with_background.json create mode 100644 application/src/main/data/json/system/widget_types/wind_speed_chart_card.json create mode 100644 application/src/main/data/json/system/widget_types/wind_speed_chart_card_with_background.json diff --git a/application/src/main/data/json/system/widget_bundles/outdoor_environment.json b/application/src/main/data/json/system/widget_bundles/outdoor_environment.json index 298437107d..f2db1c22a3 100644 --- a/application/src/main/data/json/system/widget_bundles/outdoor_environment.json +++ b/application/src/main/data/json/system/widget_bundles/outdoor_environment.json @@ -35,6 +35,16 @@ "simple_pressure_chart_card", "simple_pressure_chart_card_with_background", "pressure_progress_bar", - "pressure_progress_bar_with_background" + "pressure_progress_bar_with_background", + "wind_speed_card", + "wind_speed_card_with_background", + "horizontal_wind_speed_card", + "horizontal_wind_speed_card_with_background", + "wind_speed_chart_card", + "wind_speed_chart_card_with_background", + "simple_wind_speed_chart_card", + "simple_wind_speed_chart_card_with_background", + "wind_speed_and_direction", + "wind_speed_and_direction_with_background" ] } \ No newline at end of file diff --git a/application/src/main/data/json/system/widget_bundles/weather_widgets.json b/application/src/main/data/json/system/widget_bundles/weather_widgets.json deleted file mode 100644 index a38c139cf0..0000000000 --- a/application/src/main/data/json/system/widget_bundles/weather_widgets.json +++ /dev/null @@ -1,13 +0,0 @@ -{ - "widgetsBundle": { - "alias": "weather_widgets", - "title": "Weather widgets", - "image": null, - "description": null, - "externalId": null, - "name": "Weather widgets" - }, - "widgetTypeFqns": [ - "wind_speed_and_direction" - ] -} \ No newline at end of file diff --git a/application/src/main/data/json/system/widget_types/horizontal_wind_speed_card.json b/application/src/main/data/json/system/widget_types/horizontal_wind_speed_card.json new file mode 100644 index 0000000000..94e177672f --- /dev/null +++ b/application/src/main/data/json/system/widget_types/horizontal_wind_speed_card.json @@ -0,0 +1,29 @@ +{ + "fqn": "horizontal_wind_speed_card", + "name": "Horizontal wind speed card", + "deprecated": false, + "image": "data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAAMgAAACgCAMAAAB+IdObAAAAn1BMVEUAAADg4ODf39/g4ODg4OD////g4OAjTMd1j9zk6fjx8fGtvOrOzs7IyMiRpePy9Pvj4+O3t7fI0vFaedU+Ys7z8/NYWFj5+fnb29swV8vCwsI8PDy8vLzn5+eesefV1dWenp6QkJCDmuCCgoJmZma6x+2rq6tohNkvLy90dHRLS0shISHW3fS6x+7W3fXU1NSRpuNMbtFMbdGsu+qtra1mE7QcAAAABXRSTlMA7yC/r1EOHTEAAAN3SURBVHja7dprU5tAGIbhJPpmOW2AcAgg4ZRzGrXa/v/f1neJLbY2FJypg5nnMgSy5MPeLMw4oyMAAAAAAAAAAAAAAAAAAAAAAAAAAAAA6G1yM55+drcT7hgb9OkZ48no9go6uORmNKWrML6WkClCBgYhQ4OQoUHI0FxtyIneMgpyUnKd0qCzkDenKB36Q5HTB2oPERW9tTdWIYUO9xgGdxlfeOwo3Tsy1Od6c9T+IKmfOSkPZs1uxu05XbYxO4VolGWbk02vHWQYGnfEP4e7rXNcq5CwcBzny+FopMew4LGVwSdlr4oqFqRooqb/qvB4Fpf5WqeQ+N4TLPZ2M3OuU60ow7JcqxBnW662pEKc7V3phLTahmWxXq23e7mmPitiPwlGiieyVyuyiYVoC9mI+44r4vH2IITnPQsxJyXfF3Jf/BZirIi+OEdauWEh89VBSnmgdY8Q3Z+ZLyHPvGvMvCxrQmzdtjcbnei0OVFN84npfJW7hJAQ30hXIbV9zq+XkDxc73moDMOVs18fHTfkWytUt9Z6L6kP/SVExGTTa2YTookqFiKeq9ukqsvUOdsT7Gu3EG22UyF/YfzcOaFRHzTbe0JsEfNcd/qFkHhm8kSezCyuZ2Oq969i9zDnz20hPj8jvi9E7O+qbGNTG6OkFh1DeBdrlS/8CyGz+ou6OvzGA5763k49J6a2aV+RSpuZDzr9Z00I2TpvfH3bQppDfqNM+Jq6yO0hH6IJaWbcJcQUOjHTV8/IwELmpppb1S3k2aMznVvMviEB/W3Q+HMgeF9IJnb87os5j/wr5HSe/JNvE83ErG+IW8fwy4iotljQYmqpgSktiGi5XdIiis4neCDoE2L7Qpt5wldJWnsIb3VrJTwz88X9O0Ly3IqktPgooSRK0oWbWHkurdSwUp65tQzSNKLAqk9YMu0RQronhPB0FVL9I8TfkWJX6pePjN4R8mi5gbSW1jlk+RjxMY8tIyuRdcg0ijhEuksZcG4SUB+2bp/31G7ePBY6h7eFzHV667sVJZabyyRQK2KlUeIGrrR4zEiX0iIVslArsky/qxN5ktBHUyG9RUu67FFG1MUQQhaLtpMBdTGIkCFCyNAgZGgQMjRXFDKmqzAd3VzHn6dvr+cfBkaT2+lnN76ZjAAAAAAAAAAAAAAAAAAAAAAAAAAAAACgrx9YOdsEpKcg1gAAAABJRU5ErkJggg==", + "description": "Displays a latest wind speed telemetry data in a horizontal layout.", + "descriptor": { + "type": "latest", + "sizeX": 5, + "sizeY": 1.5, + "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: '130px',\n embedTitlePanel: true,\n defaultDataKeysFunction: function() {\n return [{ name: 'speed', label: 'Wind Speed', 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\":\"Wind Speed\",\"color\":\"#2196f3\",\"settings\":{},\"_hash\":0.2392660816082064,\"funcBody\":\"var value = prevValue + Math.random() * 16 - 8;\\nif (value < 0) {\\n\\tvalue = 0;\\n} else if (value > 26) {\\n\\tvalue = 26;\\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:windsock\",\"iconColor\":{\"type\":\"range\",\"color\":\"rgba(0, 0, 0, 0.87)\",\"rangeList\":[{\"from\":0,\"to\":0.2,\"color\":\"#7191EF\"},{\"from\":0.2,\"to\":3.4,\"color\":\"#5B7EE6\"},{\"from\":3.4,\"to\":8,\"color\":\"#4B70DD\"},{\"from\":8,\"to\":10.8,\"color\":\"#305AD7\"},{\"from\":10.8,\"to\":17.2,\"color\":\"#234CC7\"},{\"from\":17.2,\"to\":24.5,\"color\":\"#F04022\"},{\"from\":24.5,\"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)\",\"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';\",\"rangeList\":[{\"from\":0,\"to\":0.2,\"color\":\"#7191EF\"},{\"from\":0.2,\"to\":3.4,\"color\":\"#5B7EE6\"},{\"from\":3.4,\"to\":8,\"color\":\"#4B70DD\"},{\"from\":8,\"to\":10.8,\"color\":\"#305AD7\"},{\"from\":10.8,\"to\":17.2,\"color\":\"#234CC7\"},{\"from\":17.2,\"to\":24.5,\"color\":\"#F04022\"},{\"from\":24.5,\"to\":null,\"color\":\"#D81838\"}]},\"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\":\"Horizontal wind speed card\",\"dropShadow\":true,\"enableFullscreen\":false,\"titleStyle\":{\"fontSize\":\"16px\",\"fontWeight\":400},\"units\":\"m/s\",\"decimals\":1,\"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": [ + "weather", + "environment", + "wind", + "speed" + ] +} \ No newline at end of file diff --git a/application/src/main/data/json/system/widget_types/horizontal_wind_speed_card_with_background.json b/application/src/main/data/json/system/widget_types/horizontal_wind_speed_card_with_background.json new file mode 100644 index 0000000000..3b2c8cf8ff --- /dev/null +++ b/application/src/main/data/json/system/widget_types/horizontal_wind_speed_card_with_background.json @@ -0,0 +1,29 @@ +{ + "fqn": "horizontal_wind_speed_card_with_background", + "name": "Horizontal wind speed card with background", + "deprecated": false, + "image": "data:image/png;base64,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", + "description": "Displays a latest wind speed telemetry data in a horizontal layout with background.", + "descriptor": { + "type": "latest", + "sizeX": 5, + "sizeY": 1.5, + "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: '130px',\n embedTitlePanel: true,\n defaultDataKeysFunction: function() {\n return [{ name: 'speed', label: 'Wind Speed', 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\":\"Wind Speed\",\"color\":\"#2196f3\",\"settings\":{},\"_hash\":0.2392660816082064,\"funcBody\":\"var value = prevValue + Math.random() * 16 - 8;\\nif (value < 0) {\\n\\tvalue = 0;\\n} else if (value > 26) {\\n\\tvalue = 26;\\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:windsock\",\"iconColor\":{\"type\":\"range\",\"color\":\"rgba(0, 0, 0, 0.87)\",\"rangeList\":[{\"from\":0,\"to\":0.2,\"color\":\"#6083EC\"},{\"from\":0.2,\"to\":3.4,\"color\":\"#5579E5\"},{\"from\":3.4,\"to\":8,\"color\":\"#4369DD\"},{\"from\":8,\"to\":10.8,\"color\":\"#2B54CE\"},{\"from\":10.8,\"to\":17.2,\"color\":\"#224AC2\"},{\"from\":17.2,\"to\":24.5,\"color\":\"#F04022\"},{\"from\":24.5,\"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)\",\"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';\",\"rangeList\":[{\"from\":0,\"to\":0.2,\"color\":\"#6083EC\"},{\"from\":0.2,\"to\":3.4,\"color\":\"#5579E5\"},{\"from\":3.4,\"to\":8,\"color\":\"#4369DD\"},{\"from\":8,\"to\":10.8,\"color\":\"#2B54CE\"},{\"from\":10.8,\"to\":17.2,\"color\":\"#224AC2\"},{\"from\":17.2,\"to\":24.5,\"color\":\"#F04022\"},{\"from\":24.5,\"to\":null,\"color\":\"#DE2343\"}]},\"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\",\"imageBase64\":\"data:image/png;base64,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\",\"imageUrl\":null,\"color\":\"#fff\",\"overlay\":{\"enabled\":true,\"color\":\"rgba(255,255,255,0.72)\",\"blur\":3}},\"autoScale\":true},\"title\":\"Horizontal wind speed card\",\"dropShadow\":true,\"enableFullscreen\":false,\"titleStyle\":{\"fontSize\":\"16px\",\"fontWeight\":400},\"units\":\"m/s\",\"decimals\":1,\"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": [ + "weather", + "environment", + "wind", + "speed" + ] +} \ No newline at end of file diff --git a/application/src/main/data/json/system/widget_types/simple_wind_speed_chart_card.json b/application/src/main/data/json/system/widget_types/simple_wind_speed_chart_card.json new file mode 100644 index 0000000000..ee1c935255 --- /dev/null +++ b/application/src/main/data/json/system/widget_types/simple_wind_speed_chart_card.json @@ -0,0 +1,32 @@ +{ + "fqn": "simple_wind_speed_chart_card", + "name": "Simple wind speed chart card", + "deprecated": false, + "image": "data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAAMgAAACgCAMAAAB+IdObAAAAgVBMVEUAAADg4ODf39/g4ODg4OD////h4eEjTMchISHHx8c8PDx0dHQvLy9YWFjx8fHI0vGQkJDk6fisrKxaeNWCgoJ1j9w+Ys7y9PtKSkqenp6tvOrV1dVaedW6urqRpeOfsecwV8tmZmbW3fSDmt+rq6tohNhMbtK6x+0xV8rw8PDW3vVvo8R5AAAABXRSTlMA7yC/r1EOHTEAAATVSURBVHja7M9JAcAgDAAwyvXEB/4NbjKgJA5SAAAAAAAAnlNbzNv1+j9ij+utqKWvkcBuZY4UIktkihxG5DQfu3Ww4kgIRWF4dS7n6lVEXCjiIpD3f8ZxqphM6GSgpxeJAX9EQd18FEJtyGptyGptyGptyGptyGo9hUjGl2LqQB6ANrSGu1w6ll58EvwzZjz0Aog6DI24zwpgFQgB5QmkMyTn4nIQdlpw9VKa4MwHKBlhaRqhqlkBaJYT4g2IbDFLHpidxzFnOW+974vQw3MkJpw1Qws2OhVhHlkNVGRWd95IbJjJ4QeKBSaIc8E6Emt9JyReWC43SGcPyZfBeEAq4DyqR7TzRqHzAuGAUueY8ugdEDysQN4FsU5Xfcr976Fl01xLxQEJx8J2e+yQqzMRKsCcGUKlBAtzCPWdjz3iS6EaImu5h9gN0gYQmW6QoaoIYc5dON4JeSjxAjiOe0ioIpYOputQXoUFjTJJkIZkgmuHXaALQZRXoFDuIeLo3AGJnuTcYCATcHXH4knrGI7V1oE8T/CnKBEQaoznQTw3b/NjL4BIwc8SKv63Jf+1YhJ8s7Uh329DNuRT2pDV2pDV2pDV2pDV2pAXpC0l/XxID/ydyx8OGUYrqTgyfTREjCVilkj9ZMgv9sx1V1EYCMC/hhluBVZoFREQ1kv2/R9wh1bkHAIH2E0IJH4JtIDE+dJpB9QlFwwh+XsW8aiNS3hk71fEpiO0xBTvV8Sl+IuUtzcRy/wNwTh0hjcO2fsSiYmJhR4EBzpCcnclEpPnXqkJWhy/hS7IE1sWsV3neL10kRBZun44Pm/fovLptGGRkDRhr3JYDhH534M6kf/PIkFdBsBkaEjhjSqyA/yIfM5ZYCk+n09Epy8Dojnb/ZCE9/a1rCUiKm/i1yKyLxIkJeLPIg9MYBLfxHYhrxuQUX4TuRbLXz0iulqzRVATmG4aNSgw5MhMiCR86xSCSHRrqxmQiTz0GgvH0SvbTJEyCQIjokzTkR9ylb1FFAtG6SPiXpAG7UmUuq3SdFzo0qZ9qCe2dZxYYi3XY5VQcC9kncvM1AJ4iVSIqn8JOpEEbzUyxR/JexlBQ6ozK8qQkdVo6T6B4Uh05I11JrBE23GIXDFHBIyIafK7zFJ40xPBMrk1AZfJATF7Xa705JJ1LvGpoEe/WouYGN9auOLZy0QKNNSjIpH+rFT6gPcQoTT3V00fCxjCIg867LNY/DADC0fkIIMouPPBsIjpIeY6pTDSTaFzUjd6lRjgF13h/1goYlAlJrNF7rw3BUjWDxjhSr/XF2FueJ8rUr0uqlrP/2L0vWldEU6NhSLJl9pZsEswnFlHWFdEYg26uc0VkSazHnlhcjIf+lKHfq8sUuOz0uU85VPJY1okeCkX+GShqBxatWyPYlhZRElEydtdz+LntIjJLHNjdit1kexxIl3F1xWBKEHEMld6dJJpkVIC096Ih2iomIXArCDSI2qDUTBJ2srCWBGJqfeWtM0fsavgZ1vhk3fRvY2LTOGQcwbDrkWE1z3k7loEhICWfYu8+Yh8RPbCR2RrfES2xkdka3xEtsbfdu6gAEAYBmBg26174gP/BrEB5c5BDETI2wwKyR7hxBqwDuq+dlQOmAfdWRG1z9flqgAAAAAAAPibBywlq1F+6U0fAAAAAElFTkSuQmCC", + "description": "Displays historical wind speed values as a simplified chart. Optionally may display the corresponding latest wind speed value.", + "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: 'speed', label: 'Wind Speed', type: 'timeseries', color: 'rgba(0, 0, 0, 0.87)'}\n ];\n },\n defaultLatestDataKeysFunction: function(configComponent) {\n return [{ name: 'speed', 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\":\"Wind Speed\",\"color\":\"rgba(0, 0, 0, 0.87)\",\"settings\":{},\"_hash\":0.8587686344902596,\"funcBody\":\"var value = prevValue + Math.random() * 16 - 8;\\nif (value < 0) {\\n\\tvalue = 0;\\n} else if (value > 26) {\\n\\tvalue = 26;\\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() * 16 - 8;\\nif (value < 0) {\\n\\tvalue = 0;\\n} else if (value > 26) {\\n\\tvalue = 26;\\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\":0.2,\"color\":\"#7191EF\"},{\"from\":0.2,\"to\":3.4,\"color\":\"#5B7EE6\"},{\"from\":3.4,\"to\":8,\"color\":\"#4B70DD\"},{\"from\":8,\"to\":10.8,\"color\":\"#305AD7\"},{\"from\":10.8,\"to\":17.2,\"color\":\"#234CC7\"},{\"from\":17.2,\"to\":24.5,\"color\":\"#F04022\"},{\"from\":24.5,\"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\":\"Wind Speed\",\"dropShadow\":true,\"enableFullscreen\":false,\"titleStyle\":null,\"mobileHeight\":null,\"configMode\":\"basic\",\"actions\":{},\"showTitleIcon\":true,\"titleIcon\":\"mdi:windsock\",\"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\":1,\"titleColor\":\"rgba(0, 0, 0, 0.87)\",\"borderRadius\":null,\"units\":\"m/s\",\"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": [ + "weather", + "environment", + "wind", + "speed" + ] +} \ No newline at end of file diff --git a/application/src/main/data/json/system/widget_types/simple_wind_speed_chart_card_with_background.json b/application/src/main/data/json/system/widget_types/simple_wind_speed_chart_card_with_background.json new file mode 100644 index 0000000000..52a1570847 --- /dev/null +++ b/application/src/main/data/json/system/widget_types/simple_wind_speed_chart_card_with_background.json @@ -0,0 +1,32 @@ +{ + "fqn": "simple_wind_speed_chart_card_with_background", + "name": "Simple wind speed chart card with background", + "deprecated": false, + "image": "data:image/png;base64,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", + "description": "Displays historical wind speed values as a simplified chart with background. Optionally may display the corresponding latest wind speed value.", + "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: 'speed', label: 'Wind Speed', type: 'timeseries', color: 'rgba(0, 0, 0, 0.87)'}\n ];\n },\n defaultLatestDataKeysFunction: function(configComponent) {\n return [{ name: 'speed', 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\":\"Wind Speed\",\"color\":\"rgba(0, 0, 0, 0.87)\",\"settings\":{},\"_hash\":0.8587686344902596,\"funcBody\":\"var value = prevValue + Math.random() * 16 - 8;\\nif (value < 0) {\\n\\tvalue = 0;\\n} else if (value > 26) {\\n\\tvalue = 26;\\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() * 16 - 8;\\nif (value < 0) {\\n\\tvalue = 0;\\n} else if (value > 26) {\\n\\tvalue = 26;\\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\":0.2,\"color\":\"#6083EC\"},{\"from\":0.2,\"to\":3.4,\"color\":\"#5579E5\"},{\"from\":3.4,\"to\":8,\"color\":\"#4369DD\"},{\"from\":8,\"to\":10.8,\"color\":\"#2B54CE\"},{\"from\":10.8,\"to\":17.2,\"color\":\"#224AC2\"},{\"from\":17.2,\"to\":24.5,\"color\":\"#F04022\"},{\"from\":24.5,\"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\",\"imageBase64\":\"data:image/png;base64,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\",\"imageUrl\":null,\"color\":\"#fff\",\"overlay\":{\"enabled\":true,\"color\":\"rgba(255,255,255,0.72)\",\"blur\":3}}},\"title\":\"Wind Speed\",\"dropShadow\":true,\"enableFullscreen\":false,\"titleStyle\":null,\"mobileHeight\":null,\"configMode\":\"basic\",\"actions\":{},\"showTitleIcon\":true,\"titleIcon\":\"mdi:windsock\",\"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\":1,\"titleColor\":\"rgba(0, 0, 0, 0.87)\",\"borderRadius\":null,\"units\":\"m/s\",\"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": [ + "weather", + "environment", + "wind", + "speed" + ] +} \ No newline at end of file diff --git a/application/src/main/data/json/system/widget_types/wind_speed_and_direction.json b/application/src/main/data/json/system/widget_types/wind_speed_and_direction.json index dff8b3cacc..ebdedcf611 100644 --- a/application/src/main/data/json/system/widget_types/wind_speed_and_direction.json +++ b/application/src/main/data/json/system/widget_types/wind_speed_and_direction.json @@ -2,7 +2,7 @@ "fqn": "wind_speed_and_direction", "name": "Wind speed and direction", "deprecated": false, - "image": "data:image/png;base64,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", + "image": "data:image/png;base64,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", "description": "Displays the latest values of the wind speed and direction.", "descriptor": { "type": "latest", @@ -11,19 +11,21 @@ "resources": [], "templateHtml": "\n", "templateCss": "", - "controllerScript": "self.onInit = function() {\n self.ctx.$scope.windSpeedDirectionWidget.onInit();\n};\n\nself.onDataUpdated = function() {\n self.ctx.$scope.windSpeedDirectionWidget.onDataUpdated();\n};\n\nself.typeParameters = function() {\n return {\n maxDatasources: 1,\n maxDataKeys: 2,\n singleEntity: true,\n previewWidth: '270px',\n previewHeight: '270px',\n embedTitlePanel: true,\n defaultDataKeysFunction: function() {\n return [{ name: 'winddirection', label: 'windDirection', type: 'timeseries' },\n { name: 'windspeed', label: 'centerValue', type: 'timeseries',\n units: 'm/s', decimals: 1 }];\n }\n };\n};\n\nself.actionSources = function() {\n return {\n 'cardClick': {\n name: 'widget-action.card-click',\n multiple: false\n }\n };\n}\n\nself.onDestroy = function() {\n};\n", + "controllerScript": "self.onInit = function() {\n self.ctx.$scope.windSpeedDirectionWidget.onInit();\n};\n\nself.onDataUpdated = function() {\n self.ctx.$scope.windSpeedDirectionWidget.onDataUpdated();\n};\n\nself.typeParameters = function() {\n return {\n maxDatasources: 1,\n maxDataKeys: 2,\n singleEntity: true,\n previewWidth: '270px',\n previewHeight: '270px',\n embedTitlePanel: true,\n defaultDataKeysFunction: function() {\n return [{ name: 'direction', label: 'Direction', type: 'timeseries' },\n { name: 'speed', label: 'centerValue', type: 'timeseries',\n units: 'm/s', decimals: 1 }];\n }\n };\n};\n\nself.actionSources = function() {\n return {\n 'cardClick': {\n name: 'widget-action.card-click',\n multiple: false\n }\n };\n}\n\nself.onDestroy = function() {\n};\n", "settingsSchema": "", "dataKeySettingsSchema": "", "settingsDirective": "tb-wind-speed-direction-widget-settings", "hasBasicMode": true, "basicModeDirective": "tb-wind-speed-direction-basic-config", - "defaultConfig": "{\"datasources\":[{\"type\":\"function\",\"name\":\"function\",\"dataKeys\":[{\"name\":\"f(x)\",\"type\":\"function\",\"label\":\"windDirection\",\"color\":\"#4caf50\",\"settings\":{},\"_hash\":0.7227918773301678,\"funcBody\":\"if (prevValue === 0) {\\n prevValue = Math.random() * 360;\\n}\\nvar value = prevValue + Math.random() * 20 - 10;\\nif (value < 0) {\\n\\tvalue = 0;\\n} else if (value > 360) {\\n\\tvalue = 360;\\n}\\nreturn value;\",\"aggregationType\":null,\"units\":null,\"decimals\":null,\"usePostProcessing\":null,\"postFuncBody\":null},{\"name\":\"f(x)\",\"type\":\"function\",\"label\":\"centerValue\",\"color\":\"#2196f3\",\"settings\":{},\"_hash\":0.2392660816082064,\"funcBody\":\"var value = prevValue + Math.random() * 7;\\nif (value < 0) {\\n\\tvalue = 0;\\n} else if (value > 30) {\\n\\tvalue = 0;\\n}\\nreturn value;\",\"aggregationType\":null,\"units\":\"m/s\",\"decimals\":1,\"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\":{\"layout\":\"default\",\"centerValueFont\":{\"family\":\"Roboto\",\"size\":24,\"sizeUnit\":\"px\",\"style\":\"normal\",\"weight\":\"500\",\"lineHeight\":\"32px\"},\"centerValueColor\":{\"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';\"},\"ticksColor\":\"rgba(0, 0, 0, 0.12)\",\"directionalNamesElseDegrees\":true,\"majorTicksFont\":{\"family\":\"Roboto\",\"size\":14,\"sizeUnit\":\"px\",\"style\":\"normal\",\"weight\":\"500\",\"lineHeight\":\"20px\"},\"majorTicksColor\":\"rgba(158, 158, 158, 1)\",\"minorTicksFont\":{\"family\":\"Roboto\",\"size\":14,\"sizeUnit\":\"px\",\"style\":\"normal\",\"weight\":\"500\",\"lineHeight\":\"20px\"},\"minorTicksColor\":\"rgba(0, 0, 0, 0.12)\",\"arrowColor\":\"rgba(0, 0, 0, 0.87)\",\"background\":{\"type\":\"color\",\"color\":\"#fff\",\"overlay\":{\"enabled\":false,\"color\":\"rgba(255,255,255,0.72)\",\"blur\":3}}},\"title\":\"Wind speed and direction\",\"dropShadow\":true,\"enableFullscreen\":false,\"titleStyle\":{\"fontSize\":\"16px\",\"fontWeight\":400},\"units\":\"\",\"decimals\":0,\"useDashboardTimewindow\":true,\"showLegend\":false,\"widgetStyle\":{},\"actions\":{\"headerButton\":[]},\"configMode\":\"basic\",\"displayTimewindow\":true,\"margin\":\"0px\",\"borderRadius\":\"0px\",\"widgetCss\":\"\",\"pageSize\":1024,\"noDataDisplayMessage\":\"\",\"showTitleIcon\":false,\"titleTooltip\":\"\",\"titleFont\":{\"size\":16,\"sizeUnit\":\"px\",\"family\":\"Roboto\",\"weight\":\"500\",\"style\":\"normal\",\"lineHeight\":\"24px\"},\"titleIcon\":\"air\",\"iconColor\":\"rgba(0, 0, 0, 0.87)\",\"iconSize\":\"24px\",\"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},\"titleColor\":\"rgba(0, 0, 0, 0.87)\"}" + "defaultConfig": "{\"datasources\":[{\"type\":\"function\",\"name\":\"function\",\"dataKeys\":[{\"name\":\"f(x)\",\"type\":\"function\",\"label\":\"windDirection\",\"color\":\"#4caf50\",\"settings\":{},\"_hash\":0.7227918773301678,\"funcBody\":\"if (prevValue === 0) {\\n prevValue = Math.random() * 360;\\n}\\nvar value = prevValue + Math.random() * 20 - 10;\\nif (value < 0) {\\n\\tvalue = 0;\\n} else if (value > 360) {\\n\\tvalue = 360;\\n}\\nreturn value;\",\"aggregationType\":null,\"units\":null,\"decimals\":null,\"usePostProcessing\":null,\"postFuncBody\":null},{\"name\":\"f(x)\",\"type\":\"function\",\"label\":\"centerValue\",\"color\":\"#2196f3\",\"settings\":{},\"_hash\":0.2392660816082064,\"funcBody\":\"var value = prevValue + Math.random() * 16 - 8;\\nif (value < 0) {\\n\\tvalue = 0;\\n} else if (value > 26) {\\n\\tvalue = 26;\\n}\\nreturn value;\",\"aggregationType\":null,\"units\":\"m/s\",\"decimals\":1,\"usePostProcessing\":null,\"postFuncBody\":null}],\"alarmFilterConfig\":{\"statusList\":[\"ACTIVE\"]}}],\"timewindow\":{\"realtime\":{\"timewindowMs\":60000}},\"showTitle\":true,\"backgroundColor\":\"rgba(0, 0, 0, 0)\",\"color\":\"rgba(0, 0, 0, 0.87)\",\"padding\":\"0px\",\"settings\":{\"layout\":\"default\",\"centerValueFont\":{\"family\":\"Roboto\",\"size\":24,\"sizeUnit\":\"px\",\"style\":\"normal\",\"weight\":\"500\",\"lineHeight\":\"32px\"},\"centerValueColor\":{\"type\":\"range\",\"color\":\"rgba(0, 0, 0, 0.87)\",\"rangeList\":[{\"from\":0,\"to\":0.2,\"color\":\"#7191EF\"},{\"from\":0.2,\"to\":3.4,\"color\":\"#5B7EE6\"},{\"from\":3.4,\"to\":8,\"color\":\"#5B7EE6\"},{\"from\":8,\"to\":10.8,\"color\":\"#305AD7\"},{\"from\":10.8,\"to\":17.2,\"color\":\"#234CC7\"},{\"from\":17.2,\"to\":24.5,\"color\":\"#F04022\"},{\"from\":24.5,\"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';\"},\"ticksColor\":\"rgba(0, 0, 0, 0.12)\",\"directionalNamesElseDegrees\":true,\"majorTicksFont\":{\"family\":\"Roboto\",\"size\":14,\"sizeUnit\":\"px\",\"style\":\"normal\",\"weight\":\"500\",\"lineHeight\":\"20px\"},\"majorTicksColor\":\"rgba(158, 158, 158, 1)\",\"minorTicksFont\":{\"family\":\"Roboto\",\"size\":14,\"sizeUnit\":\"px\",\"style\":\"normal\",\"weight\":\"500\",\"lineHeight\":\"20px\"},\"minorTicksColor\":\"rgba(0, 0, 0, 0.12)\",\"arrowColor\":\"rgba(0, 0, 0, 0.87)\",\"background\":{\"type\":\"color\",\"color\":\"#fff\",\"overlay\":{\"enabled\":false,\"color\":\"rgba(255,255,255,0.72)\",\"blur\":3}}},\"title\":\"Wind Speed\",\"dropShadow\":true,\"enableFullscreen\":false,\"titleStyle\":{\"fontSize\":\"16px\",\"fontWeight\":400},\"units\":\"\",\"decimals\":0,\"useDashboardTimewindow\":true,\"showLegend\":false,\"widgetStyle\":{},\"actions\":{\"headerButton\":[]},\"configMode\":\"basic\",\"displayTimewindow\":true,\"margin\":\"0px\",\"borderRadius\":\"0px\",\"widgetCss\":\"\",\"pageSize\":1024,\"noDataDisplayMessage\":\"\",\"showTitleIcon\":true,\"titleTooltip\":\"\",\"titleFont\":{\"size\":16,\"sizeUnit\":\"px\",\"family\":\"Roboto\",\"weight\":\"500\",\"style\":\"normal\",\"lineHeight\":\"24px\"},\"titleIcon\":\"mdi:windsock\",\"iconColor\":\"rgba(0, 0, 0, 0.87)\",\"iconSize\":\"24px\",\"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},\"titleColor\":\"rgba(0, 0, 0, 0.87)\"}" }, "externalId": null, "tags": [ "wind", "weather", "compass", - "degrees" + "degrees", + "environment", + "speed" ] } \ No newline at end of file diff --git a/application/src/main/data/json/system/widget_types/wind_speed_and_direction_with_background.json b/application/src/main/data/json/system/widget_types/wind_speed_and_direction_with_background.json new file mode 100644 index 0000000000..1e338cd67e --- /dev/null +++ b/application/src/main/data/json/system/widget_types/wind_speed_and_direction_with_background.json @@ -0,0 +1,31 @@ +{ + "fqn": "wind_speed_and_direction_with_background", + "name": "Wind speed and direction with background", + "deprecated": false, + "image": "data:image/png;base64,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", + "description": "Displays the latest values of the wind speed and direction with background.", + "descriptor": { + "type": "latest", + "sizeX": 3, + "sizeY": 3, + "resources": [], + "templateHtml": "\n", + "templateCss": "", + "controllerScript": "self.onInit = function() {\n self.ctx.$scope.windSpeedDirectionWidget.onInit();\n};\n\nself.onDataUpdated = function() {\n self.ctx.$scope.windSpeedDirectionWidget.onDataUpdated();\n};\n\nself.typeParameters = function() {\n return {\n maxDatasources: 1,\n maxDataKeys: 2,\n singleEntity: true,\n previewWidth: '270px',\n previewHeight: '270px',\n embedTitlePanel: true,\n defaultDataKeysFunction: function() {\n return [{ name: 'direction', label: 'Direction', type: 'timeseries' },\n { name: 'speed', label: 'centerValue', type: 'timeseries',\n units: 'm/s', decimals: 1 }];\n }\n };\n};\n\nself.actionSources = function() {\n return {\n 'cardClick': {\n name: 'widget-action.card-click',\n multiple: false\n }\n };\n}\n\nself.onDestroy = function() {\n};\n", + "settingsSchema": "", + "dataKeySettingsSchema": "", + "settingsDirective": "tb-wind-speed-direction-widget-settings", + "hasBasicMode": true, + "basicModeDirective": "tb-wind-speed-direction-basic-config", + "defaultConfig": "{\"datasources\":[{\"type\":\"function\",\"name\":\"function\",\"dataKeys\":[{\"name\":\"f(x)\",\"type\":\"function\",\"label\":\"windDirection\",\"color\":\"#4caf50\",\"settings\":{},\"_hash\":0.7227918773301678,\"funcBody\":\"if (prevValue === 0) {\\n prevValue = Math.random() * 360;\\n}\\nvar value = prevValue + Math.random() * 20 - 10;\\nif (value < 0) {\\n\\tvalue = 0;\\n} else if (value > 360) {\\n\\tvalue = 360;\\n}\\nreturn value;\",\"aggregationType\":null,\"units\":null,\"decimals\":null,\"usePostProcessing\":null,\"postFuncBody\":null},{\"name\":\"f(x)\",\"type\":\"function\",\"label\":\"centerValue\",\"color\":\"#2196f3\",\"settings\":{},\"_hash\":0.2392660816082064,\"funcBody\":\"var value = prevValue + Math.random() * 16 - 8;\\nif (value < 0) {\\n\\tvalue = 0;\\n} else if (value > 26) {\\n\\tvalue = 26;\\n}\\nreturn value;\",\"aggregationType\":null,\"units\":\"m/s\",\"decimals\":1,\"usePostProcessing\":null,\"postFuncBody\":null}],\"alarmFilterConfig\":{\"statusList\":[\"ACTIVE\"]}}],\"timewindow\":{\"realtime\":{\"timewindowMs\":60000}},\"showTitle\":true,\"backgroundColor\":\"rgba(0, 0, 0, 0)\",\"color\":\"rgba(0, 0, 0, 0.87)\",\"padding\":\"0px\",\"settings\":{\"layout\":\"default\",\"centerValueFont\":{\"family\":\"Roboto\",\"size\":24,\"sizeUnit\":\"px\",\"style\":\"normal\",\"weight\":\"500\",\"lineHeight\":\"32px\"},\"centerValueColor\":{\"type\":\"range\",\"color\":\"rgba(0, 0, 0, 0.87)\",\"rangeList\":[{\"from\":0,\"to\":0.2,\"color\":\"#6083EC\"},{\"from\":0.2,\"to\":3.4,\"color\":\"#5579E5\"},{\"from\":3.4,\"to\":8,\"color\":\"#4369DD\"},{\"from\":8,\"to\":10.8,\"color\":\"#2B54CE\"},{\"from\":10.8,\"to\":17.2,\"color\":\"#224AC2\"},{\"from\":17.2,\"to\":24.5,\"color\":\"#F04022\"},{\"from\":24.5,\"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';\"},\"ticksColor\":\"rgba(0, 0, 0, 0.12)\",\"directionalNamesElseDegrees\":true,\"majorTicksFont\":{\"family\":\"Roboto\",\"size\":14,\"sizeUnit\":\"px\",\"style\":\"normal\",\"weight\":\"500\",\"lineHeight\":\"20px\"},\"majorTicksColor\":\"rgba(158, 158, 158, 1)\",\"minorTicksFont\":{\"family\":\"Roboto\",\"size\":14,\"sizeUnit\":\"px\",\"style\":\"normal\",\"weight\":\"500\",\"lineHeight\":\"20px\"},\"minorTicksColor\":\"rgba(0, 0, 0, 0.12)\",\"arrowColor\":\"rgba(0, 0, 0, 0.87)\",\"background\":{\"type\":\"image\",\"imageBase64\":\"data:image/png;base64,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\",\"imageUrl\":null,\"color\":\"#fff\",\"overlay\":{\"enabled\":true,\"color\":\"rgba(255,255,255,0.72)\",\"blur\":3}}},\"title\":\"Wind Speed\",\"dropShadow\":true,\"enableFullscreen\":false,\"titleStyle\":{\"fontSize\":\"16px\",\"fontWeight\":400},\"units\":\"\",\"decimals\":0,\"useDashboardTimewindow\":true,\"showLegend\":false,\"widgetStyle\":{},\"actions\":{\"headerButton\":[]},\"configMode\":\"basic\",\"displayTimewindow\":true,\"margin\":\"0px\",\"borderRadius\":\"0px\",\"widgetCss\":\"\",\"pageSize\":1024,\"noDataDisplayMessage\":\"\",\"showTitleIcon\":true,\"titleTooltip\":\"\",\"titleFont\":{\"size\":16,\"sizeUnit\":\"px\",\"family\":\"Roboto\",\"weight\":\"500\",\"style\":\"normal\",\"lineHeight\":\"24px\"},\"titleIcon\":\"mdi:windsock\",\"iconColor\":\"rgba(0, 0, 0, 0.87)\",\"iconSize\":\"24px\",\"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},\"titleColor\":\"rgba(0, 0, 0, 0.87)\"}" + }, + "externalId": null, + "tags": [ + "wind", + "weather", + "compass", + "degrees", + "environment", + "speed" + ] +} \ No newline at end of file diff --git a/application/src/main/data/json/system/widget_types/wind_speed_card.json b/application/src/main/data/json/system/widget_types/wind_speed_card.json new file mode 100644 index 0000000000..45b63875bf --- /dev/null +++ b/application/src/main/data/json/system/widget_types/wind_speed_card.json @@ -0,0 +1,29 @@ +{ + "fqn": "wind_speed_card", + "name": "Wind speed card", + "deprecated": false, + "image": "data:image/png;base64,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", + "description": "Displays a latest wind speed telemetry data in a box layout.", + "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: 'speed', label: 'Wind Speed', 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\":\"Wind Speed\",\"color\":\"#2196f3\",\"settings\":{},\"_hash\":0.2392660816082064,\"funcBody\":\"var value = prevValue + Math.random() * 16 - 8;\\nif (value < 0) {\\n\\tvalue = 0;\\n} else if (value > 26) {\\n\\tvalue = 26;\\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:windsock\",\"iconColor\":{\"type\":\"range\",\"color\":\"rgba(0, 0, 0, 0.87)\",\"rangeList\":[{\"from\":0,\"to\":0.2,\"color\":\"#7191EF\"},{\"from\":0.2,\"to\":3.4,\"color\":\"#5B7EE6\"},{\"from\":3.4,\"to\":8,\"color\":\"#4B70DD\"},{\"from\":8,\"to\":10.8,\"color\":\"#305AD7\"},{\"from\":10.8,\"to\":17.2,\"color\":\"#234CC7\"},{\"from\":17.2,\"to\":24.5,\"color\":\"#F04022\"},{\"from\":24.5,\"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)\",\"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';\",\"rangeList\":[{\"from\":0,\"to\":0.2,\"color\":\"#7191EF\"},{\"from\":0.2,\"to\":3.4,\"color\":\"#5B7EE6\"},{\"from\":3.4,\"to\":8,\"color\":\"#4B70DD\"},{\"from\":8,\"to\":10.8,\"color\":\"#305AD7\"},{\"from\":10.8,\"to\":17.2,\"color\":\"#234CC7\"},{\"from\":17.2,\"to\":24.5,\"color\":\"#F04022\"},{\"from\":24.5,\"to\":null,\"color\":\"#D81838\"}]},\"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\":\"Wind speed card\",\"dropShadow\":true,\"enableFullscreen\":false,\"titleStyle\":{\"fontSize\":\"16px\",\"fontWeight\":400},\"units\":\"m/s\",\"decimals\":1,\"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": [ + "weather", + "environment", + "wind", + "speed" + ] +} \ No newline at end of file diff --git a/application/src/main/data/json/system/widget_types/wind_speed_card_with_background.json b/application/src/main/data/json/system/widget_types/wind_speed_card_with_background.json new file mode 100644 index 0000000000..78e3fe63d6 --- /dev/null +++ b/application/src/main/data/json/system/widget_types/wind_speed_card_with_background.json @@ -0,0 +1,29 @@ +{ + "fqn": "wind_speed_card_with_background", + "name": "Wind speed card with background", + "deprecated": false, + "image": "data:image/png;base64,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", + "description": "Displays a latest wind speed telemetry data in a box layout with background.", + "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: 'speed', label: 'Wind Speed', 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\":\"Wind Speed\",\"color\":\"#2196f3\",\"settings\":{},\"_hash\":0.2392660816082064,\"funcBody\":\"var value = prevValue + Math.random() * 16 - 8;\\nif (value < 0) {\\n\\tvalue = 0;\\n} else if (value > 26) {\\n\\tvalue = 26;\\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:windsock\",\"iconColor\":{\"type\":\"range\",\"color\":\"rgba(0, 0, 0, 0.87)\",\"rangeList\":[{\"from\":0,\"to\":0.2,\"color\":\"#6083EC\"},{\"from\":0.2,\"to\":3.4,\"color\":\"#5579E5\"},{\"from\":3.4,\"to\":8,\"color\":\"#4369DD\"},{\"from\":8,\"to\":10.8,\"color\":\"#2B54CE\"},{\"from\":10.8,\"to\":17.2,\"color\":\"#224AC2\"},{\"from\":17.2,\"to\":24.5,\"color\":\"#F04022\"},{\"from\":24.5,\"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)\",\"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';\",\"rangeList\":[{\"from\":0,\"to\":0.2,\"color\":\"#6083EC\"},{\"from\":0.2,\"to\":3.4,\"color\":\"#5579E5\"},{\"from\":3.4,\"to\":8,\"color\":\"#4369DD\"},{\"from\":8,\"to\":10.8,\"color\":\"#2B54CE\"},{\"from\":10.8,\"to\":17.2,\"color\":\"#224AC2\"},{\"from\":17.2,\"to\":24.5,\"color\":\"#F04022\"},{\"from\":24.5,\"to\":null,\"color\":\"#DE2343\"}]},\"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\",\"imageBase64\":\"data:image/png;base64,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\",\"imageUrl\":null,\"color\":\"#fff\",\"overlay\":{\"enabled\":true,\"color\":\"rgba(255,255,255,0.72)\",\"blur\":3}},\"autoScale\":true},\"title\":\"Wind speed card\",\"dropShadow\":true,\"enableFullscreen\":false,\"titleStyle\":{\"fontSize\":\"16px\",\"fontWeight\":400},\"units\":\"m/s\",\"decimals\":1,\"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": [ + "weather", + "environment", + "wind", + "speed" + ] +} \ No newline at end of file diff --git a/application/src/main/data/json/system/widget_types/wind_speed_chart_card.json b/application/src/main/data/json/system/widget_types/wind_speed_chart_card.json new file mode 100644 index 0000000000..723b1478f1 --- /dev/null +++ b/application/src/main/data/json/system/widget_types/wind_speed_chart_card.json @@ -0,0 +1,32 @@ +{ + "fqn": "wind_speed_chart_card", + "name": "Wind speed chart card", + "deprecated": false, + "image": "data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAAMgAAACgCAMAAAB+IdObAAAA7VBMVEXg4ODg4ODf39/////g4OAjTMfr6+vCwsL5+fnOzs7j4+M8PDzz8/PV1dXn5+dYWFghISFaedXIyMh0dHTHx8eQkJC8vLzt7e3a2tovLy/x8fE+Ys6srKzk6fi2trbb29vI0vG6urqrq6uCgoLy9PutvOpLS0tmZmYwV8udnZ3j8Oa6x+2Dmt91j9yenp7W3vXF382esef6/frx+PKRpeO217+pz7SMv5tvsIOwsLB+uI9SoGnz+fPs9uuRpuPU59pMbtLPz889lFff8N1ohNmax6hng9jQ0NBiqXYniEWq0q+ampp8uIpGRkYZgDiQzrVeAAAAA3RSTlPPvyA4toccAAAIWElEQVR42uzTzW6jMBSG4bQfkv84NjLGxFZERZFA3WTfZe//psaQJp0ZpHamC+S2vAuig2Upj4wP93fFN+hwfzhEfIPi3aHAt6jYIZm1Q3Jrh+TWDsmtHZJbPxpC8aPV7VtDZI/fMw7nAaQQCNeUA0AmjBLrltXtW0NOUz+cHV3HeoAJ6A0IMUaapXH5q+MZw5gGup2ClMsjG4hpjAtmUvJ1RDA0DFDupEZ1xhCmygEwg4REpYyKMi041KNq0ART5QKpGxPV1FQXiAxuGs6mnyEmsWIlLx+PrKs6QQjjaahxmpxCDGnO59Man0zdnG5XNkxnN1XxCpEVXiGQw4jEmppaGTOcgjGGqozuSI0/miqKYcTtREIaHTA/eoW0qPrGIEoXJByCiyFTyJMCTH2D4KmaLwSSQoVHVCYkRR1UjyaoJq2qXE/k/SqJTFpBqMd/pPKFfNV2SG79HAjX+Of06kWBd9oUol8ePNZZrMVHdPgrj3faFuIBzS2KlljJLGei1cySftQAMWYtgQTBCs9Fx5+FB1BYywvmS6B4bgvrOfkWq7aGdEgxHLVo5x/SXh/BlteiLQU8ZyDNUBzT0EGUgDhqeLR22agLNm9dtzWEcRz5AinBQC+6fYOUpUjrdoHoN0irPb9BbEvz1nVbQ8rOvoBYd4Hwzj4sEK+vEJBgmCHc8wuEmC8frC8XCPmuyALyZdohubVDcusTkBbXOF/GLPoIIgTABOYIl7orSB81AMZ/sU/HqBHEMBSGizcgCZ5VqLBdzZxj73+xaExCymRZFrTg/820hg/sCwX6E3IC3dD6wITFjXlEYOpwT4iGiU61ONDCFC/0bkjz2UydAkHPJQTNhT4zb0OFOZzaEcQLvRsyutAoh2BtXS0/fiBB3BDDyYCVhtAaU2P9F9I6L4sFcbFvCOR6VIZofjkqoWsAqcDQFZj/PcJHr/xG/t9lT51UF/JcG7Ihn9KGVGtDqrUh1dqQam1Itb7Yq5/WhGEwjuOHHw/smnMRelAIaYbVmKb4r1Ln0DH2/l/OHrOuPTQXqZUgfqEQwnPohwTygsTWCxJb94OkHxK+CXUl/TFxwLVIIamWRNSsA5BurN2LEDLdC/LBl4UhPJbwTsSQ7irBtyCSk//AdQcVP0TqpIVoogP6pX9jMUOkTgHRQj6JRAjSjN0GWV5DkzEAlBoL4vOQdqUR7nbI25aDT5WXHHAbC+T2EZCEaIX5LJvfA7LdcfCZfJPDlpUB1oUqxofwQkjiktlwiFGlUktA5QpgiKvPtYFjyeiQKXXtB0N2x/PxyJCitB6yPqEs2OUKNTYkJU5onRC3GAqxXxv7Dd8VwiDUOeAc3Ognkr2LObgV78ihEJQ/lwpN64q/+gTAVCc7JqS/lQ6E+L8P9zhIFrhbIuIHsYMEnvzVM0B+2zu3HqWBMAyrb3XO0zLTAyBYwHbXzYpkE2+8MZoYvTD+/79jB9jgAlOJgC2kD4c2ZZry8M33TTsXdHHZIr3Xr+dYMjmsa30uWipS1aoCjnm1aeEVWUzucT8BxnMU5Rh1EKIAZdRmi/oPIg/VyvwxIK9XlyvlHpHX5UPvvjdBOUHv/ktdVCilDMhgnBNjSkHm0hB69nMtJ/D+47eXFeU6MOWuSM/FoizxDfjyUBORjElJcgDMuDcYpFA0M/rsImNn4lin+ne34hUZlyjGi94CfmgGAmiQpQgDAYOsTM4s4nr9u6XGl/vH4eTd2CsyH6PoPfRqk0QZrQOlcgB59VBaQxImzyNSPL2uLctygUexSbGnWbUoUBRL2UWBvxBIbKDdvNYF0Im0jU6kbXQibaMTaRudSNu4XhHKMmhCpGKXZbgjkgUaKgNI9bgkdkSgNXL2hl6FiEQ/M2uRlARoDM7hQxH2dxFlCBT7CgdBc/BBNAiTqcfGI+JDoTG4SPg0CX02waWU38oDS1Y24Wh4meMIF2/xB8qKyE4vUIQLiy1iK4SNzyNyx3EAcTKaxoof6eGY2khYdXqRUSRG+Bs8HIShGETRzbEejuEsjMQHfmIRkdwNLEcdwyQK+abT1zNK1ghbZ1m5hPEpRUaCg9vaoNwNNofkgw8A6huvsaiH36kTinAxQ8VMeIMSh0++exzF9ePfrJnT+ETA4Q0Kv42S4dM9Bhx+hMUZRbJXPlQ0e1z9Kaza/jhIBjc/tjeGv155eStc88M52Wy8tajwBWW094+2hv6EjyPVzBUijzjW7GSKS44E+1DR1H9C0ojIpkfvBmVoo7dDX2XypIm9QTMirvRuMRMhdxqJK7lebm/2+gnekMi+nsBtVW1jIabw4E0THs1wdpGpXTPaLb27QRGDZIha1J7RpJI7v0icrLBCjPjTsXAXnnD48KdJIobnEvH83pGNT5CaYbgV84jjbCJSSTiyrUuCSIyG4Ecd2aXJCSpvdphIStneyQdepYG9tTgKFX3gG25D1HPU5ANZK7xhGlvMwqO7wl30B/9UeQNmDhG5hpnGNSa7EhEZUFwSrZ1F6UQunU6kbVytCNXwouT2tH7WnhK9LSKJs5HLFyUUcE+62kAkJEWgALk6eQFzK3LVxO3RCH4RSnKCN3mafdJAX0um36gUaT6TKk+pIWC50yVMOpHAEJ0Z5fYgaAR/RPosBTMSBGuRPgg1IDIzqdZ9OiMzCRCaOhHJSJ9lIFUjI9EAfhHJkNKApiuRIFuJEKSy8nMiBBIAQbD0kbqvNCUZA6FoAE+yG8ZACIMyCioHKFGBTlmOgH2lgTEZTatF7hQBRoEsZbrai0AxhUY4vPzqPurRplJrjMNFQFHPv1esbkDsRNpOJ9I2OpG20Ym0jU6kbXQibSN49vw6bqL9rLofeHAFPH/xG36ACJCpp+pxAAAAAElFTkSuQmCC", + "description": "Displays a wind speed data as a combination of the latest and aggregated values. Optionally may display the corresponding historical values as a 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: 'speed', label: 'Wind Speed', type: 'timeseries', color: 'rgba(0, 0, 0, 0.87)', units: 'm/s', decimals: 1 }\n ];\n },\n defaultLatestDataKeysFunction: function(configComponent, configData) {\n return configComponent.createDefaultAggregatedValueLatestDataKeys(configData, 'speed', 'm/s', 1);\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\":\"Wind Speed\",\"color\":\"rgba(0, 0, 0, 0.87)\",\"settings\":{\"showLines\":true,\"fillLines\":true,\"showPoints\":false},\"_hash\":0.8587686344902596,\"funcBody\":\"var value = prevValue + Math.random() * 16 - 8;\\nif (value < 0) {\\n\\tvalue = 0;\\n} else if (value > 26) {\\n\\tvalue = 26;\\n}\\nreturn value;\",\"aggregationType\":null,\"units\":\"m/s\",\"decimals\":1,\"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\":0.2,\"color\":\"#7191EF\"},{\"from\":0.2,\"to\":3.4,\"color\":\"#5B7EE6\"},{\"from\":3.4,\"to\":8,\"color\":\"#4B70DD\"},{\"from\":8,\"to\":10.8,\"color\":\"#305AD7\"},{\"from\":10.8,\"to\":17.2,\"color\":\"#234CC7\"},{\"from\":17.2,\"to\":24.5,\"color\":\"#F04022\"},{\"from\":24.5,\"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() * 16 - 8;\\nif (value < 0) {\\n\\tvalue = 0;\\n} else if (value > 26) {\\n\\tvalue = 26;\\n}\\nreturn value;\",\"aggregationType\":null,\"units\":\"m/s\",\"decimals\":1,\"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() * 4 - 2;\\nif (value < -6) {\\n\\tvalue = -6;\\n} else if (value > 6) {\\n\\tvalue = 6;\\n}\\nreturn value;\",\"aggregationType\":null,\"units\":\"m/s\",\"decimals\":1,\"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\":\"Wind Speed\",\"dropShadow\":true,\"enableFullscreen\":false,\"titleStyle\":{\"fontSize\":\"16px\",\"fontWeight\":400},\"mobileHeight\":null,\"configMode\":\"basic\",\"actions\":{},\"showTitleIcon\":true,\"titleIcon\":\"mdi:windsock\",\"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": [ + "weather", + "environment", + "wind", + "speed" + ] +} \ No newline at end of file diff --git a/application/src/main/data/json/system/widget_types/wind_speed_chart_card_with_background.json b/application/src/main/data/json/system/widget_types/wind_speed_chart_card_with_background.json new file mode 100644 index 0000000000..dbbb82e43e --- /dev/null +++ b/application/src/main/data/json/system/widget_types/wind_speed_chart_card_with_background.json @@ -0,0 +1,32 @@ +{ + "fqn": "wind_speed_chart_card_with_background", + "name": "Wind speed chart card with background", + "deprecated": false, + "image": "data:image/png;base64,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", + "description": "Displays a wind speed data as a combination of the latest and aggregated values with background. Optionally may display the corresponding historical values as a 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: 'speed', label: 'Wind Speed', type: 'timeseries', color: 'rgba(0, 0, 0, 0.87)', units: 'm/s', decimals: 1 }\n ];\n },\n defaultLatestDataKeysFunction: function(configComponent, configData) {\n return configComponent.createDefaultAggregatedValueLatestDataKeys(configData, 'speed', 'm/s', 1);\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\":\"Wind Speed\",\"color\":\"rgba(0, 0, 0, 0.87)\",\"settings\":{\"showLines\":true,\"fillLines\":true,\"showPoints\":false},\"_hash\":0.8587686344902596,\"funcBody\":\"var value = prevValue + Math.random() * 16 - 8;\\nif (value < 0) {\\n\\tvalue = 0;\\n} else if (value > 26) {\\n\\tvalue = 26;\\n}\\nreturn value;\",\"aggregationType\":null,\"units\":\"m/s\",\"decimals\":1,\"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\":0.2,\"color\":\"#6083EC\"},{\"from\":0.2,\"to\":3.4,\"color\":\"#5579E5\"},{\"from\":3.4,\"to\":8,\"color\":\"#4369DD\"},{\"from\":8,\"to\":10.8,\"color\":\"#2B54CE\"},{\"from\":10.8,\"to\":17.2,\"color\":\"#224AC2\"},{\"from\":17.2,\"to\":24.5,\"color\":\"#F04022\"},{\"from\":24.5,\"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() * 16 - 8;\\nif (value < 0) {\\n\\tvalue = 0;\\n} else if (value > 26) {\\n\\tvalue = 26;\\n}\\nreturn value;\",\"aggregationType\":null,\"units\":\"m/s\",\"decimals\":1,\"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() * 4 - 2;\\nif (value < -6) {\\n\\tvalue = -6;\\n} else if (value > 6) {\\n\\tvalue = 6;\\n}\\nreturn value;\",\"aggregationType\":null,\"units\":\"m/s\",\"decimals\":1,\"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\",\"imageBase64\":\"data:image/png;base64,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\",\"imageUrl\":null,\"color\":\"#fff\",\"overlay\":{\"enabled\":true,\"color\":\"rgba(255,255,255,0.72)\",\"blur\":3}},\"autoScale\":true},\"title\":\"Wind Speed\",\"dropShadow\":true,\"enableFullscreen\":false,\"titleStyle\":{\"fontSize\":\"16px\",\"fontWeight\":400},\"mobileHeight\":null,\"configMode\":\"basic\",\"actions\":{},\"showTitleIcon\":true,\"titleIcon\":\"mdi:windsock\",\"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": [ + "weather", + "environment", + "wind", + "speed" + ] +} \ No newline at end of file From f88734c01028ef2c535f85336b771c92c25065ab Mon Sep 17 00:00:00 2001 From: Igor Kulikov Date: Thu, 19 Oct 2023 17:34:37 +0300 Subject: [PATCH 19/29] Removed 'weather_widgets' bundle --- .../server/service/install/DefaultSystemDataLoaderService.java | 1 - 1 file changed, 1 deletion(-) diff --git a/application/src/main/java/org/thingsboard/server/service/install/DefaultSystemDataLoaderService.java b/application/src/main/java/org/thingsboard/server/service/install/DefaultSystemDataLoaderService.java index 19d7780a79..892eb996bf 100644 --- a/application/src/main/java/org/thingsboard/server/service/install/DefaultSystemDataLoaderService.java +++ b/application/src/main/java/org/thingsboard/server/service/install/DefaultSystemDataLoaderService.java @@ -532,7 +532,6 @@ public class DefaultSystemDataLoaderService implements SystemDataLoaderService { this.deleteSystemWidgetBundle("html_widgets"); this.deleteSystemWidgetBundle("tables"); this.deleteSystemWidgetBundle("count_widgets"); - this.deleteSystemWidgetBundle("weather_widgets"); this.deleteSystemWidgetBundle("status_indicators"); this.deleteSystemWidgetBundle("outdoor_environment"); installScripts.loadSystemWidgets(); From 54ef5364ec159980106ce05491cabdd6a79565c4 Mon Sep 17 00:00:00 2001 From: Igor Kulikov Date: Thu, 19 Oct 2023 19:00:23 +0300 Subject: [PATCH 20/29] UI: Improve 'Wind speed and direction' widget data keys configuration. --- .../wind_speed_and_direction.json | 4 +- ...d_speed_and_direction_with_background.json | 4 +- ...-speed-direction-basic-config.component.ts | 32 +++++++-------- ...eed-direction-widget-settings.component.ts | 7 ++-- .../wind-speed-direction-widget.component.ts | 39 ++++++++++--------- .../wind-speed-direction-widget.models.ts | 3 -- .../shared/models/widget-settings.models.ts | 13 +++++-- 7 files changed, 51 insertions(+), 51 deletions(-) diff --git a/application/src/main/data/json/system/widget_types/wind_speed_and_direction.json b/application/src/main/data/json/system/widget_types/wind_speed_and_direction.json index ebdedcf611..d6734f8516 100644 --- a/application/src/main/data/json/system/widget_types/wind_speed_and_direction.json +++ b/application/src/main/data/json/system/widget_types/wind_speed_and_direction.json @@ -11,13 +11,13 @@ "resources": [], "templateHtml": "\n", "templateCss": "", - "controllerScript": "self.onInit = function() {\n self.ctx.$scope.windSpeedDirectionWidget.onInit();\n};\n\nself.onDataUpdated = function() {\n self.ctx.$scope.windSpeedDirectionWidget.onDataUpdated();\n};\n\nself.typeParameters = function() {\n return {\n maxDatasources: 1,\n maxDataKeys: 2,\n singleEntity: true,\n previewWidth: '270px',\n previewHeight: '270px',\n embedTitlePanel: true,\n defaultDataKeysFunction: function() {\n return [{ name: 'direction', label: 'Direction', type: 'timeseries' },\n { name: 'speed', label: 'centerValue', type: 'timeseries',\n units: 'm/s', decimals: 1 }];\n }\n };\n};\n\nself.actionSources = function() {\n return {\n 'cardClick': {\n name: 'widget-action.card-click',\n multiple: false\n }\n };\n}\n\nself.onDestroy = function() {\n};\n", + "controllerScript": "self.onInit = function() {\n self.ctx.$scope.windSpeedDirectionWidget.onInit();\n};\n\nself.onDataUpdated = function() {\n self.ctx.$scope.windSpeedDirectionWidget.onDataUpdated();\n};\n\nself.typeParameters = function() {\n return {\n maxDatasources: 1,\n maxDataKeys: 2,\n singleEntity: true,\n previewWidth: '270px',\n previewHeight: '270px',\n embedTitlePanel: true,\n defaultDataKeysFunction: function() {\n return [{ name: 'direction', label: 'Wind Direction', type: 'timeseries' },\n { name: 'speed', label: 'Wind Speed', type: 'timeseries',\n units: 'm/s', decimals: 1 }];\n }\n };\n};\n\nself.actionSources = function() {\n return {\n 'cardClick': {\n name: 'widget-action.card-click',\n multiple: false\n }\n };\n}\n\nself.onDestroy = function() {\n};\n", "settingsSchema": "", "dataKeySettingsSchema": "", "settingsDirective": "tb-wind-speed-direction-widget-settings", "hasBasicMode": true, "basicModeDirective": "tb-wind-speed-direction-basic-config", - "defaultConfig": "{\"datasources\":[{\"type\":\"function\",\"name\":\"function\",\"dataKeys\":[{\"name\":\"f(x)\",\"type\":\"function\",\"label\":\"windDirection\",\"color\":\"#4caf50\",\"settings\":{},\"_hash\":0.7227918773301678,\"funcBody\":\"if (prevValue === 0) {\\n prevValue = Math.random() * 360;\\n}\\nvar value = prevValue + Math.random() * 20 - 10;\\nif (value < 0) {\\n\\tvalue = 0;\\n} else if (value > 360) {\\n\\tvalue = 360;\\n}\\nreturn value;\",\"aggregationType\":null,\"units\":null,\"decimals\":null,\"usePostProcessing\":null,\"postFuncBody\":null},{\"name\":\"f(x)\",\"type\":\"function\",\"label\":\"centerValue\",\"color\":\"#2196f3\",\"settings\":{},\"_hash\":0.2392660816082064,\"funcBody\":\"var value = prevValue + Math.random() * 16 - 8;\\nif (value < 0) {\\n\\tvalue = 0;\\n} else if (value > 26) {\\n\\tvalue = 26;\\n}\\nreturn value;\",\"aggregationType\":null,\"units\":\"m/s\",\"decimals\":1,\"usePostProcessing\":null,\"postFuncBody\":null}],\"alarmFilterConfig\":{\"statusList\":[\"ACTIVE\"]}}],\"timewindow\":{\"realtime\":{\"timewindowMs\":60000}},\"showTitle\":true,\"backgroundColor\":\"rgba(0, 0, 0, 0)\",\"color\":\"rgba(0, 0, 0, 0.87)\",\"padding\":\"0px\",\"settings\":{\"layout\":\"default\",\"centerValueFont\":{\"family\":\"Roboto\",\"size\":24,\"sizeUnit\":\"px\",\"style\":\"normal\",\"weight\":\"500\",\"lineHeight\":\"32px\"},\"centerValueColor\":{\"type\":\"range\",\"color\":\"rgba(0, 0, 0, 0.87)\",\"rangeList\":[{\"from\":0,\"to\":0.2,\"color\":\"#7191EF\"},{\"from\":0.2,\"to\":3.4,\"color\":\"#5B7EE6\"},{\"from\":3.4,\"to\":8,\"color\":\"#5B7EE6\"},{\"from\":8,\"to\":10.8,\"color\":\"#305AD7\"},{\"from\":10.8,\"to\":17.2,\"color\":\"#234CC7\"},{\"from\":17.2,\"to\":24.5,\"color\":\"#F04022\"},{\"from\":24.5,\"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';\"},\"ticksColor\":\"rgba(0, 0, 0, 0.12)\",\"directionalNamesElseDegrees\":true,\"majorTicksFont\":{\"family\":\"Roboto\",\"size\":14,\"sizeUnit\":\"px\",\"style\":\"normal\",\"weight\":\"500\",\"lineHeight\":\"20px\"},\"majorTicksColor\":\"rgba(158, 158, 158, 1)\",\"minorTicksFont\":{\"family\":\"Roboto\",\"size\":14,\"sizeUnit\":\"px\",\"style\":\"normal\",\"weight\":\"500\",\"lineHeight\":\"20px\"},\"minorTicksColor\":\"rgba(0, 0, 0, 0.12)\",\"arrowColor\":\"rgba(0, 0, 0, 0.87)\",\"background\":{\"type\":\"color\",\"color\":\"#fff\",\"overlay\":{\"enabled\":false,\"color\":\"rgba(255,255,255,0.72)\",\"blur\":3}}},\"title\":\"Wind Speed\",\"dropShadow\":true,\"enableFullscreen\":false,\"titleStyle\":{\"fontSize\":\"16px\",\"fontWeight\":400},\"units\":\"\",\"decimals\":0,\"useDashboardTimewindow\":true,\"showLegend\":false,\"widgetStyle\":{},\"actions\":{\"headerButton\":[]},\"configMode\":\"basic\",\"displayTimewindow\":true,\"margin\":\"0px\",\"borderRadius\":\"0px\",\"widgetCss\":\"\",\"pageSize\":1024,\"noDataDisplayMessage\":\"\",\"showTitleIcon\":true,\"titleTooltip\":\"\",\"titleFont\":{\"size\":16,\"sizeUnit\":\"px\",\"family\":\"Roboto\",\"weight\":\"500\",\"style\":\"normal\",\"lineHeight\":\"24px\"},\"titleIcon\":\"mdi:windsock\",\"iconColor\":\"rgba(0, 0, 0, 0.87)\",\"iconSize\":\"24px\",\"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},\"titleColor\":\"rgba(0, 0, 0, 0.87)\"}" + "defaultConfig": "{\"datasources\":[{\"type\":\"function\",\"name\":\"function\",\"dataKeys\":[{\"name\":\"f(x)\",\"type\":\"function\",\"label\":\"Wind Direction\",\"color\":\"#4caf50\",\"settings\":{},\"_hash\":0.7227918773301678,\"funcBody\":\"if (prevValue === 0) {\\n prevValue = Math.random() * 360;\\n}\\nvar value = prevValue + Math.random() * 20 - 10;\\nif (value < 0) {\\n\\tvalue = 0;\\n} else if (value > 360) {\\n\\tvalue = 360;\\n}\\nreturn value;\",\"aggregationType\":null,\"units\":null,\"decimals\":null,\"usePostProcessing\":null,\"postFuncBody\":null},{\"name\":\"f(x)\",\"type\":\"function\",\"label\":\"Wind Speed\",\"color\":\"#2196f3\",\"settings\":{},\"_hash\":0.2392660816082064,\"funcBody\":\"var value = prevValue + Math.random() * 16 - 8;\\nif (value < 0) {\\n\\tvalue = 0;\\n} else if (value > 26) {\\n\\tvalue = 26;\\n}\\nreturn value;\",\"aggregationType\":null,\"units\":\"m/s\",\"decimals\":1,\"usePostProcessing\":null,\"postFuncBody\":null}],\"alarmFilterConfig\":{\"statusList\":[\"ACTIVE\"]}}],\"timewindow\":{\"realtime\":{\"timewindowMs\":60000}},\"showTitle\":true,\"backgroundColor\":\"rgba(0, 0, 0, 0)\",\"color\":\"rgba(0, 0, 0, 0.87)\",\"padding\":\"0px\",\"settings\":{\"layout\":\"default\",\"centerValueFont\":{\"family\":\"Roboto\",\"size\":24,\"sizeUnit\":\"px\",\"style\":\"normal\",\"weight\":\"500\",\"lineHeight\":\"32px\"},\"centerValueColor\":{\"type\":\"range\",\"color\":\"rgba(0, 0, 0, 0.87)\",\"rangeList\":[{\"from\":0,\"to\":0.2,\"color\":\"#7191EF\"},{\"from\":0.2,\"to\":3.4,\"color\":\"#5B7EE6\"},{\"from\":3.4,\"to\":8,\"color\":\"#5B7EE6\"},{\"from\":8,\"to\":10.8,\"color\":\"#305AD7\"},{\"from\":10.8,\"to\":17.2,\"color\":\"#234CC7\"},{\"from\":17.2,\"to\":24.5,\"color\":\"#F04022\"},{\"from\":24.5,\"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';\"},\"ticksColor\":\"rgba(0, 0, 0, 0.12)\",\"directionalNamesElseDegrees\":true,\"majorTicksFont\":{\"family\":\"Roboto\",\"size\":14,\"sizeUnit\":\"px\",\"style\":\"normal\",\"weight\":\"500\",\"lineHeight\":\"20px\"},\"majorTicksColor\":\"rgba(158, 158, 158, 1)\",\"minorTicksFont\":{\"family\":\"Roboto\",\"size\":14,\"sizeUnit\":\"px\",\"style\":\"normal\",\"weight\":\"500\",\"lineHeight\":\"20px\"},\"minorTicksColor\":\"rgba(0, 0, 0, 0.12)\",\"arrowColor\":\"rgba(0, 0, 0, 0.87)\",\"background\":{\"type\":\"color\",\"color\":\"#fff\",\"overlay\":{\"enabled\":false,\"color\":\"rgba(255,255,255,0.72)\",\"blur\":3}}},\"title\":\"Wind Speed\",\"dropShadow\":true,\"enableFullscreen\":false,\"titleStyle\":{\"fontSize\":\"16px\",\"fontWeight\":400},\"units\":\"\",\"decimals\":0,\"useDashboardTimewindow\":true,\"showLegend\":false,\"widgetStyle\":{},\"actions\":{\"headerButton\":[]},\"configMode\":\"basic\",\"displayTimewindow\":true,\"margin\":\"0px\",\"borderRadius\":\"0px\",\"widgetCss\":\"\",\"pageSize\":1024,\"noDataDisplayMessage\":\"\",\"showTitleIcon\":true,\"titleTooltip\":\"\",\"titleFont\":{\"size\":16,\"sizeUnit\":\"px\",\"family\":\"Roboto\",\"weight\":\"500\",\"style\":\"normal\",\"lineHeight\":\"24px\"},\"titleIcon\":\"mdi:windsock\",\"iconColor\":\"rgba(0, 0, 0, 0.87)\",\"iconSize\":\"24px\",\"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},\"titleColor\":\"rgba(0, 0, 0, 0.87)\"}" }, "externalId": null, "tags": [ diff --git a/application/src/main/data/json/system/widget_types/wind_speed_and_direction_with_background.json b/application/src/main/data/json/system/widget_types/wind_speed_and_direction_with_background.json index 1e338cd67e..32a54a29e3 100644 --- a/application/src/main/data/json/system/widget_types/wind_speed_and_direction_with_background.json +++ b/application/src/main/data/json/system/widget_types/wind_speed_and_direction_with_background.json @@ -11,13 +11,13 @@ "resources": [], "templateHtml": "\n", "templateCss": "", - "controllerScript": "self.onInit = function() {\n self.ctx.$scope.windSpeedDirectionWidget.onInit();\n};\n\nself.onDataUpdated = function() {\n self.ctx.$scope.windSpeedDirectionWidget.onDataUpdated();\n};\n\nself.typeParameters = function() {\n return {\n maxDatasources: 1,\n maxDataKeys: 2,\n singleEntity: true,\n previewWidth: '270px',\n previewHeight: '270px',\n embedTitlePanel: true,\n defaultDataKeysFunction: function() {\n return [{ name: 'direction', label: 'Direction', type: 'timeseries' },\n { name: 'speed', label: 'centerValue', type: 'timeseries',\n units: 'm/s', decimals: 1 }];\n }\n };\n};\n\nself.actionSources = function() {\n return {\n 'cardClick': {\n name: 'widget-action.card-click',\n multiple: false\n }\n };\n}\n\nself.onDestroy = function() {\n};\n", + "controllerScript": "self.onInit = function() {\n self.ctx.$scope.windSpeedDirectionWidget.onInit();\n};\n\nself.onDataUpdated = function() {\n self.ctx.$scope.windSpeedDirectionWidget.onDataUpdated();\n};\n\nself.typeParameters = function() {\n return {\n maxDatasources: 1,\n maxDataKeys: 2,\n singleEntity: true,\n previewWidth: '270px',\n previewHeight: '270px',\n embedTitlePanel: true,\n defaultDataKeysFunction: function() {\n return [{ name: 'direction', label: 'Wind Direction', type: 'timeseries' },\n { name: 'speed', label: 'Wind Speed', type: 'timeseries',\n units: 'm/s', decimals: 1 }];\n }\n };\n};\n\nself.actionSources = function() {\n return {\n 'cardClick': {\n name: 'widget-action.card-click',\n multiple: false\n }\n };\n}\n\nself.onDestroy = function() {\n};\n", "settingsSchema": "", "dataKeySettingsSchema": "", "settingsDirective": "tb-wind-speed-direction-widget-settings", "hasBasicMode": true, "basicModeDirective": "tb-wind-speed-direction-basic-config", - "defaultConfig": "{\"datasources\":[{\"type\":\"function\",\"name\":\"function\",\"dataKeys\":[{\"name\":\"f(x)\",\"type\":\"function\",\"label\":\"windDirection\",\"color\":\"#4caf50\",\"settings\":{},\"_hash\":0.7227918773301678,\"funcBody\":\"if (prevValue === 0) {\\n prevValue = Math.random() * 360;\\n}\\nvar value = prevValue + Math.random() * 20 - 10;\\nif (value < 0) {\\n\\tvalue = 0;\\n} else if (value > 360) {\\n\\tvalue = 360;\\n}\\nreturn value;\",\"aggregationType\":null,\"units\":null,\"decimals\":null,\"usePostProcessing\":null,\"postFuncBody\":null},{\"name\":\"f(x)\",\"type\":\"function\",\"label\":\"centerValue\",\"color\":\"#2196f3\",\"settings\":{},\"_hash\":0.2392660816082064,\"funcBody\":\"var value = prevValue + Math.random() * 16 - 8;\\nif (value < 0) {\\n\\tvalue = 0;\\n} else if (value > 26) {\\n\\tvalue = 26;\\n}\\nreturn value;\",\"aggregationType\":null,\"units\":\"m/s\",\"decimals\":1,\"usePostProcessing\":null,\"postFuncBody\":null}],\"alarmFilterConfig\":{\"statusList\":[\"ACTIVE\"]}}],\"timewindow\":{\"realtime\":{\"timewindowMs\":60000}},\"showTitle\":true,\"backgroundColor\":\"rgba(0, 0, 0, 0)\",\"color\":\"rgba(0, 0, 0, 0.87)\",\"padding\":\"0px\",\"settings\":{\"layout\":\"default\",\"centerValueFont\":{\"family\":\"Roboto\",\"size\":24,\"sizeUnit\":\"px\",\"style\":\"normal\",\"weight\":\"500\",\"lineHeight\":\"32px\"},\"centerValueColor\":{\"type\":\"range\",\"color\":\"rgba(0, 0, 0, 0.87)\",\"rangeList\":[{\"from\":0,\"to\":0.2,\"color\":\"#6083EC\"},{\"from\":0.2,\"to\":3.4,\"color\":\"#5579E5\"},{\"from\":3.4,\"to\":8,\"color\":\"#4369DD\"},{\"from\":8,\"to\":10.8,\"color\":\"#2B54CE\"},{\"from\":10.8,\"to\":17.2,\"color\":\"#224AC2\"},{\"from\":17.2,\"to\":24.5,\"color\":\"#F04022\"},{\"from\":24.5,\"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';\"},\"ticksColor\":\"rgba(0, 0, 0, 0.12)\",\"directionalNamesElseDegrees\":true,\"majorTicksFont\":{\"family\":\"Roboto\",\"size\":14,\"sizeUnit\":\"px\",\"style\":\"normal\",\"weight\":\"500\",\"lineHeight\":\"20px\"},\"majorTicksColor\":\"rgba(158, 158, 158, 1)\",\"minorTicksFont\":{\"family\":\"Roboto\",\"size\":14,\"sizeUnit\":\"px\",\"style\":\"normal\",\"weight\":\"500\",\"lineHeight\":\"20px\"},\"minorTicksColor\":\"rgba(0, 0, 0, 0.12)\",\"arrowColor\":\"rgba(0, 0, 0, 0.87)\",\"background\":{\"type\":\"image\",\"imageBase64\":\"data:image/png;base64,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\",\"imageUrl\":null,\"color\":\"#fff\",\"overlay\":{\"enabled\":true,\"color\":\"rgba(255,255,255,0.72)\",\"blur\":3}}},\"title\":\"Wind Speed\",\"dropShadow\":true,\"enableFullscreen\":false,\"titleStyle\":{\"fontSize\":\"16px\",\"fontWeight\":400},\"units\":\"\",\"decimals\":0,\"useDashboardTimewindow\":true,\"showLegend\":false,\"widgetStyle\":{},\"actions\":{\"headerButton\":[]},\"configMode\":\"basic\",\"displayTimewindow\":true,\"margin\":\"0px\",\"borderRadius\":\"0px\",\"widgetCss\":\"\",\"pageSize\":1024,\"noDataDisplayMessage\":\"\",\"showTitleIcon\":true,\"titleTooltip\":\"\",\"titleFont\":{\"size\":16,\"sizeUnit\":\"px\",\"family\":\"Roboto\",\"weight\":\"500\",\"style\":\"normal\",\"lineHeight\":\"24px\"},\"titleIcon\":\"mdi:windsock\",\"iconColor\":\"rgba(0, 0, 0, 0.87)\",\"iconSize\":\"24px\",\"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},\"titleColor\":\"rgba(0, 0, 0, 0.87)\"}" + "defaultConfig": "{\"datasources\":[{\"type\":\"function\",\"name\":\"function\",\"dataKeys\":[{\"name\":\"f(x)\",\"type\":\"function\",\"label\":\"Wind Direction\",\"color\":\"#4caf50\",\"settings\":{},\"_hash\":0.7227918773301678,\"funcBody\":\"if (prevValue === 0) {\\n prevValue = Math.random() * 360;\\n}\\nvar value = prevValue + Math.random() * 20 - 10;\\nif (value < 0) {\\n\\tvalue = 0;\\n} else if (value > 360) {\\n\\tvalue = 360;\\n}\\nreturn value;\",\"aggregationType\":null,\"units\":null,\"decimals\":null,\"usePostProcessing\":null,\"postFuncBody\":null},{\"name\":\"f(x)\",\"type\":\"function\",\"label\":\"Wind Speed\",\"color\":\"#2196f3\",\"settings\":{},\"_hash\":0.2392660816082064,\"funcBody\":\"var value = prevValue + Math.random() * 16 - 8;\\nif (value < 0) {\\n\\tvalue = 0;\\n} else if (value > 26) {\\n\\tvalue = 26;\\n}\\nreturn value;\",\"aggregationType\":null,\"units\":\"m/s\",\"decimals\":1,\"usePostProcessing\":null,\"postFuncBody\":null}],\"alarmFilterConfig\":{\"statusList\":[\"ACTIVE\"]}}],\"timewindow\":{\"realtime\":{\"timewindowMs\":60000}},\"showTitle\":true,\"backgroundColor\":\"rgba(0, 0, 0, 0)\",\"color\":\"rgba(0, 0, 0, 0.87)\",\"padding\":\"0px\",\"settings\":{\"layout\":\"default\",\"centerValueFont\":{\"family\":\"Roboto\",\"size\":24,\"sizeUnit\":\"px\",\"style\":\"normal\",\"weight\":\"500\",\"lineHeight\":\"32px\"},\"centerValueColor\":{\"type\":\"range\",\"color\":\"rgba(0, 0, 0, 0.87)\",\"rangeList\":[{\"from\":0,\"to\":0.2,\"color\":\"#6083EC\"},{\"from\":0.2,\"to\":3.4,\"color\":\"#5579E5\"},{\"from\":3.4,\"to\":8,\"color\":\"#4369DD\"},{\"from\":8,\"to\":10.8,\"color\":\"#2B54CE\"},{\"from\":10.8,\"to\":17.2,\"color\":\"#224AC2\"},{\"from\":17.2,\"to\":24.5,\"color\":\"#F04022\"},{\"from\":24.5,\"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';\"},\"ticksColor\":\"rgba(0, 0, 0, 0.12)\",\"directionalNamesElseDegrees\":true,\"majorTicksFont\":{\"family\":\"Roboto\",\"size\":14,\"sizeUnit\":\"px\",\"style\":\"normal\",\"weight\":\"500\",\"lineHeight\":\"20px\"},\"majorTicksColor\":\"rgba(158, 158, 158, 1)\",\"minorTicksFont\":{\"family\":\"Roboto\",\"size\":14,\"sizeUnit\":\"px\",\"style\":\"normal\",\"weight\":\"500\",\"lineHeight\":\"20px\"},\"minorTicksColor\":\"rgba(0, 0, 0, 0.12)\",\"arrowColor\":\"rgba(0, 0, 0, 0.87)\",\"background\":{\"type\":\"image\",\"imageBase64\":\"data:image/png;base64,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\",\"imageUrl\":null,\"color\":\"#fff\",\"overlay\":{\"enabled\":true,\"color\":\"rgba(255,255,255,0.72)\",\"blur\":3}}},\"title\":\"Wind Speed\",\"dropShadow\":true,\"enableFullscreen\":false,\"titleStyle\":{\"fontSize\":\"16px\",\"fontWeight\":400},\"units\":\"\",\"decimals\":0,\"useDashboardTimewindow\":true,\"showLegend\":false,\"widgetStyle\":{},\"actions\":{\"headerButton\":[]},\"configMode\":\"basic\",\"displayTimewindow\":true,\"margin\":\"0px\",\"borderRadius\":\"0px\",\"widgetCss\":\"\",\"pageSize\":1024,\"noDataDisplayMessage\":\"\",\"showTitleIcon\":true,\"titleTooltip\":\"\",\"titleFont\":{\"size\":16,\"sizeUnit\":\"px\",\"family\":\"Roboto\",\"weight\":\"500\",\"style\":\"normal\",\"lineHeight\":\"24px\"},\"titleIcon\":\"mdi:windsock\",\"iconColor\":\"rgba(0, 0, 0, 0.87)\",\"iconSize\":\"24px\",\"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},\"titleColor\":\"rgba(0, 0, 0, 0.87)\"}" }, "externalId": null, "tags": [ diff --git a/ui-ngx/src/app/modules/home/components/widget/config/basic/weather/wind-speed-direction-basic-config.component.ts b/ui-ngx/src/app/modules/home/components/widget/config/basic/weather/wind-speed-direction-basic-config.component.ts index 45344aba84..6bf8c38e59 100644 --- a/ui-ngx/src/app/modules/home/components/widget/config/basic/weather/wind-speed-direction-basic-config.component.ts +++ b/ui-ngx/src/app/modules/home/components/widget/config/basic/weather/wind-speed-direction-basic-config.component.ts @@ -34,15 +34,8 @@ import { setTimewindowConfig } from '@home/components/widget/config/timewindow-config-panel.component'; import { formatValue, isDefinedAndNotNull, isUndefined } from '@core/utils'; +import { cssSizeToStrSize, getDataKey, resolveCssSize, updateDataKeys } from '@shared/models/widget-settings.models'; import { - cssSizeToStrSize, getDataKey, - getDataKeyByLabel, - resolveCssSize, - updateDataKeyByLabel -} from '@shared/models/widget-settings.models'; -import { - centerValueLabel, - windDirectionLabel, windSpeedDirectionDefaultSettings, WindSpeedDirectionLayout, windSpeedDirectionLayoutImages, @@ -108,25 +101,21 @@ export class WindSpeedDirectionBasicConfigComponent extends BasicWidgetConfigCom } protected defaultDataKeys(configData: WidgetConfigComponentData): DataKey[] { - return [{ name: 'winddirection', label: windDirectionLabel, type: DataKeyType.timeseries }, - { name: 'windspeed', label: centerValueLabel, type: DataKeyType.timeseries, + return [{ name: 'direction', label: 'Wind Direction', type: DataKeyType.timeseries }, + { name: 'speed', label: 'Wind Speed', type: DataKeyType.timeseries, units: 'm/s', decimals: 1 }]; } protected onConfigSet(configData: WidgetConfigComponentData) { const settings: WindSpeedDirectionWidgetSettings = {...windSpeedDirectionDefaultSettings, ...(configData.config.settings || {})}; const iconSize = resolveCssSize(configData.config.iconSize); - let windDirectionDataKey = getDataKeyByLabel(configData.config.datasources, windDirectionLabel); - if (!windDirectionDataKey) { - windDirectionDataKey = getDataKey(configData.config.datasources); - } this.windSpeedDirectionWidgetConfigForm = this.fb.group({ timewindowConfig: [getTimewindowConfig(configData.config), []], datasources: [configData.config.datasources, []], - windDirectionKey: [windDirectionDataKey, [Validators.required]], + windDirectionKey: [getDataKey(configData.config.datasources, 0), [Validators.required]], - centerValueKey: [getDataKeyByLabel(configData.config.datasources, centerValueLabel), []], + centerValueKey: [getDataKey(configData.config.datasources, 1), []], centerValueFont: [settings.centerValueFont, []], centerValueColor: [settings.centerValueColor, []], @@ -167,8 +156,15 @@ export class WindSpeedDirectionBasicConfigComponent extends BasicWidgetConfigCom setTimewindowConfig(this.widgetConfig.config, config.timewindowConfig); this.widgetConfig.config.datasources = config.datasources; - updateDataKeyByLabel(this.widgetConfig.config.datasources, config.windDirectionKey, windDirectionLabel); - updateDataKeyByLabel(this.widgetConfig.config.datasources, config.centerValueKey, centerValueLabel); + const dataKeys: DataKey[] = []; + if (config.windDirectionKey) { + dataKeys.push(config.windDirectionKey); + if (config.centerValueKey) { + dataKeys.push(config.centerValueKey); + } + } + + updateDataKeys(this.widgetConfig.config.datasources, dataKeys); this.widgetConfig.config.showTitle = config.showTitle; this.widgetConfig.config.title = config.title; diff --git a/ui-ngx/src/app/modules/home/components/widget/lib/settings/weather/wind-speed-direction-widget-settings.component.ts b/ui-ngx/src/app/modules/home/components/widget/lib/settings/weather/wind-speed-direction-widget-settings.component.ts index a9ae8b978a..aa33842cb9 100644 --- a/ui-ngx/src/app/modules/home/components/widget/lib/settings/weather/wind-speed-direction-widget-settings.component.ts +++ b/ui-ngx/src/app/modules/home/components/widget/lib/settings/weather/wind-speed-direction-widget-settings.component.ts @@ -21,14 +21,13 @@ import { Store } from '@ngrx/store'; import { AppState } from '@core/core.state'; import { formatValue, isDefinedAndNotNull } from '@core/utils'; import { - centerValueLabel, windSpeedDirectionDefaultSettings, WindSpeedDirectionLayout, windSpeedDirectionLayoutImages, windSpeedDirectionLayouts, windSpeedDirectionLayoutTranslations } from '@home/components/widget/lib/weather/wind-speed-direction-widget.models'; -import { getDataKeyByLabel } from '@shared/models/widget-settings.models'; +import { getDataKey } from '@shared/models/widget-settings.models'; @Component({ selector: 'tb-wind-speed-direction-widget-settings', @@ -38,7 +37,7 @@ import { getDataKeyByLabel } from '@shared/models/widget-settings.models'; export class WindSpeedDirectionWidgetSettingsComponent extends WidgetSettingsComponent { get hasCenterValue(): boolean { - return !!getDataKeyByLabel(this.widgetConfig.config.datasources, centerValueLabel); + return !!getDataKey(this.widgetConfig.config.datasources, 1); } get majorTicksFontEnabled(): boolean { @@ -120,7 +119,7 @@ export class WindSpeedDirectionWidgetSettingsComponent extends WidgetSettingsCom } private _centerValuePreviewFn(): string { - const centerValueDataKey = getDataKeyByLabel(this.widgetConfig.config.datasources, centerValueLabel); + const centerValueDataKey = getDataKey(this.widgetConfig.config.datasources, 1); if (centerValueDataKey) { let units: string = this.widgetConfig.config.units; let decimals: number = this.widgetConfig.config.decimals; diff --git a/ui-ngx/src/app/modules/home/components/widget/lib/weather/wind-speed-direction-widget.component.ts b/ui-ngx/src/app/modules/home/components/widget/lib/weather/wind-speed-direction-widget.component.ts index d328e59ace..3e341d11f5 100644 --- a/ui-ngx/src/app/modules/home/components/widget/lib/weather/wind-speed-direction-widget.component.ts +++ b/ui-ngx/src/app/modules/home/components/widget/lib/weather/wind-speed-direction-widget.component.ts @@ -24,12 +24,11 @@ import { OnInit, Renderer2, TemplateRef, - ViewChild, ViewEncapsulation + ViewChild, + ViewEncapsulation } from '@angular/core'; import { WidgetContext } from '@home/models/widget-component.models'; import { - centerValueLabel, - windDirectionLabel, windSpeedDirectionDefaultSettings, WindSpeedDirectionLayout, WindSpeedDirectionWidgetSettings @@ -38,8 +37,8 @@ import { backgroundStyle, ColorProcessor, ComponentStyle, - Font, getDataKey, - getDataKeyByLabel, + Font, + getDataKey, getSingleTsValueByDataKey, overlayStyle } from '@shared/models/widget-settings.models'; @@ -118,11 +117,8 @@ export class WindSpeedDirectionWidgetComponent implements OnInit, OnDestroy, Aft this.ctx.$scope.windSpeedDirectionWidget = this; this.settings = {...windSpeedDirectionDefaultSettings, ...this.ctx.settings}; - this.windDirectionDataKey = getDataKeyByLabel(this.ctx.datasources, windDirectionLabel); - if (!this.windDirectionDataKey) { - this.windDirectionDataKey = getDataKey(this.ctx.datasources); - } - this.centerValueDataKey = getDataKeyByLabel(this.ctx.datasources, centerValueLabel); + this.windDirectionDataKey = getDataKey(this.ctx.datasources, 0); + this.centerValueDataKey = getDataKey(this.ctx.datasources, 1); if (this.centerValueDataKey) { this.decimals = this.ctx.decimals; @@ -169,21 +165,27 @@ export class WindSpeedDirectionWidgetComponent implements OnInit, OnDestroy, Aft } public onDataUpdated() { - let centerValue = 0; + let value = 0; this.windDirection = 0; this.centerValueText = 'N/A'; - const windDirectionTsValue = getSingleTsValueByDataKey(this.ctx.data, this.windDirectionDataKey); - if (windDirectionTsValue && isDefinedAndNotNull(windDirectionTsValue[1]) && isNumeric(windDirectionTsValue[1])) { - this.windDirection = windDirectionTsValue[1]; + if (this.windDirectionDataKey) { + const windDirectionTsValue = getSingleTsValueByDataKey(this.ctx.data, this.windDirectionDataKey); + if (windDirectionTsValue && isDefinedAndNotNull(windDirectionTsValue[1]) && isNumeric(windDirectionTsValue[1])) { + this.windDirection = windDirectionTsValue[1]; + if (!this.centerValueDataKey) { + value = this.windDirection; + this.centerValueText = formatValue(value, 0, '') + '°'; + } + } } if (this.centerValueDataKey) { const centerValueTsValue = getSingleTsValueByDataKey(this.ctx.data, this.centerValueDataKey); if (centerValueTsValue && isDefinedAndNotNull(centerValueTsValue[1]) && isNumeric(centerValueTsValue[1])) { - centerValue = centerValueTsValue[1]; - this.centerValueText = formatValue(centerValue, this.decimals, '', true); + value = centerValueTsValue[1]; + this.centerValueText = formatValue(value, this.decimals, '', true); } } - this.centerValueColor.update(centerValue); + this.centerValueColor.update(value); this.renderValues(); } @@ -313,9 +315,8 @@ export class WindSpeedDirectionWidgetComponent implements OnInit, OnDestroy, Aft } private renderCenterValueText() { - const text = this.centerValueDataKey ? this.centerValueText : formatValue(this.windDirection, 0, '') + '°'; this.centerValueTextNode.text(add => { - add.tspan(text).font({size: '24px'}); + add.tspan(this.centerValueText).font({size: '24px'}); if (this.units) { add.tspan(this.units).newLine().font({size: '14px'}); } diff --git a/ui-ngx/src/app/modules/home/components/widget/lib/weather/wind-speed-direction-widget.models.ts b/ui-ngx/src/app/modules/home/components/widget/lib/weather/wind-speed-direction-widget.models.ts index c9fe2a84df..6359696f25 100644 --- a/ui-ngx/src/app/modules/home/components/widget/lib/weather/wind-speed-direction-widget.models.ts +++ b/ui-ngx/src/app/modules/home/components/widget/lib/weather/wind-speed-direction-widget.models.ts @@ -103,6 +103,3 @@ export const windSpeedDirectionDefaultSettings: WindSpeedDirectionWidgetSettings } } }; - -export const windDirectionLabel = 'windDirection'; -export const centerValueLabel = 'centerValue'; diff --git a/ui-ngx/src/app/shared/models/widget-settings.models.ts b/ui-ngx/src/app/shared/models/widget-settings.models.ts index 056738f396..5055893b6f 100644 --- a/ui-ngx/src/app/shared/models/widget-settings.models.ts +++ b/ui-ngx/src/app/shared/models/widget-settings.models.ts @@ -422,16 +422,23 @@ export const overlayStyle = (overlay: OverlaySettings): ComponentStyle => ( } ); -export const getDataKey = (datasources?: Datasource[]): DataKey => { +export const getDataKey = (datasources?: Datasource[], index = 0): DataKey => { if (datasources && datasources.length) { const dataKeys = datasources[0].dataKeys; - if (dataKeys && dataKeys.length) { - return dataKeys[0]; + if (dataKeys && dataKeys.length > index) { + return dataKeys[index]; } } return null; }; +export const updateDataKeys = (datasources: Datasource[], dataKeys: DataKey[]): void => { + if (datasources && datasources.length) { + datasources[0].dataKeys = dataKeys; + } +}; + + export const getDataKeyByLabel = (datasources: Datasource[], label: string): DataKey => { if (datasources && datasources.length) { const dataKeys = datasources[0].dataKeys; From a47ceaafedfe34be9e50fdb63e8f854536d97f6a Mon Sep 17 00:00:00 2001 From: Igor Kulikov Date: Fri, 20 Oct 2023 13:06:02 +0300 Subject: [PATCH 21/29] UI: Improve widgets value formatting. --- .../widget/lib/cards/progress-bar-widget.component.ts | 2 +- .../widget/lib/cards/value-card-widget.component.ts | 2 +- .../widget/lib/cards/value-chart-card-widget.component.ts | 2 +- .../widget/lib/indicator/battery-level-widget.component.ts | 2 +- .../widget/lib/indicator/signal-strength-widget.component.ts | 2 +- .../lib/weather/wind-speed-direction-widget.component.ts | 4 ++-- 6 files changed, 7 insertions(+), 7 deletions(-) diff --git a/ui-ngx/src/app/modules/home/components/widget/lib/cards/progress-bar-widget.component.ts b/ui-ngx/src/app/modules/home/components/widget/lib/cards/progress-bar-widget.component.ts index 22d3cb6f4d..2b9d4328d5 100644 --- a/ui-ngx/src/app/modules/home/components/widget/lib/cards/progress-bar-widget.component.ts +++ b/ui-ngx/src/app/modules/home/components/widget/lib/cards/progress-bar-widget.component.ts @@ -174,7 +174,7 @@ export class ProgressBarWidgetComponent implements OnInit, OnDestroy, AfterViewI this.value = 0; if (tsValue && isDefinedAndNotNull(tsValue[1]) && isNumeric(tsValue[1])) { this.value = tsValue[1]; - this.valueText = formatValue(this.value, this.decimals, this.units, true); + this.valueText = formatValue(this.value, this.decimals, this.units, false); } else { this.valueText = 'N/A'; } diff --git a/ui-ngx/src/app/modules/home/components/widget/lib/cards/value-card-widget.component.ts b/ui-ngx/src/app/modules/home/components/widget/lib/cards/value-card-widget.component.ts index d723b9b472..75a922daff 100644 --- a/ui-ngx/src/app/modules/home/components/widget/lib/cards/value-card-widget.component.ts +++ b/ui-ngx/src/app/modules/home/components/widget/lib/cards/value-card-widget.component.ts @@ -182,7 +182,7 @@ export class ValueCardWidgetComponent implements OnInit, AfterViewInit, OnDestro if (tsValue) { ts = tsValue[0]; value = tsValue[1]; - this.valueText = formatValue(value, this.decimals, this.units, true); + this.valueText = formatValue(value, this.decimals, this.units, false); } else { this.valueText = 'N/A'; } diff --git a/ui-ngx/src/app/modules/home/components/widget/lib/cards/value-chart-card-widget.component.ts b/ui-ngx/src/app/modules/home/components/widget/lib/cards/value-chart-card-widget.component.ts index 7cd58e3c13..ce5b61943c 100644 --- a/ui-ngx/src/app/modules/home/components/widget/lib/cards/value-chart-card-widget.component.ts +++ b/ui-ngx/src/app/modules/home/components/widget/lib/cards/value-chart-card-widget.component.ts @@ -194,7 +194,7 @@ export class ValueChartCardWidgetComponent implements OnInit, AfterViewInit, OnD let value; if (tsValue) { value = tsValue[1]; - this.valueText = formatValue(value, this.decimals, this.units, true); + this.valueText = formatValue(value, this.decimals, this.units, false); } else { this.valueText = 'N/A'; } diff --git a/ui-ngx/src/app/modules/home/components/widget/lib/indicator/battery-level-widget.component.ts b/ui-ngx/src/app/modules/home/components/widget/lib/indicator/battery-level-widget.component.ts index a2793234f4..a983dc81a9 100644 --- a/ui-ngx/src/app/modules/home/components/widget/lib/indicator/battery-level-widget.component.ts +++ b/ui-ngx/src/app/modules/home/components/widget/lib/indicator/battery-level-widget.component.ts @@ -224,7 +224,7 @@ export class BatteryLevelWidgetComponent implements OnInit, OnDestroy, AfterView this.value = 0; if (tsValue && isDefinedAndNotNull(tsValue[1]) && isNumeric(tsValue[1])) { this.value = tsValue[1]; - this.valueText = formatValue(this.value, this.decimals, this.units, true); + this.valueText = formatValue(this.value, this.decimals, this.units, false); } else { this.valueText = 'N/A'; } diff --git a/ui-ngx/src/app/modules/home/components/widget/lib/indicator/signal-strength-widget.component.ts b/ui-ngx/src/app/modules/home/components/widget/lib/indicator/signal-strength-widget.component.ts index 5891f2b297..10ba3b3b1b 100644 --- a/ui-ngx/src/app/modules/home/components/widget/lib/indicator/signal-strength-widget.component.ts +++ b/ui-ngx/src/app/modules/home/components/widget/lib/indicator/signal-strength-widget.component.ts @@ -232,7 +232,7 @@ export class SignalStrengthWidgetComponent implements OnInit, OnDestroy, AfterVi if (!this.noData) { this.rssi = Number(value); if (this.showTooltipValue) { - this.tooltipValueText = formatValue(value, this.decimals, this.units, true); + this.tooltipValueText = formatValue(value, this.decimals, this.units, false); } } else { this.rssi = -100; diff --git a/ui-ngx/src/app/modules/home/components/widget/lib/weather/wind-speed-direction-widget.component.ts b/ui-ngx/src/app/modules/home/components/widget/lib/weather/wind-speed-direction-widget.component.ts index 3e341d11f5..bf43218f82 100644 --- a/ui-ngx/src/app/modules/home/components/widget/lib/weather/wind-speed-direction-widget.component.ts +++ b/ui-ngx/src/app/modules/home/components/widget/lib/weather/wind-speed-direction-widget.component.ts @@ -174,7 +174,7 @@ export class WindSpeedDirectionWidgetComponent implements OnInit, OnDestroy, Aft this.windDirection = windDirectionTsValue[1]; if (!this.centerValueDataKey) { value = this.windDirection; - this.centerValueText = formatValue(value, 0, '') + '°'; + this.centerValueText = formatValue(value, 0, '', false) + '°'; } } } @@ -182,7 +182,7 @@ export class WindSpeedDirectionWidgetComponent implements OnInit, OnDestroy, Aft const centerValueTsValue = getSingleTsValueByDataKey(this.ctx.data, this.centerValueDataKey); if (centerValueTsValue && isDefinedAndNotNull(centerValueTsValue[1]) && isNumeric(centerValueTsValue[1])) { value = centerValueTsValue[1]; - this.centerValueText = formatValue(value, this.decimals, '', true); + this.centerValueText = formatValue(value, this.decimals, '', false); } } this.centerValueColor.update(value); From 857256a9fe6b96c3275589494c5d2a440e2c1abb Mon Sep 17 00:00:00 2001 From: Igor Kulikov Date: Fri, 20 Oct 2023 15:26:50 +0300 Subject: [PATCH 22/29] UI: Outdoor Environment: Rainfall widgets. --- .../widget_bundles/outdoor_environment.json | 10 +++++- .../horizontal_rainfall_card.json | 29 +++++++++++++++++ ...izontal_rainfall_card_with_background.json | 29 +++++++++++++++++ .../system/widget_types/rainfall_card.json | 29 +++++++++++++++++ .../rainfall_card_with_background.json | 29 +++++++++++++++++ .../widget_types/rainfall_chart_card.json | 32 +++++++++++++++++++ .../rainfall_chart_card_with_background.json | 32 +++++++++++++++++++ .../simple_rainfall_chart_card.json | 32 +++++++++++++++++++ ...e_rainfall_chart_card_with_background.json | 32 +++++++++++++++++++ 9 files changed, 253 insertions(+), 1 deletion(-) create mode 100644 application/src/main/data/json/system/widget_types/horizontal_rainfall_card.json create mode 100644 application/src/main/data/json/system/widget_types/horizontal_rainfall_card_with_background.json create mode 100644 application/src/main/data/json/system/widget_types/rainfall_card.json create mode 100644 application/src/main/data/json/system/widget_types/rainfall_card_with_background.json create mode 100644 application/src/main/data/json/system/widget_types/rainfall_chart_card.json create mode 100644 application/src/main/data/json/system/widget_types/rainfall_chart_card_with_background.json create mode 100644 application/src/main/data/json/system/widget_types/simple_rainfall_chart_card.json create mode 100644 application/src/main/data/json/system/widget_types/simple_rainfall_chart_card_with_background.json diff --git a/application/src/main/data/json/system/widget_bundles/outdoor_environment.json b/application/src/main/data/json/system/widget_bundles/outdoor_environment.json index f2db1c22a3..bf60c159af 100644 --- a/application/src/main/data/json/system/widget_bundles/outdoor_environment.json +++ b/application/src/main/data/json/system/widget_bundles/outdoor_environment.json @@ -45,6 +45,14 @@ "simple_wind_speed_chart_card", "simple_wind_speed_chart_card_with_background", "wind_speed_and_direction", - "wind_speed_and_direction_with_background" + "wind_speed_and_direction_with_background", + "rainfall_card", + "rainfall_card_with_background", + "horizontal_rainfall_card", + "horizontal_rainfall_card_with_background", + "rainfall_chart_card", + "rainfall_chart_card_with_background", + "simple_rainfall_chart_card", + "simple_rainfall_chart_card_with_background" ] } \ No newline at end of file diff --git a/application/src/main/data/json/system/widget_types/horizontal_rainfall_card.json b/application/src/main/data/json/system/widget_types/horizontal_rainfall_card.json new file mode 100644 index 0000000000..2e619546cb --- /dev/null +++ b/application/src/main/data/json/system/widget_types/horizontal_rainfall_card.json @@ -0,0 +1,29 @@ +{ + "fqn": "horizontal_rainfall_card", + "name": "Horizontal rainfall card", + "deprecated": false, + "image": "data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAAMgAAACgCAMAAAB+IdObAAAAqFBMVEUAAADf39/f39/g4ODg4ODf39/////k5OQjTMfg4OB1j9yRpePk6fjOzs7I0vGtvOry9Pvk6Pj09PT5+flYWFjIyMg+Ys7b29vV1dUwV8vCwsK2trbw8PC6x+6fseetra3n5+eDmuBohNi8vLyQkJCsvOo9PT1aeNVMbtE/Ys7W3fXW3vRohNkxV8q6urp0dHRmZmaenp6CgoJKSkovLy+su+pLS0shISHWoRcHAAAABnRSTlMAIEDfv1C6kOEmAAADUUlEQVR42u3aDW+aQBzHcWe7P3/BA+QZBETQ4aytfdr2/t/ZDgStjS7baBtqfp+m5Q5Mel8P0xg7AAAAAAAAAAAAAAAAAAAAAAAAAAAAAPhIXz69OmN4pXx2o6uvskOx6dOzlOHg2qILYF8PRnQRRgjpGYT0DUL6BiF9g5C+ORWilyF7Gh3MFguFKnfB7vBUT7f0qFBfnAjROFTVkj2TWs6D+y0mJaYgiGOFYueO5IG+kdMxRJffptFY789qWvIGITrPq4RlWB5CXPoWP26fgsVs4dw77vO94mydriH6PGR5GHNDo9p4xZJndgxZ5uGKailP9iFPzwtyH5zZQn7t1n+3+NUtxKzXWw30Wtj+ug2rk/WK591CNA7LdltDbbLfkYct/QweDyF3W6VjyPi7ZsiQls55E8i3RJSw10wnppkkciE3yU0z1eupof8pROeNSa0Vc27uby3Fuf95CAmc++e4U4g0fhGSs96s3EjqhZRUU1negHyrl8zVJhm88eQoVeWPlXk+ZM6TF1WGyjkdxESnZ91D5NCjl1RetoNQMzZy1UYayla5iVoiKzxj6XF6PkRlOpLf0juSIUcLP0j3XSpr9QMn1fAHGfVTy3xTPenz8yFpVTkOE/JS2uQy5CjsHUJOb8g6DCevQpqhwaocfa+6NFbPh5hyv2SNrssD568f+34h6tGzOw55Td1CaJwn1f2k8Y0uN1srTXo/h5Cx17w229mSuoS0wpxK7+h1b9EJVvz6hPW/Ict2TZNdh0ZvESK3wpSPKVe0N93FWBT7VLNtskeiOjEiW86zWUa27+8uyBPWv4W0G5KyWk1u1YreeUcSM5F7m6yPQoJA+K4r5CiiyI8KexqJIHBFEYvCJhKZVRQ+WaK+INziX0KWXFITMifixo+OIYc/J8chYmq5IhO7kCzw5Viey3wRuXXIyPdliDvNXEvmRhb9D/ON34+kczoyE34kpoEbWdWOiMKPptbUFfJcXGSuoCrErnYkK2bVhSCKqIOPe2PlZ3Re4Pr0N/oQYtt/umjR3+hFSB8hpG8Q0jcI6RuE9M1ocH0BH7MTWdeDoXIBH7TbynAw+Ho1Uj67q+El/VMNAAAAAAAAAAAAAAAAAAAAAAAAAAAAwAf5Damp/4Ir985nAAAAAElFTkSuQmCC", + "description": "Displays a latest rainfall telemetry data in a horizontal layout.", + "descriptor": { + "type": "latest", + "sizeX": 5, + "sizeY": 1.5, + "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: '130px',\n embedTitlePanel: true,\n defaultDataKeysFunction: function() {\n return [{ name: 'rainfall', label: 'Rainfall', 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\":\"Rainfall\",\"color\":\"#2196f3\",\"settings\":{},\"_hash\":0.2392660816082064,\"funcBody\":\"var value = prevValue + Math.random() * 4 - 2;\\nif (value < 0) {\\n\\tvalue = 0;\\n} else if (value > 8) {\\n\\tvalue = 8;\\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:weather-pouring\",\"iconColor\":{\"type\":\"range\",\"color\":\"rgba(0, 0, 0, 0.87)\",\"rangeList\":[{\"from\":0,\"to\":0,\"color\":\"#7191EF\"},{\"from\":0,\"to\":2.5,\"color\":\"#4B70DD\"},{\"from\":2.5,\"to\":7.6,\"color\":\"#305AD7\"},{\"from\":7.6,\"to\":null,\"color\":\"#234CC7\"}],\"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)\",\"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';\",\"rangeList\":[{\"from\":0,\"to\":0,\"color\":\"#7191EF\"},{\"from\":0,\"to\":2.5,\"color\":\"#4B70DD\"},{\"from\":2.5,\"to\":7.6,\"color\":\"#305AD7\"},{\"from\":7.6,\"to\":null,\"color\":\"#234CC7\"}]},\"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\":\"Horizontal rainfall card\",\"dropShadow\":true,\"enableFullscreen\":false,\"titleStyle\":{\"fontSize\":\"16px\",\"fontWeight\":400},\"units\":\"mm\",\"decimals\":1,\"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": [ + "weather", + "environment", + "rain", + "rainfall" + ] +} \ No newline at end of file diff --git a/application/src/main/data/json/system/widget_types/horizontal_rainfall_card_with_background.json b/application/src/main/data/json/system/widget_types/horizontal_rainfall_card_with_background.json new file mode 100644 index 0000000000..c8aa515031 --- /dev/null +++ b/application/src/main/data/json/system/widget_types/horizontal_rainfall_card_with_background.json @@ -0,0 +1,29 @@ +{ + "fqn": "horizontal_rainfall_card_with_background", + "name": "Horizontal rainfall card with background", + "deprecated": false, + "image": "data:image/png;base64,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", + "description": "Displays a latest rainfall telemetry data in a horizontal layout with background.", + "descriptor": { + "type": "latest", + "sizeX": 5, + "sizeY": 1.5, + "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: '130px',\n embedTitlePanel: true,\n defaultDataKeysFunction: function() {\n return [{ name: 'rainfall', label: 'Rainfall', 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\":\"Rainfall\",\"color\":\"#2196f3\",\"settings\":{},\"_hash\":0.2392660816082064,\"funcBody\":\"var value = prevValue + Math.random() * 4 - 2;\\nif (value < 0) {\\n\\tvalue = 0;\\n} else if (value > 8) {\\n\\tvalue = 8;\\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:weather-pouring\",\"iconColor\":{\"type\":\"range\",\"color\":\"rgba(0, 0, 0, 0.87)\",\"rangeList\":[{\"from\":0,\"to\":0,\"color\":\"#6083EC\"},{\"from\":0,\"to\":2.5,\"color\":\"#4369DD\"},{\"from\":2.5,\"to\":7.6,\"color\":\"#2B54CE\"},{\"from\":7.6,\"to\":null,\"color\":\"#224AC2\"}],\"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)\",\"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';\",\"rangeList\":[{\"from\":0,\"to\":0,\"color\":\"#6083EC\"},{\"from\":0,\"to\":2.5,\"color\":\"#4369DD\"},{\"from\":2.5,\"to\":7.6,\"color\":\"#2B54CE\"},{\"from\":7.6,\"to\":null,\"color\":\"#224AC2\"}]},\"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\",\"imageBase64\":\"data:image/png;base64,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\",\"imageUrl\":null,\"color\":\"#fff\",\"overlay\":{\"enabled\":true,\"color\":\"rgba(255,255,255,0.72)\",\"blur\":3}},\"autoScale\":true},\"title\":\"Horizontal rainfall card\",\"dropShadow\":true,\"enableFullscreen\":false,\"titleStyle\":{\"fontSize\":\"16px\",\"fontWeight\":400},\"units\":\"mm\",\"decimals\":1,\"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": [ + "weather", + "environment", + "rain", + "rainfall" + ] +} \ No newline at end of file diff --git a/application/src/main/data/json/system/widget_types/rainfall_card.json b/application/src/main/data/json/system/widget_types/rainfall_card.json new file mode 100644 index 0000000000..a231670288 --- /dev/null +++ b/application/src/main/data/json/system/widget_types/rainfall_card.json @@ -0,0 +1,29 @@ +{ + "fqn": "rainfall_card", + "name": "Rainfall card", + "deprecated": false, + "image": "data:image/png;base64,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", + "description": "Displays a latest rainfall telemetry data in a box layout.", + "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: 'rainfall', label: 'Rainfall', 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\":\"Rainfall \",\"color\":\"#2196f3\",\"settings\":{},\"_hash\":0.2392660816082064,\"funcBody\":\"var value = prevValue + Math.random() * 4 - 2;\\nif (value < 0) {\\n\\tvalue = 0;\\n} else if (value > 8) {\\n\\tvalue = 8;\\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:weather-pouring\",\"iconColor\":{\"type\":\"range\",\"color\":\"rgba(0, 0, 0, 0.87)\",\"rangeList\":[{\"from\":0,\"to\":0,\"color\":\"#7191EF\"},{\"from\":0,\"to\":2.5,\"color\":\"#4B70DD\"},{\"from\":2.5,\"to\":7.6,\"color\":\"#305AD7\"},{\"from\":7.6,\"to\":null,\"color\":\"#234CC7\"}],\"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)\",\"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';\",\"rangeList\":[{\"from\":0,\"to\":0,\"color\":\"#7191EF\"},{\"from\":0,\"to\":2.5,\"color\":\"#4B70DD\"},{\"from\":2.5,\"to\":7.6,\"color\":\"#305AD7\"},{\"from\":7.6,\"to\":null,\"color\":\"#234CC7\"}]},\"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\":\"Rainfall card\",\"dropShadow\":true,\"enableFullscreen\":false,\"titleStyle\":{\"fontSize\":\"16px\",\"fontWeight\":400},\"units\":\"mm\",\"decimals\":1,\"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": [ + "weather", + "environment", + "rain", + "rainfall" + ] +} \ No newline at end of file diff --git a/application/src/main/data/json/system/widget_types/rainfall_card_with_background.json b/application/src/main/data/json/system/widget_types/rainfall_card_with_background.json new file mode 100644 index 0000000000..1fe9cdb53e --- /dev/null +++ b/application/src/main/data/json/system/widget_types/rainfall_card_with_background.json @@ -0,0 +1,29 @@ +{ + "fqn": "rainfall_card_with_background", + "name": "Rainfall card with background", + "deprecated": false, + "image": "data:image/png;base64,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", + "description": "Displays a latest rainfall telemetry data in a box layout with background.", + "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: 'rainfall', label: 'Rainfall', 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\":\"Rainfall \",\"color\":\"#2196f3\",\"settings\":{},\"_hash\":0.2392660816082064,\"funcBody\":\"var value = prevValue + Math.random() * 4 - 2;\\nif (value < 0) {\\n\\tvalue = 0;\\n} else if (value > 8) {\\n\\tvalue = 8;\\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:weather-pouring\",\"iconColor\":{\"type\":\"range\",\"color\":\"rgba(0, 0, 0, 0.87)\",\"rangeList\":[{\"from\":0,\"to\":0,\"color\":\"#6083EC\"},{\"from\":0,\"to\":2.5,\"color\":\"#4369DD\"},{\"from\":2.5,\"to\":7.6,\"color\":\"#2B54CE\"},{\"from\":7.6,\"to\":null,\"color\":\"#224AC2\"}],\"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)\",\"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';\",\"rangeList\":[{\"from\":0,\"to\":0,\"color\":\"#6083EC\"},{\"from\":0,\"to\":2.5,\"color\":\"#4369DD\"},{\"from\":2.5,\"to\":7.6,\"color\":\"#2B54CE\"},{\"from\":7.6,\"to\":null,\"color\":\"#224AC2\"}]},\"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\",\"imageBase64\":\"data:image/png;base64,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\",\"imageUrl\":null,\"color\":\"#fff\",\"overlay\":{\"enabled\":true,\"color\":\"rgba(255,255,255,0.72)\",\"blur\":3}},\"autoScale\":true},\"title\":\"Rainfall card\",\"dropShadow\":true,\"enableFullscreen\":false,\"titleStyle\":{\"fontSize\":\"16px\",\"fontWeight\":400},\"units\":\"mm\",\"decimals\":1,\"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": [ + "weather", + "environment", + "rain", + "rainfall" + ] +} \ No newline at end of file diff --git a/application/src/main/data/json/system/widget_types/rainfall_chart_card.json b/application/src/main/data/json/system/widget_types/rainfall_chart_card.json new file mode 100644 index 0000000000..3a19b6e833 --- /dev/null +++ b/application/src/main/data/json/system/widget_types/rainfall_chart_card.json @@ -0,0 +1,32 @@ +{ + "fqn": "rainfall_chart_card", + "name": "Rainfall chart card", + "deprecated": false, + "image": "data:image/png;base64,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", + "description": "Displays a rainfall data as a combination of the latest and aggregated values. Optionally may display the corresponding historical values as a 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: 'rainfall', label: 'Rainfall', type: 'timeseries', color: 'rgba(0, 0, 0, 0.87)', units: 'mm', decimals: 1 }\n ];\n },\n defaultLatestDataKeysFunction: function(configComponent, configData) {\n return configComponent.createDefaultAggregatedValueLatestDataKeys(configData, 'rainfall', 'mm', 1);\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\":\"Rainfall\",\"color\":\"rgba(0, 0, 0, 0.87)\",\"settings\":{\"showLines\":true,\"fillLines\":true,\"showPoints\":false},\"_hash\":0.8587686344902596,\"funcBody\":\"var value = prevValue + Math.random() * 4 - 2;\\nif (value < 0) {\\n\\tvalue = 0;\\n} else if (value > 8) {\\n\\tvalue = 8;\\n}\\nreturn value;\",\"aggregationType\":null,\"units\":\"mm\",\"decimals\":1,\"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\":0,\"color\":\"#7191EF\"},{\"from\":0,\"to\":2.5,\"color\":\"#4B70DD\"},{\"from\":2.5,\"to\":7.6,\"color\":\"#305AD7\"},{\"from\":7.6,\"to\":null,\"color\":\"#234CC7\"}],\"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() * 4 - 2;\\nif (value < 0) {\\n\\tvalue = 0;\\n} else if (value > 8) {\\n\\tvalue = 8;\\n}\\nreturn value;\",\"aggregationType\":null,\"units\":\"mm\",\"decimals\":1,\"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() * 2 - 1;\\nif (value < -3) {\\n\\tvalue = -3;\\n} else if (value > 3) {\\n\\tvalue = 3;\\n}\\nreturn value;\",\"aggregationType\":null,\"units\":\"mm\",\"decimals\":1,\"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\":\"Rainfall\",\"dropShadow\":true,\"enableFullscreen\":false,\"titleStyle\":{\"fontSize\":\"16px\",\"fontWeight\":400},\"mobileHeight\":null,\"configMode\":\"basic\",\"actions\":{},\"showTitleIcon\":true,\"titleIcon\":\"mdi:weather-pouring\",\"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": [ + "weather", + "environment", + "rain", + "rainfall" + ] +} \ No newline at end of file diff --git a/application/src/main/data/json/system/widget_types/rainfall_chart_card_with_background.json b/application/src/main/data/json/system/widget_types/rainfall_chart_card_with_background.json new file mode 100644 index 0000000000..75543ca962 --- /dev/null +++ b/application/src/main/data/json/system/widget_types/rainfall_chart_card_with_background.json @@ -0,0 +1,32 @@ +{ + "fqn": "rainfall_chart_card_with_background", + "name": "Rainfall chart card with background", + "deprecated": false, + "image": "data:image/png;base64,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", + "description": "Displays a rainfall data as a combination of the latest and aggregated values with background. Optionally may display the corresponding historical values as a 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: 'rainfall', label: 'Rainfall', type: 'timeseries', color: 'rgba(0, 0, 0, 0.87)', units: 'mm', decimals: 1 }\n ];\n },\n defaultLatestDataKeysFunction: function(configComponent, configData) {\n return configComponent.createDefaultAggregatedValueLatestDataKeys(configData, 'rainfall', 'mm', 1);\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\":\"Rainfall\",\"color\":\"rgba(0, 0, 0, 0.87)\",\"settings\":{\"showLines\":true,\"fillLines\":true,\"showPoints\":false},\"_hash\":0.8587686344902596,\"funcBody\":\"var value = prevValue + Math.random() * 4 - 2;\\nif (value < 0) {\\n\\tvalue = 0;\\n} else if (value > 8) {\\n\\tvalue = 8;\\n}\\nreturn value;\",\"aggregationType\":null,\"units\":\"mm\",\"decimals\":1,\"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\":0,\"color\":\"#6083EC\"},{\"from\":0,\"to\":2.5,\"color\":\"#4369DD\"},{\"from\":2.5,\"to\":7.6,\"color\":\"#2B54CE\"},{\"from\":7.6,\"to\":null,\"color\":\"#224AC2\"}],\"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() * 4 - 2;\\nif (value < 0) {\\n\\tvalue = 0;\\n} else if (value > 8) {\\n\\tvalue = 8;\\n}\\nreturn value;\",\"aggregationType\":null,\"units\":\"mm\",\"decimals\":1,\"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() * 2 - 1;\\nif (value < -3) {\\n\\tvalue = -3;\\n} else if (value > 3) {\\n\\tvalue = 3;\\n}\\nreturn value;\",\"aggregationType\":null,\"units\":\"mm\",\"decimals\":1,\"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\",\"imageBase64\":\"data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAAU8AAAELCAMAAABu2vS6AAADAFBMVEUSFhawurq7xMSzvLzAycmtt7fCy8sSGBgUGhqptLOyu7sQFBUWGxq2v7+4wsKstrYVHBy3wMAXHh6uuLkYHRynsbHBysqzvb6os7K9x8aqtbW5w8MUGBi+x8i/yMfEzMwYICAOEhMQExO9xcW4wcAZHx6kr68NEBHGzs61vr2wubi7xcUbJCS6w8KrtbQaIiKmsK+irayfqqobISCbpqYgKiofKSkdJiamsbEiLCwiLi6dp6ccJSW1vr+jrq4cIiIaIB8kMDAjKioeJCRQY2MsPDsLDg87Tk4dJyigrKwgLCwpNzcgJyeXoqGkra1CUlKVoKAqOTlMXl44SkoYIiJIWloyPz+dqakmLi5NYmE6TEwoNDSapaQlMjIoMjJBVFRkd3ZQX2DH0NBGVlYiKSg0RkZMYGA9S0xTZ2Y9UFCYpKSSnJxMXFw7SEkpMC9DV1c2SEgvPTyQm5tleXlidHRHWFguPz5EVFSUnp6Bk5Nbb29XaGhTYmKPmZlbbW0/Tk4gJiVQZWU+UlNIXV6NmJgmLCyKlJRKXFssNDNUaWkmMTE2RERMWVkvOjpfc3JdcXFcZmd3gYFFWVhTZGVXYmI4RkcqNTV2iYktOTh+kZCDjY1QXF2MlpaIkZKZoqN8j45vg4IyQkEnNjWFj49XZWUyREMtNjZJX2AyOTmhqqp4jIsyPDufqKhYbW9KVFRYbGwvQUCBiot5g4Rpfn1xe3tpe3tXamp8hYZVX182Pz90fn5xhoU0QkIvNzZ/iIltgYBsf36ElpY9RUU1PTxjcHFCS0tASUhaampBVVdeb29eaWpTXF1ncnJJV1dHXFtWa2xCT083QUEqMjJgdnZ7jIxgbG1ueHhMYmVGUlOJmZlIUFA/UFBpdHR1hoaUoqJmb2+Sn59QZmlziIdFTk5jbW0ICws6QkKQnp1zgoJmfHtEWVxNV1eIl5ZsdXZbZGRTZ2g6RESDkJCMnJtRWVmGk5NqeHhhaWp5iolbcnR8iIhue3tTaW1xfn6AjY3L09MEBQZ50hZ4AAEY0klEQVR42jyYP4j8RBTHzcvLgw1klrDs7M6GmSkmHLMbctwdVwjH2lvcstjY2JhGcLG56kSuEysLBSv1rtHm4BpFEER+NhYqtmojaiFooYiohaKH31n/zF6SyWRmNu8z32/y9h4K4TDviZTL7mwgV/XU1xRsqIsn/vr2w3cupqOi7R0KBROoVmVVbMgZa0y2cMbVqrHaiPgurBcn9mZnybnA1hnmoMtes2Xdca2FNeugtRYn2jFrMUpzkQV0ZKXmxbTUjrTmyJk2itnJdr7mD7XI85YdPtYyttkoqzhYaw05rk6qLp8V+rhko6eFqvj8rAmEKyjBsjGXuu3CaSbes3p+fkam7uhklVOzLoiqpqq3k0iqWAVqqA/vLI2mPCPVdGdjVa8rolBRG0IXeoDBFpp+1ben2W1Lm7Va9tW4COO875ervq/DbfFQf/Xzj1PRiHapne+DF8CxMTqivtj+/P33TyuTxWhYDptY4ZoSiXHAJ1L0UbCh6gePSvrTokm8NDoOw/H6ABe7bIi4mg0Doa+XOKCUA0bFpcgwsMVgOS0Ex8HcD7oeCMPaYfvIEKe7e3sVRSR1995HjLMYj1PrB4niR+vlzeHdojFd8aiKp/cad6fTF3nBELtZ4jjeqXQPj2MZIzcyFVmRiBbP3t9mnrVojyL9z8eF0daLx0jxvlRg4Y1xuBxEa5sW1Ti3NG3g3nFg7ntXO02hlx4yunuoXbtH/mCLEa2be+Kjmmv2VnrnhUOeNZgq4xRRk3QV5t6yB9YUnnYxlRSj9DdrH9fCICf66HhAa238ltXgOdG/j/FyiwpK2qedG4qLms3pqV0j2iGg+eqFFzLQZYxuIosf4sULrwqG7/8GT/V85HVQHOuoIpY9LX+81MPDwxqL3vmy4qi9wxwoAlzVQAlXNCXZhrQQwpLGSoohbShin7++817Xgp4oDqDTBN7bfb8Q2Ac/Zk3ipIZ34CKnYeagfe9auLbn4HwwPbuHwtHg3xUuSTsJXLognhygMCLAXMvbEQ0Oba0yJCKmgvQ46QIlekOzheCLIaT8nbXX3WkSEk9GiHVo22E6YC0UAx9utzu9jyAfzTDcgyc+d8MpVLuIOq0Czu8vfHwiJoWhwACNMkMHME6wS2a4t+MWU5cdWY2Whpgxzu/EFwsmnXEiFAEDH7O28azyGlEwx1zrEFHfe+ytqwO06vPXS5/KC1dl2aKXw4bgeuwx/h/ifp29/YTOV36FiyBwaBv2fS/B4ZO32Dszbh07x6va8UNh9Pr1lQsFRF+0AiuQ1/t1vUfMs3feqiNiEamCIRIhMc4YSSg99pq5WTz/BBmR+f1kytbXjT7cHkcdTrDAB/cTr3RyqiREp4+D+9INAlY8Ss3qxEVYWQ+zARICiOuhqCFNn4aAX1VFpVAtzhktAOeT59fxlCTuQe+N4xuP1XDgiwAqcpvax0yipdoct9GXDhHJGuaSzkH7WyM390ZQ3tW5JN53I8+ZEGmdWk3Qew96gbs7al6AUWBMszlpz820TvO8MWJ2u5oPa6bL16fOAeuSVuTLh+jY1Rrn4zuh2vvxmPu5X4qBFvLfHygSFJcFnyp5VbHzsl++FEhwQN9RT8H4/nYHQvbhUtNwKumJKsbDZiZxMK/fkBoGCUN00CaKnsXBRDSlrjoyQ/M0eN7dwGoU4+a8RRgwdPXz095fNk16IHMyZ3pkL4wXTT5VxWMX90WS+THPaRZzmLLxnZsbKcHE99GKBJ2A7Ypa6rM6oWsOxR+sdWdfP7i32mB2TcDFnGL25yWgNra5uj1gbXkzqkNpJgS3u92R0w/uCmJidd23nPV9qF0S6UOeNLs+mOos9E570WJKWTrMra7sqhYJmJsyQbl9/mlc1VBqLkk9FAQ4tKQ70MbtoxmVvtrAnijwV1Myp+rL8+8eIPhk+3+fnX5468e/1kAmSeZuL2Dn09mAmhpm8w4HDDbbOIn5FGC9TZfjeDbNGQM9uiqQnMxqn+ksnr/Q+m5OIqYG6TK6Ljob3TiXRxFUjsE3lxOPtRmMTLT3II92XVgPzGWrlejlBSIq3n3B6Gqp7cmCHoVYsQphiQAnM1lVXoBT2NTav2H0uBg798J0FMi59AjVHJAvOde2oQ/s+yOpLm50kp8QCwfdjkREk/Q9Dkxy6vU8k6BZgB5U9h+QFYQ3PhBfgaLZO1X7YMS8fvYgyZMuRD6HeE/2todIQfSNA2Wep07SC0OCLwbZT2agd9lnCqT5UYsWCKye/ps51F4tskK7phpkLo+/q3jwBw8niSu9i3n6Wu38WiQtKOPMNQtjauishgtOOoU5brdNYAvnCEoKNvv8VdMTA+VIkXvw5LPfvM1zwzJtTAHmh6ypdgTNJTuKC5Cfg4yv20GWpUCEIZRt2Hs+PT+5D65//YdRaJdVWPFbORSffMEr7EMl0zONQmBY31xqPVuxTnBzxPpvgdNqiXkt+uGZFj3sNRfEQVj+jSGivBGHl4e4ODiMSX0aQ/y7TvzLXMdkreiX4+dfH9ZbDGR39rjEINHxwOXdIxawyiJCxMp45RTZevTuG3nedG9fNyZP78LXbwdG4nGae3czg9IBFaAq4zG1JCSisWp6I4dZZ3FRMzAqn8JMxroi2dQWIYhGwyuZotFNCN6JS9ZzS3Z38DL1Qc9aneAEqTlzZjd2KD0yU6ALwBkChYdY8+F7r/30xfcGunNqc+mM8G4DeaKi8yD9I2xyk99BtFb0QYEEGWzzxuKtbcI9Cly8SfZLshriKL1ZnIpo6EaXK5949m+89bBPqkx50PMbVJpdyo58h/AxdPawOtrIbG7SqaL/H4kF7g6ul+zzDx95Guxj1nGV/ViU73FcXbDEaZ9zP8a97ROORiaEQ0zr7SecuApb71lQ8YsmuQaIOp0QX55j55zWb9lsjAaCukD4lfT0bDiMDvTTuRjDuRNmc/zqkvSIkhiNGeW6BEqj2BgXUPqlI/P6ruf+ISPzB7d3P3/w1JZCSLkqibTN28y9C6ptZ+nRQCNnNo5Fa+g+7xQ7CCDMk2NCuUlAi0jx7FBkYnzKkmfCSaTRGkk+BWVhn5yPNrU4SefX9/dv5Gj750/FKvcYkTAmNuiHj78btE1P1x8n9buXYkAm1v4BsTRjb98e7qEWwHripvQg2IpP8j++6AAUdeYxlvTtB6/PJQHcP0KJNFmT+B4eQMiFBqrm9Dg1VFqDKX9yily55xRiT2yWRrstoj73S5AExPyN5wXcqTfOtPD29fW2JoLF+1NnAp6f+qYO/eqHj7435MIBhz4Pq3or3WbLwagsmQJF712OfbXALG0eGM0UDIny4BkRrGXwmCQkzNKD5D4DmjeRo7bJ5pE7IxLbIhHL33j1MikpaSh1RDGi0AJoFAWDhGp7tp8vvs0px6wEox9m/GS61wvxL5xPL6LJ/fzQSzDxelc+buPBW6cgbJ+oRM/fmog/rRzm5MAypZECNt2zc4jkHIvKJD6xScEtM61xhbrP39ktVim3POKrI7NacT9V1TIviOBYt/r28eM74ygwEeFAD8xQo3do++0qgKczhRcO5YsHxvU59VvKcm0CvfHqc1fO8Cr90HTp9Y24s1OtJ2bKlKUbY4PmNtQupifm+Fo14sQbLyg+7ff5TMcpxQFsgPEhwwngh30HrwqcgmXl+yX05GIMKR0tt9G+/fbvI3jd25QKxJfX9/MbgBVZEoXr9159fdbRpO5jIBXrNXwr62lsVB4f8cOjXf7m8ayWswELR5fnmxELgN1BabCK1HI+RSxU3oukJkpX15YEOING6Ma21lRkum66sruKMna10gB865juXpB4CJM7Q2RWdR9ud0/08DvIUnpjPeS4wPNPxl/C2Kamo7OecRiFqGc/wv8ERU4uIGSww5elMVqHCjVADixBS0BdiytiYuiAiO5EOix84gmdFQ9Hnz18Vf/7K073oUkYsT069TpVJHm8STLKH9zEmNWziQLfYSaRpGf0eX53FuNMPMBxi5Hcy/ZhTAPxzbwX33u5Pjn2WmcnG5FrpU0hB7+WJByntUAFFrfdstu8cFrLZW4BVBCcE2oriFIZaDRIQgqtgui4PTShnKx5dPfG+WyfdXI9q2HIV7fn5MASbJzCu8gFantgMYmmCw+Nw+Y80ObNrCPAa9W23RDRlM5u3rolk+fMbl6B3eOfn3I/Az+ABNwgyR6GUu6klzyC4AwnswJ6M38eflcTsghVqwAeJX4js8QErjyPyc6JdFUMVAlOuTGgnUztn0isG7menmwwmmKkHO1PlJXksyQl4x1GQ1l3SLU7vGKLJpNOSy5tUp8kKb4s920lD3e801LNwAj2LI9TnvyATZCdq11SAGY7Gity9pFu1oaKIFaEVp3Y2uVAVq9aUvXZ5UkbJiYl65YciBEGr4iLmvrdYQhooBJ8IU8i6HMXwvTBH++dYvKiguJNrfKVIXWhHU4cpRWzwYS5XIXqrGHw4rp1R7XGLDrHVSatSVaWAFsn2WnOvG+7mYXDWXdp7+9nI+0G0/p4kO+gg4mJ2qdk1Ua/ebCLkODPGdfTJ0ZYEvA2KafSHuK73oqTCktYewIwXTWAtu7EP7HQznOTGAbXFFrX0qcTrO/Ll0+I+GZSQVZqIXqW6Qez2o1le3Wams5nae+MPJ1VqglGFWDNBqFgP2G4GaCgwVYpKg+DMbOMtyO40ykyhsrKvLVbTWj3z8s9rwOFQIoovY8clHq4Dq1jGqGhXcIHBquBjTK4oYWYW9NloxsKRZddPrB0s9JU6Trkhq0DX2abXleNhj6X0NnEo2YrZy130GjMz7JqmpKlSel9kR3A9RTpcOk7r8sqXvHTQzda8KVx+/e7T/YvVzE7kONMH88j2KgJVkX8mQfko6Y3+mG3blxgHwjpxJH2kif9afknN8LmtFUCG7mgXTFzNycEUZPhMayatQz9BJLCmutdXr37qHIaBhZCLHkoL0ZWMSGrbCozakIwB4p2EwNgVy9fVqPWrM6rzLiiTv/4bMuqOmwDLmJ7qCqrNiilJnjz6FFVmQDxlDNHrQMq07hZepcbpLXt+ml2s9tzZqVlyVJhQZsj0xKZas6dW8rDsH3X6SM1cimHTg82kGZfro8sJ0o2StvWCXvClk1Soqn4arbQJhvipo3tP0QfX/hO+dj4yVxQ0P30RDMYOKCKE6MFpIBKzh59dCQyh0GzoNFq/vF8yXLjVPKW05rxh6+3C9w9zZtKS5oqSNZqcnR3N8zUzY2BV/UbV5npq4vZZT0bLzSRogcbd+qguG5tG+oor7akaWaCef0WHlaGVnlfAeSq7TNoua8fMmcP0u/PJSSb/G3MCes2pUKEumvHx1++Qz3A5+fu4uXSGdVzOMxhiRk8aFoH0OOLNhN4L62+Pp1wCwIEIdnG6Vg32nPtG0A5eeevPwhQhGOU3HrpoAlZW79OvTebKOIwi8Ro9gzFR2y3H777iDF15nHaOZesIw3a3UUl/hJLgkLyBLAKGqEG5xmsNaBpRMSuafbJ5ViryhEnviy4xNqmHrQ9gyQ7TYjmrU2HmKfGnpemI9Oo/mzeZCZUBS24q+8OiV4vBwpqk9frmho6/PHTl2/aqu176vMcF9RDpB75+Le+Oz0L7vDV2wS1J9xyt/lzR7gdM23ey8gEUgXdLor1ERHhO8dtZQzulbhhbrK06F601YKm3D3q3YREcn23fX6hQ6OT6Eb+acvbzj8i6BtM4mXi69lRDVAoGlQ8OAAhLsgbT/yTAtCrLysHeqkkSiJNz+BG8qhmDy65SWqVgwl2UJ0DK9SSLPdIEzwx8JcTQlxsEmZ8Etelqtg5NDnoqGJOYwOPLaXHJ7lp2d4s84P6aGEaqpUdL8bjGR25th9XSEBC1xy/9OvBpALLNmm5VZT1D1VR1Kd5Zt4O5dU331o6WyZernr1q8e+VKE1k9FJd3kFsiG4Lp9d6r5UbXrRZc2IMtgeVMWhyD4EjCybWqWomtIFy6fU+M50snj0kZt1fEDzK89nl573vv78QJlKKyZl4hgOF0CWJN0vDxq8j1HfrJ2/P7f0wjcEXkBqL0602FdPZDaVtIaJ8VKJZ1DF5qP/z+ZgpdHCIdX1Xtfbr79/xIKmUQmqxnvGmBQLBFKN6grHYPLm+R/XwfSU0+40q/O8UqHO68Y+qrLHVUVV21yUs6bs1vkzu9r6oaXN8bgsa5Ws/xBVd8/fYL4x1bP81d7wMm/mjjer/pH3C0IpnOnmb4VeEbmcaxNAG/p2JqW5Lq2v2/umm+vAVusUc/K0YFccH058oxdWwfFlvLvR8ugTnT94OqlzFt99GDJtPLho75wYltI/TFK7y5E/PJbjMkpXDPcv5P6mdKR5LXr0y+v5oXSnigVYEcqfPw+6TCewR+BhuE8/0LG5pE/X8h5mT+lEv7ezvkuX+oSaA/hxaCZN1dXB2d4E5xqil6+y19tA5WyxOMtbtSrbvq1rggtPiI7NUh2WfZGpTjWPfna7vti0oV2ZHiOyvJ0/lNdmWRPlRd8fPVEvzRL1KVF5Lubbg5D8H6g4W2CPkhOET70LlaEQADO4CixLOnArgLaSbO+7Qs20zAWccbr/IdUp6ZJjtaCAuWflDTj7aK0l4Xyh9ewm97ZpMm+lf3W4gNCsODnZ3uXW5sPA3nqtXrGduRbQyRizef2O3dryPANe9A1Gouj8utFm+t4YX9/9zbK1hTZThFHnspEszCzDkp3MDpM87BLcDCttCBIMmzfRIK3xqS8VvCBCgwi/t4pWEEqefLAoCLUtQn0RfKl4F34RBMELKHgFUR8EL6igKOIVz1Snf9tNukl2zpzznfNN8gcR49coaMhEi3g0zgMFQmNpoWojaDMUiN0KYoXf0MmO9+9g+zTEz5IpR2ut2UmphX+aKt8kgkl2YSxKCtytldHeBaV0iQiEFryWVU0vqUfrr7z0YeLhORanyQKIEajgaLx8zuE8g7RKUD8Nvop2qaisFV63cv9drI/osDFFIIMJ2gvTYo7Xzdbxfq8HrLtmdjAIZo+M+l8RPP9uIUWKzdbN+rhvLB6FoHmkD25uhVCDZeiOABcAxVmB7X09zp+7GDk+PeLIBQi6ekdk9pcoe/afZf/w5i2UzmOiQwXN8BSa9180awKXB5scfHTwBcmC9PngaYsaz0OOw99KqEsy0VOjVZFTIFyCI9J5crBY8zXVqFxwZd1mKJB0feZ3CO0SQLmHCtqh1hfEynK9FAkR6UxuJlKqSl6SCMnphRdVufr1jSRkqFkyZBLgTbdDc8kGtBtyP7j53E2fDMuCFPNTUwDd9TWbu549trbHXYXIH8AMznoutH66vgYrCPQ4oRclJtoH2iBwAJPjG+Oy6WX/LNH7Q+cC3vPMZSc8i/WaIwuROx6Nz0WMUKRMDtbt8rSV+R/++Scd4BGZxXMkcRTvJZzkNuPLQ0k9Px+hfF/o34z8gVEt00GZ3RxicosDSJd599/QVHsLtpiTqfW1iWouFfUOmkTyrGtR4jc6yqTnpVZaUyJpWlld5gOq2nW8TuJYqrSttK1nXqAyKHD6klPB8sXZ5diO/fzPN0DaQlGtpLn8RIYOCrw0hFYiEXSa6D/eCcnAK4M/1KVxjaOl0oX6/ZZ7XkGJ4gE/cx73NtqgQw79fXnAO0+vZItxRFErHWSdly3eBZcQKi/rHwHbiZSD30eXdacnSFAk8hFLYO5bU9uXddhJsVwC2mfm4B3ffeXCWcuQ1v91Q9nYuSP0Rt1nqYsG5w7EqaN8NWHhELbpDQ/7g7hVZhxYGl8AVRs2z+DRjSqhXAf/sWbTF5B5aMRpUoV6qYCArMNgurS6Y6eimzz3x9Pw87IspWDdH45ppWSdJCwqBb7KS6oIj1gX06rn8g+lxSoUHVVICJsG+lPJwovImi6TTD1i/7vXmGBC8fefUziif+tC977rOe6i21PQIPqll8WgitzOlEMOt5gLmAFa7i9F/+DGnz5scTLPIPvty/gFi0jY97PWBDBclqH+Ue4VP3xlP93OXdZvjtO+c+BfcG/hJH5TLVFbQDTCYy6Xue8qx9cjJI2NIAcEo5qfJyXfBryxvuyfm//ph0xUFYXlPFLuRPvcWehe+sJKbxELA3F2RKiAsoD35nGdC5bW1tLi8iNRGivi5nBk9fgn7XgKodeVTOzB1uiZuqylAECVkKoUl8ilKOVYEdEfXzyT+nLhhbTTIfDE00LXMsYCziROOlp9dlBTgxpgVTAjY6OkMVTkPxVe3O6BbJbvpVI1JES8JCuSAnHaptu45TnIROeH/LKL3jyHtz6R2OtWim4+tJHZYN5pmq29FpfIq07F2Vlr1Ap+Q14kOefWW9SKTwVPEs9cbn3IQ84K24cIPBEO6/VcH+/kc3VIkILOs5DjGvHftaxOj4BB8HIumokvRm9/8IeULgz4hX72YNPT5SJEltCGr2LLrBaSDqkk9arb0JO0OTqNAMQ+iyfR9sVxF1kTps+sQDamqhJlVVZMSqpEcgmIq1gCppKktjU9z6b5/BSk3D+NhpRKKeFKy2fXASXI6QuooVS21BXSqbAvto17DtnnsZ7swZBgGVCUSXuG+NYvXxwhCorUAZrT504dhO2yizf/81zoZGiMaGiwVQhQXe5brR03sy03j/sW1Nvd3eYOVrTTv/mEhnZRSu5MJtMWpAr4JIcQFnlBmvOw6TInNrHLnK0peR6Q+AIraQzBqSZs8vieQerrta3kxelJwTcAJriHYvnWd6/ev9Hb4iUsAjmwmHHYkogLEEfaAgGeYvrPoszWQrbJhNg9InabshJVivtPpkRhSDBU1eIZMbxE7VBVB9NWkQ0lUypZxu0Ih9mZpL2dd571VHxx+O21+xSUpRuxjL8hdSoNp8hr9WBgys5b7zyC8O4G24Rjar6ZUB+8Y0U/1GE+Dklx/5+QcnBEDs5gvzjqgzCX/QNmBf+CO83+aThmWewf/PrHL+fRPJMtu7UlrJ9TB3R56IIzB8vIBMctR6SFcfK8rF0P/pX3edxrjxiKpncEgZi3XY/jX4AK9wVYnfF5enH7LHXewnqamLwklX0xcxOZKnYhZ8aAU/5iQlBBKwpuqYAJI1TmjEmcS0shU1ayEXsGKidVpyxFBUiFKuthV10i5PqztIzOvtqtUgvUbUIrcLld0xTmZGP6pq3XLi/Up7ef4KmwTsd3X/0FDXGCgusWzoQZkhr9mdYD7qgMoHAXN/lsQ70I9nSe/cjFI7Lfgblj837gdAY2As8sJHLL+2HvBJOTqYb0IcEmbf+y6GcbezSb7l1GAbh2uqWiLNodheTpHKE8IIwqIGhWj0L4CS7YCr3FRHPltXc2tD4GSFK3BYpqhBVu3P6LijrTaTx1zjsvffoGyW4WloKM0s9jONBWHYlFKhCM5EbkuysCvTILbzpSshqXTMaVVGTQqaKjcjA/6gBIoiH6YVyNTnYvEWU0mJbPzL+59ZHK0rqKF/u1ErQdQupem7THT28ztez1/RMzmv9lZfed/PPrd6mgNaMuVNGw/pzjlzeUS9flsvHhYnWuVpB/K9/e5yRyoQkSF1rcT/OWG49DqoTgUew49JquwGepZ5mkfJyDrKnhY5s62RbKoUgACZm31tvarYOYEmBA4ZwTlzzx1cEcCT2IHBxFf5EtbC/Jkd4L+1/OxFGPD1KFPxd01c1BadDZewexu+1n0x8+O3im6NDKIHqHIQRQpQVcfmuqsA2c10WpJhWhTYX6Vg5Jrsmzp1FaNktFFrOYqLLUALWqKn2Ugp/lxuUl4/r1d1h3Ds/XjST0+K/bYFbkuW3SKJHL5sL+wSYWDKxd4TLeWNnSDmQblybFxqmva25gTYpykX5+CALJQFFNnFeYIpALzZ/caNkuKmQzweRBDctryM+hg+PtCzuTVmO8PHztjYg/82x7R/Rd5GNlskbZAOfvH7CQ6rnt0ph76VombFRNsuMoayVwasAZHHyTZ0zB1QKMDktFdexFin7Pq2ojr42lzpqgYolZokzqKXoGf94MNdKChS/+ziC1ZjEsIftfTExPlrYOGJP1I12m4pUT1lkqeppA3VtgpSWKRDG5XOxtC8ZEu4s8X4pYPuP4iwPydFltrpVEtS0zb61XSjx9aKmtAKNKKynDhdC9fy4bva1xKIUtMHh3PzH5MS8i1HxMdTK3Hkriis5UU/g6Bj0wC2/zyQrTFGrBzCjKXBpntZOYORNZQ4A+97SzZ5tnKSfrPuPS8xClSMjo5Im/B+9kTvIdrwMzQexQBkYouAfTzadDcXVBzA/+9FNDexxNMOn1nvqFmI50z93x6HOLICSCp6PzRMZQN3B1jDZUNjsShnEeMze62qqFG9PhuhpVqJrmGQCJP5TNmqyqVRtl8+S342SUCLbY1PNyxGW0FSPVo6MX+ZyFUV7CWNogOD1zcRmzshqmOlVIp5urbRF60jKWTXB4WZWK1AHP/JWPzryqbQFNYAnbec9G5TQJ74i0QxlTPgNIzk8sOGicyQ0fXfwBFNNTeC5VfCY/mn/VdP74dbNw2QwtEDRuLIeuKd65+wfIhL7f8yKzg6wIROenuYfZhRCrcDOD1KlB7cUI29TwQBMS0/IubZFgueWZTYsPp00nmfr4DV33Wnx8uMmR3mjPWUbL2ssOVWrQyK4SUmEuuoR2vJVng46aaSAs7exIKRYDbpqa0qqciDhdX2AGTSOWiZIoQNC2CGlJxUwNVYfEqrpkWNVDHJRrtTr5aKhUhfw0xLeUDVNJmsYRVbGsY8kUlFDT84bBIuh6mdpGbgiDfD939EwIwUlOd2CisGwpDcfEKTVGD/qLFk/2nKNIf127eXmxx8emf+akznt09Ow3cUay9u6u5UfHzygk06Bxk0iZumQGpPiKXPaPiACn8A4rtBPx842XAHB2DrjiMKjnpOuPGne+L+tODqyzynn/GT41FuvRQCsYjm/vl55fvuQUsk+18MoODhXkjokN3rmomL2chi5cHG/QRW5hSjXYZOX27yBUVQ6b3TRh8QUxVSJk/81IiLxSTJGqZM3sk6e68SVPKzE8ZU8P28uq2jmMDndFXJasSubIB0InROqDi0ETtW7K0lJwlgrQdFNZ2ivLSPptanA1B98/YhsULR+3rItThnkf/fXWIWZX9cj8xGnbUKNkyoV6ptWH8o9OOrAb1ctWl8UDlz715vN3HhrVkt6l3HPCQcBcO4E0D8g+u3i2D/DkiDh+drQpCx4+CsIL+DIQxTDSmt9d/581WbTbFL7+hXN9dLiFP/7or5OeNT1wk0NdRDLXnjkU+7wprJDu18kO/KYQ9YqbgW3Cho8pzXgOqDuy8wqxMHO5KnbmSo1zAfGqmFSEwbSUSuP16/6GD6kdhCbx4X2TlUCer0hns31QQf1JFc/HQlVa70wJYxXTaayj0UqINDp7+LiE4G0dj6QPlVQI2tlXcVrHljaqk72IyBzYEjKkg4Jcqtqrnkm2wdSNNmIp70kFKSPEI99uEDTmISrCuE9cpkED9Zn3wS/y3+cGmuXHeeOoy3BKeBRqpRUeXFzxtjGSIjk16Mhwr2effa9A/u9v/udprKOVWER33Lnsn7kPzToFLwtzPpYTOik8zMl9mUoReOH92bQLOjCYxMVlKRlV+KGpQNksc/nTZamN5lIm09la1XSZUEClYmCkhpJVnr6RiM1YpLtUM/YEEyfpJZvVWmfA2Cu3jaK2iIE1OqV2RQhDFh0ygaWIlYD7TehH1pb1SlgwU3bhkv7Zv+56mdrCppLSwezEYB4WQqpNAfeGF+epD0HbmHiiLR320nZR5dy6UvHI5xtcWrf84zlD0eDPB+CbUGaQedrkU+MAVMct0swax60ERzm0m4GIvcs3Ec5SwQ01UewuVxP6oh5Lh6HbzmMtY9cueW/VVqkNe0XKWvhiAWRtGxvRzlIEI2JRB0cGkDYVxeXP0xqnhhHacQrbTpN0NOluaAUDARWT/bhSFREROiPCypQ8vayirviosJ2K7emtmLH90x6vLrkAyNtVO/3mbDLUFSpGfKiEYPiKO6WqUCYAbSnLzury7TcONYqKqmlXU1kmsTPvUIhLkNoqV17ufKBn8FIaWwOquV7QmckuvpLlu7szY4pyZJdbSTpR1mufGb/rB4vMIaRfXGtP5op5XpamKkKezDoZULLc4hDjHNJzr0La7ElbIEVSVczxKosxIeeJFMM7b93JXEcCjGUlDaPiSMplCWYakTRguXQwU6/2AZzUKoBoVUkDrqBH8Ic8zduz5jQHgkBTM50PBk2jAI/Aj5euem8xeG432iJs71CwITuzXUbIcPHLzdUlBwyGfzSsT/biIRS+qtSgKxS4uZ9roXQslajhd6qWNllMSluTF1dUpFTJYrR/pvHiUI3BpRbORwYEArWXPduFScCxhmvBHkYXCt6McmFMK2PGKT0YPQO8E0ePVXo6cdkWoXmqLWoCP7eT2U/73rR0kDfP3zwEoO3M5T89+8orP0l63kNA0mpglPZ5EpAEjTEKvCjwdTI2PT/2DjAyauje4HNKQTOkHl9I8NODgAXd7MBq6gqMpBBWfXBaC9j4I4ta6hGcw9oUeSfX0/z9T85YvPrwd8tIylT1yguPf/3Z8nBTVLGYMBYz8qLBT7g6GZJLZgnqwcnm9mbExDYTjVAKSxB/deU1V1wc4mmq2fr4mwMpRnVdidNjmU7mv9Sl1L9QUWJhRYEJGojJ6wJSwpGjepK1mTGqyzaOXtlEoi8cBrV6YfllmdH+An/GcvL7h9S1loNAK2Wp8xQad73dX0vIcDbwwFbtAvQv4mfhSYZTiQ7LyBErePbis2uqqsOnYFQOcB1IaQoLujl0+C1wFMHYdydF23TPKqhZU8M99d5TdbJB6fEBbujjgS3l/h5tSLozU+2LXSKljLpaMPTKVaR0raoRI/PDn8kFsvlGSiLF4C7sMcvQpIsYrNskCenG8eUoisN4SNhweMlwWMbb7WeGKAuiw9gwBqkr9tXHTz507aXTKEfpZJP4d6EIynK+882pgH91ceVlSMG1Lqn2lALDJrVSei+JA2Gb3qTRXWv0Yk+7eberjja8Cuod1ZRvPE3V7sieyXSRzFoXDyzf/xLLMBpzAJo+NzkGz3qNC5Ey5u4Un3tXVho4kxntPh2HiIXE1Q3iJY5K0hughnJpgSIT3jiqIBKjakMLSUYrm1oj0+m7D3hFiRTjj1a7ejGvpcgvLGy13N8cx+j78lIfb5CSinrR61CmtpVCmWtKpr6fHBi+Xkdv7U2DU8ej5C1R9/pgYVltjWL22fFweDmARK6H0oeXxAkCVAUL6op4F0gqQFfpDyMyveuGz+LLK9FUyXoa6qmSaueXqYZhiTIohULrxOt8KshApYY4GxoP5B1oH/LLzWTbEuV9xHru6wuYrskwz4LPJrZHGF+crFJMfTziNngJST3w5B859yKgMS5YUprHLjrd7HDXeAf1grO5b/WiZrXjDalj7fo4l5i1SBt9KIoCFNTAzUEnBfhq4nSSW/Ti7kexzD39W/iNDk0ULcGERsFqTlZL6FpZBXKDt1ZI5dMdolhCPnpnViomZ2u/jNeO4ehxxYRICGHzl7547sUkABITrU83u7ufnaUl1A5QySVMDJed8YttJkhnvRKXT2FPEflL2mp67yPnOHbDDxiVRtxUEVln1EpIY1gCUznArWCMys8MKzCLWEB8tor8ulb+ZI2CQeZC18Gh6Cs/KOmN7hkgWJjz/2EZApIXfjIJZTNUy7PL7ClOWH74yqZ3Vvd/EZxxHszHGBqKZNiC8twIr2vU0SJU03R/x/vQ5bXhNMYiabLRVm5VsSUb3KJY5YPWnghbSDVdXhiWREkZIhLukKEXiiMRJ2fdZxAy5eGvaElXsnlqXl4u9X5XxfHhxrDNGLAIu0i6Yegex0idcURSUsVk46bf9tdIzIBoBH5C/lE7JCPGoqFg07QNW3pM9kz91mcED2OAsyzLY1Kq9kLJ6O/jttaMyt2Sbu3hYmTYQWkqmVLbW5e9RhhGJ+nY9Gh19NMT2BiQZnycQcNy2fmXhCuBbZwpo50Mg/BI45E1MuPa4pCwLOyoJrYMGCxHAnFFkBDOcIRbXAlnOBSOgIAoiJtyitAEUEBQVI6WQqGgcoibBYGAci8VIJZrgYXlWMSPeAPu/v2TNE3d5/e9731vJs2aIHDgd28q/ie3sFdnnglP0MlNTooWTk76pB+QY17+bY1co1G2oZ3YC2M2sIL7iBmKm98O+4HM8kpHAGS0/BGUj4TYKTQygyd+EtqDHdaHqgG8xtIGIVfFrAYtgyDo6jkgRMx79Z1d2w+dWjd0kGtPWxM9QFK+VFaoy8De7Nlt4UQa9sccvB5bJRHQTFS19hJjQwEhVJPvXQpu7aHLE0Ik36Ipg2wa3IQRVsEY4X128MeTvb9/p9KUCPxrOaE1dpkQplKW1/8usmXWxFKW2QNJbwQ4vUBuW5D72+lDMiNUcnJrsybT5/msYbbgBKhXrm92MO81jCpgh5h9y4bZQ7Qofm63m5txYUI5fKCZ1LNS5ykWQCGDZjbCCicWpPmIN29t38zvtSuFjgIg4VubDQ9pJkoeJzBwTCH/b58hyt5GE7dQNE5NgmaNuU6afWuoG1oHV+AkZLj7j85vhALrAkf5SKa5w1Voc2L1MGzjsA+qoA2fo2owDaSa3ViymPpUE3aCuJmaViP3Pak4vWmvBVayJGGSbY1z2TLPp7NPVmRsKRlXe2Ue09XpNQISxxrCO+VcpnHqCNmug02GZVAfL+M4xoSErSxsOBTs8SwRyLzHMQ2j9niARj6eNbdRkuirbALn0JycoFgDLIsr7+sz9GU5vmX/ls3bTdqloScQNmu6nW2LXxyMJ03km+YdAPgvjH/4lHt0A5s3b5UxGQgs4SKk0/BCBlcBu2aXwJICvG2wOSAaNsgR3ATEtqmJxnKNkQeK1YtqgBgw+xQZIrUhe4UuHW+mjM0MbeGYicZ2UJA18kzKhI7zccxT2ttbA906Yf6v3nx05HsxaGOlJAYLey6Q4gm4miVb1hj8REuPM3nKEwRMYnDaVS6slKIEz40PoBNRy29lzOHzw5Pa5gJ5CFohRKgUIUoK/NQNcnTph8yBZ7Ya2ckPz2ze887GO01lIhSE2nahAkEt93bNsLmNJdzpLU/QJ3ay8QSIHR6Z3ZpgKKrVgvmGjpp9UUASZguLGLfuTG/yLj9tCR+0AzNhb+vG/KdTDIxJA1DBpmWYL2ZNs0EYD2iMWMiEtleDS/++ZCEa96OwuBzBrs+k0yXa4ZnfKc+Od+cxkKNalNrqU0dGTNQc2mXG6gPLEdqmi4nSNaO9GVq2BYyIxS16SgMVJZwQloGIhGaEeIUHXEkC/czcyBR72quGPUoJ41VnGoH21OWoW2iq1Wl1Nw6yU7fDo3abaLsSUJ0QQVRbYmfP/xw97MpJo/x5I95B6L3oWz+8JfdvpVzb/IJgMc9hqkjZ0Lfz0UubAsumwynUUGI3xq1uN45W+c1awNBEcajfmxlAhVmPhPHB+I6c/YjVtfqNpbfx8l0KN9m/+RCWczZBTdI/+DsNOHHbLLo2xq99+G9A12tlc1Cf3+w2HpQ+bLCLW2FKZz07nKh22J72iQ6bJuQJ/c6O1jh7G6UWJCKRZrqM7ULYcKBiEPnONXX+tEsrGrsq4byICTldzQ6ogHim7OrXN5QRgtonkWSGo1tVy4quegkTrCIe5YRyUNznSkmftlq91umAXkmvdJNxR97EjR5zh5RQDVSFVgSB/eiMNHA03dXu2qEH2KEzu81tdm9+OxRa0/QQzPfbdbm9g2Ldhr0KdrCyvNNE1ggHKxk2R9hkr3vr7QqaCOCAp4k4UfwYLLEyjsdM09ltNHGTmXcBBG4A5LZbpNk4fu+/TjwGnuPna7MvABtZnj5K/+ZGhK7RzIuzvUkQmogRNIajtCVhYLI2a2djW1AUeB7EJrRAkcUOOYkDG+QKjYIK7fg96QjiRG8UGLx7OV+lIgWBY18nbkpDnp7/QxU8AWYM/X3OLGYBzyzZ0Yduskb9C6WAqDRiG/PppCZ9z8M9XBxCGosYJBXXcDZCBMY/maJv24v5P17aDJUgAQL1nYDSRpPOinjHBiO3kXujqAuNoTUYBLcjZu0mtLu02RUBXNMB9gXBOTUMCwE9Ghu+jqkeLb/o8JtBGEIHeojU55BgCTSOtv0h5Pj2eJkmtFOf36axMRVvVLObm10rzepkp9k4RfAfbNjtyqaHL/u8DlHssDsweDUCcsuxCv6/TV0UY7tvs08uGwbPSdl2gKQdxjUcDay4avAO5bMbZ8uWteaUHThJudAaPARMCac/377lVBvdTCCPJapdkq1iP0Xbh14mfZQ72bxl5rOoGv2bczVor/FsRqjo9XpobnLp20p6sdhTLReWXhW/Kpx+epvTxo4K2mu0W6zQCNX0TEJFmw39/wA64ITtNObgEN0OWLN50tkLHI/XiKvcq8erW6GRwHFu8wBI2MbIAyqYUcBpVs9HYnvobqtd/LGBsR1jcmqg/uWybQOi3f88vmo04842GokXFIHJhb+uHn9zpUBW3HHcjR47nq4bgZzqAO0b0x2Sd+QPgTF6AWgIp35DewOf9zoIotoWdWgoJEEroRqFitlzoHvKzQnnkcXj67Y/5nEa94Eg75+O9w2IAAkQUyYxv7dSMvfMLE/yn/5wzDujCeHM70a8lRPqYsnO7RJKCi+mwzmBE9W2IFcudXJh2+Go3/bZepkHQE3kWFJdv+XbB/D2gUnvga5Zq24USMGFHYSAOtDXsf1KDQ8aYnTrJii6evxMbcO3VkdXa3sbfos0jWkHqSCu2BMAHrbodn96q+ZeWIwZIuzgZpDQtix4E7nQ/tmK3EoLNCCsp+/Unm2SouVJ9Xgk3BRNqzH2eo14HtmUTaKGX9hSdzSnJbdtq08CGuxeaqOW532iaporQfm1A8NQloChgm6OyHXGzYAuPEWqnB7+yrWsy4oN+hvW7UI/2ZoAeXMQ4ipp9NNrzZOcSzYs8MhbLN7lRCvOlCIt2ampbmWU7ks8IWG5gus35V7NcjNypp9860+FWWQBMQQBr+x1U1+6mUSFKtp0gOf0yBLMuYJ4ahUHDrdB1aYJiAx0a7w9j6U6gBbezurn26zZwKGwqwPXwuSoCKCRgpiYLUDrgT9RoLvoB1DkRnNxFoCg3BG1A2nZaZ6dBPYYGRiea8QcI3iw06+R1fOgDASEksBiwWRqQvkOavsQdlOFy1u2YPsAoaC1gGQyRU1G6VEbEsp3/crjPmfU521NuRpX+0QxlslC+tBMVPxooFwFWnokSdWkZfjpyb6byHXLKuR4kUyoGr3x/kOifc9C+Q/6LcEoLXCbEmZ6FdFaUy27RAh7lvg/1OGOdto7tiLNuQyi8fAgJi2Hg52mSVRLhOoI91TRzZwm0zbQxOBkCro3HMMVUHu6j9AXIumg2OPNtNms0OgaWEs2e7QaZh0jA9/NTO4oTLMUWAGxo0pJKIn5aCIUJrc6VMxdERtXGZ2nNM8G9g3gUgdmyyo6Oa8FWj3KSjI7iCglNtHDhXDwEVMTdTiUmdtCUFhVzKzsJCeMRQOZFBZ6C/ckdamP9k0wTlZu6vpem5U93z09qpKuJB4DRFuW1XLdajgajFoRASt5Vu0OYkWyDrJU3qoIt6qzA5pRZibT2Ce5cGb3v+drNRHdaL2JdphGAktrhd+tagILmwhLNVFs8KVquNM7/1WFut82qTcO3awVm5plusg5/Pspwohm89a3vPrTlZHaP970xXlDodbZYtvUvC1M32nC5W7LpuYKVwj4mQs1c2f4jFDd3CGx3dy7lZV7Ag+5sLs723IHp7P0fRtCA6652kbi4dSxk2jqTLhWMbF3hFbgd9Q2CNJhnJdi5krcjG1Mdw2uOadO+6EP+Q3PdhXCzELTGqzyr/gpSUDIxAzwviQf/urHj5IOoAdXyVZvvxtZw8P8ctfzirLXaxEikhyGaRh6XtcaUatNOsXiADTF62uFl6THtnq6xkXtToNSMx1qrALugANIYPGPa7B4pEMRNEKgux5HiPICrY26AdBbN7C2ljh1c/v8Vicapbtzq2Bx+1kD0Bw3bnUOJ7m/TX2nDsyqDxDVRlKNi8WUdbsMb0Xr/81tbKeAzanxc4G7RWzBONfohbY0Wp4t90BJPe86uR+COFePh6ChrSc/fPEU4w/nZBSgyDkFkrrDfMoKwno/7xjLGacR57DRpKWgnYPlyLb0DdfXal3t+QkpptFgwdNdpHTMzJgqYucRX9aMkHmb5HRrv+hX2eDK/HtVFEmpZsbCI1/VhMvNivMBWHnxq7TMcBIkLrkmXpSvFvLvjFGHCwcuO6c6lHUgvR1HSV0KzUO7hkGCOe1XRs5gTIgf6J0AmHURkDG5nSMXC/b2T7YD6xi7V6vVxQ3a9Jb9ahVsV4M2dgej0u1wWzWkrYAkijiG92oOe43eGztnt8KShA7WS7OmbS0rdEBtc1K1YCMVrmx7qIEnJk4tzOx4uOkermCI+O9zdbztEPhOquvQLPkmNdp4ZinpeHOPz8/36FrvWl6SlBbr8DIn7k/XE7Loj/q6zxEHW+cdTpPJQ5/4xShJ/BEKmqmfNm6+F3mW+hG5EtGt0UVRdYvLf/jDlVHE0Od/Wp1rTdge5T5rzWNB2JXnPeDvsAOXvvzHg7ZV5pRf5xEGDCM8tUjiFPJGhuHeb85TzJ4oab8GuRpENXBOtr3eE7A0BlVjqhtKms+Nju1U3Qa6UpO0FZb0OO02myOzoodGhFQPwaOoQ7N/AU+xmnhVYi/dfoPv3K6LfCS0dw47t+qiK/oBz52a+6iAv4+P+miMBqbGxGglgUNfGiKedNNMTIfF8fZtlg4JY5x6oJ3dt2xwPTjf6yhlH61qn8ZdFzXoURJLQpgmPlMUYCuriCwmNxRdfOLPiXr6c0rEPviCuvClWn/9uEeGQ6KYr9hW/9pfLtaTi5ve8Y6LGTs4ZFZPKc+PJK894+vVAT2+/PqHJrR77QVPeLVP9ACKqmOhtRAoIUwGAqfDg9hScwpmip2GCEBKsd7Z4VcmDkGW5jVk9/TFN0Kt7MA069vtwPgFsAWDhiLIR1p78N/Cxq2GUUu0bbh76kRO08ALs1+cbpjw8hLWUG33UkhP0EO7XlvgfRhoUdl1Z2QfevsF8kwdQwR8E87lyYc3m33b7FBoNRymnKOzlSWkQ3Xcj4g4lX1pGq2PWvVvIiLj+vsuyzuMkTZqGWiWJPOZJHrCCWe9CAgmaOxqtSsdvacSpgrV7096iiQtn6UsTZm39YfvXf/DxZXPv/0fL7hyvU175ODA4j5xJRws/KxVRWQgoqezpJLCf/IZgRxoKOhNu7XorfRNTQOsEUxLVQhllHBhY0SKsUPYBANP6y1LJ2Z1Y9K41d+2m4HpEjoA4hj6lTZpOu4ykv3f48CBxrdDIYdBjfWdtWw23W2sFolLX/nRNZiBgebBvO3ZZuidTvh2Iw6P3vjTpZpy7+T4jX8vg6Hn7OADoxBOZYfsqPHidvv5GrVghw7yeJuAlSRyRq3UpcdjnnNXUK/392tcsUO3JnR+bSE8AUc5iClzueZ6qBnlBIevJPeXqlVmc+K/sbFdgXY+8X0/GikGT8/YFIjetLv1r4//+x/Xbvzj3Tf9+8LH4wlVuyfKVxQy4SrX5a0kuv303Fetkx3x9wtwkwLBuHPisM5JoGtFUflRg9K2nBNSa0LQnKZHCdl3AmGHh+qnYQhFm0zmgU1NL3bQoo01XeD+TtAMHOZBANr9oBiSi2Gf9Qs83a8ahTWG1N0KcG9boC5vtPPGzOlUDU1FHWPBYm+v4Zxu33yGQOZL9/zBx14wp4qHmIswmx9kQcQVp/X5cs+sVAyo04ipBbeqRmSNkUcbD+jUJh/Sk9vUXKmMt33KN5Sr4nrCwZprGaEMjLp6HeQkF+pG5fqFX5J2qeS1Y8fn0fWLFoS3ZXkq8get3Wstb3/d27rx8c/tnrzge+/+2eeryq16nBy479WVgmAS7/gmxhPChpM0gkM4OSYE1ITDpbjMWoxyuq+J1KT7xacfaRo3W23JBMLQsJxPf/718xDzeH97gUaLJpEIJCHQAWY1jG/cv3SP3ytAC5WbZXzC1u1tEcDC100pGoih8EbH/cnxHFvKG81wpm7/+MiGo5TAyjLGR8DhIgPO6WIqbdG9PxSH/DywmKN2gHZ2Mqsh6ragXQliOvDvlAxHpCx8WtZ6r+eqehxRRjUcIdXtzMQVxC85YSZzz6WgNG2n7DAnhIIl/O/v9aCcLpnPvHbUKUuWnbmMuYRURVa2Z0WHlXK5TklqtbYe+7XHfu7G9z73sxdc7lyPLEkJGzCOAxdJmyQKjV1WzCOaMAVR0Twylh4nAJoOL33YEiLGrPmmr8M2dZ/w7AsdDiciDob08Vftf12y0whbnnxUGrONfdrZYe1AQyW/XurXjwPbzKVR3pwebWOYN/7UyCsRO6fn2+No2l43miQIouY4y+Gw7dq0pXnFbAoi2oGjVVAJy3ZOzwKo7GlV2JZZGNJqKQmq+3+DD0PJAP/YqeCcucWBL04+rqYeuOdodykoUdwFISmAM3PM/CRx4rw/8GBoGR6KeXF4O+aXeVmqSu6OPYtnslKWhArkaqT+eH7CvEq6bCgtmW69/rmf+9k7/vGuz1/OLUISuCrobI8D1mut3NhWy6wq4waI6oMFP33cPQ+pOSVdC0pvbZ0KzfEWG/WiE0/sYjNAuDiyPPwi2VyX1fRQ7OA2XDevbUWEEraCspZa4I8jbXy0jEanXTed4UjZenuHKtFwWr//5M+x3KNt2tbQYm4bu2WD6rbG9dhQM/cIuu8xXYNMbctiQf7O/+AdzAUJYrGmI2H2bJpxMTRhh5bRbkJrHl3tCn5S0b9vHNR4rFuackRzrZB7VAFNzkAgHuPR+T6MYSw1S/+VMcbkNY8sO0r6fzxi7Eq/H3EJlMtf3/Ot39ylDPBc/4OrfO84L9zFicu2XvXYr/z5bV+/aVJ5DMJ7sPn2UdJaE5M4+ZZBGBhbCSOEQZEQ8nF2NDB4ciqIMOpOuRTt292MnTIMQz9tOtGob6xOGDX0LDzDjqcYQkraVMs6yx3ct5vI+bp7+3PbyZs7RAgfEmFpehP2N5eCnzk21An0w7DIoMDcFhysc2yR7FW+S5qn3UYWQpbAJZ9Ljcp3Vm88XfR0DUmhmnpScy3Q00isYZDlwsvAwYUjtSgomc5oLkgKheRf/DfjjJtlNWtEznLq7y5DCjETiiZo7a0DmByrzX2fzK525KIQvhuh4aNOiTo7u+DxtgQj0ZWIlHnf8tnMS9KtD33tz0941C3ucrmlJAM7W+QG/sfJ8NVzplAB1SVpWAtpMQwlzn5fE42zrpXg2ndbsRmb4h6/5QBSfpszB+mYDIVVwc8rMd0PqUE0dMI5o7BxFH9yI4SOoorTwH3o+76MogwkmjnwctTX37sb2Otx78jXvvFPslFxSC5yVhsOdudX0c+xVceeeA2bOFxUHLkmVe3Btuk5NwPsHfRwHKED4zk+I4rWUCZTSDxN6LCwgkx5MAcYpH0Imf7jX44lwDTS6fJ5RI+zJiFQYvRkEGtC9/cU2fPpUDFeSVXu5VVfku50RKhP9o7CRpZKIJlajKguKr29YKwntz72bpounniLn7eITJhM9DRJpJLk0rcvsR5ROl1k+z9fmnzv+IcfhmJAe6jmteZI/0qPlpu0RSHjiVlHdWjMtO2HxYYRy6EyZCtB7cHMQb0SAqqVdne29tMK9MHHasS+OAW41K4HAeanPeuWe6Hdrg5uFpAfrY52QrBc8EAIrRI+6MvNZAyBQJ5FnNhuMOV37NkK5l0ekJoS7YZW7XiiBt+9OPXc1dHK1plq+zFglWXanZf62kjHXIwvDWNC0+NGp0iIgLYZE8jV2XRhZdTqUz6W33jUU4/CAYmOGIzSTaW6vD4mEre9Aj82yVX20+VZBiQljkEbPPVlEYGtw61PX7nN7eL5d44SCXYm6fm054KgxcHw2YeM+aM91j773CP3eJYto9cZ52uUuyRSR6quCW/JDGJOKB6NRSxw2MFy3CYD/dNvaGdwYeOofaKs7mRiffi1XyIVum4ncLK9sTN1G+rvgwAHcnONxGIz2w+DMIj35mG02O1hat05//0nKZQXhJRR6ft97TVwf8dEG1xQ1DbGRuis9I0Ece34DsoGyTou+4J0aRzd0LNI0wNqqFCSmhSUWz+1FzKJiVXhUYX7bUqj870O7pBSFiRW2dlXOmpXd3obiB4vVoS511qStG8atH2lIqbUEABalpdaiSUz3/L3DvNWVmTZcOtHo+Nu7+gL0sMlJQfU/o0ld3ER1re8+KWvmA8JvbZ9dQWo9251GhFOcObcpdxkLdIIQsrcUFsDn9xkUeBWx165hwmle3BMHQVyBT4KjqjFFW+qGn9sOgwqmYXOwVDTn08vtaCTyHlCPJXqALZ3xwlYROxkvmliwLFPnfkQ6CnWvmH2+VEx+2nmOLuvPUJZr9W4J7tvWWonrXxeMhZyJhycDhoRCVEfgs51IoSK677v14PIQviRQjDHqwwTDUNroFAyftL3yeag6njdDld4lCp1XolbjtGYqTfk1jJQfatEA+lETCp3IL0Jy8s1U0uf+T91raJVLJ72swsm/b0s2rrssuXZWZtRZoLmHuzm7hu/QJJif/oH47AkYd50P2GMeWIBic05WXRUAfktyz6PB0SmaRYNzr4/JS6kwCbKy/3OitPN0hL830FjY8mZM9DoPtZydyXGc9WthSR+UfuNgYJj8ncCyxL5aWPZ9k2IJnzTby2b6R1nNjs63mF22A3jiXFOYT0ftsLhVX+60EIRqMvUrnqtN+7ObY3CN9+nGyZY6LbENNqnloBk1BSe0lep3/cMpx1O8JkYg+QyUK3sFDyikgzaeaa4bzBLem/ZnO1zQNuXHikE67KZm2U/zyWz8OUMvafYZFHB2OQPXQ9M7f70ltyVaZR6W/lBK7GslCWtXtI7K6Rkt9k5ynuMJZALFLhE0CetVt6GZfDXzESkjPgwoXXtK20l0bCVJNGYnbZ6aGiKE7dNwxbt2QEjiMhGzLGV+W99EAVeobtqSKAU9myJ8VHAB2n0LWmzbdbwvdoO6YSCXrY9M8MWlRxBczaFZmIgsOmNJmuUjuanjyfZjghdLkKyVwStM69j1yKO56SqdyMBX2/5Jk5URBzNBHcvLE+jE7e7JhC/Rtauon3jjrgxXJzAV8ILkvwQLZd1PN52La+bGLtT9hP0h2TANn88late269+7lm+52Wd6Eo78jp+NC8G8mxsrU+ytNPfWO5W5M570l1kvYOoR6Y3UADZQWHNsplkTCrgl0BZga30FDfzKssuzaeKsiG6EdHkD/vLb1AihUsXyEaSsiMtkhNt1/U05JR72hHCvGkkypUW3I8deWu8hTNzSE/Y2S4NPA8DdR604fgdRTpkn/LaCmn0zneexRhUTf/3u6HjR2AaIkmubQ1KH0Za2PAWYRjCrCNlLaQgYn0FATK+GX5CsJhkKRXEI5y5/ghk5G2mRdThfYq+W3Z1y2gqJMunXLVNTvyWK4sqJx7NIqgmpKtlYuM0OfOtqbUcDcvpPJK/f8fIQ1vZ+H4hO63IL/1oz10pqzfxkIZY7mqr13N7vYP+xfT8391BXkiWusnYrTapmyaRy0zBJ73dU+mtjF77TLqdi+vcwEvUiPOlmJ5wTnHw4cEe9eAmWo4UtktKBzGSf7TPPelE1yxFPVJ3FDaFlizKoKsiaI+ID4o6jvY1LSYk5MaI1R4eOGL6p6nQoILiJnFb3WB2JTIdh7gDcBzKckp2bIEFQ3GDOquhT7hyQGlycnZ4RCl8nDmrJO6zijFeaKBACg7h3+8p9FH9LzfGVypFK0LoeyPYhaNpFiV4LhJESorCh5Sxnme1QcdC9lpJy5K90yDz1i6ohuZYtguPdf/e90al32eW1cuyVrT1jK2HrarJ3572j5/ddP0PfxjmrRbqN0kZ289bLI+SlBBvM3yyRNpMuLRyzvyBReeRTzxmtnYTKc/2rUniyra7ts5/xTXQdIhwJ6Etdr7+r0dacc2JMz1F8VsqDrUWdVmKcLEKfd+0avjrph4QZUMUlA1AtXOhV4u9OYiN7u2RPrbKrUsvRpeNQ2ULsWmX+gIx4KWN40ArCPExpnC4Jc5wv33L24ex2f/GjGlPYtlRkRCal0RzCr93vOBu0knaT//mlNAuhsiELHOFgxj3qfuqIDhGvqTGqTPiydTrMkbOj6tWuuqz/TRh6gIW6epPI0/KRdcrD/YPrkZZq9pvV1tvvdODv/SHnw3GL37Dy174nBf84UpRDLopi1ILbtU9yWTS2yTRJOVddYUq5pV5VC6KtST5gUXQ/BebsrWXJkPFLWtAjy+uHtXqcFeL2OcCSrgIbow5CZldjgiAWsqQAM8md5wa9aabmgNgRkhUsxrnLMIY/WhJxXJuNxIrr7mUBHoxHPaBrshyQRr1SDJRslKu+UhXx4/d5TFquq9ap3skxpVzW5LGY/RGvvrlW0/hq+DvvDbzKc0I1arVdcFkkhwXcX98UHQjNSGbmzujDqpv2CfzDgOaXYXeQfJWMiUYcbpJdepZNx2kEqigrOXVX/Wutf2l9mWetqbW0PXcymvnedbytpZfvOv3P//uF977gff4wfvv8cJPv/1HF5czN+0dHJ+lw2xzyIpzlkor3V3CT0nVsfY8y7MIO2AtZhUXI2hMNlkoTkm/0no93PSps3Y1EzeNCyX8WQ9BqUaArlk47ssB8aZtHQoULWDUQttK2H+4prVs60xPNLOPrsqwtPX8ur03nmmmiHS4A28mLC8hE7FjhzYPBRXC0u3aPP/W+OHCWY7iXl7hBzkajZLHOJKrn3nOCz4xQOFr0kb1Cr/DWQIdRfVRkpzXnpsQa25y8LC2+KC9lLlQ8Bjca0tY01ZfMdlhydU3rtIDq+2akDOB4WQyPQpUZ1B0cl/6+3KaX4fzPOiBoIhQts6/f/3zv/juK17yipe//2Wv+tBzPvbut//lL51sePS9u82ZVWVZt6IyMS+mpPK5ZJ0oGcEZ9PFQpkihjPFoud09WpyTmBKh4VAEhwOkIvRF2LLB0xp1KdT8alM7h0ffFrjXJqPaAdAqCENOtIM8KEJhl+HqlhshhIc0DoGkDn0H90pO+60rOlrkLbOsZgJlHfsK30/FwYLYP2sLS3TieuCWNUVp1Luuoedb7NgeTghuVVJRzS/byoKiGllFtNZDVZl4AkxQzJJEZe02n3RAzgkKxfLJlx/3U6mUJGellSZuFaXy0jBNrUGVgpVtV0J8f56NWl6WfX+1GnjVNB94l063Pv/5D37u4a942TOf9JiHf+iFz3nDd3/7uXdMZlUvv+VPI+gxpGL/hCXQ1APpM2CKawSipoTiUpkExYVLi/zcKv2iU/aOvdKZt4Ujlc2440VXFAq41GWZtqGzHaLpHjmCDYmIExanMgxlzYXyHDIgos0sB7D0Jadm4Modh3A/7Zk0yl8rLOftHMC9xCHQBC7az4mZx0IKidWC6MiRvI4p4NN83S+tidwc3/w2l0zkaIZjTWqiTVBGzL88y+ZDqMRhZ88likOZUd5WXhYsImUnIpEiLfxlJ4M0U1bSZXLqq95bzlsodiY9C6nW1Z61F0We1+5bq7QTtby2NfHO0q3HvvCZ9/jd+x/+sic98UlvePdnn/OxT3/6XT/K+1m0aFfXP/kNVIS0do+JOv/Mue/LqJNC+6vkoJIkwVnylMwzWvaJVAfj3iFbecz5A8xEbsS9o8KsMyhJobUdDXWoOwPVJ1Om/RpAWG/52y9R9SEKWIfrQ325RlBbFnVdoxCEAwwILsrvP3kUKj8bsLFY3UiyqqsdAErhnepRiNcNaySBQmui0DYNdmemYAal5/mKjn9+qjQUmsvTU0hEJ/rm14cmmtunjGRu4i0T109MXJEfWf6GELXHe10lrWus/Ps8mh26gBn+WwJE6VpWsqGW64JY3tGvVq25VVmYKVkVdXwvGlheCy7edbe+9diT+z78q7976sfzXz/nBZ/+9G/e/PY/XBtNRiVr07y7thDjZdUeYXnwFkytH7jtG/HiWTo8P4bhxvbHIw7fRZh1mk+Ocj0AChRn7pT9Uw+uU+A5hAjAl2viaDNctcZEXFGah+fb25g+CzlwgIc7Kq85sKdtk7QB7GURPe6xsRYrcrNlqDNbDPKgT9YckY6gYKCj0baAlXAgfRQdaxjTo09eVXXcobGGLgHVmI8tT2qtz8Q3rhQRbuSTm7lgPt+FRZq6mB9lwlzAlS1ycpbh/gDkmW72fNBxH87ySpkyHxXJjjPmYlyXEdxky0oPX/SXzMpSy01T6XmWa61/+Jqe60Yu1j62nvDA85985M3PfMRHX/yST7/gL29/znPf9a4ffe/pbyxaw7VaZ6Bnp2AWZ53uUPrH15/76K43ddM87Vy1Mt51lxZtTdXRF9957kc0Bh6x7tlw0Xwy9+Vwb5cJr5pTbbq5xy6WTsQjxyq7a+3wgxWHgIqayAZxhQ2EwKXYySGPrVn33/lNWSzoat0bDorrdlGQMVJA7hI3F4xoHIQ4gFMLisBoX9FkN2p7RNe4q3XJrOwINeQp6VMij299Bu+jyXoML8iMZDKWf/+d7QiCxj3X4lHSdj34Bk+qaYE6PPvxF944rn1r/ZZND5o58dn5a18KSw7rdJOVTma8G2W7P21Z3XF0+POp/5ZrOqre8rpPZla09dR7f+ujD3jNgx7+mFf89oPf+8XPPvaGj739e39xfrXA1rRZaanSdRU+FdI31ynY/3Cu/LLKhoThxIatg8yVCcmDvRYjgsTeuUsPe2AQj1WkqcWSLpFXWpIry3QEXZfqQlGeEfNLe8I6HkoiigyNWiPBcEDtWmOEbl1RxXYzrePZHP0HCRyiDF8ffOc1p6LKPXF4FkNMqJ35SsSi8p3NSgPGfcVjOvHiuhZWzRe9jFI245DCuHtYDqAGvuKcmFAyVYx8/R+EAtx0sCAcLIWoprLkvmTtKfN3/33lYg478/2GdL3IKnj+lkX1702623WLYds6nPX23Ute1loedB8HIp8XQf7J17z4RUfM3Xreve/86jvc644vf9XvnvLpt3/wex//2Nd++Jtf/Ohnf8kin6lOkZkJUkpJfF7dmC/3rzJcP390xjifr+WeqyTjCS+gLkNfXj7t/IqiH8fV/h4XMcVHLuKTPhUMswuqv7ZKGvmRpxyu9XWyoieEMtuULfo4l9w7Xg11d2z3Levx23DzcDn4PnxdMOF8oyQfnnXn9Zee9t4vwRDQ/02yXChxdMEZidAjVEza5OdXMx5HCboPhcU1o2PIjbNnGe9lifTOfwV2MrLnOJkEuG0rQrYGZC0yc1vH+X4m04PF7kxsR4x1rmfgrNz02WQzQa3BI1Uu4NhdpGmUtzqddrHbyDDWR96H2y4fIg95zAOL0Rcfea/3POap7//nuz/98c/+7B273/vNp3/2h4tyL3PPfmypdu6je6v8cGr5xQIXEB8qdZF8Tf1cdtqoqt7So6zXyaLJOK/aUC6RUOCUxJtPrrKz018qxxSzUBbRrgn8FNwkp8pd9zHYD2ikY9Q7Gb33BmtmIzEtZpcVEZgtmVhFwEsIOKq2vOTc+pQMIv17Tt7CVe0JVaC9I5a57HVPj4aUuMQQbt0r5FAnKWZy0FHOi9XUZ5ZSTPlXNwn75a/+domqIVs2oRsMWU9+UlmMAdFrh7nVh2P3e7Mu697kRv5edCBTwNedwtb4cnzSyi//4cax1zpspVnewTEs11E7sqrq6I8yvKXsWVtPfNakQVd3f/LLf/fyl33oE197+/eu/ejKj/7w+aJTQF6Lsa/U2Td+7quK9bN8tGyDrmYIU4STg4RIVHNpkfKiZ5wT4dYY+atZziJx+PNPVvHy1let6c2XmSRXsrLmjGvPJ7JmnVmfC9JfaO1QPfI0eNYe/PIvDw200FILCW1A1UaX2WxKOdlV0AdfWydnnjun9C2NW57tFATQKhHeuBz7cv9+z3/inU5ghhZxxKgilJukmEkIDWF+VKHKD/ZhALqRx642GgT9SMoERzpO083uHmPmcNHP07KFNE15sn+Meuukw4G1ely7GLq9wdodVDf+cnH5i4WXSozf2X5+eZT3dyME3WDt6C3nhZt5W/d9/kN//fM/3vFB937K4/70wH98/Ht/uBhNLk8uX54PRkf9zsBnf3/j/W/7R4wMR62p9IYImPBv0JXJ5rhvKQZRsqyKbawNg/XLl8Ln8KUQULrY9Mj+dE5Hs6mONQcra1odghMyKzXxoQGjPwhN/ePotBZepJKz5rHoQBKUP0GSroWIOSFaU5H5Fb5X1fr0aMYIlTdWG645MMNzpOC0+v2z3vCudz/7EHQ0nERX4lKuZlE7IVNuwThZLQxFv7kYFozk3bPFBIxIq6Nqzoo8TWd41DhtFUl4zdxCIMSQuF2GQ4ryFHOmbrd7WYQG3ko7+V8uj4qsdbTutfar40e+9fJ1ZHflqHMyXo1Td7Q/3vrjA55176e+70H3/uorv/jUe7zkb4+9Vk2GxfzS7KKYX9896kym0zB63C+lZH5hSTfLI1SOr9yUHcxdpCzEJ9By6FGB26SyeP+cENaiABRwIJYgBLylGoffYVZbDwqzZa8qMtcvPIjvaLDnCcq5pHO59rkwvtrwy3ZCyiTiAgohBqq67NB5CR3G7RpoxvWeXvYwm40G+umoETZZUDfh3a+fI+jUFX/L9bE7IpKr7kIrKtGHwDxpAUlGjH4+9N73/77bZq7Xwu+SRlHk+tGARFDU/f1zjOOzfcuLEBX70XCYF3m233OHB+vs+s8+/5fqGyduNKguP/p9D3/sRV5cHVSDo2xwo9XKh9HW1ec/4InPetYTX3Of97znqfd/+nPf+Pnr+WD0+e+962M/+83HfvPud/zoyg1xu6vqIGOzX7omSoUR+8aXQNPERM5U5t/4TtecYmp6VgTk5hWk8UIyTNAGJRV7mrC6X2gE4aNDCsZ12sdH3Nf8Su1TTTytYl84wIz5Dqp8oNzTtg8r2vfQ0wnVgkNgz5SySqGApMY/yvqv/Wsn8jtQZT305Kf+g82J0ZKmMd+ICSs40XQXjsNTRxFdXFEEHxgagalx3SUwbRc/F2HDTSUsuJWdXq2SvpTIQORk4bZagYQMZLLF/FZpZa28uPjRlX4+2Ldam7f84bnvfvvEK0aji398f9J589t/dOMvxeViVOU35fNHvy3fuu/rnvWge7/yrf9+43ue8KbnzF77s98cXfzhN9/72uvf8IaPv/CxT/nFu9712H+h7ttWZ7WCAkvkAZvu975jMQkRl6n8xvz1b5PMVDHjdHZVdYwZ6p92gSyIGfPlD+//ukppv1Twgp5qWyu/owZtAl4DUpLjs0K2xq1YA3dSHR+pk3RDW+881zEU0h97RC0Wi5KNGdo9RdX7eCI/v9XNJsC6hkWtCfn+Cf6y+gmPjHCOD9ab9P9jufwvSdcC00Ydh6l46uHj1Obk7xkfieaiqM3d5dTT00s0XbCSdh1zq8wq6BS6dgusoJZiMYPaBR88hwi2wGQTmWgtryoQYIoik7HpEEWlIBLZ5qaCOGW6xO+0TZaUXjv48Xt8v+/7/oVFPoIcZubRTU0WNtmHZdn72+EIjVqba/L56DQiCWznx6XFq7RkVBiElGIFFhCJ8poYJ9UmsqKXdSRWiv9saFySWQyitKnZs1O9B6dWl04d3HN7Mu8fOX5w9ccdE/MrVucZWfMmffVGwf69zxV8szF9W4V/25Gq1sZEcGaksN3f3p5fUTFWGC0aWJhvVuhwv9p8ZkJEfnKR5LU4vjOVRcefvuy892DDxWYBlN0UD52JUcZfHl13eYBCqSNFe24xzE7ArJLCCVj+UxSjosJ6iljpNZ7K4x8DhpIBnwWrs/nJPiaADzZpNnzuWKtJBtX7/T/TqQbaznN0uFnQVeH7MEyQsXQw4LSkMNIthlT9SPr0V22pEYAm1PWQDGqJ0nuNXjYq4agYn0w7DTQISMSP6aduaop9cJpRQEYQPsB2mr6Vr7jagUFggXiJq0wCQwn9nzt1Pvf74EQHkRJTB0Z6h1vWFoVV6/xsd2FJ72zxykzjwmj4qj8Hfi2cbcTSOH9qaX4tbhOSsje+8PTzh1/evyVz47b0XVlVhcUzxVPdT5SM3lNw8uRJ85HovtKFlpmYzyGTps7qMwKBOzJgT0UHR6pSgtbUE6Honx/rZ3XbqcRYPYaO9Y7ivPeQdQDKHsPETTEPAmnQ7xRtSUkojDItg51AcHDejp9XjF0TLBCBT0jhOcgg9yHj7luk7sMUc14au6rJAMlR4VSKhptjIi+P1uAKQEOusaQyMnihhKJaobfcYuMXI4zxHBOxdyA1QR8QvXyahBRqedXXH5TcgHlOuN6H2oKdsgfmQltHM5ojoUXnGeiRNI1qJ0hQE40FUDzkDjMav+fcqpO2dcjFC92FOd29KYlVbWnxeGldtLTh4MGWhe7xxopKv7lwuKg/kZhfWlpxS46kLU+s27G+Lu+V/enfvFSb+UTZkRMjLVOVUZf8x71vflZel9W+a9+x0YNLPq8qBT2R+H/SHctRgML6jcHdZ61RHO9QslE/RhIxaPHmy25a+hRDh9YoOS21xktpXT4jHCw8BY6JT1ao81B/GNtr4VQjTB2eADWXDH7DiZegNyLwOMQWcEJdtyZLMYq7BYyQoFEw9l1RzVninXaD3h9pFDeFXev/sz1I84jabKDOS/Y1C4ZmGg5E9vtqnPNBiKRkJWiBXq7JpyUs6ClYIMXA5zFwGHQb+OAOLg2HgmxMiFWwaYLIxIou9ad5wWbW2D2EhRm+eF9pUVbVSOsqkOTxP1x1rj9GZqeKWxuL/Lu2P5FbOj6AHX3lXHHxKXc46dnBDXvX7X9u78aCtR3Z206W/1o43Nqd8+67L1Bdl+9v7z35WcW3754dve2iPfOyhdDAD0xzxIJ+jbCmsTEd/zgMlq5QTDf2UJoXsE+uppPP+BS3A0yYduhoG8VL9q5UJllpcvMGYjmu4eQdhYg0y8FUdCrYg0ImB2xwFFbyhJFDrDGckhnEEy4/xBiPfPoHtqJv9qtWVUqAgYPvFCkKYIqOKnBxkUKt38TqPivepovAwKR3l737iujmaEhnPAW4yXC0jcYsV30YPbKvw0OYkGY1tUk2r4MKMQE3JyOgHK3RdijkEZMAPdhmstkkeemVvWePj++q6j1bfG55diT6hPnwjm9mx3qrSp/ve+bQ1vHoyMhwQ8tay/DyfFPSzh1PD87Vv7Jjf/rWrW9deVFZ+bsI5+YbBst9V/9S0P51/pEfzvqLqx37rlyZj/VohHA02rxm4lkDzTZZVTQpBpwWtGMHHPyUFUOGu9QzhLWKpHC0sf8K4yhHBNDjUMII414OhiUj4VON7pgBYj2PzyTC9XwqRCAGdAiWmGUH0i31FqPO/JqwseoewhSvO3gZoYw4TJ0sxi3/LQVGkhqGM1TWzVRLWBbDipM3ikYWJkzeqFCGH5fhLzXATAyQFHRyqsyx6FC0/YvNPTGarpkzOtdo3oZyC3iIVcAoB0luUSxhQlQiC7wgimJX2CQI4tpycYRJWSjs687pbm0tGjjUmzn2s00tWq4qdW2q3VU0memK7n08b+TPhj+HT8lJH2dse39rdsHWvGe+e+aK8Dtvlrcfi/r5xG/tY+vTvy4vLzdnHWtoHT2/87fiFYdPIJ3wAKAsZE2iKHraB26ZIiAJsZHOS8wSJ4IsZvhAgEsxIPQCY4+EfAox4LZGRYxtFjWZQvpgboDENSKCoNW8sCYgodwh41cfoPM57A6DOP1eCp5KozHUIFjj1Qj1xDT4FZS1FxVOLBrewNoUY9BKk0GswnXBAUF4LErke33NSHA/33S+4KHhgW/inTWalXMw4Nat/C+nLr3OJvhOr2rNnXYiO020HYhJZnnCst42GhheoVkBbJOd5X3J7FzQfWqqYSbhrqx1ufYVjeccP7tWZDa/MrSvtzIn2pdj3p1fm53/3Zff3XN/X86JA4jnGy8c3fzy/ekbNhfU1/dEfsyKVlSeOFH6z9HyyV0VP/zww5E8f3djTnHa4sypmXlZkuN7OK6rE3YyFSLTUkRz/v5pPx7ZeclCOOx2TSGDvusB+nh5uFI4FjlopIYYKWFMRi3LQYaWVSODiCJSKUZMY6+H7qedotGoqlY7r1zaE0/FH5G4BqBIqv5ckq1eGgOcB5kFszmsHUEvURmkIZUyRIk4KNDviL3cnyojp3lKA0MQvzkM70CC6m+Lt3FGK0g8Bz3x4D2vebGIywrpSTtvSOI7aoIiwihoPCHEBIjEI6qs4CS0habRMm1E5iEAS0SVE40NCwOt3XVNI/6+h67c0VtaOjbWNzZaOVw47h8bz385c3ara9Pd1pXVrmjdt3t8SRmDT7x8dM+6ifcG8555Jv25TX+Y//or+vPOI2Vtn5cf+aui+rd73u1uaJ1qadzXuKKqjlUHH5M8H7/0Ik4opgmdzIetWQ/2UKqTQrCMaGKYk2uLycYlUebIkkbPOxBSmk7VZddzoWUGG//i0w8qmPw6UX5pSF41oA2kzho0TbMgu4JivAlgbPQrUWbdr5746yNNw1vSBns/xwBTIqmtn+x8rIsDflX4FOQ61MkeY82lRn02KhaikTR9xTEI1KqigQeDrqtZejK+PrCw3UBQ3BwVkRjWhCnuQ2LqXDAWybk5p4W1sZB9YxHaJNKxQ9Wsu4umQR3bHImcwt4ThaVVLlfV4X3nju8r6iupK3m+dCyn8quisbz6tpLa3btz2/N6knmX/48la9LLL79aPfjso+t2vr/36c+376vdHa3wVzU9U7blmWe+fveYf+2Wd/4aOJYzdqAlMZVYmpmHXBzjzkSOv/4tlkX06zO3G8a/RSlBTmLUIS4ZTAEdSEHcJIWZd0uoN6SiwjMcMYpLHDCVtujIs6QR5JruIHKk0Aw806j3F/ICWIGYZL5J8DKRJkjhNeotl1bfhyQ2MjVv/HMmxWgXHUbt9fFTxT/j16JDAZ7RCCCWM4Czuk6T1WkIEF2/QGwl+LE5IMz/INAjFhxz9VBuJyg9ZKMeRZYhhEVeqoJAzhw9G1ed1SLPmrokupN1bD2Fw4Ui4TusHmvw+IOP7S4qKfGP9+WMz91yXUllb8kTJX37xv+o+r4vc47p2jhZntmeW1sXjk6ikr1J6wbrH9uf8V7GC0c/vHvLlm/2bC6N5rgm89u/Mv9ddqTiWNb4H3/5CyuHF4obZ1dwc0tASDXn3T7/qWSikAidQxewHxBGG41TNGq82mOgcFeB2yXCIWnxVcwXDHRGl3eMaal829XTQN4CSIhkPAU2aMkAE4iPT+micAVNtdlpQzMnJLubT5NQ3MOngHCMdZwfxxSiLzWE4rdfc9UcgAMH5yuXLErwrShO0WpUEUZ2HrWrO1yl6kCaEfFU3GhDSnUcf6CrzeSz/jfgrTigOmeiBVt/jIZlhmU+N10dNP2nDRFHgAU+SrnORDpoPBLdcfVbd8pEVTTL5XeZP8/8cSyr0lwyUYJOOv1nTpFr/aGtuZnmbNwmc7Kima/mBZP2Dh7dsW7nWxte+Cb0zraN+57bkrElu3Z9bv5kQeaWH7Iqvp58rrDwxEJLd0Nx48GDK/OyxkFRiseq41g5wdGjiXfZRAtoa56GytTsoUSaDbKSyBGWb7JAfEUm6gYyB8cBZS+do9rC0MzSRJ08QVjdXCAldQ3zusnTyWBEpViWg8ZOYvSGQBGHdcJc7qoxpPgCIphrWuDJ3JM3nlbxayDgg/4g8bDdZGoCtWOibTrupyhcRbGqD28O7ULCE2KnMjT9fRvFRCRaYCmrxJKYDPHno3/OtSkOnqVPx9c6WKzpLIFfprlHxIQlc6NNhDhFDPtQ/NLjhf6+rL6S6Oj23NySsbHS9dtfPToy0TvbGjVXmUuzS+qitbXZv2VlfbgpEE7a+eFLOzcMvvJm/bqnt77w3Zb1Hxy6JH1j5pZHM7b9umnj5JEfRlzvFg5Ubs8ZODA701K8ohJMd4RGlz/0Q7ZgDYk1YONEzsLZZVmEkMdzCcaUEjHQEL8ZmIEoXG6hPDGkCjAdBE+HU0I5EbCNrEKncrD8y5SmDzF9qzc2o0oZiyJ6QVhZkMEd9nnE2UghnhCITLG5GobGtWuyIWUJlgLipmRNPxfACwaWYVRG7qCWJEA3Qq3ylExbrCaTTiLpvlcYZqwOinYzBN/LBFxCikqzol0i1jA2zw6MIPbHsRhylkQ6+E69f7I8H4oVN/RFzX1m86by3c/3bS8dlV/g3VWFsyCMXOZd28ztmRXt+elN32+JUx2jST/9uHnds29uyNj5xnt7j+6pz3uh88expwvufvPhi7eUZWfvyj6ZbT5W9dj9Dy80zkJKXpE1VmE78R/pTkZeYGUiyQRoSaHBbrt5iEtOIpMJ1K6Hh/wE8Id48miGZ8d+4S0BgiJEjGhEDkSjqEjcUthIgYeCLOFx4wmIVfM+qIBkmdEgKipddi/eBT0E9YuN/BxNxDSdDDYixF4NJ6cRcwGFAhhBsHvbBUUwwRzIm1ijzAnongLoWYFgi1yyUmDgPAKKHLMcWcqaBEwhliYEccRYIjVDjGnx6oBJQPiJ/mUiBqy8NHTqwMLYV67X734i03V2U1G0MHN8e1ZR0UBDzmhpND89P9Nsrposn5x07VgbH0l6fMNrj706uHnjY3e9s7d+cMfgzv1b30vfG5Gfv/DZsm3p27Lae5/vzpcT90NcalgAyVL9y5mwDOYuLc6zIZUEYyxv0TReESQaxH/4A6HrdCfV7KQUgQNGls69clQyUqqhLVmpYSkOA4rAoqNTpCCBHAwYMZj+q/dNG4m9y8Bb1HnHWY9xqCelqeRwEDSLw0KwQBHVaDQhpDCqYB83LaNBspYYaJI3dswx+p6WRpt4mniFyOHTJhMRwUs1C4yM/x4OV4ZGHRAbLYhY7iIR4iTokTzGkfz/RPJBFRJkO0JrTVOASCWrDX4XMUwLoU6YaG3yWmKmeNRl3kPvzn2m/lBlVbS0ZCTH39vb21pUl5uZXzbZPjmZm1WWZV7v948kvf7S4998tOGLV848klS/862thw8fPfrNs+9/f/UtH288WfbZ0x+UnWz/oUIN1y00DAwXTs0sxU/t+FTW7KpuwWe/h/HUKajyoQlF4+GzZHyhzlAHfgzahB3YiF1qjhs5Q1OAjKEARjYoUp3LpdHcoEErSDujTGtS8Np+A4PMTBCixGaqDaqbfHBq/gOKlZrhQUEmBgnyk9JxkAIbiUTBTEGpmiGyBrGvUw1BWAO6MdgMPbfGDGm4Dk5XaO/OZi9NFHDgtrYY0bcfJUBLor1Hc9KejI9UotiVIEesbuuE1hZCzmqrThtLezoFkWhW5xAvENZiaxKs3sTKwrh/e2feM09Uxzdtr/R/W9rbV9nXV1q1y5xbOjlpdpVnbXJVREtKt/uTMh4dzDj86o5BwXTD+5/8fMPgW29ftHN/QUHP5v2fpf86mV3Vbs6qevdI93DrwMBw9/FDKz3WyPczCYs34POyTAdDsU6r+8y5w48wHBor7sSkcyUcLShOo3tOi6hD8xQB8EP4KfRczFOdmGqap2wO/OAOiXYYrTCYADbp9x63LRQ04FFNyvU1CHfHhE0kEtSJQ7ojBSsuUnG5i1GFfgOF+dflbEtL++iFHcH/LZaqEPIA7VJ0LBxCvzTFRFZrs2ICYerohQ1HN+lwKvYO9eclrgucsCyq6KzWhAQSuYN2AOQLNsEmsg6w2bg+wIMumLdb7N7iBn/O9vyv1m/PdI2P18WfHyt9PrO0zmV2ZVVMtm8qqvXXLubm5+7qcyWte/3NjJd2vvbY4TcOv/NR2+bBmCf+1HcFT6enb8svO3ni5GflG9FF/Sd6R0e6R3oPrq4stf7R2HhwBaS0m9fQzi3h+cTptOs/5ZqBsBFTSuBVgdJDC1M0sdNOq64eQmd1MAZMJicY5QCFlpfm7D/LGaabIJ6gJN0Kme7nKAnzBGtBU7/dEIsTCteJaUTlDYY9Od/qKoVOZ3dg5QE3iQlmpQQJXNPPpHMRwdSfZXTwyTYTh1e2ediAl1hUzSmwInqoFNc4LBvosQzG4umYKFDyEOFV+DqaLU7Nify0aqLYITYtmgSRFmSCJgExZbVxKWE/dw4JGTXnPlNXWtcXLemL1mXuznpi5x1PZOVGy9uz258umOzLMmcvZlUk3f/yqxkPfXvl/RvqX9u89829gy9v/mLds999l757fcFnW07Wluc/v6vc3F5ROeDP6R0ZAI06MDIysNA4M7OUcDssCbDXSysH/+kJui0aJBhOkWHyE8MS1A8wO5LDg/HtlVlMFlg2MYpoxUMUvTpJv3zIYACcVWjJECGKjH7HwQ4ZNIlpNSKPJKMC1XHGhDAiM+cu7TcgZoDrBGNMX4EgB+lwjRcNE+fd3EXgxMEdr2V1AYPtFLuCkmpyEFaQeRaNcu71orWgtx/jiaH1SywKzzcFFRsr+2zyzzW4SCMCXtjWgxMPBHjf5hSCNtm9MrH5eEvj1HB3UWVJtDT7uW19uzDrq8zRzMzXvbd4a3NPVMCXmF62a1dWuys3WpH03kX3fnhPz+Lr9a99t/ze5s0f3vFN3nt7969/4dmt+dsmt75z5YMba8vKs6KFlXPHekfOzSCehb2t3ScWDhxoWSlekkX7/OnGluJG6H6aMq8ptN4b+4PVGhY9ldHsTi9GPLo6GqpBFxQoJO6hb3pgXQkAsnL4ApQUDolt6rBgntIS20mJ/YK+43i66P4UgnaIgJ6+MSY60/TpQYkEmDbSwQCcw+mBkHbG4H7BzOlgWcSUYa01jBgWO8V5gH1CYLPW1JBQcxklanyCUdkYMg9hXnI6lQ6VlcJu+YFHM/aorCARnq9547gPhc52nbaGTV5V7vmj31DZO9A93FtVVJGZ+8ym7G1mf19RyWt3b3fVv/JBdnt5e9YkBlLmZNSc5T+WY05a+/yeR997rX7d4XU76p9PX+/bmf7sa9uefvOGy7cU1H0XFvsfMqfnnmz3T+T6o8caGqZOtQx3wyTa3T3ccOCfxpXiRNfczFTLwPGplSV56ZRq4THWKV8ItPIyeEeOkms4oohgS/WuqSl2GZ2g5po5wGzOjuo36k1X08KW8IQBHTjhdBJcm4IejDndZg9gyVbji9gfw5QKuGTCzwrRgrdGmqGf0x1pItAC+GHKgfknMrSeegA5JtPpIAkJiBs9Pe1BHyRCUzhANAuvEDEiKA6w9SIrkbY2n90tfXX/y2e/DQ45rAqr1tgEJwY96SSEFzoEnzh1uquqqLKuNCenss9VXpKZuSnfX1m5td9U4ho3o23m1gIp+bdF8yf9tYWuKlfS/Y+9nvHj5ryX17+//7lnC3ZsWJ+xb/s3L9328A378wtyN25MLytLL7jhwU1flb4bPVY4MvXngYGBwsKBBsCGE60LM8vz7sSp4oWB4caGxuLGmdFVVdJYACUwsyB7EihhInEYDU5Kb1xoXwSqQiDEExOAqLaMDJUkzUKrnOZxw9CmuzFok+Tt/+13AdeLNvwWFkESqYxKkICmwPfNICwImFYuUBNiKCKDtexETjIINnJTpH3OCMvaJjptHWG+hyXE6iU8/Y8eWi+B08jyAbATNjfATUkQnG4evbTnDUXYI3iBoohF8UhOmZ0OMTzL1nzYJq7Nryy35pRWVFWN9/VF+zbtLi+bNK+LPnHGXuLfnT9ZW1k7mVVbVgHOrrzCdczvykm6/6UvHnvs3ts2P7oz79mMDRmDL+U9W79mC9Rf9HTZ1k2j29Lb80/eU3LnW+1HoseOoOJbW4dzCnE/UTQ6PtvQeHDmwKmWA8PdI93DA60tXwU+n0lIimJp4jABppt5xuFGEdF6v7RCcBeA/H0Q7U1GxI2FgdKBDkG8XDxOGC9GlZ1mdQjAGycs8QkaeUcT2KB9GoihDtnEOkP13UcZSgRI96TFQ3iTjh5cIlMi+EAr7ZzolFQdhzd3wTchUJg0Pb99izBhHvHATdiA7fOqiGFFBDVAA8y3WQOhkGCZNlxaI7J2h4V1otVImmQPBmJ0/ydDNYIUmDk4e7zyiKvkrcezszBzdmc//4b17LG6P3LeOLt738Z2V/4Rc+2usv355bntrix/b9IN9z+6boPn7Xve3LDuwYue3bzjl53f/bbBe53n/o0F+e35W7PXnax9Obnm8uzou0Xv3PXKiZyiosKqou6corGxkZGWAy2NjY1I2Jzuohy0gd6e3paZJbcUWvRxLLnVglo2uNs4BSPAzvsoyDb/cnQlQInXUdju6LLr3zDW1HbMv6k2AwaVxGGyJEQDQRLiWjAHBdRAQBRQHI8w04XFI/MWlUoyL0RNN4UudXNtS7MoIdoOtbUtSTM3bXqEjq5/FpZ9vt973/u+72lM51wXmQAJDE2aUEPC8+hwyAfLWfSJGJiVaoD5iSVv9Ef3Y28dh2giTJEdBxUBii6E/7rBjQfuL49UymiECWsWMIPjiVhI9U4GnAoGcmkLamw+HQuXLUQUN0Shk397mFEKJQAuQUyHL3eTEBTSk9I+CKAeUDv2z79YrE1kPfqBa+goD4cMwlUL5De6yRB1XmY+iQCaZ/gC88a6vJtfTH2x4kKHqiq3tqJYwt9fMo1wMxQK/mKlo5Ev2VpTZzXy+Vm58qjXUr8/9f3JZLFQOH36oaIKWl48W1h07uNmh5MmU3GySrYyztLGHvipxfgef2ziaanVPGKUSj1Srwfi90nyhbbe+d7tbanbrbUuwadtV+tOiEhU8s79oYx0exLgTmhIlG4RAnx9UBPDg418EaglCPDme2SwcqH2Q/IhJAwlBORlrBKDEBgESqyyExIP6A88A0pmNCAxcBR1Y4bshzWAdkSi/iHob12nlx/DdMMDMNDBSmNjx5B8pIsFiAhKg4WBiAiYQUZ/JxLzE6xVQgPCtN/aDecead/NJzDIINeW9uMiszrA9u9FTBLcg4HkRkstsQw0RA7yCHPtoqkhjT8wbNKVPJimP1/DzKmQqGoVWcWSzJSRyYqnr8CsI0mtGJDwqyT6r1QSRW6uMerdhLjTr6W+mfTm6cdjX0tnUznN7DJBvUwvkMloiiqBTLD0XW5JmSWLn8L/baLJbDZrl6xanVurnddal2vOx7ndVtuq2ya1/q1bBSbKa2xb84WwyPf+S7CZN9MZAx9FpZquqeuUnYAPKcoZSjSCAjBlkLDQm8JkgpLBW/ieSIgs6KD9uFiYBOGdGQ102dAEjhmKhQpMRMFUiOsEtgimxk7YrYLcjcb+dl37NRA7SmwsA3AuZDMjNmYqFBm7MefOtENa9ttRWDSF8ROhQJ1ESJ01Gh4+RJi4bMfx4HzjRQidB+HcWEZiIagQUCyKH8KyajaIYM0MMVh4Fkl0uHtursvzxdHCUOw1X6lWslS5jYpGbj1fXtjA/JhW9x5t/JojxYpMDRff+W7FKI+KS837w/4sNypO/MuwUN33pkPs0DvjnC1OfQtNsFhxvoIjoQHyl2fZ/ubXGZfqlmyQnVKze+CCW3c5f+qc1gtHffVv73fc97RW4LGvXOzxBXloPzIWjSH3b8SQWHYWC9OuwYfoFd0YXj4LhTYM+g8L6hlIJKwdQnQ/jwINPzZGWZTNhrwMAy8AXQNoH1gfW4fJG6WQ8EQRNj/fzrzOTuBBasK8M4QbKr9mMBYbmROJGCRmkEFEQEyHYMZgEPttFiA9yGDohEONAyMXECAQuT0oDMil4d1yJg5j+QSF8FEsaHtHJ5ECz4HCM9FhBOGRlZvhnaPdvTBPSRhSho43pJ4iWKZ8cojTKMnKzMhVpAyPN9V+e40mq/Lrt79uOaKtSGSNKsUn+QsKeXVUfGLi02mnkGkhcExUblH9N3nnqdx+cUVRXl5hBue8oCBLxVcV177N/8H4nlneZGsq7DBrt488S1MFM6ZAKxgnvFKpV/7hOXaezXrQb+p1914xBKEYocA/5PPokcUPDAUfE4OSnrBAm4I/kNu7QcqBKMVgQ/kRiNhVQwZyitV+67Ux7VgKJbazv1QE5AWc3LGamxgxkQ3ecc11WArIkCgRAIDoswpiLOysxLZHXOyEiePB8iGgNggsegwCNwwCVZOlRJFIzpV+0Q6LQSCxYfCDM1MwUJ57JLoLKWXMEZkIHWUQGcH80B5AUwICrxJRImQmSg8FAgfS1k8u75bP5O9sanbWlr7E3X/tQGWjhCNM4zdWnz1PU9XbU1Z+qIIWw+HI5DRVFU0hcAgUqqi4tNR330xrnjudSNVzi9gFwkQxh9qidnBzmkpkHEnVj5xclTyz+u3KlIaR3+VS6wX7Jy9ItbamhQGPR+vd1no9Ounq9mws8lOBbVVbszAv7fUY9ojdWBwjApFY5Bhs6XW4mOjO3zCszuiu0sh55tExJB4mUlwhB8e7kBiAKihM/nPtU5C8OBxMsXhIPVifEOEw1831g2sLD08BJkQiFGMwpB3sQxuHdIT3WABK1+STMRAycG5BwyHxAFEQcKU4CpZYLsLaY/JRLOQjgWB/Snj2JwRRztgJCIGJRWC2XN84/MnVFtwYY1KYTCaKkGBiICovf38Q8Gg9G4y2j0stLI3G5/Mtcac75JWNDYL6cwMSaEMKlaC6GuDkIo0mAF9NlUoikcm+ylHLot6/5dHnU9MSL8Rz37gx6s4XhZ99xE1L1cuc7LwGdfY3CkeDJIdWtaL69fPclM/5HxsHluxTOU3nTCBI2ZakVqvUu+3O7tBJTWadEZQrj83rch307MCJRyP1HRxZ2Jh+O4ZBGerCgEKORod4WBIWLKCYjUhLp+Bnxr/FR/4ijgSpNoRAg0cY+Qg20ogjGu6MKIaFklEUtvgBy0Zimt+F2q/XAD7ARBQzLMQVHgafKJfS7QhpkxwKhgg8AoqD6YjJwhHJeHRzk0ch4ik/HnXi+yGIOHs5LsIdEdBPzi5szXu2XQEyOURUUgBy7hKVofD+7rxuX2pb8JrKPEew1drmcs26V5tScmgFFRX4BYGak67I/Fi6SFsU/N9haByJXJAt06urGiVRX8z8ccODRaeT0pJPTp++8+d0B7V+7Fsh9cL5Qo7C6axaodFUirdVfJqYX/m1KUv+t63u90nTZJPOvGTTSbVGrXbVugR4dFVq1WqlOq3bffFM80VDTZAeGfbAii5CQTgSieDI9sfGThAikLJzHXuFgIkw0/RdEqN8hoDEfvbjH39hCXgNEwHIFOF6garUIJ0a2ObDwENhOsAAZU1C4fEEHB7WKsixmrEapFsUKZDjRDIT+M2feO2AzsENF95Ugr8UDy7YSAqjCE9D7iaxCMPwk/7LRWNzzLlvm7uAQEa7L1/18JFu0mZc2wn7Q/lKCvyzjC+m93u1puyFyexi6cChyebx7G+3ut11dea6YscotdYpo8l+sggUxZzEvCx1FY1D+7VRkTGgcCbKqPUXiqJO/vbY9A1PxRXGvXnisdiPUgvj2dRvLrEFhRxY+qjgOGVVEvgmqPJuP5GwWCRLsb03OWld/XzS5NHte8xWW2BAazVKwd24YNJC29f2eudNl778ymUIE+kMyAGGMh86fHR5TCkyOATg3DKxDvVQeReFBDlHoWMhjzBAAHV90zbPvQrLoyAALzEQTkjVmXY0lkKAVhIDhRQiCniLEhNNgrSkiGYGMTH0PdbE6fplBBs9NoRDLIOUqQfolhDv+CDg94U3g0FyiMVj4rCDMNfjwfCFowz91T+HUAhM3PftxDEEpAXCRqd9Dahh3cWe1sDBTg2DgqD9jG5rDjd7YwkiKZfqMk0jI8YR+Xt1I/yVxpzihqPaKrWM46DKqrJGD88MCGgygYBTWAiOpXoNVaamnYk6+ULzqfgXhcKEN7hdn7LjvyoUi0dH06lssaPFmXp7WrpsRSHJUJ1qSj5hs9BKhG//ULkI44L8Q7DtWHW2peNJo1n3u3RJq4N0NQMOlX71ZOmZHuBHyDw8A8QHLEGDoRwxKBFGhLGHt8AgE6NkoWGUvokiQQsWgaxAa4j3x05FaKBICxns/r4z9pNvgVYHM7YIj6nBgtAbqa8AZ0l0WDsPkXggEHQTSa/pZqkYgFJQH8njDOIeHazAm66eiwcX2wzgKAyGeAQ8UUMUAREH/hmARIwhDInJm5jKBwYFhyOLwj44yNq8PCu8/sBmDRFPJx4HTEktFU2mpjq51JSSya/e4H+2UPlD1cCKjFZFa1zhcNQCZ+OoWiIZddIEstGVYkFJerpezcmTcfMkgqgP4k/FvX/yUnzq6fRkapE4kZ3u5KoTU9mFZ9XC3y6fuvFmPV8gyWXdVKHIPccfWX+7um6kMuX3hd+y5TDQrhZ8cbp28j3jiBTmeaPRaNNKZ71Ly4Eew044yFNOaHBIOUJSxnRr5sbLMUzEguFFdFjM5l3HNSiAHAoheoZNgKZSPtaOgXCCarE3hoPyF1tTA5GFWrpDByx/5gwQUEhEpQKMA2WCBKQxXIiZePneiatwYCFhYfEiHJ5H9B8bAl6zd/5ib+9SAF5DmNVF6GbSgaPvRge7IrIRjAiEUuwQnmDBDgJZtuX1WqUNh9lmj27r3U9DeLpm56CQ8RiSY2o2yflnTyS9WaJqzBLAskaKsznSw2sVnPNZHIFTzdGrM+50ZpTRJKMVFRK1KkNFS8l0CKISkuLiX0o4lfT0G1/05SX/cTqZndyX/sUnN6f3sdUP3z803QGbCgr1IFO2aOuXvL0yIvm8rrqOX1A7aTbLbQ3PCE/+XDJpntRZzUZrWbFRavXMX5xtNYB3b2ftzy48fk4JjukYO4tXA4eJXIqSgA6J1pRjyDvQTkh0yMyxu6AJ/R+8sYqP7AgOPJnQZiGp4DKGXKiBtJ3SoLxdAkpBUZSE5neikVYkOkPB2rvK7Sxcp4iARtgNAnhjDC5X7wKgDmvHwbz3YOpgTcn7jczQEPFMClDzg6WAaxESZLMGh0M15wtaveCk+amCP2LUel77o+Ensmhnd8v6zeULuTCyTKZ8UfN49GEddJ1FGL4lNP2NUSfZfAGHo8oGGc6pbrHs60fVVc4GgUC1KJFXr9CqiqNeOZF28v24T04VnbghWRgXH38yUcjWN9+xfNbRqK/4RHgho0N2Pkf20/6vComi8VeVOfvt3+uEDz3/pjzCVF9S1nScOK2tM05apUbuhdQWq7u3bODIM1/4BQzyx5tki+inWMCZE38OQhEkt/+GkiDNlDCOY2E6IoFvhMQTIYCkIwRQzOW7MH/hAPAQ5jQUBG4sIrpe+wXQmiQ8xJLAI4I8R/jszaf74V7gNUnYzlgCa7k54ngHXDlEJIevuKCAu/nb3iWRdnahuXVrOkzUMMDrDkSgshMrmioFQhFggwZdL8W/Jsy2jkhNBQ21YJC1BqYfeXh9fXf8yDM5UCtvMsLcUssZHs4pyf1B1bi4qBD86rwv+YuO0gKFaqVOLlBX0PS/zdQ79ZxsahUnR71Y+XYVv1GhiHr/laSTSanD4sTxF8SJ4pb84RvT05OF9Wdb8hTp1DxuoXrUKdOXlAicWVWLzkWJYjG3Lv7ShcTnixcgoNO3PnzNB02TcvOI1awbvq69wWzVSXVer3eKuQHk064vJBJ1dSGgRK7DByKRt/xNf/nwmW4MfW9vrJ2EAaCJQSLy7P+Vs33Mkk8I4XlBmP/xeOhX+YSNm5TrJAaBzuMplcpgEGDYl1d0dgoGazmsQZSAwZHPHrPDoD+Tj6XYLSGfa3bbbdxI0QLsmN9qm/VofEFlCPBjj98fJBOH8pEzl0oxv3WDgIlQvu2+1aPTFZvMtUsZtasXz0zMXFn2ms0ZS9lLHRsjcqM5S97Y+Kv01zoZO1MxKuMI1+HXQF55e6USXIcljfuOUYeaRlXT9FShk5OZqfi4pJja0Bf1YlJ8fFpcakLqR+zUuLTX3zz3Rl9aIpVN5XKhwLIrCltaOjgZaoc1W+Xk7MtyFxVVjT89dt3e3RXG2pHJyeYzl5tSUnQ2s0lu03Zc0k3qbFarFgK6v+YP9wTagL4rtZRr8PTrIshyiDXO65jb6BhG9yiE4DqLVQOnD+VZJiJeFzjNMO7ReUpeMOjfIYaCkI6E0k4GfRO2vr//8Puw72AnFETXr6GPE0Sa2GuUmog0RMZrIs6OiIbeSQwFltxbOq19Z357e9ULDOJsD7R64GfnXS6fH5o+gbhByO/ugr1vIKGm7hmXe3RNmWVNqS+efFrXu2aQjg1kTo7brCOmAVjH0E7+ULAAgk/dN+vZdTQ5R//prXfYs2w/jPBVuebvwODlbIGQUtlCYgUtE1pT8Si1TB8V/1Z8UlwiBHX6VPIbqWnpffWOCn26nvoNm/0jl1t4Vs9udnakKzijHJq+8dfGtHRFVWB5av2DgtpMPnwHJ638JvOCUbdVCXBJPpBrMk2ct0rN873gJTnS+ZVEyhQaIS+gu8MNJklGsPv6GRIWDe6SSBgiI3TcySMP0fE4upKi3OMpj6Er+8MRvQ/CGtzc4wEuVyr/SqsVXoKIBJX4mX/niBQmHbVgmQgc8/8peQZ+EIoGMxjccc/Gc1Kkk9vQtbfdrlnvbOBgy9f2Sdop73wAZKAQ8ZhsIaNkMiIiEkWdgV6PdVVqfkNYNuUfCPRKFz5OSZGuebzakbrVi72tUuOIalH/2ULrgvTXKppMxk49W82XTpqLG0saaepRR5+4vpDdx4Ujr1ZwMhqKMoF+j3op+enp1NSnEuJSU8VPvxr1uliYnp4ad6LlTWrRm0Vn69VUaoujRe9wUmXF33GqCybecVzgZ06WZNZmZaZMygtyJyczTSkj0pEma0rdtk0qtQ0Ys6UD0rajsH/tYG39Yx6PjCPXDDK+bybiI2v+cFRniJpSpcjOREDQQb+UCdsBzdAJbf4QRFC523IeVP5wKAwO/wiMJPqVys0/7Ju7rxjWDIDC7DMWIgHUUqi45UxWN4oDcqUf85cGIUDKu1zaLsySZ/XcvFG37ZWvQm9UHvTOf8tiXJFK3Ws9ARARlSAXovmY/k7y+EyPR65dXXppDqz4OdIU08dlTWZr72yr1myyeg2wF+P+uqo6Ze3zf/5ekXA4QGA6ivm1f69UyQQKjkzgONucQU3eyCu64XZOs1nvLIq/88X0qDufuvPF+IS0tJOJ8cnTN/30mlDc8sn7CT/Hs9P1bG76Z6fh6Dud6pO3Py+WKTicgrlvJJwqNe07CQQ0uzZLvpCdMlnArzPpRmrPZaTpzTZYXNrwHAFg8o/7jnzj4BYlUuz4XcvDhxocgYwhIZCbkfnnsLz/uD1EYSzj1s4wKRCzndBOeNPva42u8UEmwps/HJ4IHET2JsLf3nT11d8aDAshUKmCe8dKSF5lRFYbsyjHu5iWmVg8cOvNoqDvIphgjPM6Q2B1dXsbhrXZb970BFzZ4+NbS9LpjdkDg9+3uRlqz2dimKL13/Z7Uw6zjbaC1+ZmOooHsmpz5SadVdvqllbUv37hYK1tY7ZysfptADRvSyRqNW00r2VBlSWXCNTqCPRUs+udLSVUfeK+pYOa4RwVv18ysxt15wm4JSaf/yguIS3xpec+Pd1XdJnJeDWNW3jmqRYH98030tOdsrS5wzfiHFWjMgVM/1VZApWiojgztzarYfjTF5r48rO1phGQWPbH+Waw72o/PtPb0+a3H3uXYb2ORCJsLOP6lxkssC9N8MbhayIGfOJMBoVHQYm4GebV4+geL7Dl9/nWAgdtPYGLhp41F8TUD/8jw35b859h3+7y8l9g8DsCHdW/dxgOH/tDGrAe44lk3jEB+DheKYXybWBC6Tf0uueluhGPzb1tNbq92t71R660uty9Vql0VWsGEXF3zR/omdlTjsMiZ3tvk22ysuTOl7Iyc0oyClTF8kZ5na1Jxz3xUkLqs8tDRH+rUb5YXfW1SlAru5xF+66MMzpaQqOp02Ucbr2+qI/tGGWns1PH7M4MAfUC9Z180bmoO1NP3PniydSkp09CWzr10imx+MOnKv46LU4/9cf7DvYF4et9QuqbRe1dn9aPytQ5iTInVeH4rraFK8ls4BY0fSW6lJJbNzZi/Nz4+Wx7U5PcLAU6dHb+4CBwYHD1HFtCdJTcfxlllMegaDcBZQAmx2IJQKMx+3HQt2dAwpmgkA9CR/62jw99Bt/BRd9OxBnp8l05Z9D2uHxt7TM7Ph/EEbQqyK6t8MSa32fYAVUFKYUehw4OUnBIBD9ZsIRQ0DA7L982eoDXXtVarbBAoN2ad7X2gqLg0QHLYPLsz7eute0ElYe8zfCadamOb6vouulPbnFmRobsfVpO1opKIvceTmfbGZu7yvBWQZVCISsR6MWCMhkE01Fff1ZApX5sysvRj4pHCxPTHWKhWA9aEVuQnFiYLtNH3Rl3+1OP/nwi9cX4pIT4xLi4xMRmEOiSxclx4pfShGruj2/Ui6l98KZvUVEF36udGVd+5GQsF9XWThdmpvCr5Ll8fkp1Xd22UV73uW0yRWvddve29npcPQGXwV8zrqQjD3+Pz+dRyPh84vAwrEBOXyahIPkow6wwazMElhc8ELh+GAEOXBC4trV33h++6DMY/G1gMne1+bYgc9sMcMHg87X6xgNrbX7gL46DQU0+Al1IA1IF4HxC15il64+P/a7ZAZtW696WGidhMC/zeL2u2VbgMzxSKwT1wANgbsu1thf2H/fopMs2Fa1ELrtQuFFIk/Az/hquEEhUTmArxuA3eATawnsdSR0rHEmG+EQalSZwOutH2UX11CJ9GTc7wyEUnk36iNqRligeZVP1+pa+yATkjHrx6VcfTLr5ubc+THg9IeFU6tMJ8aeAvRMmJg4niN9/9vakNxK5nyQ7Cou4Rd8WFXJGZUmPJqk5G2WKbElWFr9WVd2kkqkq5Xz+53V1le9JbblA17i3ewO9kKNuz+6epX2oC6khMvJB7QIudIqO+6vzXSxQvyzRZmh/xxfeIDPCQTjr84aepbU2CFqDurKowWXwSbd8hjX47OrxtV3sMbX5DD1wd+9B22+/+fxrhqBfyetWIozOQR4LbHAkOp5nFwHklI81fJiY6rXJc7NN8gWd1Ds7e3EW5C2pDeKpPS/1zC9vHfh8hq0r+ylLWdkZVAdHwVFnrOSufKeuqgLcA+MPjbP+WM2kp7f17NUiAW3U8coeAnScXka9xIZbUVFzvX7UEZ+W/v5uclFyciFbL5SlF1zqqxD3saMS0p5+puaV55NeT0pNikuLTJ+paeK4tOTUtJdeTy7vf/bT5D9AARX3fcO+7BiV6U+8Hv+oGPSlvAZaxqXa2hxOY9nYH7krKrn8pRNfVPL/1oKIZNS6vbNul3fKWzODZfSDFIeCDRA3uPEZCBDMzu6pQYLozOFe6NOCP6Z3NoMM/56hpxUScMvga21rO4+9aXMYYtjaBjB87dsrBp9/aa73qM0AX7a2ATAPQ/T9gNPJBHBIoeA9pA9OscjoFHFzzbW17S6rH96b+MpYuSIRZNVmgRzrndfNZi4ZdR63x3pgmtd5l7w7BrO3V172/TlO0bufnueoX39R1iioGj3ZJ6F9l+Mo/C5TkN8vUH2cWZ3BcVLZsjfmfqKCR66amijmCuvr2UUN+jzhJx19bC6bmix+WkxNT1ezz6X/x9GVB7VRR+GMx4DXGDPV8fpjq+K5Go/u7uwaj0VW1l0qLkkjTdwQpqaALUIkpgYQFA/aQCilkE2smkPANihEKbUYbFJOoaVCTRVaY52gSG2sYKFRhqoPN5TQpmXL4x3f9733fvg7CwQZgqDyd7esQTBW89U7T1M4i8lRjOSmOlMxHCP1FA2fQqCuQvw8r26z6t7/pBL7pX5iXDeh23BqU/Xiz0U129Q7N7buaHn+c+L7nd/s/LZq99wZL6C3KFCS919/9BOQmB7c/8WDzz36wP7Xjzz4wKPPwWFu695+/cs/f/3ujsteWYJF0ukExDWUG8kCKTfpbnzwS0k67IYHRPmhRTC0WwqAR0HUezxu0AU804enfwUoBWX+oYfXPbrvzgdfeQ7Wr35NxJIgGRrn77n/oGVHhjqT8QX7agsLG2DQ3Vuek30GanfjWM/OPR1DPZ6kzWsZzc/JZh78Qm1KHTgRadqkU4hom67mVF2dT+3Lix6tDm7bXJpZw8CClprhwZeAKpYWnGqx1llF0VdH8zQniiSEs74eswK25wVR5GRKjQLJvWdWSaLYhfMI+KfijbvkpH3yXC45NDDFOZwGs0p21RNPs44CJsgwp2+/8gLhawnWFeuspa2Nr5bs2LB585ubj2XkNL43tHHzN10ZINicgZ3FgM1jW7ce9N4Lr295e9f+F/bt++SL14Fqb3kISM9zfy4kLi7+uvzRn4lf3YmoGxRwj0eKx9yRUCBgW5I8h23JlcM2SKawG7162eA38N4GyfNwYryjpWAJnsGmL33yPBydMGPPbdy37s/DMajtZ3oaWsfrx2szt1mPDEwUjOvyoGgvdZW3vl9RlVNR3lU5OL5lV080Kkk7Kza8qTtlrq5Un7/nkqWmEnHptecFoaQtyJ9W63S8GCyymoRgECcyg6Vt6rZgaZC3TjC66gKDwOsYmhEEatxMiwrEYKcw2p+SovHznEyVqlAgLyMIgRKKF0UWnZ39pP8unJ/HttMi1ysa7Aa90kyl3iUK1gLeVMc3/z3vKrVa84tLTxVNqI8Eaxypnx4r/APGojZ+XFug3Qmt5GxtpAxSv3excf3Dz8IY2751W7bAGCc0e195+MYHn/3khR8XExfhBwQtQBlKJMBKHkkKwDyU2xOYBtPaPOGoB96dG5y2HYaCFI/YbAG3uzUKIZ+ESB9DK42bpuECvpRIvPb8o7uyxpZmPlr4dWm5p2HJWGYZqlyq3Kq2WhmG9zv7W0xFFUVjO8oLOnIqRg+MWsqAznm/9US9luyaWtMpIcjUCY2Vpb/VmC480MwwBT7BqjWV5gTrC/oK1ALDNB86EWTUwU3BtmBbS52f0urxKYHmfRpWT/Mcpdq/vo9kOYrQGxz+0haZRqboRFLk6JNZTylQxDCQih987UWOcuDtipSnEauoF+r2ffJlFs4L2nqrK6jdJjgK4I6+0lKdup06+tabL+zfXPLbxiawZ0aV5bszVQ2vfjAAop3HtvBzYstDh84NN0NP4nGo4vv2f3c9JNFP1o19nrQlFmKNy4mVxPQi2A7CGEp5yGwJBKSAZ2s27OvabNLyHES47TSMSbptyeYRW6RlORaFPyp+/tIbvnN7/kweji6Dk7/ywoV3r7v9o1de2hUbGWqNFJSd+WHpwIG8DTqfydTmNw0YmBa9z1dY1fD7ya7dka6dVcaGggPGMm+hOnuiyaQrbWvbWvJ1SZ7vmFqgRVGvZtT6CUHXyVgFF79KvDtmxTaoWEG1TwCUQ300xTdSLUE9MXwer9ZWM/jMJM7hKlbz5QOf6K2YjMdSFIhc1fsUkqJCUvEhgwrV9CucOMftmhuQ07ToFz+8/YUhuJXfLxaIfJ2ZMfkKTCamzadbKdrQVGSq/jrvSEb2UFFO/e4doI2UjX5x4kBDKNbYT16AI1Bu3gIj1oeuf3jdg9e/v+/ZRx9//aF1P/49OLZw8e1dCwuHF4GESB5vRIKAH/17xgvTkNLv66ug8MxVxQIeQEyx1bAPLT+XtBkfHIsCIOheOfTP53/bps8lPInpxN8/Xfzyz+YHtuxfsMV6Kt5b6o4tW8q7LDlqn58vPSWofaCR6xvNvq15rRtqCn3a2sJtoxtQLLtgYrx1m6m+JLtUBzp7ja40X1ALw+d4nwCAUhCC1T5emJgwr5XroVkBqdFEczzD0ODxPC1SZqED33WaN9N6rcOFUX6M4mjFcAfXcUHmPIkQWbhc+cbeXrSTQlk6C2U1NKfnci+cbuewYlrEOw8arKLAiIKJ2T9VPGnd7fNRGKD7zEyTmfk6r+brvNqSjFdLTh1r6io0VlkOHCg8YYwkP7zp8x9e+Wn9C9Br/Oz1jx56BkRL2IN/dP30usRPseRiNLGwmJiOupML3kAgEF+N+Dsu90rnj0RjRnc04J67NhLw2MBvD3ug2HsCEPVSCHID5IC/5xZWPTdgO3oCgv7z16YXdi1A2oj8P6rW3WCpGqlifD5epDJpP8dhODVB1WG0sykvc8/6Q5uWywvustMUVhhUt21S66C9poY6Y4UwZ/ROERO0ejHI875sq1XkuS9fWLaaCabjqHjkWa3g98+jcsrO0RR/Dit28UMYxWI0RYGN7GacYikcl6XKEbkiNeW2NY+0p6uynK709LUqu96AUTgPd4VuPGYQ9cV6LYzZ0wetZo1dCJrqgpVDPp1JnanrzGop+u3r5cxjNZv/yC+p2PgmSHhTB1p351cZe0YGJc/b65/bAj9G//3nH973wqMX1/30/Lrnnv/xp6RNirk9F6ODSXdA2stu90oesKkUyi8LxVZgkQRqfSg6F5CiYEoP2DAWB7uG4t+tJKOtR922i4eTK9O2mKe/IHt/Yvqie2G14tuWPjcay9+0lJcB0Nz6AS9weIuL6xCdospfN0N3vH9QV5MZLK7bUFFVAAFZtyNRpK5p29oGScEa3MP4JwQ/To3zmQJrFtl6nhEwWCOy1g1r+aude5yk097uA59Cck8WA+XRixwJRsWp3mI7Cs7Zr3Xk4iyLujiZTPb0Wsz5xVdPI5Oq4yQ3MPwZYeCKcym/X693iJNOPw0MwKc1M300L/rrf1eIIsHorW2nTrXxom7Xd5nHiqCn/1bTmU1Nhce6Wsd3n6gF6X43yDsWiyXq+fWF59Y99Nrzv/7466/P/fjnr8+/9NlLf/9oOxzrWbTZFi3LHs+mo39P1Af+v+KBsMcbD8eleFKCAuTxlLltKwdXyxBcNretZzDmgcIMHzeORY8mbQcvv2/FNg0lzQaXO15W3tjQuruqPKOqq/AU4EJWNDMOFrc7eb/mZDbTBnoOE1R3tjakISra/ev7pQDV25igYLIWa4Wgmqb202bO/9VpTjh71i7KitV6gdczjP/3a85P2ofrOmjSLOau39dIAyziRI6nKfByfPZLM0e4MIHHOf0eJy9LS7v1l7XK7e/vfeTJJ5VE7lcqjHVSmJ5yIQaszjXj4jh6UuQEgJ+0X9Rrp2jhaLHQ6A8WZArFjQDXakpq8jLBor+Z3txWWDvW9HH1U6/u3rhjZ0PYaBwMe6O73n7up/WJi8t/JhLJz+cu/mj7MwqmmXLYFpKe6HI0uvTu3R8e9QSAAgU8UliSIqFwxBs58XMsGl0ORyXjHAQ/MMTDSY9kW46A4QJH/15ZiUZjAKBOHF1w26YT0vRi+ATUs54vKjdkb84ZzchpOlWn5atdWpeWN2+fxQkFbm45ta0NaHN2Zt5WuX9k5fp7mjN9bWq9TwD9TADbNfN+mvGLYseMVtT3MgZtM+4XBdHR69BOGVzUkR8chmbXDKYiKKg/fRDjVorCqJM/4/i8FuNYzDFMYSoclb1+Pn3tLwq5Qi5/gsBRkqKcGEESSpY4OtCOWTsNHC0Cojc76/W0maD8op8BgRQAhCj4GCvYMTPz46ZNmV+X/JZdkrehpKnpWOdU3caMnLoGy4GGnd09sZ6LicXYgs0YmLNFQdD4M+GG3BdLPLAwMhINRKMhT2TJCC3eQADejJFA0uvtMY4aIfADSUla2rPH+H9Z6rGtuJOhiNudrPSEVr0x0Rhd3B8FdADpAPZNkjG312jZuE23aUNf9jZtQVBkKGiL+xmanbJ3Dn8BfK+PsZ4180ze5syh7x6495obT+p8EOnCHj/DdxwUQJaEiquQp1CYg9JSVvOWO3k9z53VdjpwykXTT5Bm0Iu4Pj2GuWgD7eL0FMbjdSKloB0YCi8NaTCqlx2QvffArvSrUtag8rQnnnjk5b0zA+npA7kv4wjb/w7ebsd5PY1zFEbpMT3WrriLA6Kgt+pbRGF/rjUY1JWU1mbm1RTVWNW/bTUVbc3Pq6599/fs7I0Zc292VZSXN5wpA40cFvJHzlr+Xon9zxVtkWmA77HYyu/RKCi8q1ApHpc8EiTQeMAbKmtfu3ZtqjFkkzxVs3PvLUmQW1e1EECngEvD3oXA4R+SnhVb1DMXW0yuMvHk9JiUcEdDjurN2dVBc7Gj75zJ7DcLMFUApM/uYtE6mr4a4fzC0DwtmPJ0/Zfec93tR0HDQFio2RxvHTpN06hCgbEoJqDiJE0zBQK3h9CbGc7FnTzCcVzqI6k4BXmTWxWM2vlNvduPUIzIcALZeIQhZ+2Y1qCalMtTMdkTP58ekD+pUGgUHYgii1QSiGYvTh4/SFCH3pFPfmXgsj5/QugzgFX7H9y3l+K1vB9CpIDh+vr6GDiobbOuqQlYGaitNZnWosGhV0FlbqzIqagdzO8aLfzWuBMknYqpSGxnZGkJvvpkArxNings+TEJONHoKLhlIATlyOuJSFJc8qawVkHU7K0Mew7PLYGPBmyBKNQkwFPTc/Dr6IptT3gOav5KMrFoW1hwH07s71n0AiVt+OH1bB+BcS28qZhUYqJK7IVy+rMZPGlYQVSezJoUXVAVrD4d9uz9t++jiqxtne8e5KlORu/nhkSlq5LDZh78hBc5iuJacM5Puyg7uKOGpWhsYGasmEuf4LQYnirH/PTE8FlQ4FUsaic6ObQxN/24Nktzct0rrOyJW29dM5SeloYgax5RTCJKZUcW/TKoIiT+TnOvSoU7crdjlFbESYqjWFzso8YpceI07Xdhfqa0OqOtqO27glJ1UKcTTK+eVhdtmKrtKnwThPt6c0ZtbXPGcH65cafXEik7cwZ6OUCFkoEIoJ/w4mvLYMTxYk0oHA9IbmBI4KIwhpC/tuDb0RxNR3gpPgfJU3KXjY1LHjcQJGDv8ciI2xNfWAEMNTeXjM5JtlisMSJ5lj1wytSOkj4AiFuup44w5uF1FwSg1wgxaS/GaWQY+eKx03KMVhKgQnZMWPecW9drLRX4/DEaMBAkTZHT566/ZZ7m5vevw0URrxNwc984PkNwAtWrH3bS2Ie3D9PnfqCHOM13H6AEJuJY7gWO09idGspBoh39WQ5OqXFguEwuS706Dd5SrlIolAipRDAly2axVDrXTjvh36EszrHg8Q5AXR1+0s6B39OkIFJf6nVtBf6gzqS3mkrbTC3nmJq6oq+hCV3dwsNk/rrWioyKkYrPKypd7TvLG5YaYIsegFA0UuX1BqSk5I3GIoHfb7gQiIdWoZLk8ZwwQutmamj9+men7YOWSCwSD/Usefc4uLkYWNQzOOOJxv4EEAoODWDLc2Tq4CEQoD5bPjz2w3LYUrg5LyhATemlDH3WgVkMJwhcMyyn2QnleZyQp9qHixUECQbqczE8I27bJDAzvLWPFyjRP04Dt2aL62hwGDPNDbkoK+XD7O2USzthOA0xrsc5u8jCq4pUlUojHy6e6MdVFK5KZ1HDDEdqsAGoPUoCJ2jZkzL5GgLMee7kmq9yr05LRxUoQSgxbQfGskQjiikQ1DVjx2m7s93h5EmSxuwihHw/L+h8rFweLOEbaZg+OVZUrVOXFH39VmZ2xciJA8d2bNg0lDMyUlhoebGS1Jc1bASxvKA+FnLI0KddYNG42ztYHDOOzcW9IbAPrIKHwvAkfTtzzx133DsrSXOxaCAeDXiaHzgU+Z8orYB8Pw3MtMcISgvIURcfBT4atcWgwsdCgxdLTC3tLO2nhJNOfsZ1HuMmMQe+9wuU452NDgNmZvWzWZ98psIwkNP9TKNQ7e/E6voAFGrpvv3gIgaR4pD5eUMx5WSHDFNnaQTvQDlKr3FOUhRLaF504p2T3JEPZ1QY+iVGoLQ8C9O0YyjLYk5SRREsotSwqAa8s12+Br36RfKdtKyr39g+/OIa7PiLLw+QkyTFksffUZ4lsfbjpAvHcafWTLWDMkpj5zkz4CfGt7CItgWtI23W7G26zHpTEWhkJdl5sAuet6n+mOXv0aqNFUe2Hrx/vd2SMWU/822iK9CSqmPEqyZW28ne8BykSyne7fFKEePO+lBcgjZ598TPV26ZXQmERn8/6o1HpcDgod/dq1p/TAJcEIWEoR9OuuEJLndsHBKCLTIXDZXVH6vVfsgynb0CZH6cMmhd8nSX8ikUHWrPmsFJg+qdXsKucnUSHEEXmJVy0XyemgAEaQeVzTzFHtE7DfPID717z3NOx3mconHs5B6NSoOi7aAR0VontT+X4uxsR5ZmmFaqcAbn2t/LJV2q4SzVJIoZCCVCpOFmRCu7SoYq0558+Z2r33lCrlAMv/jEI8cJ4h0VRpIaevi4E4HP2duJ0fOoqoODb5lD9ZQCm5+sE6hU0e/6QbC2tWUGM7PbMtWg3eflDZaMFpToKrd1mr+v/aOr/I9tOTu2njvbYCl/f/nMt+U9Rs2IbXoENURh+3v16oFZJ7iWjZ6y1+MSlKZoyGusH2sEsBTumYvFPJAIwJZgSA/oyytJcEz3l/csuZfGVglndPnQCsAvaJSEyrryq0v6D/LNQ2LBWXLYWYyh55uprK9+x8is/zMZu7eTkKOogsAOzvhVJ3/ACSeinKXpXoxLr8dARJ96uX82t6PdxfkZ8B2Mw1AMo83H58lZJAWZdbpUV5O4RsNe1aJROViWpXlMRdsRFY4oMQzNUiFPpinRSaVGJoP7paSsSU1JVbw48IRyjTyLSH+CVKJATEkUIRHSYCBwQAqTuRjXjPWRznV2Ow11cua0CJiN4UtNjNqnNm3IzGsCcF/0Vkn1m3l5RUv5hU3H3szoqsyoKod1vfGGnQe2ZZz51qu//I57rtg9GS+zxOPeMDTuoBsRD0NdBwYP9d14oscYCCx/BK2Gbm/cA2aPwgO6nl6p/uBYOCIB2Ep+EfYkk+Cetlg44e6sd+cbpaS321KxqaCPZ0ARojg91FFKhZJ7sacwWvVOxSOKNEKFyPcq0HSC6sD82IOf2V3DZ7FZjuponMK4YZEaMsw7XKBusBcoGnikto7CUbg4FEd+/2y1ob59VyVF96I//I1qUFyTooS5Gg2OawhqCDcoFceV29OyUNxOyFKyZL0yhf1pWWqqPHXNk08o0p7MyiLTSJXGgKA8gqJKnNCoXlY459s7INxPYpN2wQ90fmq7wMODAvBUai0pAeEL0mcRbOLk12yqzCjJ2Z3TtXlHxmAOTGuMjp6o6iq7+E0ZWHDmvUcfaO4JxSNhb1zqtgC9bAivVqS4ZbQ77j7THQaHXYnHAgAB8gdDcbClFJ4LNIakZZBGG6A7lwR0AArfXGTwrA0+WF6JSbaAFPZOjBzYdAomqs2gajjJToh5rA6jBjSIijg0r0jNlSPo8HDWgFLFrYJpDpiiljvdP8+SxHCdE8d624HGcA6tHaXMlIj7McWFGQ1qUCFon+rFVX/96oKDEmjV/HFWyarQ/lkNxcCLCKHRrCrHSsXTa1NkiBxG5lNkV6W8uAdJUSjuWgvGVKxeSJr8qtuuQlCNgUKR/rPbubPnURInDP1s53aSIukZO/j7vA8KJe/zqaxCsDS7zQRFqaZEnQ2KTU5TTWZeYXFx3Td//DEKxxEeKLM0NHzb8EdZd8gbOZcfC8FBcAA2I/DUDc3xcNiSH/r5MyO8KoVW/TY0uifkNZTQ4XgMKKi3bHIrZALvctLTWu9JrgrOAa/TvHAxlgwADbDARomlO3KxNSMnz4HzPGcgEZXcSaaDH+V2aAwKQgHd29wOUHcdL6vIXFbDdRQTKr0KAwK9d3KenMf0uU7SoKXIXKeLclGrcIjFtUq0H0XPDXSyRG8/C9UfNE6aoMG/wDWR04d+ZjUvInrNjPwuGYIqUeXeg7tem1c+JUuRQQpNSZXLFe/svevqNfL+LIXiagXknNSn/1UiclRPtp9U4UPOeYzQdDg6hgklh22fpfUGvq6OknN6hj8qgHKdZy0qAkxfmlldm+nTZbb2Hdhq/KEWRh42H+jKebUQGg7lf2UPfXoGyHlPRed4dyQc/tYbHukOg4WrLN3LJ8JgzZXyHGajt1sKn/usItB8+64IIKxYOLISmwvFA55QYGX9ElBTGD8enXtvMOqNRN0rJ/AOvKfVUN9dZinPaOrcd86vV+Ev7p9lCSJVznYoFC+/joAlXRpUNYVm5WrSFBpWS2EnXc1DdB3AwNVtISrdqXekk+TwJMVyCBgf0iNu58BMOEogEPQOSiWiGpUSUaGIYk0qoscI1smyBpVGidylyEIotF2j/OzLIY0ySya7VYbKZGtvu/XWk5/tBcZ0tSJVuQY5/vbPvci/APJznQ47aPk4qrLTetJAa89Oknq4sf0CqxUKnuvwB4FytAnW0sxS0LBhcleXrcss2aA7l12bU1m18eOc3VtZ5dqMwgY4duzbuW/PjMBpmHOfGSPhSDc44kWYEPeCZNkTAy8Ml20C5jMYgqTa0xOOGn/vqQpLFku8zJuUQsDwYRm3SgpUNcSjg5Eo9NKNP8/FDo+/cu/BneP3tjZUbK0o7Kp1tPhxmuNyCWjhtL8Ljqow9GIKUUMR8+8OKxH0SeQkC9bBQLDEyOMzvQ6RwrEU1NBP4u17cT/BovOTKORaXO9qf0QJ5tOkKRFcpdFAkCshn+KYKvUNOQ7oFsUh1h2Tay8cfU6JpyE4iyspWoPLZFenKGVvXP3LrYCaWAh3+ZpUEEfeee2BLb0yJeRS/A34WxSLOg0u+J/SWP/ZdJqkSYp3uly9q4MRfuDAQZ81Lxv6C6Um8zCemVNTVHcq+8CxvIyMwo//wLZtxRw7dmzc8densI8Y6ukOd4cLw95QRk93lQMOhurpGfVKYNu41xMLJf5MhuNnjpbF46HdAJ+MIW88ABmgVoKqNS3Brrj3ixOrTD9fOwOOK4WjZT835ldYdm2tH9uWk7MVer0dPE5gxPGUFvl/HF0JTCtVFB1NzLxkJvp81kRNNa9oQzSjo9bOOHWSbiy1rWKhYAEpGMqmUEA2BQRckFo2Ral1B5SKVgFFENSKoQLiyhKNQY1GFiVuGFyi0eitAyT9TQr807uce+bch5c4rF6Awed1FgNG24TS0KEqemFEiYVXFa//ZC+pAAcX339dWYrvht9MUqtsfABTB4tMCt1+OSnidCzIgkOAT5V4KfVCunsX11S5RCqWRMmaoPzKra8LYUplger1hFAm6+CAYe58X6dFWg0RWYztGOuxBGWcYqrREC8+7BmMLYmcLFNJhrdBSnqddCvk920ZN0HKg+F3trXW89NE7Wy3R5gc/eAnsJ5ltxXl5WSM5IJ35KPR0854583SjCo4F6J9Z3jo7aO352AJrKyrs2nuobN+fWi9CfK+hBTX9ed+MwfWg6PWqm+OxgDDO95+A2rs/DePNC0v/zm3Ecld/uZtsM10zH8zP182+Nf3n3wDtOCR5eWyjodq1ztufufZtqq+7opW12ixSTXIDzzvEwiOUa/TaxWmU2hAwgoioUY3kaSE6vDJ0bBTHoyFRVn0QbRtRdZEBdLZIcaF49euicuCUVbxw6/cuucQoTPreU3yYYoVmHVsSVESAQiVHGJM9dDqsRdTEwbACGEwyJ+svhchPbKIbp0o2LVUEXkewhWqgzeBiQgD6Mr+B1RWhVVlW96jDpERevHglrXAtX8cMa1J5SUTm+OwnLN/+GHjZl7F3UWw4tRZXtlSc9ddz20UPnnTXlc7HHJQIESb3tgYOxoDmtTU2fzsctNyFwTg00dz3z17yw/f5S988/TY2DfTV28AOYW+dDQ2BgwVzDsvLEPHWX/md/jn3Nv7XS888lvXxlc3vdUM4I/Nf/82HEWx/ux6Z2dbX1tueUVeq0sBSqgGV1ST16mAfd3hKKZUoSsI6/UH/4qCHH3HrTiNEFCOsKz6/Lt+Wfk+IctAJW1+HxUgao5fXSGSg0pG2fzwj6Lg1QB2J74gld0s9WPqlSW6RLFDwVSxkmPqFaGQEpQgiPiYkwQ6wJhlEGIR3nPzIZ8cNKBUHSV6jI3GHpsQtfrWwoJ3VXEIksLwJuWqY/f7v1tX/BGXCSTmuglg9d2tJbOTRfuT4+WjDZM1RXc3lIhZSunPhZD0A519udV3F95v6lR2wDg8B0Lz2BefbswPzaeWvpthy/uRsk+ff2wdehQE5G9QQAGpNwa+WD6C9IaEX4Zl5m/Gfvn7m7llsHd1LYPwPzZW9iVwg42xrmfLyvrm3+l8fODDzra2nIfzHn+zZM2xaIvKcUVIhL3I68CCX1hyYFVD6QG2CatfPP+VYhNUwUtlaDerlPRG9hyC6FaMkMu6GDFiiCNVDrp9lN22RgVTFKoF2jOGBXqSFIg65W1ULXqsfmYPehkvRZRiTAjFoViEWinz4/4aw+kRgxgLp2HT0nHSLSd4Jo0XKTnWJCikSoRASMId0Uh4iw4+JkacP30QS8SUusjS4C7Yb1NabGtJ4/ee1pyGWdjzBifvuyYiy8YDKKD31N9dntEGVqK7Cl++7/6Pd4aP5udhN3L5uyFw4o0dDZU1pfjS/Fz73NgONKIxoKVjQJHemAOG+cbY2NhR2UrB0RyUU3jNG0Pw91qa4Ou9oebm76BqrJeV3TEfXJvZ6Kht+ayqNh8WWtpM3UbT/jHIG/64kahAFR+eFvAgxIaoQTpvwTs3Pb9LA15RFCXVWVwgCAHxd9FR4BZIYFDQk58OKdXbiOBNJoiKtrdgQPc6RIUQgRKV7D1475RxOyETr4Fw7JKkEEQ0KXbJm6nR6oh6izHDpKX4koXhuKAbhX7kCBqUY4e/2w8sbhZkJzmERKIQGPtV2WEMQ+4LrpjRTJA1XLAFbGPUFYGG5Jn8vOTNHGhNk5MVQEQbnKhgsFg8qC99d6QIZPvq+r7Kysozh/p2juaOAMcqEEUXH4Ij4L7b6DwCs9McMP2d5iFo+kcpc+Hbb+8s/x/IY/DV2PFe+fLy3Nj8X9C41uaXm+e7YEkUdhs32ssehltUHXfe/tBD5QPHTFb/3fUf1dQ//LjTCr8XNGMl+PpT98EwIlMeEyQSiqa/hHPGEoKw6xNO4sZItDgsJbYECQWIGHzsCRuPVB5TEtXo9XGF10v899c/IFCVhAzqQKaCiSBSGxX1LN5bJOkphqm8X/WsT6VxL0LU5zDFBYlnWA4QZRiWZbRaM3QiI2FZYtn7EQZPM9b9+++/WYydeg17SbwkiE7VNBgP4MHBG7alhDVu9YBa6yoZzQGHaVXmZJEHblXPTubNNoivXPfD38SVXVMaCUfaRmrq8+tzn9vMfrhyuGkI9uj+7phvWm9u3ticm/+iff7Drqamjqa35wBXgHEMIH/jm7m5o6Mj8Bgvv/nEbX+9PdZUBvNA2dtl3zX/BsbtZvhY73pnvXm4/Kfh9mRlR23fKG8Ki/UNsFBZUVJietNpjLwlOxRfIuR1xMgJm8pILAUSj1324qFADGKQuhUgRT4a8sK1l1zp1eMgpVoWhfVJn3tKiBJMJGKgkkKjvhj2OpQIJkZncbFPJKtUDrAPvPanGkFrt78KgOHQj1KExo2UOEUGEYYFRFmtFglM1iHh07IYgBURYrBn8VRG6f/+y5kjPSeKsmsD361Dmt4LgKDXGLc6wuAtg3sAYqTf6gfX2ERbnmcSOsL4+O0XXHjpV5GGyruLPr03rz4/P2ekZjG3eWQjdcjWXV0bubD0udA0V/bd2/M7j3d8WTb/7APD7TcDhmOAJrTzb+aOlmEXHLAd+vqajqMjAPfLztrm95ubH5ovg5Wxur9rN5s7Df7O9Yc+7Hig7cPKEV/dB1/6c4tG8vzFn5dUHHtMkj/u2Pc7Qtt0V0+AAko4lZksp4dRW6OXHH5Hb1I69m5DV9JQIOlYCPYi6DbGoCROrcgK+j6kN2iwN+IPyz4sTXu3TqbFMLXtKRoopILQ+9MSRD2PCFBPQlWjDcu8CIWX0YEawmF3r6RlC0AgRZqQPv0gC2lQws4xXr2WSU87OEBUFKNuog/5Yw55b1vdgrv4JU6rJJkmnMYPcowlruKSzMZMzyzEJ3igZ4um34/lZX/+QM3k3S2dH35ekxMdh9MzKvNKFz76KL+25fHcro6y4Z2yprdvzhhaaPpiHkTmm99rHjoaaz8ae/vIZao+Omor3plbbmoa6oKF1eWj2qaBV9o7mpo/mYeN5vlf1n//orn8ibM3Nx5ab3m1sq+ysOHk3Es/hVXAqgceHM8ER0fB1vemRpWKHtlEBaJPUkQwpgSLYWCJbiKsvE+UMAkLspdYCaEoCJjrxa84HEShba9XXfIll/Ty9+qxKghywi8jjMUpKvgpjDyES30ngpANiDnPI4SpU1pM06DkEmtnuLQ0jtHwGr0dGSjSMiuXPfHV+zFktoWQbu/HvYTKcgcHQNz0SOi19bJmW9KtCG4KWopfhnnNY3JOT0eKrcXFJRNw3hDgOdIKmT85WZQ32VAO01JN30B2Q8Vf/XXZNbB3O1KvCHJL28DNG82b5TtNN39a27UBFk1o811/N43tQDGF9aW/vm7qUk3GSG4zxHFzfnXZ3Mx3Ze3rM5DzXUPzz24slw1ndDR3bL7XWb3RUgr3VUdGRm7uvubx7IrZfLDPlOd0N1iLB504GqAMotRBBcxOhdRtNqQEbRaVKhSbVY0o00EjtCCA83ssqksJDYw2ZNu7RTWSQCNGqiDe4jD66xQvHhRAnGpEgCrgyLEOVQOAAqrEIlJhRQpTmY0nvf5t0Qb9iOO4NJbTEA3igzbE9EJ3t1GN2KN3PH/J7a99P2X5FwqAe7qHiOR7GA0CgtOW8DukqBWmXWkwIsWsBSXgTfGA0gRwQohOzlZU5NY25OQXZXcf53YXfV6U9947s62TpgFvXn/sQzixpBtq3su1zUNlf2fAslLX8CfDy83rja43h3Zgj2AH9oeUSFdfsX+nDFaYv1uGE2Dg5HdwdM00N3cZfNGO9uGu9eGhjg87OgsHcu7KGIGV8tFSOMCwLzvz8aqB1uz+xnB39PG161d1ckJxqpSQVT9FLOpNCPakDx1qeBDREYSZe5dQUSVUAkED4ymDTWEp4lepecuW5JP6sJF1+gQsyA5ZWfSR3Q8QLxL0/X2vApoUsU6BblGWFZ1KXPDuv2ww93oxo9OlZcGV4LSAo0WL0TZCBqTl0lV94PmLLrzokle1bNKt16/+OGUmFqOgeAXZBsOvHHYYXSRqhXv5JuI1ORuLS6yeTFdJa2tr3mxrxSzITUWleeODeTnZb5bWZ49n1k1cefpe9+zJRffJOY+X59cutt3c9OF6WfsrsPOz0NW8U/3PD4927aQaEYTpwPnnn3/Fh0dNM6lGtNNeftffHXAqNqh+N792xnXD92+0fTJzc9ffGYV1g7kfjcCxHg9PF91d83lOdtGHdaMlnxUVv2kaNK4ReenWy5PEruEForHbWRQIYJZHPNLu3XvIMp/ZVWq3//6kPwoDo0h5JpTs9RkdSz0yXjMYEqzlUISx3De1OijBTM/KlMWIGB+8fTpkNxkFliFB2ZauQzE5HibbVCY0sMQnmXRdemiKO+AR49ZwTK+W6d2eNiB+nzfYxCnUa6dsgNgsGirSXh+h7lQVcVM3qIuqw7Hp96tgidJRcoA94wWTpvzJ/v7u+lkwn+YNVKSsQRG2r6a/v6b1zcaJgol3HocILv7+tbrNgr6WjJvfubn5y/WuJgjQts+GN9rnb3ml+mhnGcAcam96+4tPP31wqGxobmFoaAbOf2l/aKesAMxxQwv/fPpXZVdHxm+5Ay25peU3v1N5d19OcXS8Ibd7sqgOJISKiXKXazQZL3DEVaF3eooEMY8w2sIP81rMpmdpMcWHr9iwsn+dQnfddMqwiwXsFhkd3JfgMALIV4k3ELMf4jjGbuwNnmAZbQcAvDUvxiTZSzGhlJBDaPvm/b+NXmRUtvwEhEExEMOAp27q9p+AMCHgoj0rD+jYEEs1MZu4Zg+G/FBgoPmlpxHoY5GeYM+hL2axx42KYDaYSuA+tbp2LIkRyJh/hQn/hMepBzN5yneZDcbU1v6Gusumi9q++z0bFsAyt4oz8yqq3izITG2Ilff1vVNLqNK20ZTf1vX3O11DwKOGhruL5pqOICB3hoEswSdsLbc3D2fsDLW3Z4CnanOho6OjK6OzM9xfvV64UKBEot3vfz7CFkdXGiZbGrkD8c3MvC9AUcaMyeH1WyjHCIeYYOZTFiGGlTXpJMrZtOSYrJp9gaRC3ScrBGP1mCNsKMa4UTym4IiKGT3mGXRsNifet4dUAoyIFVQToV6CeIxZqlIypWc1WhUvrTJiOieKJL7ksLkFTTqjS09Pc08xvXqgTCxi9lh2QJ/FEmrG6rYea0QfUnpDOq3ZAGVgKSnaNdhgIWabzUJgjhPizsaCP5+672HlAFk/K/js0wG2fzIv5Y1ug+iEpbyKWVjXmczLns30vJk5MQEO81HXAyWe0cnskWrNZwMe3D7z3cvtQwsQpCleufzPTOXHH2fcDIeS7Ay3LyzcP9y+s1A2v5OfWfHSm+e90gJHTyxUl82s3bRYfdL3bImau1Bek93w/XWXfTjq6j9wFEv87LjLNUF2H9wCHwLRDCpEMVCMCGKNIsGUu+2yJUQsFsm7ql/FoBsZAsQxZQa0Ue+nU4gkDmWMkz6RKmg6iAQfbyAU+3xZXBbiJcKm5ExNAvu9FB6RleASQnrsntrFDKdDXpvPlfU+k27f03BpjAaBs4Hv1ZlJ0nZfUNtDtAhhIhjMWIu+f2obuRHLYk0vQdgcpD6JZVV8ADoglGrJ8eqll78iYpMp7Jp+edfT2ljnap1t9XzWOm7trytwTc/OVmRKJc5JaFUlJWHrBFCr7scrSssXLzn1g6rq9vbCmZyq4bKuhfYZMMKCDW3o/qEdcOqUtd8Ph75/DEL0cE7JRF3hwj/vZLzXsX5zf0tlyzsfdnTV5468c/W1taXvFv36enH2bF/Y9v6Xr2jqPLv+EsfJAyKxHRK6v4e9MJbrNRixGCVsvkAMTdn8CssugcfICyqJwFKeXUEBLRPQ95p7VUfcFkCYY9CaJUBZYhTNMcxunXxHkiJDUriHTnAx17u7ywCwLCKKxv6qDfTNr4KExom0xGh0Gl9PGqfVaIJpWs0hjzitXavFln2GxQKFQD3EAo/9SsJN03Q6Qy/0Kt5M0mWMsw4KnLBGC3Zd348XPwYWcqcn4kk58ao+82Q2jq6NDuzndL853glGdux0qjWLk56JiGIyJuOu2v7szoaWk5Ocwo+rF557KBirax8eHtqZ2Wn89c7oS+1DEJ7AT6urZyoLj4arMxz5Tz9y1/0ZhX191Qvtf91c2JWb8dFH99fU/3Dle2Dty52EfChqGFdfvOiiWDwWNhWHVQnSULKCiilhAtnqAwQpxhaDDUoij1KZiPGW6AbN3SYEdYQNsjYfq0HuLcqwGje2f7WmYtZgC0KCI7pKfppGSOVYJAaCjtTwuv+7FuGeAHr/SYSx0baCuR4HwQhSmGFUbNEHv083oMMAz7E9Dhg8U5JygA+uaAkSMUqw8PP1jA//9DsHL7HriCh+9eP38gEDM4gAm/NbkrUkEI6CFlpSbPKYJlIRONra3Tr65iSsJU+6JowtM221wEc9wFa3XP3HQv+H5XmDg/UD3SMjhffMZPx4yWhby8L9cJRMy2Jt4cewZjecCtvy++8qHIKYze+48ZS+jNGN469y7xpdm+nLyF28eeG5j2pG6vPgIJSCzyoyP52dbM3cXTl8P9o/OGiStmTT3p1LkkRkxMamKc8DhpBfGo029V/BNj5F7mmAqHqWdfi46SDUPZtZ1FpsqykTl1ux/6RJvQ12UUWshrWwDGfWohgfQphhA2y6CoSW1TFalqR6nRcTQgQWE1EvpeinTsdxlrQQn2bj9emcDbEMYoieBz4KGLI2mOxZijCkuxY0ZxR44v2ABifOuX0tXU+pqqqObbdVUh6wWk3+MNAp8AioSJJY0dromxivWiyIZLoKnnpgYrxitqHCtLkXNjnrFj0e1+DND3xW3pZd9HnpTF8f3GAqny69q7t6prCofmbhITiJvLK96rPCmY/uvz/jrpE7r3tnve/B/JGWj+566Nnq0oy+tvz2ypHSvoaagc6ige7Z7BZP5lLehwWzmVsej1GS/N7i3fcJFQQfu/hiEFM2YWEwYjQMgrYLH4TElB4UQO4EJWwMkHXvM6usgdF+sI18flYr+NwajPX2VJULLemnNAwTYKFd24nIMDL7HmIYwjz8yhSMlZjiHlbAJCwa7aJWSY3u6dDis3Rc+gFveHgPWXgGcp7VW/TvayEzWJ5Ts5CbsDpzFs9rNRbC8m5EhJOL72SpV+8loA/GnSXgaLRare6tB0xRP6eEvcLuq5HBB0Muj+x5c8m1eVnBxOcV4605WyWDyuq0y99a3J0smJjYNHIHruyP2ivvKszPGKnO/6S6MrlWOnP//RvVVZ0f/7bRnP1Zbml+18L9H/n6i/IKuuuLnmtV/M/mZEQbcurzsyfzS0vHixqA6gLprc3MHM/MfK+YOCQYo4XGlGaOEfvVlAy/PIt0LLM4jTiWgYggaxRptlkfJmQFsfgYU8TY9Bzm3SuY2UJx1ScaJJ/M8CAUIQZpSULP4PcATwaiS5cFTx6usP9fzN42Yg4ZE4orLAKZTgA8sY7P0qb9ywUPQBjhISMQa4Fvwmo4yBEIb2UA8dDHpt3cgdZC4VFKuLKoXyxCcZIo9oJ/HHNEhviEu0s+q0k++eXeL4h87CpZc1pPwB8UdoLZHHi+x1Ni9e/5wqvRKpcSj2cWtBZz/U6uJr/ImfPARy0Dpfe0jOR/9Xou7NcWGJvbqzPq1vPb4czsjIyPaj/Y/PDNxSI4myvxy/eVhS17H9Zkw1UBtnMYGmaLun+vmnUVzFZ5CsABN2FUvdhJKcGIpngS0EDd+18xBoYNKiK7hQOAIZZjSTYIUcL2TKmgYSAmLgenehEhSwYKhB6TUIAw2rd24ZEIuJhNKLjCAaBZqRfjXvOKDKyKIgwvSQR7fMGe1LyF0jlGx3A9vZQ7sH+lSwuiNAYqjEYQmSzOruX0MrxrchBQ1Yaev3U1HRtsOhYHDb2iLMd8FKm+hFVq9TtOpjno82BtNlnBdHrfxZ+aTdZYpNHVWCKrThlKgiKD7pwZLbFGVSXmzJzwW/e3HNikHH77h3O8aPrhvJzSUr+ptK/wo/z86sWR/se3qjvbMppzP/oo+6OMyg/zb94smqx7FmhtRd6DVX2lfZcPVFR0VNw9Pp7ZkDd5d16mBxZU+zZbPamVDMkoG1Oqpd5LbYAGhgDxMfs/QWxYkMHA9AIoLImaD+0Y4mX7CzOD9F+8FWJ5pMHJkG8w1VXcVORZYIQUc4qd5WEYXzEzREQwd3/18IMDgqQgG4ZSkCrKUAJBQMYIqqOMze4UnqGnXuXT07M4fUpa1kKZNTZGjYwBBvsD0O4w5lkWXm2zY73m/SVeoyGUN7gZPtUiCYVLHoyqDqMErdsYXZJsgmySrVLSCjeWp/FUfM3U73Z6sZtowGXxeR249yNWa9UEs+mTirefuPBBOKPgQzjoUar9zN1SX1pfn1F690OPldfnZxRm3HVXpjVSmJtfnpdTW1DggkI8+flkXl92UWnmembDSutisUqsFYDqbCb0o8zWHBf4DiWHR5S9ekJFNqAh0D8RA0AgUHp7Cc+mMT1hNhwFxgjPam3IHOLZFMLQSCBUWLfMcNB9EEeCrHmVZXZRAIg76w6kbfk5yxQX8h2uIMDQksAc5O4UMHaEdAxcIobEXrud0QELsiG8F9dx8Cxn4bQMgh9A3MxBGiezB9itspA1oI8yWGMwq9TgZgkiQKt4jL1eQkwECUBCnSuRuCmuxuJRySscGrdkt4xlKpJEPOiAaHl4+vA/lq42tHkqCl8UuRduhMsl/rI/kmgISDQ/YhpTA21TV0tX0emc1bGKWL9dtaJTUHGI1dpZUNFR/IJNLZXKUFG08tYfrZvoVFxBkSkozO3PdAhTQUH0yfSOtfYjcXnynHOec+659xXozMsm40aY5PMoIZy1m51GW9Rrd69cf9dVwPTMDz++69m77rv+egjLSzE1euutN117SfaxDz99+vIbbrz0/vVsvT73/NJbpy6/HO2md6/9MHpkqT71/cP33/3WFFauxVnXev+rdYb5Wjbr+TlkJJpQfvU/2OwpdDz2IzDF5hNGXelQohHCRK4sCeUT6SoERKt9hNZiCucg6STUSdOuVomLEG5TyrVaCfPNy1XapgHp7TBFaeTGJR10IxE1jjYlIDNAPQj5fD4hed7iqIrolOuGYcUEtvBn7fNffoj2pVT3KKyEsbxQEohI2qT3h3q8C8ZSx8barwd+EnayEuzM11Nxcygmaw/LviOT8oOmDVkSobjv+kdnPrDXT3qzCuahiv1k9vm25yeDvWm0XwPLmzp3X3X9d/ddd8nNt3z1JYpvN998/a1P3nzzp19+N/f8/Tfe8F2qdctKZ7U93anM1J+bmcG+cDBtb/omrMm48ff1+7711pfWhVgofp5iVrGdtblfHGuy+u47wmQCQSEmCpFU7jC4SpidAybSdugwyX0VYfuPLby2opiYBj4uA+VRZBq6pUhIK5RKykQz85xUx1GJwaA1vqnh9uRnhR6fmXKe06JEbPKURJaw5AeWQUpW3jASB5aRViUlwDMvh9+8qxMmQXhBkQEoajhOq4emakqhUkqhaZNSyp7d7aWcYLAQ7Hi/rhYG8wHy2Y1Kv5eUx7s+aigbFd8uJ71SRYOeCINiZ7Ueb1rQrRenZr699Nqbpv362tJtj36Hfsd5bF9wyW1P3HzXbZdeed1t7fs/fujaK58X5VCsnJqvtDodLNBY14Ttrb7ldb5cump6bX5lcXFh79fpwtMvbWI5DG0dvPjne5/uyF8xzfF4OiMcgFQSjBJBYXmc04zBc6rL5ORAk99+ziYE7xKBvvexocPU912RJ1qTDxF12XMvJpiJuXdiMlr7KYotWKN4GBEiEiVt+ZdXjxFaCBkK6CC4lFhpNi2d7EMt9bbSumXwmmFsnkpJAoLmmWZkqmYcH5uU02aTJdLjmqqWMkIyLcEsoqhC+r5faTe88p6NakE47leCtOpUUkxSAx27MrOV3JNBt9qzPc39dssJR3629ch4W5tDV9nU0iK2NPlkZS7Q5m+JF/7dXf7heP7ZeLbp/geffXfz+8t/v+/yazvlz79lp+qba6vNLubUW7nDjx/aW3zkx0+QwGJl2cw45YzXsf/W3AK0bxNJ0nnP5MpaEllORqTdhPHHDwGnvCYogAM9GCyT00YJvCyDUAp+qJD8eJc3OOHlqHeIcB9foc/TA27R0tBd3nCl3kxD1WdGUk/oHMhiWLvPSRoPybrMZ4gzFUosvfRNBs64wROGjmeDHD19qsR4HlQG3mAzBld4lTEm4UWXTaeU5gxJQp4yiRY8b2cSvEiqqwfBR5NuKag5LlaI+GIxgOutxFGBs7zppEv+Z2+c+8r75WCiHqhob/Pfqgx2Vu5cwsrJK+99MEw+cvUj39639PQdu9eBm7dhFzIIzOufuh6rRxafO+eNcK6O/Ly/iq3dk+13r3j1hdX5Tn1m6lQnNTWfDb7+qL4yXVxfWUdOoYxHWttvom8plxlqCY1isFnBazAzOLMNCh+X4WyZbnEgDuJwSVkvDrsw5BofXXTG+xSDcHi/0EMZmXOEdt4o98rkSFCD94442Ma5ICDZPKECIImc1uVESQuNGMv7+ZLFoeKbgiR4wyLuK89loQ3+S51MTniSlkaUpTPMTEjIBx5QXdC9H8zebkWiiBWqhZLdT8LwZ8OeVwmq9m5a++asbzg+FIrJd6K87QbJqndYbvS8YLu7vTNX0ID05mq9/vrSbTPTjz92Z/KRS2+65dLr7r/tbqB56aXX34XVq5dfd/d9n2Mrnuv2vmkP5rPZMpa+ZINigK44aN36whSZZcUFhPRTWIjQfebXhWwBeYWfzCWXe8eC9hRGnZKaY4JowiQGjU3bGOZyDACGcigYos5Hf6hE0bcF16tDA6ZKoCph9jrwCkFjxxXuSAdinDIwmwNmDCvvtJrVNIkZD785/l4p0YNdUx1QkJZtWiZJ62lTZwY3RlTnOx91fYXi2MjlGCR2DPhb4v/bATz8c4M8k8rmR65tCkZh8CmtGbR4eh8dov2RVxpNRsg7S30J+rZtuXvx+2k7mQxK8RIIrVhAh2sqJaUkopidmVlpT721+P259zxy//TK2o03XXodSqWr05ffef2lj3bIdc9f+vpV919+1WK91IXTXcWa6VEzlUVH7Ma815qeH18zSHlB9iu0bgpNZrGIIvSTJX9ZOJEKsIh65CjEjCLKGkCExJqIgSUkB/8qdYR0aqkc1CS2/GwXUCyPGadlKXrwuW6kTqJoeQJP6dZYmm850YHRjrNIXVrHj9dUnkPo6uZWaSqKgKyf9peZNAkYCaBAReMEefwavJxtJUBmiFQCJPX9f/Yh/POC7HPgR7f/SCgKAI7FLPf+CCurk00hhW2F4Wop5/uyVqx4k6zW3diSNhzC4AjS2g5LtdTxU2I2lKNCpRh+cWdKzGFRw+KHVz0/c/dDf9c3v5m6+6brboJAtyvspuvvvi2ZaknsGrVWry+tzD/9YaVQzAZJsM9DrtBCM/pCUJwbhci9kqhsCye7gNtEqRYFQTShKu98S6Dgcw0zR5AfEwo8qSFI0tCrCOliKAwy+SnhHpKynjHjrBJ6B1AvVil4u23L2Nmm5YBywS0AxyklUjOBguAezY0kJdQMKC2hlREaKkt5Fd/AiRCAMMsBTLkFT4uRsIxYX/CMiB8JtYQ/y/R/jMEfjX09AdonhKJGAjKVCUppsydSohnSh56Ki9iOPa455dAJbDlJBihoa5h8DWcR8ZNFLdfcfteZ9f1WWVT+uODVAhagLn2LNZLtu9eWnvpqae2mtbfQRjqz+9v24mBnzepPW6ilrt1y6ov63GZltZMNOhAJnofUYdwNmJatxzPWyT5S3WLvg3d/rtRZ/4gNqtKJNpizfcSY5laFGSYo9GaBxsZKtVhcg0RCVxNZMZsJcJG1alnGuef7PyWMYdmUbodRocKya27VVdWQIxr3hJPXdygk1OGHn0sCFsIjbqCQrAiOE8f+4dc0AxWJblG417wFRCk3QVQYhQsJShmJ55Y4917crEnrH0I+fDkXqwOTCpJzpZJoVR0YhyMLsxvOqvbCWd8Mbd/xPXOS0J1yLrQBZVuUglYVdXyvHJU3MN+veFonyzSPFoqH86jTz2Tvnnnt9anN57G31hp2ab8OPaRXvL1y03eLlw7veaxaX11ZX+zM9efW57c6lcPVoLlaHngHQT/w9rY9ZK/+ptcPUFBqJV991Z4vvPBhy/8gWZ58Xw2GsBhSTfegZHAls4LxWJfv0EijTG80jWbyRepuOwCjoVO919SAuqC71Swsso9pcR7bKjfwy01ogYle+3ALBU09cbyMOM8RQcAnIWVzjwDR3AdMIfw4vUViJA1jH301ugHcYfcuV0FwApH6ywdwxX+c/uYrL29ahIOOy4rOG1QeNYWiUDYUhMoy3fEOuv78YCwEczQyiagMRja6LXPUt6SQBeqiE1XGmZTvVA4KO4727u3QnliBtj4d9+NOzdx9gBnRqZWVm9aumlrCnppv3Qb32X7l/HdfX3u9Xl986tQ62rIDwTyn27LtnVYyGHhJ20Ozl781zqLvp7OQmr4l63l9v2Wb4+2wZEpHo85EgBd9voGsj4CTFR5fn2yOIsa4IIEP+jLgoNv4eJPJDNQ6MxEz4HNLhjXQm5yNZZK7RI8ByRCdAiLILbx6N8eHRIErxqkGeJPlDR4uU3ATdj7sDQl8JL4WO1FOuIZfg9MxI+DpBDejQSmkGKdW1zKRCCCf4HqaEJdGhA0DmBhkrwy3wg+aGbP6F/M9odna9g8Raq1sg5Ko1G3nIj/saoP5sLzXHTSFnJvGQoD19fsXsLURJklmlk5dN/fITVffuHbTF8/ffR2gvfSpqSXIU+yTfUu2GIjJt78WCqteKcS0dytV0ILQd0pe4elUEjEfswMB7mO0GwbjVq7qKRItdDUqOGWAoFRt0KZa5ukGiWMy9KPDIj3CRUU257z/8jElUlnu86ikcNptCGKpJVjnCdX0ZR2pI8Nhs6Nc3iJA9sS+A5FgDJJAw6pXi0mcrUcIpBQYaihudf8fo6bE5wCgct6KlShVgDsl8TAmEF4MEH9Uo1WU/TOkPDipM1NGMr4UoAPitkCzbyjkZtMcDW0B3WHaoT0ZlXZdzZNNKYNg5HadQXJVPrUnw+LC0QrWWKw/jwYIFDOmT02tYLdBNJTNocRx09La0sJNU49MTS10OnPF5+cP33h4L1kwJbW1/oaX0piNypUT+ZpXmCukWlgstbsRe9NUhEkLp/GrXzP3nqs9R+LMGjefqBNSFbCxmFwQPWUSaGUGcEpHJGFRQU5wqgybzG1A2wCFZVMnup7WkSpKZkkcAxeARyDE4wOJau31SLNvnoTq5WcatIwqKckbFlJ4wzL+MTiEVQzovlPCbbByiOeNilJL2zQhKFHpoGkCYNaIWOOA0BxeEDqrsmVhuflRJVlKOzSRYQxRTqCJNwg2Dsxyc7Y8h/qtq+4CdIj/kdgct3raT71UZzf1a/uWzdR8e2lhHbsT3HQVdtC5fGY+dcvCTHsa6xif+n0K7mC+vpgj/WDBTyJrLYwu7jlBC7vF6NPMt21/RWQwSeBky/jMmW05GptFxlCbrTEFsVfEZICYJNXkiSMEx2CsDPYLHwgMiGpoahmXjLc5gTPTOZ4jC8a4pefNmsUNJEOAs9nnhhEZ3Np93zXQ3pVgAFHlBrX2DhUBUnUF3F8V5z/pD1EzxNr/B0r+KI27V2mWLAsTfrl82tb3CYG7BnTwIoRiIDwKarjVMiFkn+DEjKo/PUeEqtgbL/xqyu3jskhwisypHGblxJazxdBpypomzYzmeF2dm2FT8zBplsrOnFrAv1a5Mn2q+EhnenHqq1NrM2uPfFv/ABoJe3EtYXJoar2+0v/88XJRkyLe5djX0JQVoQ7jXPZB0bGLTr579G23m0RF3vNVErBd21eFkD7fpdSk8XVzflKVx5XGkCaQI22BfJQ4Ncd891CZcL67mXcpQSI0aZAMLWmM2x7hGZi7fsLIbx54YAyouHCI1eOGZRMXDsI4etqBP6XDBKm98IOmIFcnZEwgj4xRxU8YMHtrOQN4NTDcYvCOhx8OGbxq9AEHdrnMt9wRNNilGFGPyPRhZFiMTaCL4+mummmKZlWrqabDzNGmXqswquM9aPhWQes4DqKrL0zSzubt0ex80h+lWitY9v1rkMUq3sX1wvp6EVvtvQWfib0VvLmZ0J6ansnG6Y+/nPb9z/dCbRZLfuSub9dsDZx3sCTAL1/4gnSciiPYbMiee0xXNI2pCLUK6pp4gs1RAygKjv+IEc2foIpX+EGgFyY7iRox4gddIwcAfZ1sdSQHBhhAD19WJCOGAXzAX8pLP/0kdMlPknjAineMJmlmdNgBRm7LSr/w6yS9r8PtjtOWRRcLqNZDTHF2/NEPcVJFHEWnOcJoZkIoQjiPxTwZ/fS0pFrukGnJ6siVZtphniYYY0I9zG1Lk/MPJo4S5FgoaUn2x++bthzXct9cXLOxYKpdgI4clyo7WY7KYLgw9xS263lq4fn1b+sz26v4B6o7F9brt7R/aKWmAz+orNIg0BwNNl3BlJVmGNK2K7M+otNeznacUJs848Rzw9VNxnJUK4MqmoIJNhggIxQc6zLLEP8FGMIsDlyplQBcAIRTquvARVLVZxR4A6ac5S5z3WWxyyQnylUnEggCXZcPJ5rAe3jxH5pDqUFZSZI7yTfBy+cu+wG+ondgWTUcf1yh+wbZdCmPEU9Il6UbkhgBGKuDjHRDpW4mQaiKZK4mpBSMKqYkVm5TcUzMgQL3tIjGG3sm2viX3eOtaByEgdZkwt0J+5jz9rphey/0+/6q1/KEPNUOrBQaSE89U8dWCTMt/E5PYXHqPKYvWsV+N7U1GdhP27Mwai3UbCQkuuZzcBIJLLPL6Zrj2OKDbTlt97pSup//wExFqe00EmAm4fCNJ3R0AMhJtE2UTCBb6+hjvrytj5b1RqM2sIwc8EMxTTcbOAIj/e6BbkUChN1HcMYZMhtlIEA5RD1Ab+LcFPEmZDHfgSMexJjCBjbB4/GBq1hw1RaOs4q3MJ3GugI/GODCAS/vJiBiyZDqLrJ6hak5rZfJ0CaVDY2xUjVRfoZSSFLZSO8G6kClIiOFTKcctsEkvkwhAFS13IsC6dvdiigAg6Qfjruk8sUnL96C9TztYgrzdQH6Ib7qLM4HWWy2920nNQeTdoFegf3qkLBAtVITJ9BXP9EUoQW2snkQ5GZlseqoiitdx1UkSHlSb4jpgJ8YT32id+HHah/ELjGHKzRcEts9xcs8BxCWNGgMvTfieE1+iGOFRQElFJSFF5ah2004/lzsiTmYjbPFx/OhFerR8dGEQAz14fmAZwkWgBiv6HH8wreAexp+5//ygcik2SBi3GoQPWeI3SiBexhRRtT0pC/GRIvobuOkuizSBNOKWL3TEUwpCVWYUqoiLRSWWD6QW7Kqboep8skKSEaOtrCeMhVON72nzzjj7NMu/jwIFxewb1b702kUOk7VZYsUEK9S2W3MlzZbsmsGQS3z/S+OxOHwoQ8/nnEGquzlRiXi85LKmEYFbqtf0qQsgQv4+zhGfM2cRTxOpzn0oQ4EYyg04IyKJD4ffmZY6lCnQwMWzULD3d7Te7RZiu2eGaxWq0YfHXALr0Cs+KmM2wGvwWC7kKUWIZlSmgpBcRcPSFyiUyFZgajKajneyxsnOkxXCTVjQlOT4GMcz8l4xDGQb5KgaqYFobEDSUhPlljkUWqrtH8kpRMKEdVIKKpYwAOZ6wjBqFmqKTXWUBx07zjs8WNNc4lkoGin/X1ZyWnCDrFifScLeY/5NC/4tffwhlOMq3PeVhdVq+X3Q9vx0ph1lJEWr7z+tqxBmImQ2Vr1pcZB1Y9EoDJVSBm6kcvLGRWWaQACGCH+fh6jSAkeLIx8HqyM8aEZgMyExSUDYrHnoywGesAZhL9WZbxHgIEae7n/QpgeZ/UJKzMkreNve4KdaAaDgIwIKIb0y+AyRpWYeZDTgGoHml1T8KpNTJzEwAkQpjjBRIhRHcaJGBGME4HgKOj7W0jnfQPAUsaaZMgUk0mzlkgfJBCJmOWktH3KpHCYymJJSnIyG7RCU8LfDZ7bScukP2loseHbftaZoDMXBu9VOoVO9rAZlJM7C1jfho1Lasi9iJkRoatS2bYLgpP2svTGUml3Hc2sRoZUqKRpwTQEEkZ4RPnJlFGMEolrEDEx8UytvJ6XHrd2fsCU2b8snU2I+0QYxueWgQwYw3ibQxIYcilUGddSLSQmWPyo4kGkoOwpFxULigdBlByMFEVQUBEVL8JSUERF0Yr10LoFv1ALii6CB+1eRBFWBEXQ31Sz+2/T5mOTJ8/zvs/7ptO/HJxj/kLPswop0hedgk6fhF/baELMyiUJfpR7KzBeacTq3XnOw/ehj43rdz+sAC20UZxuvRB2R+FUpM+pdHxypg9+QAiYyA+hGaiyKPd/wJEGo3H6Iyks2nCgxY8r8Vw6aUNjENZzAQOXHIAaoWS0WmIYAidlLF364/ZxWmRKRTEvZ2acrBl9mjy13Ux0cPbpMsI0JgvGjjtG692WvD4YknVHRwziPbn+puPbnzuGqXH/qjvio4HoH4notmrkzgLI/fqfs+vJhvE6fvMk6VeN+KGpO6kUiTDi04IQT+CncXrwE3HxkNdlpmj4zBC7/LnzNWHX/PhTkAKOGZ+llCT5SZTKtBZNbIUvbHYmS6cmZS73E0gsP2Vnu0wwH8JG8APDjOdATUKqeUmCgTMzeVgfPD32WIkM6+TNFMfSzdo6YsEkScehYYPfEJKrTPicYMIcCZqCOeKw8H0/bqXEKLP7stXVRLx7yYNdOOF+ne/rUZTlhZ4cTfxN0dNfy6PCaW2TVVFMovE/+yBZPplef10vHPF9HEPM1FXXMzr85OIqBo31bive/LWavjq/bfv6KKE30JPxz9GOCoH+/3Dej5GSXExAMRjyccICwfxzmPJAHbIvCIztU0WeLcPxM3e+axH8ntgHfVXKMwEg1GBEUtIV/c6E0AB0YHGAhMWFzAOIDj159aoka2UwOjTtKAQr9IuVwJXFsWSORcAJoMzZTKQVZEzFV+lXPh/lkvt06bsvNCr2Anq1NgBpPNrwUmDD+sk4lsa0Ir8t/sdGv2k9YLlvi109Xwh4q5pkqSO9P74vd9GwT4NvNIvlZt2L6VPHi6QU8VdPHGfxQu4/+/vbPLaOwbt8+8TxYMBnE0Y7yb2Z/nFFgZQk0clicUIvIHm+NzyJaVP2o/PeIJZR2PYDIpQ4F0aE8R4s9/5hHPqYGXnb98OScnFW52ULRDDlJ/cfks8sUtDN6xwQVeY7HT7xIMmCWspzcy8lgAnAODBusUlTHJQlz9UrYFiG6fYHm5p+GAWsJLQCR4IxDwhEhbp47JuKV3HAle1+JvZ0YS4gOPvUaz92oQ3pGohXd3KU4t7//DRTkYES9bOjcQ4Z7KKxgfQpMqghpo56ba045devpmJLXFQubrs2nsbXx+K5a0N11E+y4VfPTdNo9ktw9uEPNhk2X93GZ3SOjrkHjeKjM75pox9vo95ng3V91VFMbCTLBf6z7Fdhv3uUC8JsGw5UPVccCmJG9QXHtz9xPBrvveGkLxbz3AX5tABDki8waT22W07GQxSYfKZppo8Xc5ReQUIW+EoKXAgC7/0x8/r15hVc5tRQTSIzB0UJwgJaNmUWGstFQ66e2QDK6l7yBHGaqaZLM7AckJ1YCUbnlmOgxOJoH79qbFPaMQvKpeLVWMSv/hS3vXMEp274hrRlYyWwVit2PhOxkeQjyaqTyn34zm25oniR/ThONo2jHTjKVOlU9Pfv1zy6LOLu+ji47bZFHGM5GSf6fD/5tOr1Twaj49suZBVJza2/ILhq+tLP11O8vXF021E8vn3oP5UxET2P4+yaCxMUgRn/E5/MuPNSjcAEHEqdV7MgKWRkUK8ELiYeJ/6pFRSWcpxuZJZNZIAhzPM/tizY/gEmEDA3P7IJQHu56zyPirz+5alwMQ3xoYOkbJFqHbIPyIQSgBE4g07l+E9huXK9iAsDcw/FK0GUtaT5qUlBX8ePfbbD6QnaCV3VP7uYDqcT+syrLeKbvfB6MFtjpHtL4VKDbgRQGrGktaTaTXXLR5FVJ6QhpeP+44zWfeEvaV0kX7/k6feqWE8H1062/SPuRktZDSdX3eHHBEnS/8lyaLEUP/XvjZP1p1GArv6Z3FX5G97FWxcA2X0GqJ4KSiKMTIz/QbJ2+PxRkmND5iCXHXpnEfrJCQGt+o+A+fxkTKatFuOa15mA7bBL0wNiE8Dzoj1IHmBFgQxZPFGvZ1Embhse+RbT/PqBFG0ISi5xRWYgGptgOdlS+T0+HgTlVeaQtGRuZrODK/NdrOY8IGkb0WxohO0kNfc4rSOMfDQMJo7cJdd0lTQUPlj7TzpZvQ6acaVj5U2ZkFH7x1WNSmK3iY6TY3C6uPTtwVWrLgYhm8ilJtRGM7irLxbR0UBeVQzKs9dvQ/S2rta7PqYZ04XhLez46PlR7gtdwPS/TCrGLPUirQSx6B8aCV8+9MDHj0dpxB3J01//yyuLwMPGLPPYJfjGk5ChAmbmw3GRRNlU5MvZIVLq9nUjWFKHyyrkMiW5+/QkCm08DXuBkJswG7/+a9zLvIEUiz+e/lEqgzah+Vph6AvYaKLjD24/3kdZEHTvhYfCtxT/pIIp80YOah9mc3pGYp+uXRKQC2oc9Jrkem4Y+yB7fWMEu+bMiv48CNaFFDcF2C7/uclVNGTgfvN8P3h1Vc/aQTW0ljTdWyopUx1HHjOAtXyr0SvruEwGdnh9UnzG91EE5SiaPzNYGzNJ9unoxnEUCwmW00Ay1ZPdLPktgJ6+HNmv3v7ru4fvv+Z0lMFQrdR/GP7/jx/S+3hehF71LheViogK7qmZr508tQCRtvxbN5+HGTNKVKSPJhQD0RCgOVCiVgXAkI6uPHDwVnhoMj91zqsseP0HzCVTqKUgVQ8GApwbgl8nLrZqb8ARwaxaSKtKqUJh/v5hoce5cysnVRzIEsdAtnXyNKTGAJBAm0Am4FNMOIDz+yFmG0WDQb9evWpnW1p6VifDAde2GgW9HxcX+FeVqWWhJRQexbEdTbV2PRvfNomiXty/bS5va2zXPF9ElPPbj74g1W0YMEjm3nCgU2iYBiYMEXVKnvje/z+8V6wR7+NHYWs9nhkoBnsPp04zu/CKJ86RT3KPRJzlXdT6YgcsJcCy0PNHLQWxpiiioKIJXfdZ0YRr+Cqqc0k7qBbO+52K0k3HolMHvXuoMz9JFwj/t0HVCnktUXTzcMcOsykXzhsCPxZZkcw3774205CvZV6lZ4Lr0BzXymSqNwbLGHHCHmkQomCjX9d+kMi5TJYgFOm+2y5HttTN7O3u2vhsEtnKqF/fDhbnF9vaa37Uo/B3gaorzCWD/I5WfMXrfHqVxKzeBpV/ee2Gr4cB8g9O6kOPIMifvJpcG4+joxm+UOzn3z98/4s+GWEqO9Qr4eI+ubryBp1JbHjvv256WIeYJI2P5C1eAzjM8uxiP6Kkt36TsRnrLKcCUy2c7BMRcDTRq3WzmMoEhQapjzuxAio2dAcHypzQddFH+wifJSU2OWW3c0VdL4THRts0rOpT369vo52gzMUEP1MThpmamdRi/WBrrOka7i6OlQqmVVM7ECzlpCQs0HVMGOBbNUVduZU+mRfD0SZ47xxJWlzVrKSYGnBZLVar1qdPzXVRKPfzUbA3/dkwiatm9PikSfpRPA/kjK72bXwyUu7iciyr00KopXzvlstJmDigPMDJHPTrY2P0FTCZX175FQGTnlIwG3MRJh5E2AQbLcAjVSi73pRgyaYekjC5/nrPCKg6w8YXs+aXnkitIq8JaakhpPYEPe8iQUlJUUkWmpGAeiYDQpNc+2tPCHYEhzW7Yd0ihNdFGE1FRyrfiloySvHQsl5ZGzaF93dZ26jFbGG0ULNCD9rSVtsP58BrpNWas+8VgJAyUnofuX7RTIuysM5B6YS0Mq0nSmmnFXBO6PHHoVycxbpQqtZG27KfxccyryjV43hQTJME80S3gGaOPR3cdmQ9T5dXXvahhrlh4QJvP1Y7lYUeIYp9oPn+1EfQ2WkADQl1ABjgoGktIfYQzqUCbmlf9Jt3X4edB5Lmr6Y/Cn18XGaGIEIC6Q1NqMnKvyrjurUU9SZqIqPMrAtM7AOnrxIhKHt8WhvBZJxKWABVUXdITvHheOVCU9DNDAsVT61sq2BhlVjIw4384GSRqh9Bn62VgbeQWEliIdA6o3fBWq+qCvTLKPz8mflY17WbO12rrJmj3kglSFpbZxuQJwbo8MWvg4A5S0F6XhiltsU+fvyqzA4srZW4VadN3KzkTBNXk8jW1mkjnShnuDJNiPGZUMAUE2j8NAnpAGgmt1amhzqHNzB1vps+H6PUEOCJh65ibaIpYYrcmhKP87R1StBiq/p6fkqGWP35lTy082MVrp9eFUdhnQhZnoiSFMy26c9vnXl+Qn8gNTrykAgmlloqSNapzyUrutAqbNnegJj2OQ5xZ+O9rJRpotW2Fkopts+wDaprtdIvnFszL1/dzZSbNArqTz6rYOD7L5wVzlmtVqfWXpyrr3z+jp0rQU/fbnVZMjv/ZiqXUVlPO4BvWH2p83cffFOcD/BTTq8Ka8u66HH3I9JsplXVtnBbeSr4UAo7D9RoxQy6dRfz6QnK9833EJq8LiBvCT0cWjXpxR/hyWpHV2gs0L0xhy1hZmTkCrdJBbrQUNxn9flkFEamn4OXslpEXUTrw+mixvy6qlO//UwuxX86Z5r/9mLY4YpHplyJWqEXNC/gkilNqLpx6HsuuSbJCdE9SRNBw0Ag5jhUrdQoWAmfp1E5dc9WaYNkkbD4WdcrpXWmYKpTbVfrVruuVWWJxtcaOMuysqXzk9Y61jYYCt3tij7+W3L081/Wo6H98ekgLjWrKVmMbGQjxU4LrUtjLYdRa4KQ4qQOnlSQDGdSNgUq4pWFpMCpCwNNZjCMfAsZeasOUVLY/fHe4RbSKDoV6cV2kv98Mfbl0TwrT8OwZymhIT9wbS5UaaTpGxVwEEhrpTm3UhqckC0GQgHGrkCui050AmxAd/2rv1YWZHmSvJcpvfrmzDutXAidVsjp4v0OrLqVUWHu8VRmcy6YOZgD+Ftolv6qbNkU3dm2rF8vih8zredAULN2XWuAYB0LFhq9t8q6ujh7c+VsJM3sh2Zt1ImSTxbjhbbIY95oJ+esXE/q6of4nDwUqsqaY62cQuM2c4IAakcKwIj6E2DkuiAWYxAflYg3zqokXieEgkHkAEeGjWRF85/JD6URAedIREgynUOweRWkssN1KzISVnoqCRwSDaDlp34LpVq5gAur5ruVa21VD5sDnuiYy9xwICXKaVxt7NzYlUeJM8bXtJmpN3PY+6sxZ08vfX8EULRfata/wsdGaeBn+oe2TuZOz/XCNabcqnNiaVO8WgwJdAutZ7M5qUhVZ9YpcBoxf1xCc5DlcaKdKukQYug38SzWnfn57p+UZkmhLDnLQe5d4Tkp29lY9MYGILk2dt4SZjcWafx/OU1MytwYEIzysYCr8UT5219gT6KIYhPBIBPOyf7gTpJ3Rf3rV0Eoo67OQyZb0OXrecrCeHJJBCtRZfb6wl87pa4yKuo28sfY2vVSV0VRnhSd7bciAwnO03jZwhbyiRGSjU2pWiOKSggge39JkmnKQ0QIi7OA59J5TpKSm6ouhZZAK5Z2f+OTj2f7+Kzxvh/lZdq1td7ZneW6oOUWhqlha2TJzktLLnE15MOahWPhjIWKJalJU8diLgo7WbR1ywGyotmVetVuHAcvxpVO1fGNoZHAiVVYtfoQ+3WujgmaqAuQntiaVSN61x5d3TsWna2qxuGqseMSmJCdd877AO8eQE84ifNmWxGUP+G3WI/3fKpuaeUVlljieY4Euhq5Jpi6Cu1KiCBdC3yuKHTtJmKuS+UjpNOecPVFrX4yjWnLhW6dmTtlTnXrhena0tQz3/pU/8VtReLBaAGqVounap583O1Ls98Lp6yRWdu2P6uiEaStrnxmVyB+2LFwr6qZzJTXOpJ3MTPE1t0dqXVIwZX95256ThlZkPV6cLOnlbOmad9TPSeAfgaVp2O9rx95S2qTBoV2iMrATf61f9zzg/A+/Kos/lzDDMA11w8F74GJYVqXIly5H4SqJB2l+vWnvgly/FLIlEVbjqumhwKQgcAiIUROVSP5/zIMeHLN8/ZGt3mmLFX3sx66eEEQ2nw66Zef/pHUAK47Qjx8IqIhuLlDTrZYlJpMURz01M7+O+SVMhdiRxg4P7VeVUpV32N08qwwCLJWPtx+O4/32AJq9u0PZVcQJ2BbuVFFbXXFhQV+681VkQM5eFoihNT8/Pzw62R5r/vi9VP67ozFseq0/spZwn31lC4XLIQMurbZoCNR/nDrpzKW8nkF5pXUqUeRy+2cYKpumj3vpmR6PXhv+7dnr2KhnySxjYslVd/ExMTleSV8WxJmgNcmgJ8/itX/8OUAXgSyef9kV/C6hF1FSXx5/euY+GNP4qpwkgNG7t1k0t8d17UAxdp5uwN0XHhVG5+ztecOGhe8b2e6YS2fX1hkuozlhxTExFO+U8JKfm3d2s3L73cpmaWrOQHVrT2IsM6U3Y8oRTfv+czelC6aOrDV/IjnYuSOSKqFdgQDtJ14rstoTpVVQGou+U5YHa0bA729in5+6wK9qlnVquZTQ5fIi+Q9kx3L/5RjwLXJCEkLw2zMRjyXpwcjWBSWnWmDOfBDg0NfsMThfyHCn4eIRMAOyD4sY194IPghDe9d/CKtOhQZ8UGVFnCr4qmTwk1G9dVNiw0qhCsRmS1aBHiIUrj9tkDg/BI0Nnp5OAnN7lxFkU4NCQZO/kvS+YPGUkVhfLtdyBTD5ZZTzAtc0wxMcdkdJi7cefeCSN4tFCwGogvCgIU4YGXpFI4skYCCPoJiJSwLCw+00QhrkTUp1MKkEA2CRTQIQXkQfIUg+rtxQnazk/lz5tzvO+fMuWfPAMIgtoUMPz/h6Hzg94Xh7SeekSSpMuKMxz8suwoF6lOMdG9BJoYZgbQ8+X3F9uhz+/LveUUaDkHZprrz9yvR/yjT0XyoyIskbqmMj9wS1msGFZNpPn8ScnvIEdIwz6RQAuUanMWVgqD/L21fNQS+iHknXbJ93dDcBsH48D/trhpQII0Hkz1abFwC5wsxRJm/7dCvF91y/IQlqPoOZICLN+iUyKU6rpRpNo7rmfS+Ma4zG98NkB8pm5NIBbwAnibsJ1nQY7CRvJklGAlekziUG9fk6pfrZ6A7ksktVBziZ4pbQOSbRwN5F5z0yXoe2aiLACc/g02drAnVm1qZKJxp/eVZhGrgxa9PtATK68YFx61hT+Tjloamwgx1lol5HCTAgfMW1BCbQIoUrxuX/fmIubGsLH8LUw3arWXwcgGhmw3MloiF+UwCmDir254BmuT/wyC4p8ZkqqJtbbvR8FqNgtZGxXAQuXupu89neVe3EIKoitxCpP7nZBUpdg6Db/ApzcJeNo27UujKXc5swGfYNuiPELALZzNBtXfavXuFGEuuR3bbMJ2iW1R55obIihoUNCEgCbS60Yl4cBQFM4b1UA6Fx8Ffy7ZO9HoOF/BwFWwIYoUFlVRhuAVIg4D8h5srhfGJ4ZGW5EGVkHHi2Vrxi+1sALuUnHOt4u17EBn7Oej+/PQr4rzGYiQUPrxVZxyNHRADB1kRRUr0vBbD7/5M2qBPGZDguMpYuxgbOiKPAozZhdMS6svBu29/ZmIY36hoGVVeQXfbOKQInEWE62+hCnxpLzvbWed9HTXteWfbdqClA7JIGTboIWC3g9oAaLBK7K1wQjoQZnOyjQqv/4iImkhS2uTyl60osLqW26wYtpCLVAQXtfqCb0kuq03SmHlDuMtdaDhDFKIw3tBbwhrIHQBqM9ESy4IGeMRKkxR6EtLKhEeiqgS5uAApBfxHkln1iEwZAgzzXfLxEdUSpMbPBojN8eeQBT2iBXknuALun14HRJiYdFYcxoShjkCW7LUipsxldZB6MzJKZLrCPI60E0zldtKw9eZViw5jUnOKWElV/S16cBxBVeEOBHiopTW2dM7btz/sm6VFn1qHkI+rDAv+Q++ES8Or7wA//kq4n+vnYOfXi4jlWgvu7Fd33/oWQyKw009uAk7nlId0SlKgQ0396nHfDuZYlqFskLtV6u7YBE8y8CE4oLAEg7Gbx2oInGaFk1HQKQFSPrhI4XPM9yJiXiVAGmQqEdW9l/x2Q/Otvt86fv+v0zzSzO1HGUnWzRV7KxSGhcRK3YUK8g4OWgfjp6ct9eu4Jggp1198W0mTKi1G8pz63J7t8kqyjtkBLUuDulwghePuLiC9V5HZMEB3oFx+i9t0TrsLq097XzZO18Zbls3cDowLRCPSAuzqQutPTjkAFq9V3MQnAKYdmAopY4aXCDhMT7hynV9+a5PT0TGmE36r7nIeob4ab5VmUYrcUH6JwXSyxmVDjpwRmp6cK0PgweFRdV9jGeEcsIuJUKd8QGm9rmPzTzaB9cRAe8wzuzzlSncmeZVNzr76DBqufSKH9ZNHGApm83/1oj2Vj6xs5JIqF4n02Amt8wr9YHA4x1dnIynF+ss6i0c/1MGQdY4IgnDEj1Su2EgOdnQqoIWOESgV7CogOQNf2Dja3ArZPopOlyauQIGx1VnbQHRupW13ohrfnNTNw7q+OJwPAG2n7ZJsFekdvHHXrRUh859f3rYDeYkcG61kMxI7URXbazigOlW5Ue9cHJ2YNLogdhCNqvXwGI8o9CJy0z5Kn/n3X6nhRMA9+OcaMhG7x1WVlCJRRkZzW18NPeXgBHVAEb3aW+HilTmJRl5VHHSxvPj4SRbTZpybE/VeiTFtlmvCbCaP4xsgRX3DpHR2YvqFyFRe921iE4ZHcR2CcwrpcR4EK7D7Kq5UneWVALl2rSDdNeDJijSu4ionwzPWsZAssWR7dsp0920utCqIjbE6rNS8arDnrXfGaKfOOqeypnMnZ6UzXX1xtFqvBjb8b2N7kGpMh4/lDpSR3dwu8Ut9vOQ209jo6k88PIdqVMskUdfJDhssPBkKCJmQaeoFBB0J0hE4zpN0Z7yufpMd0mtR0b1lN1Xgn66mTvz8fmWMy/Im1nIiFAEfVpSoOOAiViJ6IVOdVcf0cd/KOjEiaErjvE6z6UpqQdnzTZt598y9BGhTmJfZdTnNPSp0xYVqP9sQqKp8Tnypp4nIo8O0ciAGEFJ28gIjnGo0E21y11Ojpgty1Brqb9VnP9xH2SpCwtSxSZPnUrNEgh2wF0s0zcXYSTl2tp40xf7Y1CPXzntft/3FguTi+nj1zsB3zpmrz5cGB6wNSlt0iTdOa3Cl1vKEGBACYeoEviZcttjC+K1942Fe1+NIFqgPzxJj/Qum0p7An3uzSTzaVptFxVhXVV7mcXPc5/7azIGLgIwKm1NLReLhRufpFvSa0U88ViktiGT37EzKe0coxj7yYlDVdMGW43rp3FrITT0Rg+xQ1NN36l9CI/iiiIs806OscovzVIscbMZftIIJDnN0mrp0WjYNjSTycWaqXIECbzqGxABpDNgL2Xylxefv1blJsywtp8ZwnnridHdotEU73q0foRxCnNqu8rrw5bpzs3F92V1+fHqxmbd123a/vPf4cPXK4wF45eC3L15WCbvO3HquycxCU1TBcPVKMrceEmGUKYdYoz01eu61FNKe/MwY62R5c0Gwp2RA0jSHI0U2fOXlrx/ezKaZ40IBxkFmWmeEwwWYbkJ3fKwW7ZvTdEjzq7zNb23hVzan1NMLJe+bYsoU0REljseX9WROkc1omvIMjpRqsOt0Omnj8cvZYspXOfdGq2J2rx5dJUVfFlOT2ann4cu+mKZbuy/FRegz78dFTcubicxofWOzwpX1uCyzxN18M7v6gfbI/qIcTyhApad/YX1pd8upt+PdsqB4zbNyt3QHFFiU56cHk9l8fP/w9eLgoJqtrg+7wwf20ePlYn58vjh6/ZXXzr8feNvzY/s/Wtc0ZeNvPzdrYxrtKsWPT0z9WCYhAHA0GY52QhibKeFqXKGx72ZVKKFFmVLBVQaa/s6GYXnu6UWe0/W5LL0Pzw6ZQAM/8bWHKtNiVmZ6GkfF9GD10/uFov9OsbdfPPR7ZRFl5bgoqKs3XzxVnE1vynJMh9EdOvfs8RAtvgb3cI/nZu199PXuS7P9RT0+PZg9XH1JfeNbi/3d3aPJlp3t7W0NxmMaML1R0sLON3VZlrOyLvdfv28G8UFJ3ww67ZSP3npr9mC22J893H9+f3Vw/+GDvfuz8sHug7w6+v6A55/NFsPftg7CMyPrDz74j6KzCV0ajOP4/1bQoYiOHf4dokvgoTSUoDTXEy0QXY58xC2xuVauPYuaUNJqFplrFdZE6jTJVkiv9M4Korf1otkbRhYRVIRdiqhDFPVLJugO234Pv2fb4fl+PpETFpDhVZCjYarJehT3k13DyrIqXj0i6rY+0G1b7CXODCZqNejWNc/gZr5pz7o9kMxbF4D7V2xdbNHjZ0tP/owtW/Du+4KZy1atOTl7MvBu07L5S2CT781ddu3GNIgqLwES6MkpM2sB2L9kNTQkKD/DMchaQ+afA28KUMPC4RpUGs5CjYBZri/5u3wGZLIi4WMgzuHuRXL7IYrEcVkY+2jE+pDVImGNpsGVBQu+qSQNllY1AgSjGRAzBDktEHBZi1YpmgK8sJzsqVH1aVuDkE0d3hIpako9kM1ODU22QQt3vEJTNCCPwBHXVumWBeiRFRf301YLOCQt8BL/T4tZHmWqLKV6TUr7f5SOlqTY7VHP7HiWFZyaDK5Qk2rvOO14W+2WaVMzWTs0s86MbNGUBzZnFxL2qFcupfJy4oFeSiTKE/DQv/HsxNNrtVrtWffenu6aTT/X7akBhD3Yvdu0wpALjoFMP/yM+9nkoovrK6FhIv99veEvZ1bF1gWnQVgDXFMQ95syZ3IlfeIM5NJpiP+ZkSzM13YzCZIfuHJVLWsh6v9Hm8KywY80S1t35DZQk0gnqWZXzVcdQSwIDYECfGiPMc+d0xiHYShN0LJOBw02brhzTn7ZIUTtYCdG2+eomZNRz5G8VYtnaoIDzLWpi7Lwa3JlUhCoN1fAK+A4JtGCoMml8DkwFWNHoJAGp9GQ004SgoVzjIGIhDEiDGku8khHZ3DHdmyd0usC0xEl9tqZezIjSghJtodXeM4Zr0LsPU/3E13iR7K9bJ23N5VOpMDgKoflfDo/ym+Z+FrjdtZuPP167VP3Wqt7Gyxqn9hYzLLqVlc9oXJqk8vCkmsQLmVbtAWz4ek18G63Fy3jOIvl9D/dZBQ6qd3qLgIGdjQJVJ+WpdKWptLaYjqworNi5pJ5gm6ZmsnNcjBCiJkbCi+YxgiGR1NpnGsLr4wkrNRcgRpIMbCPeWexVMIShkp90WSE+awhMTz1SpYwDDVvICmZjyvSlJW5uVnDXxFocS3BYCQ+eHP6daRJnwmSMM8g5pxhwDgFp0xOEoK1nNUwBCQxEvIRlgSGwYJE+L5ksHOmCY6AEy+QucaTUJqdUBMFdoFEsqivsA8/lwsMn0YNPpV+UNZHqsyjz0cT5X68tDelH938I79/6Z5B+sD2+y/uV/TC9oPbJ3T51evuQP/69bX8NGbJsm1a5kNVdBhWZllW/f+15WbQ5qa22Uhgoumc4Mykem1ZyJLvdekTM1QTpk1IVfcv/ALub4ZWbQEaA0FFzcEKjBZnQzMYiS0bfOkNwX7DV6RfCwesTyIkE/f7b/t9vGj5ZC63uj98/37fWN9fTW1Xhm4fCq/2h1XfXV9tFN1iVaoaPnbd8dgwhrmcK4U+HL2Slnz+4anP/pgReIQYzZB2GHhoGAZSqpLrY19RIs1vdxgizQxS7ph3swpPDNTPSIWq2/AdzA/7qymWFJVEQmm4ZxVkNGZEF81geL0qPtrebyT4cqpULKbiaSBABtbVC6l0KlPcmvLyW7fmgQDtlbYMXt+T7cPbtx+rHK7kwUkywVbkfKlUuvtq0Lt2YlY3L4urbFnUE2VdZGVGFnGZeNK9yVaqJBH2EIftvD4y9QtbTdb2aFosEGwKQq9DBNaBGYTiCEGHpElDUQ7+UoyGtvuY0Ug3lCJ0VmM89ok7ds8fdiuF+6VdmSekmKEmLFGkprKZ4b5dz7c9uewKyul9w33Pgf25ywWVp6GUlPrITRR2MZgMx/4QGz/48RDvf7m1hTIIGl1x3UL6fcPlUdWvwtZgMm4x7ipj+DO+9QJL42Fvsz8mtCukJdxQMn5aGQMzK0rcXc1ArZApxnfFixksZ11UJXQ9lMvsKsbXpkh6bxWcdMr6+KhIquXusUPxvepZWy+MHhy77206/KAkH95ROf67suMwMPTvP9ix49KBLRNyZd1gf+U4GG/El+fvdcVEftDT9VK8rETCQds201gviA9LW0UGJUayjFQzQUbYJOQrJWDHHqhYICBBMVksYIzwP47O93WGII7jnnngieQP4C/wCJESlhNqs+xliP1ey96p43DO1d25MzsPznCc7pA6ihyjNI7wRZ38iKwfd4OlwZEmEiv2EQ1TMjza3WbaB6/P7rvdmvm8crlErpUIfLI5GA5zm4HjRDjIecgYeh4aei2kiQiSo9zngKIspHrbwbLVsydpeFRKZBg8P1ZiQ4wxIRnBoRBDMPxc9oCHdC8Xykm/QThR0TQfJr4hZEYkIEG0fHKwKnCZH0RehP2HCOQgjyKi64cifjGIOOGR7wjHDsCpZODlEkcvAjIXsczS/b/HvUwLWQbAxR8x0dMfPF6F8TBuNbdkQOzSIrYpXnwMS/tet24NvC0Ft17e2XN+WHbZsnvZanln6Za2EDSu3suW8/cmZCvZRndQaaQOZwedxpZOqmg/LRZrpm2Wr+8f9c16urbNNNOJUaHgbike2TDz6Kq0zraRbss3WrXWcjf/i3PgDHO+4ziJlu8HXivh+BwNWwgCPQAMCENnv0FYL6RA2MnNQnJJJVcSWEziG59fvDOTYSSaAIDFtWRBhSTEVMKe14wIjIDA3Nj+bPNwWi1BuFCKKkSjpUeEgOvOt3wtuSVBooMQV7wQIUxaMfHAUCBfKSUEUQJxfVxFtIRtyuyjLNMyWhP1UtmagZFhw7XbyP46pG3ToKdyNjc4hMzI0ybo4V4Pej/mHdtekgZsilT7SNkslapXe22K7bbxMKNFmLotcfXyzjDuV+5pWYs2if+YkErdX7PnbqNx4VXn7qtPi7bYqS0L5w9Mu9YfFWy74Baztrm26BRtt2im7dFHNz0auUXdVvZILjl7Jdowa1rCcRP+5s3OMPAR0q84tEhMCOYszsxd7ZkoZiyTpw5lvSbAbMb6KZGSijAxhF4I8ifru//s+PE02cftquHu2iSpEpQbJQAzGCIiJV1/RuJSVTD3/TGuIr4Oaah8f0SFGquSi2cf+BRqYE1BCUVIMAxxLGIduFwQPTESQigRcM7R0g9vsyUIwIx1Z7Zs3wQ5pUIitXKWxeLk1CnFCmsrRAJbxpmM1QOGm8Ela+meGpu7nfuwRA82y2PmzlbbCse7vbjU1UKscvPy006+eaRz7+o9rXP6MfZwQid1/dzWwatXncf3n5+/8vhC2x1c+VQ0a4Vsdtxw3VSqbnXrZq2v1cQgqzPVqW0u9NcWRrmceWCf7ji7f7KbPmKhyFjQ9xwPRFYLEQTHGZKEZV4/IPE4woxjxWAzZljQjatmbg8VvyyJUPkvUjLJqhCcT6+XdclCj4ZMMbl0+rE4xsGQExmJd8JnDDgU7Lyntpj8Gl+1jHPZj5TQkMSdKlJJqs83ccK5GmMSej0DLpuwQIkokBpjIIL1ihOfcO82gDYyJ02e2XAvYx+Kf7xj2y5RZ96K7dCbG2BJQoHi3pgxTi0toDQaZRbHIRcRdUpxN65edenOeDyfGodaRHB1f/Ph/QftfKzFdpXu55OVoxsmZAcvr9ytpA51Pnz/+eFVw00VB68GN7Pug+tmIVu0vWyhZrtZUE9v1Q9roe08rVtP3fRac5XrHWzYRx4+qQ892LLA0Q0TTWRByNzknHk1BJkXN1k706QHw5gpFQpJSxhYNe/Xca7k5fAL+qLRUXmQCEGZfAfyX0JjwbzZnEopZ56aD0tYUcFDIfjyo5FVov2jBw64YRqlafhZcxhkldimlKJEyITiglAZU04gZITGhB3dt1/HJ1dy1lxBueD9gGzjfPvEIxiu2vdzx6W1vREiiCsuqWiZmV7/sy59CklBVNCBYWksk8+vtduZVFzo0RytK8mZMuOD7SqlaTu0vPbBsZ3thw+qlx+6VS11unUj+ePJ8wsnJnQOdzqdT/crh7tfH3e6nUZKf5g2upXB0xuV8eoAlIuW5bhvjrg7K4bjWcVXBWuta2br7pakaQDbbg8tiNrQQ49O77c8iHBtmv6bXGJgRkXJmbO812SUShpelmqbGEt5xkGGI30dfpGCS0kV0eMEh00pZLO2ID2DU02hu8NkrYueUlIqri6PcSbAtBlr9u5Je7GjhECU5vVd7P8RqYvFxV+Kzi60dTIO47sRRW/koOClXngneqFTNrzQ4ysTpwRfTTk5w3Uh+jaD1DrXGEli6rsgMWvX1CabB6IXB+MqjKx+xh6dH8zOru3W7Fjr6jrR4hA9chZBJ/VUwdeW3iTpR573/3+eX9J86H3CW22T2TiPiyEzaC9P+UQastwl0vGkjocLJWKmN8eeQCUz8/pnZwdomX/6iVkiKA5RCQPJ9tv/Lz+wGB/4snUWmGCsx4umqQWX2noYITKwIFiKTCsctjOnRicVQkVafYbtVtMa62r/HF3pHDx6MuJUCpXKq5XG+h9OwSm4JOhZVpWSz5w+QwkkwFjWJg+C/oJ4ridYLSU5hiBjALhscByPAo5GLQPhlm5APQpsPuo9HBu945qohH0zSj2WTDG+qZOaI73s6wzTbvu/mv6CPyBT/n/p/cGgP9TF0AQ+nze//5HMsfThOxKaOjN175A4JUnmNlECAnLT8dFHonSI5v2EbfaH3f6+T2YsDC9h1CK9TIXtMCLnIvEpP5zo4+JsSAyy5A/39dKTU6SLt0uX+o81TngAcbgs+Ux5aj9s6fiS7ofIbAM9HCAd+/uE4uR8IG4E5QjyilbnkdgeDntA18WFMvHQyLb9cCy2EgOKpqVrSq6qVl966eVOIV3tOJc7I42/fvjKOa40f2sWHK/gOJ771aeCffhqUq1BlVJtHqqiSgxaZFgWKAxWRBoABYAgr+g5UETYWFkDDADIKFuSjuWyfdWLP8HID03Tt+ZB3Nwbvfl8m4g2HMJZX86H7TIoDTLD1P2PD9pxuv3rY48NZOz/SsKJw8a2XvKl7f7SWbzxy0dPt/b3zz8tCvuPFfuD+UT3ZANGkW35OE1aeN8fEg5qW6GJQqak08binG32Jief4kHEYCLPhVJIapZk+xS5lulDpPdDUqt2HZagAZUAgYVsCm30iFXRMmhByQyLp54wqCxgHgeMNXp/JoDANBiJjY1TaLtPssv26X4UfX3HOGQrP7yrKKygup16TWV3FxNbaqVT3XGcxkjlqPLbz05D3XILHa9Ryyndr77Oubs5g1VUI/f2YlJQM6zCszSVTzDJUQViaAAWke9CVlmhiMl+wzPABJHsIyAHAWPAeJj3yyFm5Mj3lXAqOZ4l7WbH/X/qoUxikutC//uB/x3xriEJlPmMrpPPmsnADs4P48kFrsT8Wtpv3fbOpT5+YuzOZDh7uDDo9x5/7QVWztMB8qMQ9Ukd79MPIyukU/QQw5nVW+6ZWzanT1GTGBDU2eZnZxgT+6Xh8LZbxp/fGJ+MaPkSGoTA5oEpgrgEeIQzk0XEoNRsKAdUFC6NLyaWEgKILUIUc2wla3DngtqHycmEjzGaJjeJYRh7bYWiFFQ/6ZLm5XYJZ9Y0rbDV3FQdt3O5WWiOHFaP3LcbjaNOp1IoPPPIQeW3Vz6taKzn7nJQIFf4ve533qgJIsvbdiqR1Xg+QTHlfAYqDDu59gg5YComIjMyAR/4DAgDE3D9/8ktijDGiME6Tr8BQzMaEmzxn91ffuiUkTchsAZ6iYA9iWV9mN7fuHnOMmVSFv78Q0unGBxNbccnrkRhvnXN5MoG1qKov5+P7HIkkPKMkeiNz8vRUL/tydvMPNbygR9kr1mcYOdC4cXnotCP6yaeGnvQjzAzXupff/+ZcbInLq/LUYAomdfzZKwDEIYxKzZGIkDHJg0ZyQTiB39mQABk6UOa1A9L5YS931kIArLmVvncaiKRhKCcWTq9WKsR72Tr0y/t1lWn4TmFxqsfdLb+uHJYvVwYcX74odvsNMjEncPmwYU1z72Q85x1N9dwkmfWtmJ3nibtbqtGACBc3jMEyMs0oEUIDYpsb86tnL6aYXgmZSEmKovnlnQDk7pggMgFW0UMSgjbWDLPxglv6/YMlc2MFk0cWQu+HHL9dsknKTJI5XYoK+zzlhwPm++6RUQXkMU8K+0zRe+u70HABWLY96FGVsuK8kpg+2QAfTxx+GratABOA8uYFs06ZIMg6G3zAURm6/rxuxOA8RNvDRKTj1wfe03WeD8kQ4YReQd+NpKDsi2XE0zPDeFGUzI0M4hozhYkAbCsYrOsV62f+Xp1yWPdXZjR6ktL6x9fEObrcvXfjqdsrSYUbyW55zUKOZaod+QdNqo7P1QPj0a+avz1V8NxOsfe783C5YPfCoWmQ5h0K8cK0unlt5fOPEOzhkcLikBzdMYAigwyrHQxY6PMaqVy8cytK0YGxGERGLPiavZeyoh4hjb5YlGK0QbNFHWmyJjn5xBEkdgyi39qZqmFW+USAN6lklgaDh73w0807PvWxnTcxDNW2gwJkGMLB6XIiLAZ99/nbs5ay5KFZcuy5HI5bc2Hsh/6Gsq3y1g0Z2R7ldzTLgnTVp+ZwO2o3M88MZpkiIBhbEAAbvHDE1H0EyCbkUMRIOBbMpMKaAoiOwqYJUrbgJ7Np8vAkClo256m1VlP3Xnp5YNDNZkLoELG8MqLqmdrecWGmlLfffOf2t6Xv6k5Tq1UOoUtp1Otvvdt5+C4MfLU1nGhcXSw1XB2m+uVhldxCoWLz2wev62qyqZ34esHsqyr2m6NFSALCSgxtpgUv14Z5URBdf6+6TOWMwzx0yfOGbbQ++WDc5M06hUFaJR1I94SUow5ixiaiQMMmAgAPQXiqZIZMji0Qp4flgb7lwjBiz36VwzWuykCUhExXRlA38IUHsjtohWQuP0HjI6fkmeCci0j5NNykLYGv37e1ubMFT+I/DQ/c5H8x7qBNNMP20RyGc9TT56Xgd6WETNAQWbeFGekJ5JaOkhjOgQZP+SWgtP33ZpkVk7TJoeEBAtBUji9hwDL84ri2tXdgla561W3rthKxoMk6GsK69q2KiqKWqt3lZz35hWvo7hao5PcPHB2DiqNxns/dEa+/NRpFjqFI9UteMfrzUal6fzx81cvN8nGvHp47e0fPdIVLpzJ7BEzEWlKECTWoGnxqLMMocjRieUeLcDlU2dWRzIJg0uoVYJRWia5IIlFmo5BgIuoRIvgbBS77XGaS2FEnYVxIzupMyVcNsMQv7Pth+fJodbnANDqekRbTIhLKPTxAHxhyRl6XowCsLYs/H45FmmWRs6ZzKbbZRMQ2rLCmURXs7ApoxSCcWtetm0mgHrL99sz+cDEAIIJJjB4SBzIMs9lV0TLKkeRRS0D3pyn75taXgnGstL9E7xarkOlbp8oLA9tmVeVRC6nKqzq7QqszZIgV1noLQt2EKmbLz219uWeVlNqao4IX/e8uvPZe87mxa2dowbR85W3j/6HpU6nc0yErfz/dC+/sZXzuq7Aup0K627+fu7LPZVjDTYnsdyeYOxK1K5gS6IIuAwtSPRicnpsJIloYgeSyAnIMCTOgGBjjnDpNngLlc0AqCdIKjKgKPdMrjc2FTOl/n6RlCNZd3RqOTt381keYSDF9FDGfQzQgzGD93vTG2XLts0Z2/9FJeQH9h6i5u5AUcgjy2fMgU8MGut8BHAvjsOgFQAzBAhzhMJ1HOEeVaSBOM0ZcR2XQfzu1YTOl7lxQEuYQRBO/31jDU2wLXru5qTt8XbGeJyhFBEuSRLbzSnCbs5T9tSaKkDCRFpNVWuru3TyhqWtbnKv7qmK23E3VXdmPVd3lB3nzcrhzhXCn39UCsfHfxUaTq7gVEgqdTzn4OJ6xXXXGz+7pMKzieZ7Wxe7qksM1RM4apf7n5Ho5J4hKpQokuTP/PPue0tJUaQ5cYKmIQQ0cQAbJjSGnmXA2Wf5EADAi+UWyPBlk6z+xOUrxDSj/VIJ4+L9LT2xPBcbE4sJxPMWIpuSYV+/fvL+e58leJICJo97PI5o05BteuPUytzNDOYZhCNTDjEAvcWpeBkgRk9FCBRxGZYWjM2svs0DCLXM9PliKzLJzs4WE3scZFNxg4kjGyG6J1Gz0tOGDuj4Nn16cU3K8HsCZ0s6bbIKlWBt1f35mVccj7VrqgY5lstVd4GyZytfZzfXvvylptXqVffCz1tudcc9qnZOapernc7OybffjhSazWPHqVQIyLsV57fmT283G181d/9wiaK5rirkct3KH26uu9fNJfYIce26yVxOkCgpQ37URo9WJUr9YF3KMFQSQoFviZwEiM4UieXe2kPnsWmi/zq6utfmqTjsnYKCIP4BKog3gohfTASZViJMOZqSslVYDMf1rJjYVT1EbFw0VTPfplLbZAyD4jBugxfrB1O7Ub3Y0jVL25kJmWWpTlkZ0rI5GJv46oW/mautDW15+D3P8/tqz84X0yxXfislLSxMfCuyLJMX8/+89zu67cG3fvTYQT7RzVqJ2FvWxLKU55mdwcTPn90SdB/LQE2S9rg4J0+U2ZnKe/jJkQnrmXsLPGulYryXZzNsbOyWsdsiOFIhU5bLZZ4yO+UIl7fTLFA8xcnZouxx+cwyk2GnaYrW3yoDeyKZ6nRe1FmZx2XtrRQ/Yf1bJgWWpmKcAhIhVlAB8LzvheLKpig4IkQoqhgJpVLJfdv8caF1ugsHCRl283xruPe1+2r71aarPF9y909dd3W/dFlvXkJ6cuLXzH2zVq2utYaNYeusVHU6W6eA6gbpGJ2OLHc3Hr/VMAJBQKJssBhjbm0TdU5liug0RCVHOjKrT+jChC5Oy0uPPLqA2T+28yksgw1x09NJ/E4ie9tiis+X89wDhd9T+dHCbXn0OZTPs7+8kmKptj3Iw+XRZUbj//rhQ47nI6QjPiNn9RRTx+my20Ne/BUutjzBQyWcRzw/9uB8YpIrMJjj4jijy4zMJkYKV6yBF9dYeUlcjLQkx1mjkVxmVH2HjdGY9ICYobHnJzCfj5eX88mMQmUZ7SQqy9DUT8NH0DkB3Glj7ighHSkxZLC6MAtRmjNys180Kyz69Tdnu/n8tnvuvt0PlVlXcN1mM3S3DsPzPtRHZ63W/lnVPCmdnFWHtjGstfaHG9XWfqsFWDogInatapiG0Ak2gne6oi0rmOtgA8viwk+PboJR6VgQBVogHNJTXK6wQHPT0w9uFOfvqUNhN/3FzlsxaX4CswLeX//6YXn6UswSdmHwczxBvlyGgvCLP1NlsA7MLUPD5z1I85n84OqUBmMInY+XPWjyC+xUXE9HKD4zxWcYvgxzIY7hmUSmnGw9/R2HsskdntesGRnzRCZOwU3C/OjnmOUjimYWk94T19L1K9fdsMDJahSTX9UR52VlXpTTbJThCFR7mBOp/mcmNdAG+Z+1LBUkdLpxcXF/UxQdx3AqjiNjA2r13Cywv+kIzdy2G7Zdv+lCbIa52Wuu27v2lev/e753Xatl1k4aJtiQAX+GTs2vra2t1EzTcFq20lIaR4ptt7pVI6d+v2t0bBvg62AVHEcim98HFNOOQCGZikHTRADGNCf0inD1sPsCma2kpifQDvq2kCBIj+ntxk+4vBxpb/3zTeXnQcr7pHLZmxykoJ0eA1Z6l6O2ged5muZ9OwDi1cmVJwv8c/fdMhnPYTmJMzyIHp/ZyfBwb2GRYbRkOkW1OighwycjMhPVrSSfiPMkPpb0QA8K8UXYYr3rIYaSG5ZgMoNkHUKRo5yX/xOBsHgUyQiYgaTAyCBvbGA99ECd8hK3ND+nSO03DnFgO44NpK80K0JuFkSzsp3LuZee7jQdv/dv6PbC7Vfhpo2z871rq+319etMs3Ri1oDoGy3T9+2ufWj0Gq3L5ogJr9UxhFoJXlF4SRWFU4BTFI2ubQR3jrBC7+mQcJIE+imKSk4XNm99XBJirwc4JjzzERE4muJSXIXG8tPvI5jCiNHEF/kUfeAziMPkWzDY2TG8lMcN2GWZcqyXHZvx/kfT036GkVCs7EXleBSRh7NXZIbleZ1PFiSe9/gkn9EyzKts2SunkwBqPYHiqH7bk4tMXMe0/s4jBTrZhXlB2trsXn/HC+OTtz6peY++WT1nZYJUhAlAiiNw1jrHq5UyViknLBCdwrvPL5AM1RBNhB/gTkVUbYEoCmRLgiIIQHpBvGoI9nYTRm9+qeRvKaFd3Q9dSD9LrePQL/XCXnjdhdlqDPu1faiR3LB0stao1fxW7aS1tmv7kNo7OcfMmc7RShfKA2C/6CiA35o1/5PBVRVRhenIY5LCOnJ3d61xep+qN2cVFqrSicoEx8bKepRI7BTqdBqjMuSkqczg/ZQGsOV57jIePZBKRC2EuNvgWLExz+OBcswgrw0yGo30CUbGcSerUz3NoKQ1k+QI0tJaBMFF4x6TfuIzGLanURIREijpqM7Q+iNLxStxLmYxSY15P7pl3iIoO8po6ocfCkjGMstzESXFehRpEVGpVedkhGVMY5kkQwfML9cwxTxeGZG6uGtUFMX+v30JcFbgyq0YAQCbc0olxS+5ru8fbh1W3cbQCM/X9859f++4f91F3z9Z8/c3Su226YIzHW75Yc0Pj4aHc7brD4VtwLSpnC11KpdeZwpCR2kI4YtVZIgGy3HTazjxWCAr02Jhv3v10Y6BxYAKLCsoSBfLPMt+w5ZnBaxGxURhqR5pqYzncel03ou0uOdRT+NFNIuoOmLFE7elBoy3BF+RfELz0kmEAKZLrFRkqSoj8+ouqRfgtL8IJcjksxkGboKpuwbbCRGpk6xVeCg+KDy05kuapo7NT1nZkQLsv46QxGKcAfUlKiZFWaW4CL8z8BQiSYTpAgkKKhFpN0EjC3NIIhHGKpQvQbWjKHPju4Cm3V35XuysgMzNqhtGp+qY5qENoLiu2w9/cPx26YO9MDy4dnxyfNw/uK7XOz6pXhyXDsJqC0Bvn+2ehW7of/ruwRb0UXyz6TuHTvcPBXJawzCVGphUSeiaAs6JAlgTG351HIjUkbfEr7/7kAZ1sQKYCoooiAVKxTrlRJJCHayrwaT106gGjGZgryOj5T1M47wsF4BvECLFax/2CMTelTseGL3nLsbLRNQ6jVQLkXqSISDAMkLSs/HJW567KaFa2SopANefmAI840neSxdVNUpzDCzLfGdakXXPfOJubX541Xqs9vLN5zOwF4KRNIdk+Z1T2brxvnfeuWmNEkLxpVoZmAtUlZJcBDzBiQgnVho/OIJo4mKjlwiMrTvHx19SlI4DTTdXqVZr5srcHHQ4wzO33Wq3++0eROJhrd2+9u+/H/x7Xb9/0O5flA56/a8v+uHB3g8l33fCvg91fj/sl/ymoPhOM2zOdpuOAk4nQilf2w/sZkXpwMp4qtMFXHNsTqEKpFVUkSafkg2F46jCEpubpnkd18dveUGmcr0nTcJ6iMa87mkUJqIeU6BqIIoAmS4LX4WclikWbst2UeJGeG7qOSxEPKPaUiQRdXF0/rnEVie9MHI6+bC6GLXjxXiBiSeTySnmyxly91NZxorX41OfWZY0lZZHa3tdBoI72H3jKzKjwYH+hXkrJ9tIDdFT7xiCI82BjlIdoY4cGGAJGEtyN8cB27EeNL47NLA9NHofntTguXFBCFTByfm50rZZCvvDtdrQNn3z2O+1XcDUdcODv9f39laPe+BHF+3+wWr7oN9utyBA/dAPD0qlEGIZMn74F2TWCZuXAjI7G4JBKUZg1xRbtEFcEh1pHCsQt7IBKVMHdy7zq8d2R+btS9OP6UeWyMd28FPFgExe0SmurmNuoGXSg6QseoFWvP6OYkbiRI5IWEUUpZOFUvfN+za/f2fESliaVlwiKonUCC9a1u2wXvokkgr1K9/ZYwFSI2v8WZj8MzNJA0aD0ta5xaDRBS0OK0jJpFogiY5Ig4ipq12EPG9A8MjVIshnBxH5zZ/GH1t6KQH8l3HEwWNG1zJw/SdVRbJVxMAWMGXbgJ46+GzNdoyVtaWwZuaaDhhRzlSqZ9+tf/ipaYZhqdf2+3vu6t5qu3Sw5w8PANTrasP+RWPr5KLXag23Tvthu3dZLoUHPdc1jzbDvtmqNYazTUi0Stth6EA3Dy7HMZWuUnvt6yoYnsBWBFtRKDSr4bNtdndf6HY2troCl5MBLDbYDI4aSxj4qnKZvManx4oPJPMZip8iu48XDRypChCtvMNF2gyj1hsff7wkEbmM4RfV4/MSASOK0g98rxLymKRK0u4fH8hEVbvWaiAXCWSk6fpiRIgMthKPJCZJJDJHkKRaUbqerQdddYFIo+Bz8XO8Va0m6jjYuLr/08pSYHQwFnWRAm5wVcfXGoZ49WhrVxAgLqpsd/y0ZjRKwM3W/upX/YpfdUIw9VwJYOwfH7Rabumk1O6trrbD9t56rbTa2y+dfLC+/h9wCv8leq5oJgAAAABJRU5ErkJggg==\",\"imageUrl\":null,\"color\":\"#fff\",\"overlay\":{\"enabled\":true,\"color\":\"rgba(255,255,255,0.72)\",\"blur\":3}},\"autoScale\":true},\"title\":\"Rainfall\",\"dropShadow\":true,\"enableFullscreen\":false,\"titleStyle\":{\"fontSize\":\"16px\",\"fontWeight\":400},\"mobileHeight\":null,\"configMode\":\"basic\",\"actions\":{},\"showTitleIcon\":true,\"titleIcon\":\"mdi:weather-pouring\",\"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": [ + "weather", + "environment", + "rain", + "rainfall" + ] +} \ No newline at end of file diff --git a/application/src/main/data/json/system/widget_types/simple_rainfall_chart_card.json b/application/src/main/data/json/system/widget_types/simple_rainfall_chart_card.json new file mode 100644 index 0000000000..2fcc6ca760 --- /dev/null +++ b/application/src/main/data/json/system/widget_types/simple_rainfall_chart_card.json @@ -0,0 +1,32 @@ +{ + "fqn": "simple_rainfall_chart_card", + "name": "Simple rainfall chart card", + "deprecated": false, + "image": "data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAAMgAAACgCAMAAAB+IdObAAAAgVBMVEUAAADg4ODf39/g4ODg4OD////g4OAjTMchISHj4+M9PT3x8fGsrKxYWFiQkJDI0vHHx8d1j9zj6PitvOp0dHQvLy9aeNWRpeM8PDyCgoKenp7V1dXy9Ps+Ys5mZmYwV8u6urpKSkrW3fXk6fifsedLS0tohNm6x+0xV8qDm99MbtG6RkKAAAAABXRSTlMA7yC/r1EOHTEAAAQeSURBVHja7M9JAcAgDAAwytEP/v0OGdAlDtIAAAAAAAB+p4/I181+HrHX83b0Ngs8zmS0XCVElUiKXEbkNh+79bJaIQxFYXi0YN8S9iABY0B0cN7/FVsF5VApdNZtm3+U6Ogj5DIg0RqQaA1ItAYkWv8AwoqfxYjQdxDfiAq/zXPOds156ddQyIAjySgJv9H3EK6mXF64yrUsk5wSTZepVUZYCC/V8FlyXBABtDbAbQXUFMZuDE/VdP/IASEsbcWeSeE3CGpGq2VKYHKQbJNoniip0fI5jAdZt1NkSzoh1eZUGdlhpAckw6mjCGAGJosHsQ3onVcYmE4IpY060BepxAdk/+sHhNtLIkJ0akjzvHhF3k6IHFtEpandIOnFIVcEbKh9p2B+3yN5F2S0G0QKLCQE8AnUk+HLqZXQiBbyL5CZKNEcEqLuE1xxTxn39Pdv9xNyay54VP/g0fiwBiRaAxKtAYnWgERrQKI1INGKDNHu/Q9ANFcikqwPh7BQW30tJPxoiMrUsec1PRrywZ657bgKQmH4aoUFiudjRZ3a03Te/wE3MILd7phx146pid9F8wterC8slNgDUpuCLYswbmPKNyxSoWuzh852RVRnGSh6mxOhpvwLhwHONyZySBFZoIXw8DiOwaZEPOTuocBKxgQpDDjovbWI45al64CBskYNFph4fFQ5T39FJPI7eAEVwzRFVo32N03k4AH+4gODp0X8e+sDhMQAhnMrr+oclkJZEQAEhf0vlSXTa1cw5ykRkWey2keRGnpyQtqsJuQMCyn7BUhL0LgYwCQBMqqEPM5Y484XIRofDCEJ+3QiKp6+yKeAZVy46X/Hvsqn+SiQJzyVP41MdK5IG/q+FrHVR6axvmNsRkQkIIpvkUx+7H+PRCBuOndqYgL7gA2w1Av0wzagLmfHUt/jFqk3t7UAHkVCcjXRz3MAPduZqTuRnLtaNWCkHeNW5kxkhEy3oIuVfeqysmTowWyoOtvP3uyDyKm1cVCrTSBteFUObZjJ6rUIyUKp9akmJlswKQYnjikP4H9wi+YJkdhUbekIia1IpG+uhb4QSiQHEK1eM9/eOIY1sATHeUKkHhdzqklml0YnXbzeOWb7XPWE0L01fbpdznwRXdnYo45+Ehkmpk63q4tkJIRHxJfyWCjCj7C2iD9ekCtpI1goQrFcWcRWZLmTtoOFIs6loGuLnOxzpwtvAJCr6yUi2gM/YG0R+8YAeSxRw4bsaRHKUhdgZRFR2+dnTrKXiFT9F6sVRCYQ8Arc9N/9scWP2B4ee49ti3iYOH3ctkjj2bhtEcsusotshV3k3dhF3o1d5N3YRd6NXeRPO3dCAAAIAjAQP/pHtgbiXYMVWDVCqskYp4WM1WO5s/tMkGLufN1YMwAAAAAAAH5zAZS0p15sQX4JAAAAAElFTkSuQmCC", + "description": "Displays historical rainfall values as a simplified chart. Optionally may display the corresponding latest rainfall value.", + "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: 'rainfall', label: 'Rainfall', type: 'timeseries', color: 'rgba(0, 0, 0, 0.87)'}\n ];\n },\n defaultLatestDataKeysFunction: function(configComponent) {\n return [{ name: 'rainfall', 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\":\"Rainfall\",\"color\":\"rgba(0, 0, 0, 0.87)\",\"settings\":{},\"_hash\":0.8587686344902596,\"funcBody\":\"var value = prevValue + Math.random() * 4 - 2;\\nif (value < 0) {\\n\\tvalue = 0;\\n} else if (value > 8) {\\n\\tvalue = 8;\\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() * 4 - 2;\\nif (value < 0) {\\n\\tvalue = 0;\\n} else if (value > 8) {\\n\\tvalue = 8;\\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\":0,\"color\":\"#7191EF\"},{\"from\":0,\"to\":2.5,\"color\":\"#4B70DD\"},{\"from\":2.5,\"to\":7.6,\"color\":\"#305AD7\"},{\"from\":7.6,\"to\":null,\"color\":\"#234CC7\"}],\"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\":\"Rainfall\",\"dropShadow\":true,\"enableFullscreen\":false,\"titleStyle\":null,\"mobileHeight\":null,\"configMode\":\"basic\",\"actions\":{},\"showTitleIcon\":true,\"titleIcon\":\"mdi:weather-pouring\",\"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\":1,\"titleColor\":\"rgba(0, 0, 0, 0.87)\",\"borderRadius\":null,\"units\":\"mm\",\"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": [ + "weather", + "environment", + "rain", + "rainfall" + ] +} \ No newline at end of file diff --git a/application/src/main/data/json/system/widget_types/simple_rainfall_chart_card_with_background.json b/application/src/main/data/json/system/widget_types/simple_rainfall_chart_card_with_background.json new file mode 100644 index 0000000000..9b3d56233b --- /dev/null +++ b/application/src/main/data/json/system/widget_types/simple_rainfall_chart_card_with_background.json @@ -0,0 +1,32 @@ +{ + "fqn": "simple_rainfall_chart_card_with_background", + "name": "Simple rainfall chart card with background", + "deprecated": false, + "image": "data:image/png;base64,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", + "description": "Displays historical rainfall values as a simplified chart with background. Optionally may display the corresponding latest rainfall value.", + "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: 'rainfall', label: 'Rainfall', type: 'timeseries', color: 'rgba(0, 0, 0, 0.87)'}\n ];\n },\n defaultLatestDataKeysFunction: function(configComponent) {\n return [{ name: 'rainfall', 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\":\"Rainfall\",\"color\":\"rgba(0, 0, 0, 0.87)\",\"settings\":{},\"_hash\":0.8587686344902596,\"funcBody\":\"var value = prevValue + Math.random() * 4 - 2;\\nif (value < 0) {\\n\\tvalue = 0;\\n} else if (value > 8) {\\n\\tvalue = 8;\\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() * 4 - 2;\\nif (value < 0) {\\n\\tvalue = 0;\\n} else if (value > 8) {\\n\\tvalue = 8;\\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\":0,\"color\":\"#6083EC\"},{\"from\":0,\"to\":2.5,\"color\":\"#4369DD\"},{\"from\":2.5,\"to\":7.6,\"color\":\"#2B54CE\"},{\"from\":7.6,\"to\":null,\"color\":\"#224AC2\"}],\"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\",\"imageBase64\":\"data:image/png;base64,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\",\"imageUrl\":null,\"color\":\"#fff\",\"overlay\":{\"enabled\":true,\"color\":\"rgba(255,255,255,0.72)\",\"blur\":3}}},\"title\":\"Rainfall\",\"dropShadow\":true,\"enableFullscreen\":false,\"titleStyle\":null,\"mobileHeight\":null,\"configMode\":\"basic\",\"actions\":{},\"showTitleIcon\":true,\"titleIcon\":\"mdi:weather-pouring\",\"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\":1,\"titleColor\":\"rgba(0, 0, 0, 0.87)\",\"borderRadius\":null,\"units\":\"mm\",\"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": [ + "weather", + "environment", + "rain", + "rainfall" + ] +} \ No newline at end of file From 66d4f010e86ab781304ba76c4aa8da91168d4ab5 Mon Sep 17 00:00:00 2001 From: Igor Kulikov Date: Fri, 20 Oct 2023 16:15:58 +0300 Subject: [PATCH 23/29] UI: Improve some widgets style. --- .../aggregated-value-card-widget.component.ts | 8 ++++---- .../lib/cards/aggregated-value-card.models.ts | 2 +- .../cards/progress-bar-widget.component.ts | 4 ++-- .../lib/cards/value-card-widget.component.ts | 10 +++++----- .../value-chart-card-widget.component.ts | 6 +++--- .../lib/count/count-widget.component.ts | 4 ++-- .../battery-level-widget.component.ts | 2 +- .../signal-strength-widget.component.ts | 6 +++--- .../home/models/dashboard-component.models.ts | 2 +- .../shared/models/widget-settings.models.ts | 20 +++++++++++++------ 10 files changed, 36 insertions(+), 28 deletions(-) diff --git a/ui-ngx/src/app/modules/home/components/widget/lib/cards/aggregated-value-card-widget.component.ts b/ui-ngx/src/app/modules/home/components/widget/lib/cards/aggregated-value-card-widget.component.ts index b5b37df7f8..86046df6d7 100644 --- a/ui-ngx/src/app/modules/home/components/widget/lib/cards/aggregated-value-card-widget.component.ts +++ b/ui-ngx/src/app/modules/home/components/widget/lib/cards/aggregated-value-card-widget.component.ts @@ -48,7 +48,7 @@ import { import { TbFlot } from '@home/components/widget/lib/flot-widget'; import { TbFlotKeySettings, TbFlotSettings } from '@home/components/widget/lib/flot-widget.models'; import { DataKey } from '@shared/models/widget.models'; -import { formatNumberValue, formatValue, isDefined } from '@core/utils'; +import { formatNumberValue, formatValue, isDefined, isDefinedAndNotNull, isNumeric } from '@core/utils'; import { map } from 'rxjs/operators'; import { ResizeObserver } from '@juggle/resize-observer'; @@ -119,7 +119,7 @@ export class AggregatedValueCardWidgetComponent implements OnInit, AfterViewInit this.showSubtitle = this.settings.showSubtitle; const subtitle = this.settings.subtitle; this.subtitle$ = this.ctx.registerLabelPattern(subtitle, this.subtitle$); - this.subtitleStyle = textStyle(this.settings.subtitleFont, '0.25px'); + this.subtitleStyle = textStyle(this.settings.subtitleFont); this.subtitleColor = this.settings.subtitleColor; const dataKey = getDataKey(this.ctx.defaultSubscription.datasources); @@ -148,7 +148,7 @@ export class AggregatedValueCardWidgetComponent implements OnInit, AfterViewInit this.showDate = this.settings.showDate; this.dateFormat = DateFormatProcessor.fromSettings(this.ctx.$injector, this.settings.dateFormat); - this.dateStyle = textStyle(this.settings.dateFont, '0.25px'); + this.dateStyle = textStyle(this.settings.dateFont); this.dateColor = this.settings.dateColor; this.backgroundStyle = backgroundStyle(this.settings.background); @@ -230,7 +230,7 @@ export class AggregatedValueCardWidgetComponent implements OnInit, AfterViewInit const tsValue = getTsValueByLatestDataKey(this.ctx.latestData, aggValue.key); let ts; let value; - if (tsValue) { + if (tsValue && isDefinedAndNotNull(tsValue[1]) && isNumeric(tsValue[1])) { ts = tsValue[0]; value = tsValue[1]; aggValue.value = formatValue(value, (aggValue.key.decimals || this.ctx.decimals), null, false); diff --git a/ui-ngx/src/app/modules/home/components/widget/lib/cards/aggregated-value-card.models.ts b/ui-ngx/src/app/modules/home/components/widget/lib/cards/aggregated-value-card.models.ts index b199aaa9c6..1d02d71cdf 100644 --- a/ui-ngx/src/app/modules/home/components/widget/lib/cards/aggregated-value-card.models.ts +++ b/ui-ngx/src/app/modules/home/components/widget/lib/cards/aggregated-value-card.models.ts @@ -92,7 +92,7 @@ export const computeAggregatedCardValue = key, value: '', units: key.units, - style: textStyle(settings.font, '0.25px'), + style: textStyle(settings.font), color: ColorProcessor.fromSettings(settings.color), center: position === AggregatedValueCardKeyPosition.center, showArrow: settings.showArrow, diff --git a/ui-ngx/src/app/modules/home/components/widget/lib/cards/progress-bar-widget.component.ts b/ui-ngx/src/app/modules/home/components/widget/lib/cards/progress-bar-widget.component.ts index 2b9d4328d5..43d2c6300c 100644 --- a/ui-ngx/src/app/modules/home/components/widget/lib/cards/progress-bar-widget.component.ts +++ b/ui-ngx/src/app/modules/home/components/widget/lib/cards/progress-bar-widget.component.ts @@ -124,7 +124,7 @@ export class ProgressBarWidgetComponent implements OnInit, OnDestroy, AfterViewI this.layout = this.settings.layout; this.showValue = this.settings.showValue; - this.valueStyle = textStyle(this.settings.valueFont, '0.1px'); + this.valueStyle = textStyle(this.settings.valueFont); this.valueColor = ColorProcessor.fromSettings(this.settings.valueColor); this.showTitleValueRow = this.showValue || @@ -140,7 +140,7 @@ export class ProgressBarWidgetComponent implements OnInit, OnDestroy, AfterViewI this.showTicks = this.settings.showTicks && this.layout === ProgressBarLayout.default; if (this.showTicks) { - this.ticksStyle = textStyle(this.settings.ticksFont, '0.1px'); + this.ticksStyle = textStyle(this.settings.ticksFont); this.ticksStyle.color = this.settings.ticksColor; } diff --git a/ui-ngx/src/app/modules/home/components/widget/lib/cards/value-card-widget.component.ts b/ui-ngx/src/app/modules/home/components/widget/lib/cards/value-card-widget.component.ts index 75a922daff..a80d1d850b 100644 --- a/ui-ngx/src/app/modules/home/components/widget/lib/cards/value-card-widget.component.ts +++ b/ui-ngx/src/app/modules/home/components/widget/lib/cards/value-card-widget.component.ts @@ -27,7 +27,7 @@ import { ViewChild } from '@angular/core'; import { WidgetContext } from '@home/models/widget-component.models'; -import { formatValue, isDefinedAndNotNull } from '@core/utils'; +import { formatValue, isDefinedAndNotNull, isNumeric } from '@core/utils'; import { backgroundStyle, ColorProcessor, @@ -132,14 +132,14 @@ export class ValueCardWidgetComponent implements OnInit, AfterViewInit, OnDestro this.showLabel = this.settings.showLabel; const label = getLabel(this.ctx.datasources); this.label$ = this.ctx.registerLabelPattern(label, this.label$); - this.labelStyle = textStyle(this.settings.labelFont, '0.25px'); + this.labelStyle = textStyle(this.settings.labelFont); this.labelColor = ColorProcessor.fromSettings(this.settings.labelColor); - this.valueStyle = textStyle(this.settings.valueFont, '0.13px'); + this.valueStyle = textStyle(this.settings.valueFont); this.valueColor = ColorProcessor.fromSettings(this.settings.valueColor); this.showDate = this.settings.showDate; this.dateFormat = DateFormatProcessor.fromSettings(this.ctx.$injector, this.settings.dateFormat); - this.dateStyle = textStyle(this.settings.dateFont, '0.25px'); + this.dateStyle = textStyle(this.settings.dateFont); this.dateColor = ColorProcessor.fromSettings(this.settings.dateColor); this.backgroundStyle = backgroundStyle(this.settings.background); @@ -179,7 +179,7 @@ export class ValueCardWidgetComponent implements OnInit, AfterViewInit, OnDestro const tsValue = getSingleTsValue(this.ctx.data); let ts; let value; - if (tsValue) { + if (tsValue && isDefinedAndNotNull(tsValue[1]) && isNumeric(tsValue[1])) { ts = tsValue[0]; value = tsValue[1]; this.valueText = formatValue(value, this.decimals, this.units, false); diff --git a/ui-ngx/src/app/modules/home/components/widget/lib/cards/value-chart-card-widget.component.ts b/ui-ngx/src/app/modules/home/components/widget/lib/cards/value-chart-card-widget.component.ts index ce5b61943c..8b05847fb3 100644 --- a/ui-ngx/src/app/modules/home/components/widget/lib/cards/value-chart-card-widget.component.ts +++ b/ui-ngx/src/app/modules/home/components/widget/lib/cards/value-chart-card-widget.component.ts @@ -28,7 +28,7 @@ import { ViewEncapsulation } from '@angular/core'; import { WidgetContext } from '@home/models/widget-component.models'; -import { formatValue, isDefinedAndNotNull } from '@core/utils'; +import { formatValue, isDefinedAndNotNull, isNumeric } from '@core/utils'; import { backgroundStyle, ColorProcessor, @@ -126,7 +126,7 @@ export class ValueChartCardWidgetComponent implements OnInit, AfterViewInit, OnD this.layout = this.settings.layout; this.showValue = this.settings.showValue; - this.valueStyle = textStyle(this.settings.valueFont, '0.25px'); + this.valueStyle = textStyle(this.settings.valueFont); this.valueColor = ColorProcessor.fromSettings(this.settings.valueColor); this.backgroundStyle = backgroundStyle(this.settings.background); @@ -192,7 +192,7 @@ export class ValueChartCardWidgetComponent implements OnInit, AfterViewInit, OnD if (this.showValue && this.valueKey) { const tsValue = getTsValueByLatestDataKey(this.ctx.latestData, this.valueKey); let value; - if (tsValue) { + if (tsValue && isDefinedAndNotNull(tsValue[1]) && isNumeric(tsValue[1])) { value = tsValue[1]; this.valueText = formatValue(value, this.decimals, this.units, false); } else { diff --git a/ui-ngx/src/app/modules/home/components/widget/lib/count/count-widget.component.ts b/ui-ngx/src/app/modules/home/components/widget/lib/count/count-widget.component.ts index 0f3c922e1b..3302ba4477 100644 --- a/ui-ngx/src/app/modules/home/components/widget/lib/count/count-widget.component.ts +++ b/ui-ngx/src/app/modules/home/components/widget/lib/count/count-widget.component.ts @@ -115,7 +115,7 @@ export class CountWidgetComponent implements OnInit, AfterViewInit, OnDestroy { this.showLabel = this.settings.showLabel; this.label = this.settings.label; - this.labelStyle = textStyle(this.settings.labelFont, '0.4px'); + this.labelStyle = textStyle(this.settings.labelFont); this.labelColor = ColorProcessor.fromSettings(this.settings.labelColor); this.showIcon = this.settings.showIcon; @@ -136,7 +136,7 @@ export class CountWidgetComponent implements OnInit, AfterViewInit, OnDestroy { }; this.iconBackgroundColor = ColorProcessor.fromSettings(this.settings.iconBackgroundColor); - this.valueStyle = textStyle(this.settings.valueFont, '0.1px'); + this.valueStyle = textStyle(this.settings.valueFont); this.valueColor = ColorProcessor.fromSettings(this.settings.valueColor); this.showChevron = this.settings.showChevron; diff --git a/ui-ngx/src/app/modules/home/components/widget/lib/indicator/battery-level-widget.component.ts b/ui-ngx/src/app/modules/home/components/widget/lib/indicator/battery-level-widget.component.ts index a983dc81a9..31f98aff6c 100644 --- a/ui-ngx/src/app/modules/home/components/widget/lib/indicator/battery-level-widget.component.ts +++ b/ui-ngx/src/app/modules/home/components/widget/lib/indicator/battery-level-widget.component.ts @@ -183,7 +183,7 @@ export class BatteryLevelWidgetComponent implements OnInit, OnDestroy, AfterView this.showValue = this.settings.showValue; this.autoScaleValueSize = this.showValue && this.settings.autoScaleValueSize; - this.valueStyle = textStyle(this.settings.valueFont, '0.1px'); + this.valueStyle = textStyle(this.settings.valueFont); this.valueColor = ColorProcessor.fromSettings(this.settings.valueColor); this.batteryLevelColor = ColorProcessor.fromSettings(this.settings.batteryLevelColor); diff --git a/ui-ngx/src/app/modules/home/components/widget/lib/indicator/signal-strength-widget.component.ts b/ui-ngx/src/app/modules/home/components/widget/lib/indicator/signal-strength-widget.component.ts index 10ba3b3b1b..8427cf362b 100644 --- a/ui-ngx/src/app/modules/home/components/widget/lib/indicator/signal-strength-widget.component.ts +++ b/ui-ngx/src/app/modules/home/components/widget/lib/indicator/signal-strength-widget.component.ts @@ -142,7 +142,7 @@ export class SignalStrengthWidgetComponent implements OnInit, OnDestroy, AfterVi this.showDate = this.settings.showDate; if (this.showDate) { this.dateFormat = DateFormatProcessor.fromSettings(this.ctx.$injector, this.settings.dateFormat); - this.dateStyle = textStyle(this.settings.dateFont, '0.25px'); + this.dateStyle = textStyle(this.settings.dateFont); this.dateStyle.color = this.settings.dateColor; } @@ -173,7 +173,7 @@ export class SignalStrengthWidgetComponent implements OnInit, OnDestroy, AfterVi if (dataKey?.units) { this.units = dataKey.units; } - this.tooltipValueStyle = textStyle(this.settings.tooltipValueFont, '0.13px'); + this.tooltipValueStyle = textStyle(this.settings.tooltipValueFont); this.tooltipValueStyle.color = this.settings.tooltipValueColor; this.tooltipValueLabelStyle = {...this.tooltipValueStyle, ...this.tooltipValueLabelStyle}; } @@ -181,7 +181,7 @@ export class SignalStrengthWidgetComponent implements OnInit, OnDestroy, AfterVi if (this.showTooltipDate) { this.tooltipDateFormat = DateFormatProcessor.fromSettings(this.ctx.$injector, {...this.settings.tooltipDateFormat, ...{hideLastUpdatePrefix: true}}); - this.tooltipDateStyle = textStyle(this.settings.tooltipDateFont, '0.13px'); + this.tooltipDateStyle = textStyle(this.settings.tooltipDateFont); this.tooltipDateStyle.color = this.settings.tooltipDateColor; this.tooltipDateLabelStyle = {...this.tooltipDateStyle, ...this.tooltipDateLabelStyle}; } diff --git a/ui-ngx/src/app/modules/home/models/dashboard-component.models.ts b/ui-ngx/src/app/modules/home/models/dashboard-component.models.ts index 8104e80e36..fbfa520fb3 100644 --- a/ui-ngx/src/app/modules/home/models/dashboard-component.models.ts +++ b/ui-ngx/src/app/modules/home/models/dashboard-component.models.ts @@ -437,7 +437,7 @@ export class DashboardWidget implements GridsterItem, IDashboardWidget { && this.widgetContext.widgetTitleTooltip.length ? this.widgetContext.widgetTitleTooltip : this.widget.config.titleTooltip; this.titleTooltip = this.dashboard.utils.customTranslation(this.titleTooltip, this.titleTooltip); this.showTitle = isDefined(this.widget.config.showTitle) ? this.widget.config.showTitle : true; - this.titleStyle = {...(this.widget.config.titleStyle || {}), ...textStyle(this.widget.config.titleFont, 'normal')}; + this.titleStyle = {...(this.widget.config.titleStyle || {}), ...textStyle(this.widget.config.titleFont)}; if (this.widget.config.titleColor) { this.titleStyle.color = this.widget.config.titleColor; } diff --git a/ui-ngx/src/app/shared/models/widget-settings.models.ts b/ui-ngx/src/app/shared/models/widget-settings.models.ts index 5055893b6f..bd10859e55 100644 --- a/ui-ngx/src/app/shared/models/widget-settings.models.ts +++ b/ui-ngx/src/app/shared/models/widget-settings.models.ts @@ -302,7 +302,11 @@ export class SimpleDateFormatProcessor extends DateFormatProcessor { } update(ts: string| number | Date): void { - this.formatted = this.datePipe.transform(ts, this.settings.format); + if (ts) { + this.formatted = this.datePipe.transform(ts, this.settings.format); + } else { + this.formatted = ' '; + } } } @@ -320,12 +324,16 @@ export class LastUpdateAgoDateFormatProcessor extends DateFormatProcessor { } update(ts: string| number | Date): void { - const agoText = this.dateAgoPipe.transform(ts, {applyAgo: true, short: true, textPart: true}); - if (this.settings.hideLastUpdatePrefix) { - this.formatted = agoText; + if (ts) { + const agoText = this.dateAgoPipe.transform(ts, {applyAgo: true, short: true, textPart: true}); + if (this.settings.hideLastUpdatePrefix) { + this.formatted = agoText; + } else { + this.formatted = this.translate.instant('date.last-update-n-ago-text', + {agoText}); + } } else { - this.formatted = this.translate.instant('date.last-update-n-ago-text', - {agoText}); + this.formatted = ' '; } } From e5dfd337528e09195a6f24a1769130032d39b3d7 Mon Sep 17 00:00:00 2001 From: Igor Kulikov Date: Fri, 20 Oct 2023 17:01:13 +0300 Subject: [PATCH 24/29] UI: Horizontal cards layout settings improvements. --- .../system/widget_types/horizontal_humidity_card.json | 4 ++-- .../horizontal_humidity_card_with_background.json | 4 ++-- .../system/widget_types/horizontal_pressure_card.json | 4 ++-- .../horizontal_pressure_card_with_background.json | 4 ++-- .../system/widget_types/horizontal_rainfall_card.json | 4 ++-- .../horizontal_rainfall_card_with_background.json | 4 ++-- .../system/widget_types/horizontal_temperature_card.json | 4 ++-- .../horizontal_temperature_card_with_background.json | 4 ++-- .../json/system/widget_types/horizontal_value_card.json | 9 +++++---- .../system/widget_types/horizontal_wind_speed_card.json | 4 ++-- .../horizontal_wind_speed_card_with_background.json | 4 ++-- 11 files changed, 25 insertions(+), 24 deletions(-) diff --git a/application/src/main/data/json/system/widget_types/horizontal_humidity_card.json b/application/src/main/data/json/system/widget_types/horizontal_humidity_card.json index 105929125d..2b58b32288 100644 --- a/application/src/main/data/json/system/widget_types/horizontal_humidity_card.json +++ b/application/src/main/data/json/system/widget_types/horizontal_humidity_card.json @@ -7,11 +7,11 @@ "descriptor": { "type": "latest", "sizeX": 5, - "sizeY": 1.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: '130px',\n embedTitlePanel: true,\n defaultDataKeysFunction: function() {\n return [{ name: 'humidity', label: 'Humidity', type: 'timeseries' }];\n }\n };\n};\n\nself.onDestroy = function() {\n};\n", + "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: 'humidity', label: 'Humidity', type: 'timeseries' }];\n }\n };\n};\n\nself.onDestroy = function() {\n};\n", "settingsSchema": "", "dataKeySettingsSchema": "", "settingsDirective": "tb-value-card-widget-settings", diff --git a/application/src/main/data/json/system/widget_types/horizontal_humidity_card_with_background.json b/application/src/main/data/json/system/widget_types/horizontal_humidity_card_with_background.json index 14882ac7e6..8dc416249c 100644 --- a/application/src/main/data/json/system/widget_types/horizontal_humidity_card_with_background.json +++ b/application/src/main/data/json/system/widget_types/horizontal_humidity_card_with_background.json @@ -7,11 +7,11 @@ "descriptor": { "type": "latest", "sizeX": 5, - "sizeY": 1.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: '130px',\n embedTitlePanel: true,\n defaultDataKeysFunction: function() {\n return [{ name: 'humidity', label: 'Humidity', type: 'timeseries' }];\n }\n };\n};\n\nself.onDestroy = function() {\n};\n", + "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: 'humidity', label: 'Humidity', type: 'timeseries' }];\n }\n };\n};\n\nself.onDestroy = function() {\n};\n", "settingsSchema": "", "dataKeySettingsSchema": "", "settingsDirective": "tb-value-card-widget-settings", diff --git a/application/src/main/data/json/system/widget_types/horizontal_pressure_card.json b/application/src/main/data/json/system/widget_types/horizontal_pressure_card.json index c96757cebf..fbc79c2255 100644 --- a/application/src/main/data/json/system/widget_types/horizontal_pressure_card.json +++ b/application/src/main/data/json/system/widget_types/horizontal_pressure_card.json @@ -7,11 +7,11 @@ "descriptor": { "type": "latest", "sizeX": 5, - "sizeY": 1.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: '130px',\n embedTitlePanel: true,\n defaultDataKeysFunction: function() {\n return [{ name: 'pressure', label: 'Pressure', type: 'timeseries' }];\n }\n };\n};\n\nself.onDestroy = function() {\n};\n", + "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: 'pressure', label: 'Pressure', type: 'timeseries' }];\n }\n };\n};\n\nself.onDestroy = function() {\n};\n", "settingsSchema": "", "dataKeySettingsSchema": "", "settingsDirective": "tb-value-card-widget-settings", diff --git a/application/src/main/data/json/system/widget_types/horizontal_pressure_card_with_background.json b/application/src/main/data/json/system/widget_types/horizontal_pressure_card_with_background.json index 58d63484ae..d0beafbf6d 100644 --- a/application/src/main/data/json/system/widget_types/horizontal_pressure_card_with_background.json +++ b/application/src/main/data/json/system/widget_types/horizontal_pressure_card_with_background.json @@ -7,11 +7,11 @@ "descriptor": { "type": "latest", "sizeX": 5, - "sizeY": 1.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: '130px',\n embedTitlePanel: true,\n defaultDataKeysFunction: function() {\n return [{ name: 'pressure', label: 'Pressure', type: 'timeseries' }];\n }\n };\n};\n\nself.onDestroy = function() {\n};\n", + "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: 'pressure', label: 'Pressure', type: 'timeseries' }];\n }\n };\n};\n\nself.onDestroy = function() {\n};\n", "settingsSchema": "", "dataKeySettingsSchema": "", "settingsDirective": "tb-value-card-widget-settings", diff --git a/application/src/main/data/json/system/widget_types/horizontal_rainfall_card.json b/application/src/main/data/json/system/widget_types/horizontal_rainfall_card.json index 2e619546cb..4eefae88c8 100644 --- a/application/src/main/data/json/system/widget_types/horizontal_rainfall_card.json +++ b/application/src/main/data/json/system/widget_types/horizontal_rainfall_card.json @@ -7,11 +7,11 @@ "descriptor": { "type": "latest", "sizeX": 5, - "sizeY": 1.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: '130px',\n embedTitlePanel: true,\n defaultDataKeysFunction: function() {\n return [{ name: 'rainfall', label: 'Rainfall', type: 'timeseries' }];\n }\n };\n};\n\nself.onDestroy = function() {\n};\n", + "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: 'rainfall', label: 'Rainfall', type: 'timeseries' }];\n }\n };\n};\n\nself.onDestroy = function() {\n};\n", "settingsSchema": "", "dataKeySettingsSchema": "", "settingsDirective": "tb-value-card-widget-settings", diff --git a/application/src/main/data/json/system/widget_types/horizontal_rainfall_card_with_background.json b/application/src/main/data/json/system/widget_types/horizontal_rainfall_card_with_background.json index c8aa515031..62bad4bbb0 100644 --- a/application/src/main/data/json/system/widget_types/horizontal_rainfall_card_with_background.json +++ b/application/src/main/data/json/system/widget_types/horizontal_rainfall_card_with_background.json @@ -7,11 +7,11 @@ "descriptor": { "type": "latest", "sizeX": 5, - "sizeY": 1.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: '130px',\n embedTitlePanel: true,\n defaultDataKeysFunction: function() {\n return [{ name: 'rainfall', label: 'Rainfall', type: 'timeseries' }];\n }\n };\n};\n\nself.onDestroy = function() {\n};\n", + "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: 'rainfall', label: 'Rainfall', type: 'timeseries' }];\n }\n };\n};\n\nself.onDestroy = function() {\n};\n", "settingsSchema": "", "dataKeySettingsSchema": "", "settingsDirective": "tb-value-card-widget-settings", diff --git a/application/src/main/data/json/system/widget_types/horizontal_temperature_card.json b/application/src/main/data/json/system/widget_types/horizontal_temperature_card.json index 153195a499..8884bcf132 100644 --- a/application/src/main/data/json/system/widget_types/horizontal_temperature_card.json +++ b/application/src/main/data/json/system/widget_types/horizontal_temperature_card.json @@ -7,11 +7,11 @@ "descriptor": { "type": "latest", "sizeX": 5, - "sizeY": 1.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: '130px',\n embedTitlePanel: true\n };\n};\n\nself.onDestroy = function() {\n};\n", + "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 };\n};\n\nself.onDestroy = function() {\n};\n", "settingsSchema": "", "dataKeySettingsSchema": "", "settingsDirective": "tb-value-card-widget-settings", diff --git a/application/src/main/data/json/system/widget_types/horizontal_temperature_card_with_background.json b/application/src/main/data/json/system/widget_types/horizontal_temperature_card_with_background.json index 1c711e7e1f..0bb6084afa 100644 --- a/application/src/main/data/json/system/widget_types/horizontal_temperature_card_with_background.json +++ b/application/src/main/data/json/system/widget_types/horizontal_temperature_card_with_background.json @@ -7,11 +7,11 @@ "descriptor": { "type": "latest", "sizeX": 5, - "sizeY": 1.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: '130px',\n embedTitlePanel: true\n };\n};\n\nself.onDestroy = function() {\n};\n", + "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 };\n};\n\nself.onDestroy = function() {\n};\n", "settingsSchema": "", "dataKeySettingsSchema": "", "settingsDirective": "tb-value-card-widget-settings", diff --git a/application/src/main/data/json/system/widget_types/horizontal_value_card.json b/application/src/main/data/json/system/widget_types/horizontal_value_card.json index 50c50050bc..fd52ab74e4 100644 --- a/application/src/main/data/json/system/widget_types/horizontal_value_card.json +++ b/application/src/main/data/json/system/widget_types/horizontal_value_card.json @@ -7,17 +7,18 @@ "descriptor": { "type": "latest", "sizeX": 5, - "sizeY": 1.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: '130px',\n embedTitlePanel: true\n };\n};\n\nself.onDestroy = function() {\n};\n", + "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 };\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}}" + "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\":{\"size\":36,\"sizeUnit\":\"px\",\"family\":\"Roboto\",\"weight\":\"500\",\"style\":\"normal\"},\"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}},\"autoScale\":true},\"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}}" }, - "externalId": null + "externalId": null, + "tags": null } \ No newline at end of file diff --git a/application/src/main/data/json/system/widget_types/horizontal_wind_speed_card.json b/application/src/main/data/json/system/widget_types/horizontal_wind_speed_card.json index 94e177672f..e31569ea97 100644 --- a/application/src/main/data/json/system/widget_types/horizontal_wind_speed_card.json +++ b/application/src/main/data/json/system/widget_types/horizontal_wind_speed_card.json @@ -7,11 +7,11 @@ "descriptor": { "type": "latest", "sizeX": 5, - "sizeY": 1.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: '130px',\n embedTitlePanel: true,\n defaultDataKeysFunction: function() {\n return [{ name: 'speed', label: 'Wind Speed', type: 'timeseries' }];\n }\n };\n};\n\nself.onDestroy = function() {\n};\n", + "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: 'speed', label: 'Wind Speed', type: 'timeseries' }];\n }\n };\n};\n\nself.onDestroy = function() {\n};\n", "settingsSchema": "", "dataKeySettingsSchema": "", "settingsDirective": "tb-value-card-widget-settings", diff --git a/application/src/main/data/json/system/widget_types/horizontal_wind_speed_card_with_background.json b/application/src/main/data/json/system/widget_types/horizontal_wind_speed_card_with_background.json index 3b2c8cf8ff..3808c7d538 100644 --- a/application/src/main/data/json/system/widget_types/horizontal_wind_speed_card_with_background.json +++ b/application/src/main/data/json/system/widget_types/horizontal_wind_speed_card_with_background.json @@ -7,11 +7,11 @@ "descriptor": { "type": "latest", "sizeX": 5, - "sizeY": 1.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: '130px',\n embedTitlePanel: true,\n defaultDataKeysFunction: function() {\n return [{ name: 'speed', label: 'Wind Speed', type: 'timeseries' }];\n }\n };\n};\n\nself.onDestroy = function() {\n};\n", + "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: 'speed', label: 'Wind Speed', type: 'timeseries' }];\n }\n };\n};\n\nself.onDestroy = function() {\n};\n", "settingsSchema": "", "dataKeySettingsSchema": "", "settingsDirective": "tb-value-card-widget-settings", From da11ac58faa8125550067f38de9848a5a8dd9527 Mon Sep 17 00:00:00 2001 From: Igor Kulikov Date: Fri, 20 Oct 2023 17:54:11 +0300 Subject: [PATCH 25/29] UI: Improve 'Simple value chart card' autoscale. --- .../value-chart-card-widget.component.ts | 32 +++++++++++-------- 1 file changed, 19 insertions(+), 13 deletions(-) diff --git a/ui-ngx/src/app/modules/home/components/widget/lib/cards/value-chart-card-widget.component.ts b/ui-ngx/src/app/modules/home/components/widget/lib/cards/value-chart-card-widget.component.ts index 8b05847fb3..b187aa7969 100644 --- a/ui-ngx/src/app/modules/home/components/widget/lib/cards/value-chart-card-widget.component.ts +++ b/ui-ngx/src/app/modules/home/components/widget/lib/cards/value-chart-card-widget.component.ts @@ -49,9 +49,8 @@ import { DataKey } from '@shared/models/widget.models'; import { TbFlotKeySettings, TbFlotSettings } from '@home/components/widget/lib/flot-widget.models'; import { getTsValueByLatestDataKey } from '@home/components/widget/lib/cards/aggregated-value-card.models'; -const layoutWidth = 218; -const layoutValueWidth = 68; -const valueRelativeWidth = layoutValueWidth / layoutWidth; +const layoutHeight = 56; +const valueRelativeMaxWidth = 0.5; @Component({ selector: 'tb-value-chart-card-widget', @@ -92,12 +91,13 @@ export class ValueChartCardWidgetComponent implements OnInit, AfterViewInit, OnD private flotDataKey: DataKey; private valueKey: DataKey; - private contentResize$: ResizeObserver; private decimals = 0; private units = ''; + private valueFontSize: number; + constructor(private renderer: Renderer2, private widgetComponent: WidgetComponent, private cd: ChangeDetectorRef) { @@ -214,29 +214,35 @@ export class ValueChartCardWidgetComponent implements OnInit, AfterViewInit, OnD this.flot.destroy(); } - private onResize(fitMaxWidth = true) { + private onResize(fitTargetHeight = true) { if (this.settings.autoScale && this.showValue) { const contentWidth = this.valueChartCardContent.nativeElement.getBoundingClientRect().width; const contentHeight = this.valueChartCardContent.nativeElement.getBoundingClientRect().height; - const targetValueWidth = valueRelativeWidth * contentWidth; - this.setValueFontSize(targetValueWidth, contentHeight, fitMaxWidth); + if (!this.valueFontSize) { + const fontSize = getComputedStyle(this.valueChartCardValue.nativeElement).fontSize; + this.valueFontSize = resolveCssSize(fontSize)[0]; + } + const valueRelativeHeight = Math.min(this.valueFontSize / layoutHeight, 1); + const targetValueHeight = contentHeight * valueRelativeHeight; + const maxValueWidth = contentWidth * valueRelativeMaxWidth; + this.setValueFontSize(targetValueHeight, maxValueWidth, fitTargetHeight); } this.flot.resize(); } - private setValueFontSize(maxWidth: number, maxHeight: number, fitMaxWidth = true) { + private setValueFontSize(targetHeight: number, maxWidth: number, fitTargetHeight = true) { const fontSize = getComputedStyle(this.valueChartCardValue.nativeElement).fontSize; let valueFontSize = resolveCssSize(fontSize)[0]; this.renderer.setStyle(this.valueChartCardValue.nativeElement, 'fontSize', valueFontSize + 'px'); this.renderer.setStyle(this.valueChartCardValue.nativeElement, 'lineHeight', '1'); - let valueWidth = this.valueChartCardValue.nativeElement.getBoundingClientRect().width; - while (fitMaxWidth && valueWidth < maxWidth) { + let valueHeight = this.valueChartCardValue.nativeElement.getBoundingClientRect().height; + while (fitTargetHeight && valueHeight < targetHeight) { valueFontSize++; this.renderer.setStyle(this.valueChartCardValue.nativeElement, 'fontSize', valueFontSize + 'px'); - valueWidth = this.valueChartCardValue.nativeElement.getBoundingClientRect().width; + valueHeight = this.valueChartCardValue.nativeElement.getBoundingClientRect().height; } - let valueHeight = this.valueChartCardValue.nativeElement.getBoundingClientRect().height; - while ((valueWidth > maxWidth || valueHeight > maxHeight) && valueFontSize > 6) { + let valueWidth = this.valueChartCardValue.nativeElement.getBoundingClientRect().width; + while ((valueHeight > targetHeight || valueWidth > maxWidth) && valueFontSize > 6) { valueFontSize--; this.renderer.setStyle(this.valueChartCardValue.nativeElement, 'fontSize', valueFontSize + 'px'); valueWidth = this.valueChartCardValue.nativeElement.getBoundingClientRect().width; From 4907283b6ed57702536cc938746d4dfc6f63e4a9 Mon Sep 17 00:00:00 2001 From: Igor Kulikov Date: Fri, 20 Oct 2023 18:38:27 +0300 Subject: [PATCH 26/29] UI: Outdoor Environment: Solar radiation widgets. --- .../widget_bundles/outdoor_environment.json | 10 +++++- .../horizontal_solar_radiation_card.json | 29 +++++++++++++++++ ..._solar_radiation_card_with_background.json | 29 +++++++++++++++++ .../simple_solar_radiation_chart_card.json | 32 +++++++++++++++++++ ..._radiation_chart_card_with_background.json | 32 +++++++++++++++++++ .../widget_types/solar_radiation_card.json | 29 +++++++++++++++++ .../solar_radiation_card_with_background.json | 29 +++++++++++++++++ .../solar_radiation_chart_card.json | 32 +++++++++++++++++++ ..._radiation_chart_card_with_background.json | 32 +++++++++++++++++++ 9 files changed, 253 insertions(+), 1 deletion(-) create mode 100644 application/src/main/data/json/system/widget_types/horizontal_solar_radiation_card.json create mode 100644 application/src/main/data/json/system/widget_types/horizontal_solar_radiation_card_with_background.json create mode 100644 application/src/main/data/json/system/widget_types/simple_solar_radiation_chart_card.json create mode 100644 application/src/main/data/json/system/widget_types/simple_solar_radiation_chart_card_with_background.json create mode 100644 application/src/main/data/json/system/widget_types/solar_radiation_card.json create mode 100644 application/src/main/data/json/system/widget_types/solar_radiation_card_with_background.json create mode 100644 application/src/main/data/json/system/widget_types/solar_radiation_chart_card.json create mode 100644 application/src/main/data/json/system/widget_types/solar_radiation_chart_card_with_background.json diff --git a/application/src/main/data/json/system/widget_bundles/outdoor_environment.json b/application/src/main/data/json/system/widget_bundles/outdoor_environment.json index bf60c159af..9ee3eda1f5 100644 --- a/application/src/main/data/json/system/widget_bundles/outdoor_environment.json +++ b/application/src/main/data/json/system/widget_bundles/outdoor_environment.json @@ -53,6 +53,14 @@ "rainfall_chart_card", "rainfall_chart_card_with_background", "simple_rainfall_chart_card", - "simple_rainfall_chart_card_with_background" + "simple_rainfall_chart_card_with_background", + "solar_radiation_card", + "solar_radiation_card_with_background", + "horizontal_solar_radiation_card", + "horizontal_solar_radiation_card_with_background", + "solar_radiation_chart_card", + "solar_radiation_chart_card_with_background", + "simple_solar_radiation_chart_card", + "simple_solar_radiation_chart_card_with_background" ] } \ No newline at end of file diff --git a/application/src/main/data/json/system/widget_types/horizontal_solar_radiation_card.json b/application/src/main/data/json/system/widget_types/horizontal_solar_radiation_card.json new file mode 100644 index 0000000000..1b357d2d38 --- /dev/null +++ b/application/src/main/data/json/system/widget_types/horizontal_solar_radiation_card.json @@ -0,0 +1,29 @@ +{ + "fqn": "horizontal_solar_radiation_card", + "name": "Horizontal solar radiation card", + "deprecated": false, + "image": "data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAAMgAAACgCAMAAAB+IdObAAAAk1BMVEUAAADf39/f39/g4ODg4ODf39/////k5OSAwyzg4OCQy0bf8Mrz8/Pv9+XQ6bCQkJD3+/LOzs6srKxYWFjIyMig0mGIxzm43Yj5+fmYzlPb29vV1dXCwsK2tra/4ZVKSkrY7L08PDzn5+fn9NjH5aO8vLyw2Xuenp6CgoJ0dHS6urqo1m5mZmbt7e2rq6svLy8hISGYzLGRAAAABnRSTlMAIEDfv1C6kOEmAAAEBElEQVR42u3aiW7aQBSFYZqk18N4X/AKGLNDSNL3f7reO9i1ukAbpCInOp/SaDLjkvnrcamUjgAAAAAAAAAAAAAAAAAAAAAAAAAAAADu6cuHNxIPj9ZHN378yh1WTh+eYz2Mnhz6BPKn0Zg+hTFCBgYhQ4OQoUHI0CBkaP4Q4gYk7H7G2fkWiehIHcv3IxJm+lidJ+mY0P1cD1mruclR2qVWvEtq2SXx3h2Hw3iY1Mnel5E0RVUlC07jyMDiKf7qCptaQTuy1/NFN+V5xBZeYD6vzGbki0532cK9GpIpVRDzVF8S+5ZF8SHmHR/j0876VnNITMnJqg8Hag5xxAv1aff69ur7Vn3a09uhSS5WZKn6MdIk5orpdrOpks1rJWWFMqVb/duxSVOt3Ssh5iVt80L9SzuvjV/FFO39yNrtYysmDnmLG8uJ/IYX/IgX/ENMDfn+/ki19U1u3h8FhWLEVql8CxOktL16VhkZW7XmRSVfBkrJFoJ0S7/ICv5d3uUQVyv2LK8t5mQciBo+XDvf55ZjG8LbtqKD1Vi1CdnvojYkoti5HOLquXcOsSc80uete7LptDvbW3MgCr6kOx02Bfzo2nKaXM/u/syv3BFPsdTmywvFCjL8Oj7Q/lTz0do1cd2FHOOkObxRfKojXqjjmhputWI+WhdDhGtC2ltBPw6Qbje2km/7rAoVcFNGbKLl0olsaT3vTspcra88I8+KeeRlbpAqFtCZI7/a0a/6hf6T+NeQLkFLjkhVQGmxVgvezsJcn5kjki0yjvAWWk5Kltp0JaQwu1/I6doqtqKb3R4yUfZKZbL9wix4/FnuSPdXgMe7W6tU6+xyiDD1E+rdOyRT6zWPUx20J6+gPsTmEB6uPGb/LUSOFvXuGyKz22cV8JFYqGdzufd7SOd6SCAfvf8eMlGL9tEw+EakE9mvVmtzg9xbQ7Ru34jYxafXefl1wrk1ZC5P84rH/ZM65572GdUTui2kf5/tzGSb8vFSkpHnlI9DmRhTTkTL1yXlZXle4AnnfSFBqrZz3b+/Zd17cmqu8W4McZWR/RRSVWGZJCGPpjQtp5t8Ng2rKgk3L+GGdx4unc2mJCc0C2GyeVcIrbRS6Zo6HhewzGx4mwY3hmh1tvopJJw5SbgMzyHLquQxzy3LcJqYkHFZckgyWyYO504deh/XvfRU6u3N/4zf8hlNJ5zeicJyGs6qZOrIHQk35XTmzJKQ5142yyQkCcnljiw3kSxU0yndm4S8W7mky6qkpH8xhJA8v7bo0L8YRMgQIWRoEDI0CBkahAzNePT0CX7MTuQ8jR6sT/CD9tx6GI2+Po6tj+7x4TP9pxoAAAAAAAAAAAAAAAAAAAAAAAAAAACAO/kOdioE5akwBJsAAAAASUVORK5CYII=", + "description": "Displays a latest solar radiation telemetry data in a horizontal layout.", + "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: 'radiation', label: 'Solar Radiation', 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\":\"Solar Radiation\",\"color\":\"#2196f3\",\"settings\":{},\"_hash\":0.2392660816082064,\"funcBody\":\"var value = prevValue + Math.random() * 500 - 250;\\nif (value < 0) {\\n\\tvalue = 0;\\n} else if (value > 1100) {\\n\\tvalue = 1100;\\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:radioactive\",\"iconColor\":{\"type\":\"range\",\"color\":\"rgba(0, 0, 0, 0.87)\",\"rangeList\":[{\"from\":0,\"to\":0,\"color\":\"#5B7EE6\"},{\"from\":0,\"to\":250,\"color\":\"#80C32C\"},{\"from\":250,\"to\":500,\"color\":\"#FFA600\"},{\"from\":500,\"to\":1000,\"color\":\"#F36900\"},{\"from\":1000,\"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)\",\"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';\",\"rangeList\":[{\"from\":0,\"to\":0,\"color\":\"#5B7EE6\"},{\"from\":0,\"to\":250,\"color\":\"#80C32C\"},{\"from\":250,\"to\":500,\"color\":\"#FFA600\"},{\"from\":500,\"to\":1000,\"color\":\"#F36900\"},{\"from\":1000,\"to\":null,\"color\":\"#D81838\"}]},\"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\":\"Horizontal solar radiation card\",\"dropShadow\":true,\"enableFullscreen\":false,\"titleStyle\":{\"fontSize\":\"16px\",\"fontWeight\":400},\"units\":\"W/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": [ + "weather", + "environment", + "solar", + "radiation" + ] +} \ No newline at end of file diff --git a/application/src/main/data/json/system/widget_types/horizontal_solar_radiation_card_with_background.json b/application/src/main/data/json/system/widget_types/horizontal_solar_radiation_card_with_background.json new file mode 100644 index 0000000000..7122187d2c --- /dev/null +++ b/application/src/main/data/json/system/widget_types/horizontal_solar_radiation_card_with_background.json @@ -0,0 +1,29 @@ +{ + "fqn": "horizontal_solar_radiation_card_with_background", + "name": "Horizontal solar radiation card with background", + "deprecated": false, + "image": "data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAAMgAAACgCAMAAAB+IdObAAAC8VBMVEUAAADPfgjntTTCagSpWgHx0kb///rgoCDckg7/+H+hVgGhVgKtYAGaTwCfVgD////z38Pt2sJ8wyL14sPw3ML04MPy3sPv2sL46sv25MT57M7679Dy3cL358f57s/46cnr2ML568z78dH25cawYAH///r78tT89NT++dj358X358n//ufx3MTNegLQfgH///bUhQT//eP++tvKdgH999X//N7rvTutXAH//+/89dWyYgGjVwKzYwHBbAKmWQGtXwK9agH///PEgTH//eDSgQO1ZQH//uv78dOvXQGoWwGrWgHXjQe4ZwLnszPHcwKqXQHtwkGLxzbhnyX89tflri/ioyjFcALwy0zgnCDblA7ZkQu6aALV2JvuxkXpuTjclxP14sX02E7otjaMyTjmsDChVAGeUgH13VLy1EzWiQXKaQ3G1YbkqCvGZQZVUEaDxSzNcBP67F6ay0qx0WnuwzvBcAT248jwyUbkqyzgox7EuaGrpI734lWTyUDVigWaTwHy48XKv6bxz03emBjReRf89trb0bW+133451i3ZAHq2rrVgRvfnRXiqCTflyPYiR6yZASkm4jhq07xzkk8OTT36srtxmzXmkzbn0tJRTzr5rnPxqza46WxqZTP2ZKOiXf99XWKgG93cmTqvGDepEzquDK5ei+/YQLl3cDl3K/i2a/++568spqQkI7++ouq0F/ckCHw9uLy7s7f173ay6/d6qq+t565tZ3I2Ynxz3W30nP88mjv5b3j1LjVzrT//rHk4q7Z3aDmtlihzVXRlEqlVwK4XgHy8vD//87ksFFcWlEoJyTjtxThrhHx6sXs4sW/v7lqZVz36y7OkAuXTQGVTAHLy8X//8Curqv354bz3CTYoRDFfA7j4+P78Y/13oDz133y0lWTSwH//dnx89ng8cTLyrS3rZaCgoKZjnvarHToxRzhxKLR45jG34/rzCf5+OnV1dOXi3j25m+c0FDDjlDAh0TEfCWVSwH3+/Hj49mNwMzJAAAAD3RSTlMAICAgICAgICAgQL/f31DNJ4eVAAAOsklEQVR42uzBgQAAAACAoP2pF6kCAAAAAAAAAJg9eldNGAzDOF5P9VCpN2GnEhsRQhFjlcZB4iGIRpOiQRGM4OIgWhAHXSyY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", + "description": "Displays a latest solar radiation telemetry data in a horizontal layout with background.", + "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: 'radiation', label: 'Solar Radiation', 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\":\"Solar Radiation\",\"color\":\"#2196f3\",\"settings\":{},\"_hash\":0.2392660816082064,\"funcBody\":\"var value = prevValue + Math.random() * 500 - 250;\\nif (value < 0) {\\n\\tvalue = 0;\\n} else if (value > 1100) {\\n\\tvalue = 1100;\\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:radioactive\",\"iconColor\":{\"type\":\"range\",\"color\":\"rgba(0, 0, 0, 0.87)\",\"rangeList\":[{\"from\":0,\"to\":0,\"color\":\"#5579E5\"},{\"from\":0,\"to\":250,\"color\":\"#7CC322\"},{\"from\":250,\"to\":500,\"color\":\"#F89E0D\"},{\"from\":500,\"to\":1000,\"color\":\"#F77410\"},{\"from\":1000,\"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)\",\"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';\",\"rangeList\":[{\"from\":0,\"to\":0,\"color\":\"#5579E5\"},{\"from\":0,\"to\":250,\"color\":\"#7CC322\"},{\"from\":250,\"to\":500,\"color\":\"#F89E0D\"},{\"from\":500,\"to\":1000,\"color\":\"#F77410\"},{\"from\":1000,\"to\":null,\"color\":\"#DE2343\"}]},\"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\",\"imageBase64\":\"data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAAaAAAABcCAMAAAAfz5G9AAADAFBMVEX////UhgXOewLOfgPLdwPWjAbHcgKzYwGwYAHThAS/awHKdgHRgQe3ZAHQfQGyYgG1ZQHQgAPNeQLmrzDAbQLNeAbDcALquzzViQitXAG9agG7aAHJdQKlWAKuXwHTgwWxYQHBaQbalA3FcALIcQfkrC/MeQHclxDrvj/RgwLSgAKnWwHxz0vemhe7ZQK5ZwG+ZwPgnhzCbALfnBrIdAHotjPmsjbXjQvmsTLotDe3ZwLgoyDkqizpuDrTiga8aQGqWgHGbgbkqCvipCjakgntw0X///nViAPotjndmBbhoSTBbgHrvzrnszKrXQHEbgLjqiXwy07ZkQrQfQfwyknZjwqwXgLPfAbgmx/twkH88GfhpB+jVwLYjQfKcwjhnSTjpinuxkHgoCDfnRP//+nemhHXigXux0XYjwbz10/+/+3sv0PPegbuxUn77WHAaQLuxD3//+TvyEzx00rmrTL45FjquTXipyG0YQHclRT12lDfoRzhpCShVQHakA+fUwHEawj551vbkxGpXALEcwK5ZQH6613yzkXswD7z1E7ipiX+//P+/rr23lXtwjr33k/pvDjblgz983Lxz0/88GL13FPgnxeYTgHwykTLdQnmsCr34lP//9r34VfrujjmrC7clArVhQP//+CcUQHXjgP//8v010rkqyn88GzjoSbhohzy0lD//8X++5f011Pnsy3lrSr+/af+/q3//rP+9nW3YQLZixzxyj/elxzvxzr++o3//aH++5KTSgH+94L66lf551OrYAP120vXhxn+/sDflyPVgRv+/Jz++obsvjTGYwf982vcmAzFbAX+9nqzZgr//9HdkSHMbhKvWgHOcxX//9Xpty/ckRrKcgH871rSfBjKaRH99on++X7JZwr99HzLbAb000bReBPVgBDPdAf36jGnWALfohL99m/44k799GTCYgP03yfkuBTWnBG8YQHowBy0XALsxDHlrCXqyh3frwvy22b363rFfQv475X59UDx1jniqRj04XXv0if58akeqTMtAAA390lEQVR42rzc7U+XZRQH8CLkIUCCJDFICAWkQEOMhyQoQxEKSBQNCTOlBLMHTSuVtdJ0iLpKo2WpOFf5mJXa1sxpNTfdmuYbt9pyvmv1pv6Fvt9z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\",\"imageUrl\":null,\"color\":\"#fff\",\"overlay\":{\"enabled\":true,\"color\":\"rgba(255,255,255,0.72)\",\"blur\":3}},\"autoScale\":true},\"title\":\"Horizontal solar radiation card\",\"dropShadow\":true,\"enableFullscreen\":false,\"titleStyle\":{\"fontSize\":\"16px\",\"fontWeight\":400},\"units\":\"W/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": [ + "weather", + "environment", + "solar", + "radiation" + ] +} \ No newline at end of file diff --git a/application/src/main/data/json/system/widget_types/simple_solar_radiation_chart_card.json b/application/src/main/data/json/system/widget_types/simple_solar_radiation_chart_card.json new file mode 100644 index 0000000000..4c60941cd7 --- /dev/null +++ b/application/src/main/data/json/system/widget_types/simple_solar_radiation_chart_card.json @@ -0,0 +1,32 @@ +{ + "fqn": "simple_solar_radiation_chart_card", + "name": "Simple solar radiation chart card", + "deprecated": false, + "image": "data:image/png;base64,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", + "description": "Displays historical solar radiation values as a simplified chart. Optionally may display the corresponding latest solar radiation value.", + "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: 'radiation', label: 'Solar Radiation', type: 'timeseries', color: 'rgba(0, 0, 0, 0.87)'}\n ];\n },\n defaultLatestDataKeysFunction: function(configComponent) {\n return [{ name: 'radiation', 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\":\"Solar Radiation\",\"color\":\"rgba(0, 0, 0, 0.87)\",\"settings\":{},\"_hash\":0.8587686344902596,\"funcBody\":\"var value = prevValue + Math.random() * 500 - 250;\\nif (value < 0) {\\n\\tvalue = 0;\\n} else if (value > 1100) {\\n\\tvalue = 1100;\\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() * 500 - 250;\\nif (value < 0) {\\n\\tvalue = 0;\\n} else if (value > 1100) {\\n\\tvalue = 1100;\\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\":0,\"color\":\"#5B7EE6\"},{\"from\":0,\"to\":250,\"color\":\"#80C32C\"},{\"from\":250,\"to\":500,\"color\":\"#FFA600\"},{\"from\":500,\"to\":1000,\"color\":\"#F36900\"},{\"from\":1000,\"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\":\"Solar Radiation\",\"dropShadow\":true,\"enableFullscreen\":false,\"titleStyle\":null,\"mobileHeight\":null,\"configMode\":\"basic\",\"actions\":{},\"showTitleIcon\":true,\"titleIcon\":\"mdi:radioactive\",\"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\":\"W/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": [ + "weather", + "environment", + "solar", + "radiation" + ] +} \ No newline at end of file diff --git a/application/src/main/data/json/system/widget_types/simple_solar_radiation_chart_card_with_background.json b/application/src/main/data/json/system/widget_types/simple_solar_radiation_chart_card_with_background.json new file mode 100644 index 0000000000..ab0333040a --- /dev/null +++ b/application/src/main/data/json/system/widget_types/simple_solar_radiation_chart_card_with_background.json @@ -0,0 +1,32 @@ +{ + "fqn": "simple_solar_radiation_chart_card_with_background", + "name": "Simple solar radiation chart card with background", + "deprecated": false, + "image": "data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAAMgAAACgCAMAAAB+IdObAAAC/VBMVEUAAACQTQyVUABvMQWZUgFvMATLfwCgVwTDcAOUTQFrLQHRiAevXAf////04MPy3sP57M714sP679D35sfs2sL25cTx3cPw3MP46Mnu2sL78tP46Mvu3MP568z67dB8wyL46sr89dX78dL148X++dn89NT999b56s3///rv18T36Mf78dC+awL++96yYgGqXwHv38T57s7///SmWwKjWAKoXAH35cWwXwK6aAG0ZQH++9v35MmsYQLUggW2ZgKvYgLDcQPRfwK7awL///Dz48Xx2Mb14cj//eHy28e3aAL//uzGdQGyZALAbwLx4cTKeQLz3ceMyTjp18OFPgLXiQ/OfAK2YgKtXQI7ODHgmSf//un//ubVhgegWAKdVAHotDelWAL468jhnCqrWwLptjvrvUDiny7ckSDUew7y28QhHxuLQgLTeQigUgLZihjPcwTS15r//ePquT3grQ7jpSogHhqcTwN/OgL578nioSjelSXajxkfHRnalwvXkQnlqS2iVQKZUQLboAfLbwSTSQLIaQTCYgL68snWgA/CWgmYRwPe0bHswEQuLCaaTAO5ZALjozHmrTDdnhHSdgSRRAL79Mrl1MLrzSmMhnbnsTPnrjPjshrepgmWTgLYx63mvB/GYwjNhAeqWALtxEjhpxfo1ri+sprg07huZ1vXgxVkKwR6NwLDu6Ss1WWYzEnlpzQhIR6+VAqrTATOeQKJf27dlx9fKAP038VVUEWhSAPoxCPTiwdqLgODxSzitQ6TjXvmrTe0TwdiXFDz5TLHfAdxMgPe56mozl9/eGghISGsrKLw89Tq3r+nnIeiloJ1c2jvyU3v2S7jrSEhISDkvBdcJgXZ3KKg0Fau2XBYV0/j4syyrJaXl5BIRDvj4+HGxrfe7rTL4I+30XLovSm3VgPn4bOqpY/j49fr6brB2IDB45Wnn4rH1Yj470Xx8fDLy8jp88ewo473++/w9eTd2L7O6adKSUK7cxvcu5LVrHr2+NPL0pD8+2nBnHv9+lmIXlQDAAAADXRSTlMA9iDvryAgv7+/v7CvW+81JQAAGw5JREFUeNrs1LFu4kAUhWESRVrtuyAosAWWYgjuVtiisRUhmRAh1nQUURpsKUCXYgtc2hLVVqkoIqpteIQ8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", + "description": "Displays historical solar radiation values as a simplified chart with background. Optionally may display the corresponding latest solar radiation value.", + "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: 'radiation', label: 'Solar Radiation', type: 'timeseries', color: 'rgba(0, 0, 0, 0.87)'}\n ];\n },\n defaultLatestDataKeysFunction: function(configComponent) {\n return [{ name: 'radiation', 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\":\"Solar Radiation\",\"color\":\"rgba(0, 0, 0, 0.87)\",\"settings\":{},\"_hash\":0.8587686344902596,\"funcBody\":\"var value = prevValue + Math.random() * 500 - 250;\\nif (value < 0) {\\n\\tvalue = 0;\\n} else if (value > 1100) {\\n\\tvalue = 1100;\\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() * 500 - 250;\\nif (value < 0) {\\n\\tvalue = 0;\\n} else if (value > 1100) {\\n\\tvalue = 1100;\\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\":0,\"color\":\"#5579E5\"},{\"from\":0,\"to\":250,\"color\":\"#7CC322\"},{\"from\":250,\"to\":500,\"color\":\"#F89E0D\"},{\"from\":500,\"to\":1000,\"color\":\"#F77410\"},{\"from\":1000,\"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\",\"imageBase64\":\"data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAAQoAAACACAMAAADESdfxAAADAFBMVEX////SgwPOewLNeAPPgAO0ZQHNfQK2ZwLThgTCcQK5aQHnszS+bgK8agHBbwHquzvIcwHUhgTRgALFdAHXjQXVigfmrjCzYgGkWQK+bAHmsTHKdQHKegLRfQHotTiuXgHquDvtw0HlrC/akgq4ZwLrvkCwYAHFbwPkqCvZjwfLdwLEcgLViATIeALgoh7swT/rvzvgnhvhoiXgmyPuxkPnrzThpCDclw7elyPpuTfemxjotTvjpSvvykbbkw68ZwKrYALhnybdmBWwYwG3ZAHwyk3nsTjXjAvUgwSqXQGnWgLipibPfQe/aAOtYgKnXQHBbALswEThoiyiVgKfUgK7bAHZjw6qWQLblROyZALdlh302VHotjTlqzTlqS6WTALy1U/krCv13VTemxHtw0fHcAPxzknhnyHjoyj//+nx0U3gmijfmh7HdgHIcQjTgAPuxkrUewzKdQiyYAL//+HQewOfVwLbkhr772Druj+aUgL34lf6613dkyLXiRCNQQLblQrEbAfhnSrkqybfnhScTgORRQLxzk7iqCLCaQW2YgGtXAHbjx7GYRL++IDZjhWIPwLRgQf///jjpTLDXA7y1EvKaBPBVgzTiQaEPQL99XLTdwXXigX+/Jf451vmryvdogrWhgnMbxT+//DVgwjZixr1207VfxHWgxXZnAfYhxnMbwX//9bhsA///8zgqBLJaQZnLAOVRgJeKATQcwP++4/GZAf772b88WT45lX02Et/OgL88WzszB7uxDrrvTbiny/CYQP+/aD230///8P661f++Yjy0Uj+/af341HeqQe8VAj+93ngohj+/rXu1SjktRvTfhmvXALQdhf+/q/oxCSoVQPy3SjmvB22UQZ6NwL99GzntSucSAPktg/szi3Qdg3jrhy7YgLVlAjAWwT+/rv05S7kvRTxzUPwyT/pui9xMQPKgwmkSwPpxBawTgXCdwmqTQPPjAvx2ze2WgL37j2vVAL88nj47S/rxS/1427364H69k38+mD47Jbx1llRHj+PAAA5NElEQVR42mTXXUuTcRgG8GZz2twmrtZeWDZHRi8ToSUsNmJrNbcVrmZGW20VREk2DMKkIA88qJPBEAk68EQwCj+FH63rvu7n/7zUZQ4V45m/Xff9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\",\"imageUrl\":null,\"color\":\"#fff\",\"overlay\":{\"enabled\":true,\"color\":\"rgba(255,255,255,0.72)\",\"blur\":3}}},\"title\":\"Solar Radiation\",\"dropShadow\":true,\"enableFullscreen\":false,\"titleStyle\":null,\"mobileHeight\":null,\"configMode\":\"basic\",\"actions\":{},\"showTitleIcon\":true,\"titleIcon\":\"mdi:radioactive\",\"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\":\"W/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": [ + "weather", + "environment", + "solar", + "radiation" + ] +} \ No newline at end of file diff --git a/application/src/main/data/json/system/widget_types/solar_radiation_card.json b/application/src/main/data/json/system/widget_types/solar_radiation_card.json new file mode 100644 index 0000000000..812fb8d846 --- /dev/null +++ b/application/src/main/data/json/system/widget_types/solar_radiation_card.json @@ -0,0 +1,29 @@ +{ + "fqn": "solar_radiation_card", + "name": "Solar radiation card", + "deprecated": false, + "image": "data:image/png;base64,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", + "description": "Displays a latest solar radiation telemetry data in a box layout.", + "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: 'radiation', label: 'Solar Radiation', 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\":\"Solar Radiation\",\"color\":\"#2196f3\",\"settings\":{},\"_hash\":0.2392660816082064,\"funcBody\":\"var value = prevValue + Math.random() * 500 - 250;\\nif (value < 0) {\\n\\tvalue = 0;\\n} else if (value > 1100) {\\n\\tvalue = 1100;\\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\":{\"size\":16,\"sizeUnit\":\"px\",\"family\":\"Roboto\",\"weight\":\"500\",\"style\":\"normal\"},\"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:radioactive\",\"iconColor\":{\"type\":\"range\",\"color\":\"rgba(0, 0, 0, 0.87)\",\"rangeList\":[{\"from\":0,\"to\":0,\"color\":\"#5B7EE6\"},{\"from\":0,\"to\":250,\"color\":\"#80C32C\"},{\"from\":250,\"to\":500,\"color\":\"#FFA600\"},{\"from\":500,\"to\":1000,\"color\":\"#F36900\"},{\"from\":1000,\"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)\",\"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';\",\"rangeList\":[{\"from\":0,\"to\":0,\"color\":\"#5B7EE6\"},{\"from\":0,\"to\":250,\"color\":\"#80C32C\"},{\"from\":250,\"to\":500,\"color\":\"#FFA600\"},{\"from\":500,\"to\":1000,\"color\":\"#F36900\"},{\"from\":1000,\"to\":null,\"color\":\"#D81838\"}]},\"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\":\"Solar radiation card\",\"dropShadow\":true,\"enableFullscreen\":false,\"titleStyle\":{\"fontSize\":\"16px\",\"fontWeight\":400},\"units\":\"W/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": [ + "weather", + "environment", + "solar", + "radiation" + ] +} \ No newline at end of file diff --git a/application/src/main/data/json/system/widget_types/solar_radiation_card_with_background.json b/application/src/main/data/json/system/widget_types/solar_radiation_card_with_background.json new file mode 100644 index 0000000000..474d056fd1 --- /dev/null +++ b/application/src/main/data/json/system/widget_types/solar_radiation_card_with_background.json @@ -0,0 +1,29 @@ +{ + "fqn": "solar_radiation_card_with_background", + "name": "Solar radiation card with background", + "deprecated": false, + "image": "data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAAMgAAACgCAMAAAB+IdObAAAC91BMVEW/cAWSRAPLewq4ZwHBbgKPQwTOfQjLeQPAcwP////67tD57M378NH57c/46cr358r78tP46Mz35sb25Md8wyL89NT35sj25MT46Mj56sz56s7999b///n14sT568v++df++9rv1sT89db78tHUhgT///Ty28f578r14Mf//ubx2cb//+/25MnViAf//uP//Nz57s3z3MPShAT//eD24sjTgAT468j//+z+/N/468b99tTx2MTw2sPalAz//+ny28SMyjn14MXRfQPblg7s1cPOfALTdwb03cfWiwT03sTakQnZjwbXjQXVgwTt18LQdwLnrjH68cvWggzz38LKeQLSdALlpinUeg7ZiBXflSXnrC757cfkpCbbjBrcjx7YhhDWignUegbWiATLcQPQfwLosTTekiLCZQLjoSPPcwLEvqbq1MM8OjLYjQzhmim9ZAL89dDdmhP7882iUALlqSvbkwvEbAPRgQLjnSThmiLsxX8hIRzoszncoQylVgKppY/GdgKEPgLtyYHqwn3GcAT89dnKawLpvH20YQPflByrWQLRewHSiQTn08PYnga1sZruzITgmRnGZwLl0sLjoCvuzCPcmQ7YkwnXhAi/aQLqvYLpv3yt12ye0lfeqQ3BYQKdTALw9eGdmYXvyo66XwHUz7PerHuOiXfptTy5ZgKZzkzq5MbinR1XVUnTlwfVfQevXgLv6sri3cDe17vQkAXf8cerq6W52XjLgQbz2Znx0JGExy4hHxvqxBbirBbmuxLOiATP6au64IrsxIjy1ZPv6cDKxqxKRz6aSAKLQgLMzMTCwr+zVgL4+/K/3YD47C7ktRvisxDn5tvRonqpTgF9OgHy8tS/v7W0tLDd6anisnpzcGEvLSfn57Xwz43GnHqBfGzY4aDmt3tybV/03izv0ivZ7rnF5Z7K3o/x2oTy8uzT086goJnXqXrm9NXx9Mj025r39dL5+eDirVVlYlX4+uj691by31buz0qvfFMgHxveyLaVUhoSesfDAAAACXRSTlP9/vwVv7ewv6/8oWFpAAAj8UlEQVR42oTUsYpTQRTG8YsRFTWYJZAlAbstTRO8D+CFgI0gbhCvxERkEmxMJVwXLAQLWawEC9HSxmLBWlt9Dp9ByAv4nTNz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", + "description": "Displays a latest solar radiation telemetry data in a box layout with background.", + "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: 'radiation', label: 'Solar Radiation', 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\":\"Solar Radiation\",\"color\":\"#2196f3\",\"settings\":{},\"_hash\":0.2392660816082064,\"funcBody\":\"var value = prevValue + Math.random() * 500 - 250;\\nif (value < 0) {\\n\\tvalue = 0;\\n} else if (value > 1100) {\\n\\tvalue = 1100;\\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\":{\"size\":16,\"sizeUnit\":\"px\",\"family\":\"Roboto\",\"weight\":\"500\",\"style\":\"normal\"},\"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:radioactive\",\"iconColor\":{\"type\":\"range\",\"color\":\"rgba(0, 0, 0, 0.87)\",\"rangeList\":[{\"from\":0,\"to\":0,\"color\":\"#5579E5\"},{\"from\":0,\"to\":250,\"color\":\"#7CC322\"},{\"from\":250,\"to\":500,\"color\":\"#F89E0D\"},{\"from\":500,\"to\":1000,\"color\":\"#F77410\"},{\"from\":1000,\"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)\",\"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';\",\"rangeList\":[{\"from\":0,\"to\":0,\"color\":\"#5579E5\"},{\"from\":0,\"to\":250,\"color\":\"#7CC322\"},{\"from\":250,\"to\":500,\"color\":\"#F89E0D\"},{\"from\":500,\"to\":1000,\"color\":\"#F77410\"},{\"from\":1000,\"to\":null,\"color\":\"#DE2343\"}]},\"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\",\"imageBase64\":\"data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAAMwAAADMCAMAAAAI/LzAAAADAFBMVEX////krC7otzfptzvmsjbrvjvgox7rvj/jqSrgoB3lsDDjpyztwUDquzvipCntxELhoijquTzmszLmrTLntDXotDjtxEjgniPhpCTotDvux0PfmyPfnRvlri/lqS7hnynipyTtwUXnsDLvx0vdliDswT3jpinx0E7quz/fmCLnrzTclBPTgQbsvkPhoSHUew7lrCrWhAbvyEXblAvkqiXhoC7emxLy1FDwy0bajBvgmSfwy07bkxvWhA7aixXYiw/y1EvipiD341jSeAr451rwzknfmhz02FD77mDquTfdlxbTdwX121PQeAPckiDfnBjpvDnioy/fmRjYhxTOdAP6617bjxngnhb231XhmyrYiBrWgxjakQzy0UnlqjTLbBTVgBLmrTfAZgLmrC7bjx////j//+njoSX02k3otjLhnCb13lHclxPSdALdlx3JZhP//+TBWA23YALhnCHFZQPekyPLbAXUewT99HHfliXz1027YwL+9XjosjbQfQTinRz88WzGYRLDXRDmsCrwy0r//7rinyTUfgbkpjPZkBT+/+3tw0D+/q377mXxzk3NcAL88WTXhgnZhw7dmA/Zjwr34VHlpiixXQP+//LWgAr//8f45VP56VX88mjhqhT+/qb//9/JaAf//ZrkpCTnri/CYQLlqSr++IHBXAXGawPOchb++HzvxTzAVQz//83++YbTfBn+/JX+/rP77VnwyT/Vign//9njrx3fkxvOcg3dpwrbmArQdxbGYQr//8DeoA/++4usWQPBbATHcAO3UQatTgTswTbXjAf//9P//qDntSrckBTgpBS9UwrZnwe7WASgSgPovyeyTwX010js0CzpySHmvxu0VgKaRgP+/JDyzkPltyDkoR7irxHquTHJdAaSQwLsvDX+93TqxivitxOnSgT23kzUmQf99Wzw1Tbu2Sny4S7UkQbNhATKfAWlUgLGdwL88V715zLQigTtyDb+94/9+KD89IX48EP37jb79k7x2mP8+l3253f47Zb14z/6IjwPAABAGUlEQVR42lzXz0vTcRzH8cxRpjSsZRHmVjakrZIiOxjL0WWHoMkSFkpEoTDw4EU87LB2szxOQujSxeF/IAw6dOzgv+DfEP0JPd+v9+fjZ/ns67Z+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\",\"imageUrl\":null,\"color\":\"#fff\",\"overlay\":{\"enabled\":true,\"color\":\"rgba(255,255,255,0.72)\",\"blur\":3}},\"autoScale\":true},\"title\":\"Solar radiation card\",\"dropShadow\":true,\"enableFullscreen\":false,\"titleStyle\":{\"fontSize\":\"16px\",\"fontWeight\":400},\"units\":\"W/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": [ + "weather", + "environment", + "solar", + "radiation" + ] +} \ No newline at end of file diff --git a/application/src/main/data/json/system/widget_types/solar_radiation_chart_card.json b/application/src/main/data/json/system/widget_types/solar_radiation_chart_card.json new file mode 100644 index 0000000000..00af9cd2fc --- /dev/null +++ b/application/src/main/data/json/system/widget_types/solar_radiation_chart_card.json @@ -0,0 +1,32 @@ +{ + "fqn": "solar_radiation_chart_card", + "name": "Solar radiation chart card", + "deprecated": false, + "image": "data:image/png;base64,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", + "description": "Displays a solar radiation data as a combination of the latest and aggregated values. Optionally may display the corresponding historical values as a 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: 'radiation', label: 'Solar Radiation', type: 'timeseries', color: 'rgba(0, 0, 0, 0.87)', units: 'W/m²', decimals: 0 }\n ];\n },\n defaultLatestDataKeysFunction: function(configComponent, configData) {\n return configComponent.createDefaultAggregatedValueLatestDataKeys(configData, 'radiation', 'W/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\":\"Solar Radiation\",\"color\":\"rgba(0, 0, 0, 0.87)\",\"settings\":{\"showLines\":true,\"fillLines\":true,\"showPoints\":false},\"_hash\":0.8587686344902596,\"funcBody\":\"var value = prevValue + Math.random() * 500 - 250;\\nif (value < 0) {\\n\\tvalue = 0;\\n} else if (value > 1100) {\\n\\tvalue = 1100;\\n}\\nreturn value;\",\"aggregationType\":null,\"units\":\"W/m²\",\"decimals\":null,\"usePostProcessing\":null,\"postFuncBody\":null}],\"alarmFilterConfig\":{\"statusList\":[\"ACTIVE\"]},\"latestDataKeys\":[{\"name\":\"f(x)\",\"type\":\"function\",\"label\":\"Latest\",\"color\":\"#4caf50\",\"settings\":{\"position\":\"center\",\"font\":{\"size\":48,\"sizeUnit\":\"px\",\"family\":\"Roboto\",\"weight\":\"500\",\"style\":\"normal\",\"lineHeight\":\"1\"},\"color\":{\"type\":\"range\",\"color\":\"rgba(0, 0, 0, 0.87)\",\"rangeList\":[{\"from\":0,\"to\":0,\"color\":\"#5B7EE6\"},{\"from\":0,\"to\":250,\"color\":\"#80C32C\"},{\"from\":250,\"to\":500,\"color\":\"#FFA600\"},{\"from\":500,\"to\":1000,\"color\":\"#F36900\"},{\"from\":1000,\"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() * 500 - 250;\\nif (value < 0) {\\n\\tvalue = 0;\\n} else if (value > 1100) {\\n\\tvalue = 1100;\\n}\\nreturn value;\",\"aggregationType\":null,\"units\":\"W/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() * 80 - 40;\\nif (value < -120) {\\n\\tvalue = -120;\\n} else if (value > 120) {\\n\\tvalue = 120;\\n}\\nreturn value;\",\"aggregationType\":null,\"units\":\"W/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\":\"Solar Radiation\",\"dropShadow\":true,\"enableFullscreen\":false,\"titleStyle\":{\"fontSize\":\"16px\",\"fontWeight\":400},\"mobileHeight\":null,\"configMode\":\"basic\",\"actions\":{},\"showTitleIcon\":true,\"titleIcon\":\"mdi:radioactive\",\"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": [ + "weather", + "environment", + "solar", + "radiation" + ] +} \ No newline at end of file diff --git a/application/src/main/data/json/system/widget_types/solar_radiation_chart_card_with_background.json b/application/src/main/data/json/system/widget_types/solar_radiation_chart_card_with_background.json new file mode 100644 index 0000000000..f3b35139e0 --- /dev/null +++ b/application/src/main/data/json/system/widget_types/solar_radiation_chart_card_with_background.json @@ -0,0 +1,32 @@ +{ + "fqn": "solar_radiation_chart_card_with_background", + "name": "Solar radiation chart card with background", + "deprecated": false, + "image": "data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAAMgAAACgCAMAAAB+IdObAAAC/VBMVEW8awLAbgKzZASuWgCbTAG/aAC3aAD////57M714sP25cX68NH358j67s/5683679D46Mv78tT46Mnz4MP35sr46sz35sb89dX46sr78dH25MP999b89NP///r03sP04sR8wyL46M325Mf///T78dP35cnw2cP14Mf++9ny2sb24sX579D//+j//+z///D24sj++dj++db57cjw18XSggP14MPr18LQfwL//N3ThQP36Mbw1avWiwby3cP25MX46sjz3Mf138X57Mv68crMfALKeQLy28Pv0qv//d//+9vu1sTq1MLUhwTHdgH//uPOfgL//uXEcwL46sXQgALw28Pu2cL//eHPewLm08IgHhrMdQPe0LX57svx2Kv99tXj0cKwXQO0YAPUiQirWgPWggjTewT68szlpynkoCHhnBrSfwO+awPXjwvmqyvkpCPglxnVfgfMeQL++9/k2r7nrjDbiRXXhA7QeALOw6pWUkelVAP79c/13bbJcgPBcgPf1brcjRrepwvekhy+bwPm1brDbgT79MvahxHSyK735Lrt18LDu6PDtJ6+ZgK4ZgTlqCS8YwG4YQHszqr89tvayrE7NzHlz7vJvKO+r5ry2bDaoAjCZQHr2cO5qJfUiQO9tp6cTQTSdQLg8crn3sGu2nTflCLWmQfp4cSqoI3hmiDhrBUuLCbRhATz7M1+dmjcjxPy4sWNh3VJRDzgy7jX0LWd0lnekxXQkAXr3L/IwqiyoZPZiAru5cjs4MNjXVE8OTLhoRfbmQ+GPwG1rZbpvxSKQQL899Dz58myp5KLgnHuzR7JgQTv9+KORAP3+/LYwrDRvKqmm4iflYNxbF726Cnz3SWUSQXJbAPP6ayMyz3isxHPgQ7gxarJtaaZj3zgmCTkyKu13YKDPQHBrqC+4pBvZFvZ7bj14zK4spv57zQ6Ni/v1Cv57rVwaVv046+He2/CeQnI5px+OgH89bil1meVzku94YrZo1rjwJTpxpLnwin3++royZ7FjUspJyKJpBaoAAAAB3RSTlPPvyDPvyAgC6rIiQAAKVZJREFUeNq021tom2UYB/B6oabm0DZrbHqQ2FpBjIcWqnVOK0jFCWqVwSQEvZCJWo9rnHwBMTInRlLwwoZWLxZY1VVr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", + "description": "Displays a solar radiation data as a combination of the latest and aggregated values with background. Optionally may display the corresponding historical values as a 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: 'radiation', label: 'Solar Radiation', type: 'timeseries', color: 'rgba(0, 0, 0, 0.87)', units: 'W/m²', decimals: 0 }\n ];\n },\n defaultLatestDataKeysFunction: function(configComponent, configData) {\n return configComponent.createDefaultAggregatedValueLatestDataKeys(configData, 'radiation', 'W/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\":\"Solar Radiation\",\"color\":\"rgba(0, 0, 0, 0.87)\",\"settings\":{\"showLines\":true,\"fillLines\":true,\"showPoints\":false},\"_hash\":0.8587686344902596,\"funcBody\":\"var value = prevValue + Math.random() * 500 - 250;\\nif (value < 0) {\\n\\tvalue = 0;\\n} else if (value > 1100) {\\n\\tvalue = 1100;\\n}\\nreturn value;\",\"aggregationType\":null,\"units\":\"W/m²\",\"decimals\":null,\"usePostProcessing\":null,\"postFuncBody\":null}],\"alarmFilterConfig\":{\"statusList\":[\"ACTIVE\"]},\"latestDataKeys\":[{\"name\":\"f(x)\",\"type\":\"function\",\"label\":\"Latest\",\"color\":\"#4caf50\",\"settings\":{\"position\":\"center\",\"font\":{\"size\":48,\"sizeUnit\":\"px\",\"family\":\"Roboto\",\"weight\":\"500\",\"style\":\"normal\",\"lineHeight\":\"1\"},\"color\":{\"type\":\"range\",\"color\":\"rgba(0, 0, 0, 0.87)\",\"rangeList\":[{\"from\":0,\"to\":0,\"color\":\"#5579E5\"},{\"from\":0,\"to\":250,\"color\":\"#7CC322\"},{\"from\":250,\"to\":500,\"color\":\"#F89E0D\"},{\"from\":500,\"to\":1000,\"color\":\"#F77410\"},{\"from\":1000,\"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() * 500 - 250;\\nif (value < 0) {\\n\\tvalue = 0;\\n} else if (value > 1100) {\\n\\tvalue = 1100;\\n}\\nreturn value;\",\"aggregationType\":null,\"units\":\"W/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() * 80 - 40;\\nif (value < -120) {\\n\\tvalue = -120;\\n} else if (value > 120) {\\n\\tvalue = 120;\\n}\\nreturn value;\",\"aggregationType\":null,\"units\":\"W/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\",\"imageBase64\":\"data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAAU8AAAELCAMAAABu2vS6AAADAFBMVEX////VhwXRggPPfwLVigXThgTmszTptjrnszjRfgLqvD/krS7msDHquDztw0HWiwjPewLjpSnswD/ThAPTgATkpyrblAvlqi7XjQXhox/sv0PnrjLNfALakQzhoinpuDftw0fYjgnrvjzwy03fmiLuxkPkqC3otjTLeALpvDrOdwLHdgLvx0vfnRfblg/flyXosTThoCTclR/gnCTgmingoyXTdgPz107goRzZkgncjx7y00vdmBPvyEXfmxzhnivclBPfnx/wzEf13VPjqiTxz0njqyrfmhjEcwLemxPx0E7SeArjoiXipiDipiXUewTdmBf77WHelx/PcwLKcwLrujj02VLbkRnioC/ekyL34lfVggTinibnrC7Uew7hnRuyXwPZixzy01DdmA3YhxPbkRLZjg/BVw3nsDfdlBvYkAX45lr//+XYixb0207mrTblqjT24VL+/qvBcQP99HHKawXhnSDVgBPXiw7///jWgxjDXBDJZhPXhAfFbgOFPgL88WzGYRK8YwHBbAPSiQX+/aK2YwS/ZwLVggv//8L66l3IZwWkUwLswDiuXQPuwz3jpC/cjRjAXAXLaxT+/rr+/Zu9VAr//+n++YbmqyrMbwP+9XjkpjPmry7772fXgw7Zhwz//9PgqhT+/JTnsy7DZgKZSAP45VPUhwySRQP+//LFYgjCYgL++43JfAT+/rPXhxrSexj//8r++IGrWQL+/+2LQQL//9qpVgK2UQa4XwG8bQLVfgzNcQz010nlpiSeTgPlryf88WT//+D23k66ZwTboQf661jPdRbdnQ/dqAj++HzqujDjrxn77lzwyUDmvB7goxb56VXfow6vTgTbihPjoR7ryirvxzru0ynNcBby3DPyzkP982j15jTowyOpTAPjtA7ryBvktRu4VwP57zTx3CX88WD15yjhrgrSlAbluxLYmAb+93TtzyB+OgGwVgKhSAPmtifMhQbqwi3XnQbu0TTowRP99o759Ub992v460X7+FXy3mr36oT58JokoBOXAAB6ZUlEQVR42mzYu2tTYRgGcK13o9jSesMYKEgpisY2HSRI2qFYhyghSy1NKcELjRAchFiETjpkNGMHsThlku4KnRQcHESaP0Lc/Ad8nvdy3nMan/Od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\",\"imageUrl\":null,\"color\":\"#fff\",\"overlay\":{\"enabled\":true,\"color\":\"rgba(255,255,255,0.72)\",\"blur\":3}},\"autoScale\":true},\"title\":\"Solar Radiation\",\"dropShadow\":true,\"enableFullscreen\":false,\"titleStyle\":{\"fontSize\":\"16px\",\"fontWeight\":400},\"mobileHeight\":null,\"configMode\":\"basic\",\"actions\":{},\"showTitleIcon\":true,\"titleIcon\":\"mdi:radioactive\",\"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": [ + "weather", + "environment", + "solar", + "radiation" + ] +} \ No newline at end of file From af7afe10234ca977fc9c9aeace317212a998e639 Mon Sep 17 00:00:00 2001 From: Igor Kulikov Date: Mon, 23 Oct 2023 13:24:59 +0300 Subject: [PATCH 27/29] UI: Outdoor Environment: UV Index widgets. --- .../widget_bundles/outdoor_environment.json | 8 ++++- .../horizontal_uv_index_card.json | 28 +++++++++++++++++ ...izontal_uv_index_card_with_background.json | 28 +++++++++++++++++ .../simple_uv_index_chart_card.json | 31 +++++++++++++++++++ ...e_uv_index_chart_card_with_background.json | 31 +++++++++++++++++++ .../system/widget_types/uv_index_card.json | 28 +++++++++++++++++ .../uv_index_card_with_background.json | 28 +++++++++++++++++ .../widget_types/uv_index_chart_card.json | 31 +++++++++++++++++++ .../uv_index_chart_card_with_background.json | 31 +++++++++++++++++++ 9 files changed, 243 insertions(+), 1 deletion(-) create mode 100644 application/src/main/data/json/system/widget_types/horizontal_uv_index_card.json create mode 100644 application/src/main/data/json/system/widget_types/horizontal_uv_index_card_with_background.json create mode 100644 application/src/main/data/json/system/widget_types/simple_uv_index_chart_card.json create mode 100644 application/src/main/data/json/system/widget_types/simple_uv_index_chart_card_with_background.json create mode 100644 application/src/main/data/json/system/widget_types/uv_index_card.json create mode 100644 application/src/main/data/json/system/widget_types/uv_index_card_with_background.json create mode 100644 application/src/main/data/json/system/widget_types/uv_index_chart_card.json create mode 100644 application/src/main/data/json/system/widget_types/uv_index_chart_card_with_background.json diff --git a/application/src/main/data/json/system/widget_bundles/outdoor_environment.json b/application/src/main/data/json/system/widget_bundles/outdoor_environment.json index 9ee3eda1f5..6ceafb6703 100644 --- a/application/src/main/data/json/system/widget_bundles/outdoor_environment.json +++ b/application/src/main/data/json/system/widget_bundles/outdoor_environment.json @@ -61,6 +61,12 @@ "solar_radiation_chart_card", "solar_radiation_chart_card_with_background", "simple_solar_radiation_chart_card", - "simple_solar_radiation_chart_card_with_background" + "simple_solar_radiation_chart_card_with_background", + "uv_index_card", + "uv_index_card_with_background", + "horizontal_uv_index_card", + "horizontal_uv_index_card_with_background", + "uv_index_chart_card", + "uv_index_chart_card_with_background" ] } \ No newline at end of file diff --git a/application/src/main/data/json/system/widget_types/horizontal_uv_index_card.json b/application/src/main/data/json/system/widget_types/horizontal_uv_index_card.json new file mode 100644 index 0000000000..c05fb69779 --- /dev/null +++ b/application/src/main/data/json/system/widget_types/horizontal_uv_index_card.json @@ -0,0 +1,28 @@ +{ + "fqn": "horizontal_uv_index_card", + "name": "Horizontal UV Index card", + "deprecated": false, + "image": "data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAAMgAAACgCAMAAAB+IdObAAAArlBMVEUAAADg4ODf39/g4ODg4ODg4ODf39/g4ODg4ODf39/////39/eAwyzg4ODCwsKQkJD6+vrn5+fz8/O2trbt7e3b29vV1dXOzs50dHSQy0bx8fHP6K88PDzv9+XHx8e7u7v3+/Lj4+PU1NTH5aPA4Zatra1YWFjY7L2enp7IyMiqqqqCgoKYzlMhISHf8Mqv2Xun1m5mZmZKSkqIxzmo1m6g0mDn9Ne43YgvLy/H5aK3Tah+AAAACnRSTlMAvxDv36eQgG8gyT+wCQAAAqtJREFUeNrt2OtuokAAhmFqtYevODDAgFIExPOhtrXHvf8b20HcqNntYv9QNN9jgs44MXkRBTWIiIiIiIiIiIiIiIiIiIiIiIiIiIiI6Nsa162LU3fTMIzbpufcnTqv2TBaIc6Ad2Vc2jgHl0YbZ6HNkJphSN0wpG7OPiRdDnBSvgrpmY84EIZAP+xDb4vRVhyjFo4O6VjoP4QPIeIoH42wZVmo3uppUh7S6w4BpB+T/PFycBCC8RSLzibEt6xFiGlHzyc6a+r3F6jG6uPFNO/LQ9LublXXHB6GJGNE8SYkjpLONIn8Z8uP/HESrztTVGJimseFoPc2QToZDnrA0y8choSfcYQiZAxLyzfROLLQ+UQ17t8GaWnI7vAytSH2LBbwI30XWXsh0+diE6K/XseoTHnIriM3wE5f7/c5ED/090LC/M0In8dRv2PFa5SoPmRoFl5S7AnxD2GxKVF9SLrsdld4M7fe8dTt1vDMeGzIq7m1OtmQvw6tejo2JN1+2IeoqW98/da648iQ3usE0CfEd+B116Js/OEdvEB7f0rmo8xDiUpCegeXKANsCQeQgWNnypl6gIR02vkwUE4mnblnZx7gBAJ2JuRmKbJMzyoUqg9Jl0Noj5NN1H6I7WezQPnO3AZcuFK0hfJnKpOurW9eYgOOgJ6VgK/0c0Eg5EyiRMWX8TrEcX3hBa49RxESwBWOUjN/roejIChCEjuQsPXSQMoggVIoUXVIIjxXCF/ona8ANxhJVyiZJGqWzO2k7QuBTYgvRnnITMi5G+jlDkr88E9dGzLAfzlqplDu5/98sL2y15b4Wo1C6oUhdcOQumFI3bSNS5wD+9K48nAGvJbRaHp3p87xmreG0bi5OHWt64ZBRERERERERERERERERERERERERERERN/1G1Juby0y7njrAAAAAElFTkSuQmCC", + "description": "Displays a latest UV index telemetry data in a horizontal layout.", + "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: 'uv', label: 'UV Index', 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\":\"UV Index\",\"color\":\"#2196f3\",\"settings\":{},\"_hash\":0.2392660816082064,\"funcBody\":\"var value = prevValue + Math.ceil(Math.random() * 4 - 2);\\nif (value < 0) {\\n\\tvalue = 0;\\n} else if (value > 14) {\\n\\tvalue = 14;\\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\":\"light_mode\",\"iconColor\":{\"type\":\"range\",\"color\":\"rgba(0, 0, 0, 0.87)\",\"rangeList\":[{\"from\":0,\"to\":2,\"color\":\"#80C32C\"},{\"from\":2,\"to\":5,\"color\":\"#FFA600\"},{\"from\":5,\"to\":7,\"color\":\"#F36900\"},{\"from\":7,\"to\":10,\"color\":\"#F04022\"},{\"from\":10,\"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)\",\"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';\",\"rangeList\":[{\"from\":0,\"to\":2,\"color\":\"#80C32C\"},{\"from\":2,\"to\":5,\"color\":\"#FFA600\"},{\"from\":5,\"to\":7,\"color\":\"#F36900\"},{\"from\":7,\"to\":10,\"color\":\"#F04022\"},{\"from\":10,\"to\":null,\"color\":\"#D81838\"}]},\"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\":\"Horizontal UV Index card\",\"dropShadow\":true,\"enableFullscreen\":false,\"titleStyle\":{\"fontSize\":\"16px\",\"fontWeight\":400},\"units\":null,\"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": [ + "weather", + "environment", + "uv" + ] +} \ No newline at end of file diff --git a/application/src/main/data/json/system/widget_types/horizontal_uv_index_card_with_background.json b/application/src/main/data/json/system/widget_types/horizontal_uv_index_card_with_background.json new file mode 100644 index 0000000000..941cea4b4b --- /dev/null +++ b/application/src/main/data/json/system/widget_types/horizontal_uv_index_card_with_background.json @@ -0,0 +1,28 @@ +{ + "fqn": "horizontal_uv_index_card_with_background", + "name": "Horizontal UV Index card with background", + "deprecated": false, + "image": "data:image/png;base64,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", + "description": "Displays a latest UV index telemetry data in a horizontal layout with background.", + "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: 'uv', label: 'UV Index', 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\":\"UV Index\",\"color\":\"#2196f3\",\"settings\":{},\"_hash\":0.2392660816082064,\"funcBody\":\"var value = prevValue + Math.ceil(Math.random() * 4 - 2);\\nif (value < 0) {\\n\\tvalue = 0;\\n} else if (value > 14) {\\n\\tvalue = 14;\\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\":\"light_mode\",\"iconColor\":{\"type\":\"range\",\"color\":\"rgba(0, 0, 0, 0.87)\",\"rangeList\":[{\"from\":0,\"to\":2,\"color\":\"#7CC322\"},{\"from\":2,\"to\":5,\"color\":\"#F89E0D\"},{\"from\":5,\"to\":7,\"color\":\"#F77410\"},{\"from\":7,\"to\":10,\"color\":\"#F04022\"},{\"from\":10,\"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)\",\"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';\",\"rangeList\":[{\"from\":0,\"to\":2,\"color\":\"#7CC322\"},{\"from\":2,\"to\":5,\"color\":\"#F89E0D\"},{\"from\":5,\"to\":7,\"color\":\"#F77410\"},{\"from\":7,\"to\":10,\"color\":\"#F04022\"},{\"from\":10,\"to\":null,\"color\":\"#DE2343\"}]},\"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\",\"imageBase64\":\"data:image/png;base64,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\",\"imageUrl\":null,\"color\":\"#fff\",\"overlay\":{\"enabled\":true,\"color\":\"rgba(255,255,255,0.72)\",\"blur\":3}},\"autoScale\":true},\"title\":\"Horizontal UV Index card\",\"dropShadow\":true,\"enableFullscreen\":false,\"titleStyle\":{\"fontSize\":\"16px\",\"fontWeight\":400},\"units\":null,\"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": [ + "weather", + "environment", + "uv" + ] +} \ No newline at end of file diff --git a/application/src/main/data/json/system/widget_types/simple_uv_index_chart_card.json b/application/src/main/data/json/system/widget_types/simple_uv_index_chart_card.json new file mode 100644 index 0000000000..2f8c155768 --- /dev/null +++ b/application/src/main/data/json/system/widget_types/simple_uv_index_chart_card.json @@ -0,0 +1,31 @@ +{ + "fqn": "simple_uv_index_chart_card", + "name": "Simple UV Index chart card", + "deprecated": false, + "image": "data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAAMgAAACgCAMAAAB+IdObAAAAXVBMVEUAAADg4ODf39/g4ODg4OD////g4OAhISHj4+PHx8c8PDysrKzx8fFYWFh0dHSQkJAvLy+Awyzf8MrV1dW6urqCgoJKSkqdnZ2enp5mZmbv7++43Yj3+/KIxzmg0mFA+mXkAAAABXRSTlMA7yC/r1EOHTEAAAOxSURBVHja7dztVtpAEIBhQIeZ2dkvyRdo2/u/zG6wNJSQhlAbNzjvOUKC/PBxd5McQVaapmmapmmapmmapmmapmmapmlfrs3Terv0njfJsX6FxWfXm9WzhQfo9Wm1hYdo/SiQrUIySyG5pZDcUkhuKSS3FJJbXwDSFLCkhiFO4Kxyn25EbOB0XwRKt5RuuwgZ5m4cUgYAIaCDhV9509ocRHfaAUbOHkK1tcwgHi4hISab8SdISSzUbsuRxVIClOlLZlKNTy0yiB2jgzBKKzhBjKlNolXo6rQX0CWjYCFIMNZMkBpT+z4EnG+3f0M8EAqlZxbIdEQSOGcqGGsOSIkOsM0XGC8hIVrjO0gAQGEskocZ6+PAEEYL480wImTfR0TS1iXEYkC6gBTvkCKRmC0Izrbwx6dWYRCd7fblOG2k1WANFxAbK2iQ2zsbgExI4rHmgdDBUskgoXuoQsQKUg3KJQQkqZGP+nYJWYp7GGsWiPj380h9NiaWLAxm6feknL/xM/uSGoYEhiX1Ba5+F5ZCckshuaWQ3MoBYqmwy4dQMJgynpYNCRFdI9IcEMOSIR69hWOUNpcLqc6HIaBfKkRax7lkv0wIGQN/5CItEuKRLmTRLRFCWF2ZawuEGGOvrH5eHCSgQC+bdAuDUPRwJcZqYRAfaeDUUuYL4X0IJcF5zeCydpE+C2JZuBj+boh4zMn54ckNzzn3ORBx+LfLVzbo2tEoGoOnp9gKawtDNbj/BAjV6JqSWA5o5BoTDXfHKTzsuRQfsbIw3AGL2SEUI3ek/rQv4vmvnrzBVKwYuiYdg6dDdm/fdzddLVG357HsOQxdricmGIv718GFiPBkyLe3Hy8vL7vJV0t1tH3nPYU/5h61k7Et+nIaJClughCG/tns3x2t5LTibFmZViBERelNa5kA+f62290C8Zc/aIUy3TF0sIvO+xrTXVN0D3eWm6YWwC0Q7q/uswXPJhL8Q1w5Yw6BLXT1LCMQuA3iDPSq0OyLdlo7NAQfXmexHwcRFOhXOjwWg4X/GH3giBgDV6MyhHzewjEOEczqRca7IWQM5NS9EDKRIKfuhEiMmb3B7h6IDQZdXuNxD8SGiC6/1+CnQviAOTJ6kJHYYQx5/pfcBIgNJlvGFEiT5dK4A3LImdFCPv/FUIUoJOcUklsKyS2F5JZCckshuaWQ3Nqu1vAQbVdPD/DRQQD2ebVZ5/r3hAm9rtuPc3reLr3102alaZqmaZqmaZqmaZqmaZqmaZr21foJlfySPp88UEgAAAAASUVORK5CYII=", + "description": "Displays historical UV index values as a simplified chart. Optionally may display the corresponding latest UV index value.", + "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: 'uv', label: 'UV Index', type: 'timeseries', color: 'rgba(0, 0, 0, 0.87)'}\n ];\n },\n defaultLatestDataKeysFunction: function(configComponent) {\n return [{ name: 'uv', 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\":\"UV Index\",\"color\":\"rgba(0, 0, 0, 0.87)\",\"settings\":{},\"_hash\":0.8587686344902596,\"funcBody\":\"var value = prevValue + Math.ceil(Math.random() * 4 - 2);\\nif (value < 0) {\\n\\tvalue = 0;\\n} else if (value > 14) {\\n\\tvalue = 14;\\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.ceil(Math.random() * 4 - 2);\\nif (value < 0) {\\n\\tvalue = 0;\\n} else if (value > 14) {\\n\\tvalue = 14;\\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\":2,\"color\":\"#80C32C\"},{\"from\":2,\"to\":5,\"color\":\"#FFA600\"},{\"from\":5,\"to\":7,\"color\":\"#F36900\"},{\"from\":7,\"to\":10,\"color\":\"#F04022\"},{\"from\":10,\"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\":\"UV Index\",\"dropShadow\":true,\"enableFullscreen\":false,\"titleStyle\":null,\"mobileHeight\":null,\"configMode\":\"basic\",\"actions\":{},\"showTitleIcon\":true,\"titleIcon\":\"light_mode\",\"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\":null,\"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": [ + "weather", + "environment", + "uv" + ] +} \ No newline at end of file diff --git a/application/src/main/data/json/system/widget_types/simple_uv_index_chart_card_with_background.json b/application/src/main/data/json/system/widget_types/simple_uv_index_chart_card_with_background.json new file mode 100644 index 0000000000..966b0c5463 --- /dev/null +++ b/application/src/main/data/json/system/widget_types/simple_uv_index_chart_card_with_background.json @@ -0,0 +1,31 @@ +{ + "fqn": "simple_uv_index_chart_card_with_background", + "name": "Simple UV Index chart card with background", + "deprecated": false, + "image": "data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAAMgAAACgCAMAAAB+IdObAAAC8VBMVEUAAACgl2Tx0o7vz4+pm2bx0o+1pWekmmWbkmLs0JD10oz/9Nr/9d7/8tP/8s//8tH/+OH/89f/9Nz/8sz/8tX/9tr/+ef/9Nf/9NP/9NH/+eT/9eH/99798dP/9tb/9tz/9NX/8sP/88j/9M7+9OD/+uv/88X/8cn///8gHxv/++7/88r+9N7/+/H//PT//vr+8c3//ffy6tX98NH57c/98MP/yFH878/+9eL169Tn2sP679Pd18v47tX37dL+1H/k2snh2sz27df/9Mz8x1L779H00or88NXk2sT16c3/2H/7x1X47Mv77szr3sP3wk3/1ob/3oTw48X/2nr4w0/404r/3IHGql7MrV7w6df67cP7xE/t0Y/604SyoGL/237bslDo3MbHwa761Ib70nvz7Njv4MP/1Xz+0XH/zFz8yVve1cXh18T36sP5y2Px69ju6dj204v/4In/14Lz0H7AqGK7o168qGfCplzz5sT/1nf16Mn5zWz+0Gr/ylXw59H/4Y7+1IKun2bz0o3r4Mf71Yn91IX/zmTgt1T3z3GzomasnGP/7br/13n/5Zn90njIqVnKqFHx5sv+6rL/45PEpVXUrlHw5Mn20oT/2He/o1nOrFY8OjB8wyK4pWewnF7HpEv+6ay2n13Pqk8vLSb/6KT+5p/v0Y/GrWbRsF/679X3z3bjtUjr4crm3cqspZX10IDovFJYVU3y0YW3omHWslr00Xu+oFLPqEY9OzXNtniQiXTrwlvZvHPxzmqmmWKcloXyz3h0cGXYrkfk2bn61Y2onGaspIpzbl23nFXFtH7QtGzbt1xLSUCPin3oxG2BfGzj2bJZVUb88tuql1vsvkbVzry/sH332Hne5qe5s6THvqLlu1lmYlnxyUfe5af33Y7AnEL346j43Zb224ntx2X424HvyV70zlXx5bs2NDCuqJvHvZm5sJUqKCVBMwitjT/VzKri2bymhjmZeTPWzLChnZSWi1ql0lm+23y12HE//selAAAAC3RSTlMA/e8gIL+3v7CvrwEsfwEAABdKSURBVHja7NS9btpQGMZxBMrQ8mFUih05leIFUaEmgcESG5sHJlBkpiIGhsw2GxMoMpPtDjDAyAC9ktxXn/ccvz5poVeQ81eUjOGn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", + "description": "Displays historical UV index values as a simplified chart with background. Optionally may display the corresponding latest UV index value.", + "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: 'uv', label: 'UV Index', type: 'timeseries', color: 'rgba(0, 0, 0, 0.87)'}\n ];\n },\n defaultLatestDataKeysFunction: function(configComponent) {\n return [{ name: 'uv', 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\":\"UV Index\",\"color\":\"rgba(0, 0, 0, 0.87)\",\"settings\":{},\"_hash\":0.8587686344902596,\"funcBody\":\"var value = prevValue + Math.ceil(Math.random() * 4 - 2);\\nif (value < 0) {\\n\\tvalue = 0;\\n} else if (value > 14) {\\n\\tvalue = 14;\\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.ceil(Math.random() * 4 - 2);\\nif (value < 0) {\\n\\tvalue = 0;\\n} else if (value > 14) {\\n\\tvalue = 14;\\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\":2,\"color\":\"#7CC322\"},{\"from\":2,\"to\":5,\"color\":\"#F89E0D\"},{\"from\":5,\"to\":7,\"color\":\"#F77410\"},{\"from\":7,\"to\":10,\"color\":\"#F04022\"},{\"from\":10,\"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\",\"imageBase64\":\"data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAAQoAAACACAMAAADESdfxAAADAFBMVEX/////xkf/xkP/xj7/1H3/xx3/yAP7xE7/xzb/ygH/2Hj/03X/yDn9xUv3wk7/1nX/yCj/3oP9x1L/2XD/0mv/xyP/23n/z2T/xzH/03n/zV//1Xn/0Gj7xlP/yCz91IP/0W7104v/yUP/yVT+1ID/1Wv/yBf/117/5pz/3nr/03H/02H/zUz/45D/1XD/x0//1Ur/yA//1oH/0GD/3X7/2mD/02b/yUn/5Zj/4Ib/137/5JT/11T/00D/yTL/0U7/1mT/4o3604T/2Gv+0XT/2Fn/x0v51Ir70nv/2XT/3XD/1Fr/67L/zFH/yj7/56H/9uL/9dv/0Vr//Pf/22b/+Oj/2Gb/0TT/zlr/7Lj/2n3/3GvBplz/0S//0UX/7b371Ie2oV//6q3NrFn/6KT/3nX/0Cn/6ajGql+/olb/y1b/1E//zDj60Hf/0zz/+u//4on/8tGrnWT/0Dz304f20YH/zlX/zAK7pF7/1FT/zyP/78OyoWb/24D/9Nb/8Mj/0zf/zRX/zA3/y1n6y2LSr1fMqVH/zkf6w0vt0Y/HqVn/1UX/zUL/34r/23b/yU//1oX/4H7OqEj10HywnmDFpVT/8c2/qWX/10//0VTSrE/it0/w0o39ylzz0Yf7z3D/y0jIpU3/yyX1z3ZxWCny0H/3znD/4IP/zCz70oD5zGjXsVH/zB38zmqXYAHXrkncs0+JaTb/zxykmGPXs1jnuUq6oFj/zTL/xCu5pmb8yFhpVSz+xDOkZwCdYwCtmVu0nVnet1bCoUzQsGHltUKDYCLeskfsu0KJWACAUwH9xDuCYy6QXAB1WSCIYRjNggDUq0Pcr0DkszrzvzhdTSmOYRG1mk/suDbBewHmu1dkRQTrv1T435XHrmerbQHxyFrqw2GakWCNZSNYPQJMNwY6LAOkkVfxwEhSQyDzvC60dAH35LFwTwrvzGr0y1D1yEOtfRPduGFlTyLFoELCkSXQniHDkBCCXhTVpzL0vwjjsCWnhDS2kTqcchThqwiOd0EV0nJcAAAsgklEQVR42ozYMWtUQRTF8RSpTLGIIMgWD0EhEZJiSWGSKmsRA0IiwcI0WYKQMhvIVrKxtkhQBCvZTmS/pf87c2fOzJsFPe+9FUSJ++PMnXmufe3lV8jznNvbo6OjCRmPO/Kte2FZjxmGPBo+ijkPmZ/P5/PHjx/v3d/fHx5ubx8cvH69eXLy6dPV5eW7dx8vLj5//vLl58+bm7v379+fnp5+uL6+Pjtba3J2dnZ9/eHDKeEP3t3d/Pz55cvni4uP7y6vPp1sbr4+2N4+PLy/39t7bJnvzi3ndp+H7IeMRvtcnm+WrhtPJva1bm/1PX/9WqsYgOAxCi6nwAIK0oWMJIECjzkkioQBhQULMLLF1ZVRJIubOyiAkERrAQYacASMm5vS4gSLAyzAiBrznAwxskfpRl2g+GYWk6OEsTCJ56IoO4GCJAiVIJECiNGL9YCxT1xCGk/5V+wSo9jb815Asem1KCm8E2eSaHuRLE5jMbCA4t3l5dXViTXjderGvTTOVYpawxQ8UIBhybWoW8HdkxBFF9NbHVBUtUAiWFCLsEam95HCl4hqERdIU4qWAglRsEjMwjGoxknQOKg1CBBlooQiC2FAIQgejyZFSGpFPSjAQGIAgfKUQGEWPi7itBAFFqLAwjBainaJOAW1KC28GWBst9XoUZDGIqZPUUr8Wiyek0WUGGt9iMI74RnIwjASxZ4oNjU4neLGh0XbitbCKGIpkHCKJOEOJGJIY+4QiaJrKHJqCkYmF1kgYRaLikIQ9foYlKWAwrJLIoVbOAW1SK2wWtz9i0ISp16KWqKE8I2EC4qoMZrPBbG6Fj4wuEXhDg5hlSABIlEsXUIUgwELBIqBLGLORTGFYrtfC7VCEquS18f7voRDaGhGiCIjbi6HkIRSLhFRmIFDcLG/qBNIBIpl11KEIGCfx7IoarE31dki1EIUdCIMiv9ZH9VeCsRV2kzlkEcEn1y+PEZ8SmJUONRrBArvQu4DExMHiyBWSDx7NpRFEiEPsRRQkLiHUIvyaMECQcIpfGrKopZYK0ZFKoVXommEMJRqaLYgk5g0K+J5imgLBYNLEu3ygGL4rKU4bmthK0SDUyeLtJkaxj+OWC5xlzbSKOGdmIYDVsIoKDju8Y/ZH1a7iAJEN+lRPC9zlPbQ50fRYSKJZQmx3pbClojFayGK4pRVzU2fmqJoJcrjlVGEScHE/OStsLNmtLCPuhhAkKElefAvr3sx6QqMNZrgsdlRJVdimTuh9UEt+hZB4iG3glTDwiiKWuReuEUr4X1IZ6t0pNA+mpeIikF09E4YpsDDBxYeP4N3BYUKwV1iTCzqRI9iiMXGsHTgainMQnvISWsBhiwqCVEg4Wcr7R/5JWR75f7RGxckvpTtvxBFzDj3glmxyBZiOLrVG5gFB+IM3KQnkfPw4BpeCw3OzTQ4+xb+ItJKnDYSH4nPTR+cCYJT3e75rgz6FAQJ0rcQRThLRQuWiAphlagk8trgtgygKC2eJApSrhAs/PW0XiK1hTCqSrgEFDHUwvcQP3OrF2CcM6V4nsb3IbLfDxIFxjdZQOESCyvFLfcRtxaHICRBeqXYIU0tmqNFolhtETCINo76NYwAUa4QHbuxMAkUPI9SNC2GTpF6wUfnGUcMKBZ+iuA2CBIluvza0YkiQ2wMhxuqRJYQxdbKwXkSKWTBRtLDID0In5hRgaEJBBJQJAk6wc962kpoF6kt7Om4nWIcKfx8jcQRV14enVIdrQIGEJRClRjsHO88qZaIWeRaTL0WmhZYOEY6gfu+6kHBGPQ2GhncAQUYUiUOfXkQitFY7D8aBgzfT+OOyhd6QTIFFmMoLEDEoFFOiVHHX5MEMQgrxcZgQxSWJyFNLyJF+yJivYizMy4SLByDj+wABJ3w43ZQcAZ/Mdf/YvngBCNwSIIHi5j1dW6awffpURAoHMOq0X8nJz5lnGMYSwEFcYqBOXC5RdDAQhRNLbLFZ1FYoLDkeZn2jmpAwOCvo5YpEFBoNwWjtgCCJ2fdA4VbEKdQZv1XcntijIK/zPSJB24YUlIpuGNyL7a2NDjrWmAhipuyFUSlkMRFHBLlrGxO3XGBWJq5KQo7cvI0FjXFbHE74xqLwi3WlWFKQ4GFKBqLaTE5ZdEuEE+5c+i9XP9vFSSm0z3iCBqaDw98+WOuZnBqYoiCLaGg+M2Fg5Vixu/Mqk3UJTQpXEJpJAzDBycWTpGOWW5R7iKRoqmFRqYobFRkCiymDQU/+NizCkMQWWO57JZOYQ4xY269dKxyIBs52UGDU72oNpE/q2phFOqF76gOkV7Aym20XSBIaHUIIzsoA7NQKotliFFEBy8El0GERAgdJyJEQSGIlzs7b0RR1sIsvkPhZ4t2WsReRAwsiLbRVqKiwIJRkSVIXiJJQoOTHsuhSElhDuHxGMVYFJVE61BjlK0gUMRp8eePBicWOmdhoVOnD4zmXXSVg3eiYNgKCjpkoTEI8V8iRXiN5GzUrwWZGcWMZiSIgJFasZREQyEGU3gT8uSNMAqK73lwHlRvIgQM9cJHBg7tkKgdGBRA/HEGfkpsQxyaaVgMBjxlaAYSUIQU0yJqrP0WhLJMeUsaiFeWnR2eUIiYyCEL1QKKNC1UC+tF0AgWYLiGnyWcoYGAwi18TgQJLYwYfj4fQBQUjPqNGCzoBY/WiFOQ2e8agscYuJMFDJJwiiwRNCJEz2LraU1R7iI6aaFBnINUEDj4viGKsDy8FEgIwgZVDpsarwRPpOESDLwA4RZ8zUxBFjw9DkPgsXghwJAFUSWcwlNYIJHOFmCgkS2EETQ0NQglyS9eSHglSAnhlYDCGAgSpUOOIEKGIbnp629ToFBm3D+4ZrO3P0IjJOEYtUSsQ4tRz04srBnfy7d1t7gyCzQsWaN+BcXBIXTe9qPV9zgltgKEFCRRJXIoTpEcuEShXvwlzI5VnIiiOIzbWxoIwhbThKADNpKpLAa8C8tsIUiYxjqVTGnhSwgyD5BC3Lym3zlz7vznehf95mbShDj57bkTV+d5/oZDVN0mvHUiJIHFWrFLyDBut6DQWBAcGcQxyHdG8QsoCKSJuLE5HOJiEDENituWrs8c2MxvlyoKJQo+v8XTTHqFIEqKguFfFhen+GkU+qe93CcKEDSi8hdxKcBASDARDgxFOREfvQNrk1vkRFFYaCqQMAsO+vZAsyTYH5XEoaw/jOP4kSWKpQsUbvEzLBzDWzaKPFyD9I2h/yQnTss88E5vAoJ3H8QQjR/tYg5l0tBgFBZzUMzcJ+bYG1RC1EPRcJswjN2BOju6boz+Goxh+LHBiL9sxXdJoREYlL8x5MAkmIK3dRiGV0h8EULuYBT9BuKwqyhopZg4oPBm9VBKTBuKxeFt04CwLMKB1ffjWHF8CY0LGBoNNPTNahjhAUaEi0loVxiDDQOLLksDEnkWRtXbpfDjIU7KKOqxmKBwC6eYWWwPxsIhJhyyxAMO6WWUYiSa3e6w8+zP6qhfG3MZwzQGAkOj4bNBYMBBqwbpFpEdAkIKP5zhCxUKfVHXd5kiBph9LYwovU6vJx+LyabCHXITcXpgATGlBEWyiUgBgUSuo4NTVBpgjAXGhRYMutG6UUhbhQSBBBA4CGKInOF8lkIVEqHBlXKiZtdki9BIifvgZGMBhSMIwta09jpZuks0liRygqgxsAiM2CYUFmAYB0kDBdJECMItQ2GBCIn+RMcKAoalXYRH8w6LpZBIPF5PBMX8+xfHTL982VAwEyxKEa/fSNQWba9KjRVj8MkQRmjEbEiD038hQHCH02lh2NQfj3Exbafk0WDBojwWFBQ4GAOHPxmEPyhNSa0SzQpRUHTPY5zPjkHD8xik2cgtO6OEiH2RJXCQgiCQOLaeLETxDgrPLVJQYJGMwmYBiKWJFVUSzdIzI9GyiB8EhyQyxsczFlaeDAoMOKqtAgPhIAgcvIWBgoFV9ggEtWv1WASFY6RtbJAMYSOBBQaZo4YQhRxU37bHXp36sCAwvKHWEIdyCA2E5iEYNBD394/3jx5Pnom0/8WgDcU1Tdf04ldusseaIETBm1QDUXSkNuaUTqc8GN6zGNnDNaIb1RAaCHIFZRD333FQW402LEqMGIwschWFQwCSt8ZkWJbul9VIdAWErWPEfGDh9zUoMoY0KDjK6QgGkoNvjM1ErAgf6Dsr2kKw1L6miOyjxVysUzEth3d1jGh5OW0h7u447dttjzYUjKdrqNMxNODQZAij8ggGEgQSpI0RDpFT1Byf26Jyj0gjcWgqnnjYaXriuHKgcb3KwgqHOyTurP1+b5O3XyXK/uagkarZIGkoGEgMmodS4auCQQXG5/etZ09c8J1hyEJdE58Xiqcnlp/oqhIHYH8YrX/VJqMwjuOdhG5uL4Qi4uCgDpWusZ0ySRyyNIsdu0RcCq+YyYRChvYCmsnQQULpu7jkFrwBFxdvoIKDCjr5fc55Tn7vySno9/xBUdHz8Yn2URvCqyx+hz2fh/iXkBRYwlDxMf5JEYc8FApUOojhgoLALkcJZB4owOAPCQUrWfAK50gQrEBhCqwIYYux8MTGr88d9sjF9wb0fOAQqheOjXP2WXEOeQACSZkcjGHDYfeWDkYHI9vz2MCLs7FnFGGgGWscooVAnILAcIgsvIhx2lFBAmWyOzhw1Fu2a/Q4KcPwnCMXyRAKBzHI4ezsKLXLBiOVYTweIEFhLmIb/2Y0vFQUMIRbNc19tiUGMgjvsQ8EOcJGvW4viwHJOUoQVxBDLxYZaBQRrGdHz4ibtU4YVpoLtxAGHIAgwcaiad43UMgizEUTHCgpcMlBEoEaclpTDFjEVODAZXVjGo7AIQ9EMpP8qweNQygx4KBOXp9Ek1g5GFiEZKGYjKYxC1FcIQEDyyVo536Tz4MkCIhWc3r7lq264XRV+7PCbsfr1ebHwhVICq+9EyC8pDHTaBQY7U8JJ73PKa5YBsGFgdrJHJAoIYZyCLUpRi2TkEAk0gNEJu1ZEEOuIIZ3J++sw3eH9CpxnAeMmSajrksL01ANg28UAAQNi+9/4HIHWbQZ4j2wpbBIRYasoDHKORKIVHi/6ubTUCgYQavVanWYQM4JjCdPEkZpQW0Ijr11CwEg2EiwKVzxp1RpHkSRJJQYcoBREQ/rXnTZnmSg4QhBDO4AgiuI4eXhy9RyuVxZr16hgcWMnqABRo1FPSQs1mFhHraIK1Kg4DXOUTX8xDQMJUQHiCGLakHw3zrNR3OOKjUIkTIZeNmnIlNIAMfHx3aWx3ZZCQMNLKCgfr+modWiyGswaaDIq66q5oofZBGXJ4dOZ2ilgagjRIrncoV4Cl8NsolvsqAAYzNe7wZCkEPGsDZQ4/H48pJtgRE1XvhgEBjzhEG3YOywOVtX33KKUzKPqjplVZ0EgQHLGnp1yEeCpBHv3QPWZpjQBSapXbtkIIbbHQSgrtehIYuE0WcwhNHpmARXlQeFEGIAOAMQtmyrQSZhQ9GfI1+EQtx2/V9nTuAMpYMQPlrj6/HHZDCZPJ3e+fXr6bVNxn60OJcFGKFooXiiPZXdqbbCFITDZlWRIyAUDVWd6vcLhfj4I7Z9Sbz+Nu/jWPbk9vPZSgzuIIaEMCEuCwRremd7+/enz78fXl7eXS73V46xwEIYmoysKp6tqJBAqnD+BSGHeW0QdpgMv5E4OgChDAilBODBUMzDWAzTdpOpQUy372xPv9/c/Hx6jcW9e/thMMCYLRaLAkMaCoqvp1kdW51wRJBL1IKYO0SSmIHgDG2NZ+wsvTrvdfFfps9DZJgEhjcbTQmKyZ8fX27uPYQCi30sIsaD88VithAGFlHDn6WYCvWXELt5aewK4zjuCzopaJGBQCjoIoKrgeDKVae77Oq23bTLLkS6mUWhq04tzCwE/4IBKS5cSCCrBk2yamhuXpxSRwx3kUISwQlZhDSJLzNqf895zjnPvfdo+70vOradzv3Mc46Jb+ggizc4JPrPkEvxJUV79DPui2evqG9fWQhxwO1/EgWW0K8bBCLM8IltFrPx8rthq1Xv9a/yC6BYAAZrwCK5S4GCLTZIwxalEAtOSbCGKDhbhJGQWAIQr9yB+B6nij6nA+EWjg14IsQBEDIOwiD9HL8Z9y+z1Wq2Wro924/PxIHBq2SOBoMpDMaGagsPs8XTIRR/64FAIqFvb77e0uGTEATlQnwBCOkFv3H8/AX3/QvnyaMCsjCCEHAQBaeXM+PM6XEpe39fzdZLpePh6Or9wkIcGAlMBiwEgyk481iffbal/tLfTNAoMIRgwAD/CDGBagPR76IZXIdncECGYvvbbeWALAQO8+D8wSXQDLJF8EQ8CvHDy5t+2bss1et1XKjXw2et/EI8ThhLidicGowghn6SLQ5PiQtNHNL9EPdwW5wwMAUNhFBgs4yuDVykgPAmURxEI/r4joF85zQQ7kTMUvTJyqjved7lZb1UzWZLgKAAMlqKz2CZqMkgi6QdjB3+s5vJkEDxy+EhLnCIQhRCEopnzlDolENU4Sfz4Ss3MRAG2SNeug4cvnvejU+Pjy+PSwgS2br0gS3iZi6AQYOxtrZmMAyFNAGIN3TpAwxWQDNIX0oOhG1bUwQ0vnqxSfef/ttBlgXH3zSclWEgrsdNQFCAgMS9ptir76HSx804KOJqw5gDhrZAoNghCy5IIYFk43CDDDYEQRwcCJFwILTDJg44bG5+9dWLxwwkGQczEQIRkbi+658qiJKeCVQlB1u1dbIQR7mlRCIWI4wkWlvbhcUOLJZhYRIKVuA2gKFaXuaTboZi538ktk2aYZMu/UMV80MWdUUNJGagLIQoqAsDEXHATDAFWUj1j4SxkCMMspieJgsqvUOBA0+Gi8JDTiweRiMAulFa40u6OPwWDLCrbrtYG7t4dUsQIrHOEtxvum/oksfXAGKAMwTBElqBA8b13bjJEHBQEi1tEZY4Oto7qg/f02TkcgmFMQ0MJBb8fKaJxcXFQ3CoOwcHpy93ljFVimGHIRBuHCyEYh2xgTgIwj4d+GELTokRHpeYtRKreAmBji9V2kIotAIcjgb0YS97lYAFD4bBmAxbCAUM6KAbtbyILz59uhxoxwYJXLQNhyHEARDIcaD2bREDx8FsEzIRdoMowkHNhJWomgVShYRQ6AZH2b9yCoMsYrCYYguW2IlQSE91y6BwHUiBe7YGAJFIgiC5u00f2EEvDkGwDpgGWQ2uATPA4SGIcaZGDnqbEAdNsccUAYUBboPB3seTHChgkVcW06AwFimHwrEwY5FKCUN6Lb1mC0BsJ6nH18Z+qF+/+w4/fvsRJzo4wIWnx6U6IAfz9pMhZCBqrEDRPNBlIJhijykMxsD0bu/DWU4FDJqL4N6ZSrkUBBGwSJm0QzroQMduEgfuUEgqBrs21iMjIQzSgYoeHh/oYgN2sDNhHcbCUKILCYSqWo0sjndH7xBuaJC9UhT5fD42DYvJSUisRSieTny6+AQHQUQd0mlcuHM0E4LBCHTjoSCH8Dbx/Dmd2iAM8SMkJFYQCEoksC76GYFoaYVWVZfVQUInFjhs2ZGy4LFgi/ROSlEoDVwTTz59AgnDkSIIRTHPAsIg4fdJRsI7niDEc1VwHLTEAU4rcBAyIAWR0BB3Td4fWi0woBIutSKke4DsOUMBikAX7y6OPpwoi4oaC1ojeLAURzNBU/GEAoUphWN+PoXTSmgKiSZCHLaTdibmNjdjgOCWfltachcGK9BtxTJIIkEDUWAHW7aVjQSD+qDn93zUwx6JojNxQQc6+nCWR5XK9BTmwlDwVGACQAGLaHDg0jgMBze1NplMAlUgICASoNg0EAgSeHf464JIGAyGWDWDwPuDhUDX3YxXPuWOdS3puFS/vb3E83u1st/2i91mIdNue17PHwyUhTjY3lX/ySkM3i7SbMEcj1HM29hhMj0ZjABcibn1OQoUuv2lfaUBCxUYZg4OcK0crKCXq1phlh5f7ZR0ZwlQZGpeJlPMqGrlslfOFKhiUX2h5tXevn3bKHjAKHqwaDQa7XajgU/9mt9udy58fHMdAEAwOhcX9T/nyEJtF0JBuwJRuBbiMM8MpCEQTCEWSZbQxezyoBYoWRxwmFnRrSJD8YnbLM67cVc/t+fViEHFXylCgjAaTUwFnt2vnZ+fe37H99qdDu6ZQhMVirVa2et5vZ7f7qDzAa2SirLAqAsFmnj96Wtl8VocLIaaiEhYZ1GHaQshEkuKQiziv8bjBzMzODUDS6zyY+Ogk2+zBkN118Vz9zyeCAoQGBL/baBuoYc5OKc6nXa7VysWGMJU5A+Zdsf37z/+QRY8FimxwFSgiAXnUkwxBbIe02gdh1odsblYzA5FAhxEwRaAiM9QPBAm8x5LYoPwy6tRpsgQFC+XXkMPhTrUUmmTRLvc7GZ6vKyKiD+xFTxIDfY+VCoVXiIpk6F4oilkLmTbDI8EUeDUTScBAQy8z9EzQT1PUIGhiDMES1DMsKodXApSEAtgNARCDYXflZFomGDhN7vdbrPNk6OrmZRKxscq8W94LObnmUFdTPEaDprCGQ13LGyAUM3piCEWS0QlYEEUhCHbhHbgkxMTBaRATKOQRC/jQnS73vl5sYm6fi1To5M5PK9sUh4eVsnliRqL9LwdCTsVOD59TRZShEI07ETgslkLoSCIJaFAkQUyG4oFzFQ43RXgoCW8ciMI0UVE4J+flwuohl2zSApeKKMBjE67T0vEToVQMEYYImCRDlEEC0vEtIRrIRKILbiAhPkovwhbXeuFDwm/QRtiU8f7Io5yp0PbQbOAbyflZtGuEdEwFlgl/feVClGIxCIoNIZoCAWnDAxIiCLJEKBwMJCsEQSKhzdOnG5RK7Q6NssDO6UahAJXVOH7Q6fX6Baa3X5/OByO+6iZQWWNQHdPW+CVSG9IY2EkhAIMuIUTCu0guVMhFOghCr1bOBj0jBEN5fOgRQ0piSBFUd2a3XG/fTk6O3meWMoFSyQqsZOzm5vRkOr3b29PT2tg8Tu94RTG4mmY4pFFEsjZLsSC0xShwRAJxkBiIRiWZJVP0wpflLWABF5b2Q2i2ywWGsPR6K/kq+T6jX+bSOTc8hx2B/w56cXVNK78+2G7fYWp0A6aQgpD4PZ/FJJMhVCoQhbuWLgxw4op+NW+5+P7aAOBYTgeXZ1V7Mu72JV/m0ugKAIUyIEouAoO/Opq+LsMhTMVbOHuF5MhC6EQCH5x4Vq4g8EUlkNf8siEgCsY/wvo2vN7xeYYY3Dyap1f2cYwiqrECFOB/3E+kUe464IMUzY8xbwsD/qpFVNIj6+RhyjUsEkPzMW/hJkxbsJAEEUV3LgIUhQJyVWaHMIdJSUn4SB7pBQ+AUdISxGlowBq3uzs7ngYLB5eu8CRwuPPjnfBRmbWSuYlwlgi38QAEVfidLv+T1uhPxzkKUbRVKCiL0zA5cjRwmAOYC3MugegYjkWEEyENtI8mIkwdYKvEaEkI8JbxUK5TSl/mX8f3yrmAfrL77mHpudIVAurzjyoCddHo4rSRtLzUHBAbKiGd+Gbai0RJ0MGcHnJBrCABxiGrWIq9u/T5XQuVro5VhPKDnhaMhGYiCpSWZilVFSk9Qwz4ZilwrnwKqKLyIu3VAQaBktEpUPF7XSJEpTmgGdtWY86D6bCQyaSwjWYsEXZYj9100W0sVGWvndg8ZaLgeFNCJgYShjMhG4TDGdUBA2gGhRbln+/UlFFWDCWe0hUIcOl4mHK8MGI6QcuTphTUUvDBUJ2CKBDxZX/IG8fcFoJI/t2md3oRZgJkVFVBFIFETkYSV5MFgtzheFiAQOjueD4+VC8iqqBNlOxu6KKoZnY5xM0FX2HCOVNGBXzgAWGJSKfmoq/4AIJagIRORaIkBfRCCpiO+XwPBbJ5tmHpCsYX4LPj6kQE+qgatBNpCmrKB5GwxUGGuCTo9ZGLBAjGdlJTQUq1jZZhBKJk6exNGO0yqgeZL/8ztjZhDYNhnE84EGRKYggPXnwpPhBwQ+UonPIDuKkzumwGpQsQlsUqytIpKW92BzKdFDaTttTb2IPGaixSg9TSwoBoWvQoOfNEpD16FBE/0/eJjHrxV+e5+0GZay//N80bZrUfcec3dFz5qlgJlwRTMWW3yvrI1AxbIE0zA9EsGMewJsc7gShUKD9LvzYGlDsKZmp8MfCHww7HBv4Z4/Lv8EYfJKOiWB4KtiuqRMfR8WIDfPgmEAqSIUTCN/mYX6eWUA7wAQ+M+AEwk2FJ4P9SDKGjWCawAhqaIIMvRT5n2D4topMBnS4BJiIwe64bcOvwk2Ep+LTyvqmPZ6HeRc4GFZBGvxwudxLFBpDvVCoY1wkaHyHperjFfW/tNtttIfRNjBsoGmhms1G02qAQGMkQBHAMefRudujr0eD15NBnF8VxAlmd67fufUkGTx5Cx/hOnn9WfJZMonjJ68xgyAQEgNN2haz3Wnd/5yp/1hZ17eBzVTskJ97BBRsmBDDcHw+n0fHeQyfP/8qifjdblGU0RUxV6mgPJQ6UFwWFU3RNE1Z1oiWPdh0HUzCorZpbGk2toyc0k+de7wjHMVlfm4eHDu+LxqJlqMzkfLle5OpSGZvZCJ18BIuWTA+jmsn7hw/N33gwWgAFujFpmUZOtowzLYH1sfHlU7rFYNWmccX9Lvqu428ZKMLJwlAEiSgfvvz5/OSqsZ5iOHj8VIejSqVqOX3pVJNllE2tVpBrlQKtNh0OgrogOXl5S4a+GQYlkFvrjYBzljW13+euX/29N7QTCibzUZn7k1kMpFoJlNOTF1OXMhMpm6mxvaN7bg2fXc89Pjc9NbpuQNPH1h7mrpOIkyiZXa7rTbzrr1qaR9XC1VNqy46INh1FANpR+cIEQ1E8EEUab2LRIwrFouCgLZZQkkCL6H5uKpSx1XogA8XuVTDINcg432tRrewAiFKp6AothLbBrVfCv5zrEqrb1n9tX7funj1yP6Dj8KhEyei2Zs3cKHmDJeY4qY47jJ9IUZiKjE5MZPN3ohEj+89Hn509cSxQ+evrOkQatq0zS40IAbwgMKK/77aIRFYIfUBLM9yRQYVUR7kfXDD49HHYjyKxwPmJYETiul0evZNUYCNN5LkhAQxWVIl3CsfV2GCz8OHagcFf7ZEbecDLkCljmjUCpg8wE4H6aAFxYS48TCACRumsaZf7M/113Yfnds5cSN1gb4AguO4TCJSTiSyyEY5PDm2I3j6UTYaCu0KH9MvPjz81niuG9t7PbPda/UgosemA4lYrH5dVepIQgVQCuogR1tCmWUARQ5EXuKhIM/HeCkGSMXCwoK0IHGzxRezxfSbWSGNaMAEXJAWUrGEURUQDjVOC8BUwcL4W9b5hDZShmE8R/GwsAh78+BBqAdvRQQPKiL1T6GJJWCXwThNxeSgoaHKSGN72UQNdME4ycBEV0NsBQfJSJKBnGaSlPQgQtpCyjATZiLbRBlmQgzCulvQ5/1S8OCbmW/SXdJ2fnme532/wnY7YICTYMg4SBhyDQ8ySwFAkCB9BEezd3x6fF2kjIvJSQAa0xtB8Ja3dvP2xs03nt3e395bXw+H//ffxnx56/2btw5eeGL5lddv//TcnYkFZSEYJhQNJIimBRDWIhiAQm23zXZbuY4CBgIE8GAoWCbmoYPuAsHiKg0TQ2lILEKkiUxGBIi0mAaGFo9F4K7jgzc0w+A0HqsBFJpOazJPDgENtlZglE6HzFIhZcAsoAJZIE5rEEQPyuiTl0/J2ScsNyYX59Pg4xvTpw9eXtp65s2lvWh4G96AOVjhaWp7fb0Uju6++pYd2E9MneCxP76b/HFhOSfE4syELYgy4lGFJfBQy+p9QsFKaVAtQGBtzLL5LgUDlkQ+gduCJUj8Et+SJF6SWq0WCITAgY40pIEznUmLoo6rLvIGSOi6AVWAg5bEiedQRT6/CA9aAQE8GBDggEIKBRDpFOhAgkIfgLHoKienOAED5Rw9/c2dg4O3pzeffnZt9b037q7GYpFolCBQhZEVpeh6FELZOth8/pWlJ57+6fadO+fOZHLiWHj5MUgARRkowIJ1CFzuXyro/mDQbmQhCWaOeAOBWCzm4/ABswTeZA5m4AV4IAMCLUlsUUERoVGadHFd9TrRwGWki7oIEHiBRlFqcAJ4kEkGBhpMXsOTZDE3KCYHgw6oMFXAMCBCOFhRivbJLjAKi4zjM9yBNZlMHGjccY58235xeWl6tPvCO0ueveIRBuQFq0iotLmxtmTfuvvS8uvf3vnArn4VnON1Vu/YPD6DNSC0GjUMyAGuUFW5cHk/mwMHxASDsFgarEdwiTz5guNZTgIIRCGxAgl2wRpaEKADTPg0SIkIUgFGEckihIPnNBSX1wwg4IxkkQMUDeJgkdqhrJAXHQUHLqy9zjuV+RyXWh8wavM+1Sk03WxOTiaTG87RynMrW2u3D563X37JLm2+T5ZIRcOpUGR9d2l7N7Wxth/B76b9e/XNz6p/nAdH+PeOQIiXu9ZJswnDISF68EWtbKJVoHMCBeuZmIaAAWEZh5OzcawGEk8XRNzJWNd5EfqXkAFSS+dbImQARYBERgqNiEOGFePBnNKCgOg1PEiMddGAT3iaNQyd4zQ8uDwqOdAGhjEYDDStmBzjSmdnQFVBgQjQQBr9eWc+r8yvZQJxWMcPTj8/O3OODuylp19ZffnmE49HbpXCpWgkHAmtIzxTe4QlFdko3ZwGy/busm3/uFw98gP3Sevk9BQ5TGlZbtcKtZ5VVhUZbbMyv7yP9wEE4o0iWGisZaL1JZg3ULwOc7AQlKQhu3kYQ2IuIV9kQnVwqMMv8AVYMBpggIuO+NQNWIS0IaD1agmkJyYNeC4Zv24n8SL+AM9AJY4LkkPOXadoAQvWq0GHajDvgIXa7PWhjEnz2DrzJ68dBS8effTl3ZeXnrft1+y9cHQ/ivDcW49uh9f3I695W3fXDs6n58H0pg9NXDjuyeSsfNxUKJFpjClUZByqrCpmrQYUMkwBSyy2EbNZt5ugGYqykprFcLhoGBJI4DpsCYAAGGBBcQkUqNGIViKRHgGGWEc7qY9JSyQKOjF8GbqgGSw7GfBkHjgAYkAFGnBLPJvDTctkmI6sdohBodOBHFBX/Wat5zb7Tep/Z45zMjl3/EP76F375K7jH6/8EQSfpMIRRGVoP5UqlTBX7OE3nMfs4P3Dz6yqc+HcCM5cZ9JE+vYKfVJaZdCBFZV2Ti0r+KJXl79XisBAA0SRY5NkfJZPEg2hy1QBEDxHLWPYBQ0II4OMwJWkkZYQmwQiDRA4iI1IUNBHpIzISxgueI7XDUpfnp4LBpmDQz8ZJ+Maeut4YAySyEsoJJ/Dd1GRc0pFrijsLcNkLqOZzJXCr7/NH109mPfn/av5aeHRgwen/QeOM/3r4cOLB9OHU98J/kan9IPA9jYerq4F/tLHn04v3t/cspdt7yR4/Efr7IOJYzVvWP2a2VPLUEKt0rZyFaVNQyVUUHx0+bsWT2pjI89184l4MhHvQhZYZt3ErIsa4sAQgUUaohCUkMQQGPDAxxSbkATRYDLBCUHQOcZEzhQxFpE1Y0Pk6SM4jdM5RAcMqA1YX9Wwg6OEYpbBHu66mUAUuYJMLR8JAU8XepCHiRmDRi7Hf9c+2LE37JWdrzbtza1Nbz8cDS+aKSYrnEhRL2KvbgZrW6tL1Wp154VV/ynf7VnH/TK6h6WqhVpZLcwLaqVTUMAeqvgzxyQxmzWKRS6PvODQQ4EDwkh0Newohgm9KwmGKEn6WBq2xqLUEsbgMoZU+H9C9cwIVR8hN1roJeBCoSrwVJQTupAQdZ6jxOC6w0SyiHYkIIiSCUwaHIQBCIaOngrHyDIbxmVEQ0VGAQPkwcYuuYHxs+w2e4Vas2+eqr2ee89qunYscH70beejWxv7XnijtBv2iEg0kgp767YdW5n604n3mm/fmARNq+eWTdMyMVBZFuLSRELISo5NELnK1f0/i8mGzKbsrhYvZql/ojBkExFO0CFzEcMSNU5kJs+yk4KzPspkcP+hNCggPykzgQD+oL82dElgBhFhMPKFJsAhhpGIo49ybOAkGlye2ikTBQkk2yliquhQjss0aci1SkGFJCod2Lqg4o00ewr11Ibquq7vPOUc2vbrByXP3ndi3pLn7aJ9sMEiHA6n9kupcPhDv3rLcQ6dql9d2vnRt1yKC9NyTRMwTFOtteEQDBZYri5/bc9mszgd2TwUgfmK47pct8tpBj8c8kNJgM5HLUkfjSVxnGZNczTC2qKIGIXquKBoyVBkEAwQSMMecISEiIA4sIXRdJEF6BjRSTPXeIwAyaO50m53MIjnB8lsFuKAKCCMAU6sHblSUWh3RKkBhWAO6Mtlt2xZTbBYwS1O7TXv0N5ee+0He2p7EfSPvTDZhKSxtbM2/XR6+3W7+tA6tL0d0yz3ELtVFY3ULEMRbdkEBZTSySmPLn+Vqak1Gt0uZoo45UOe/IF4YDXkxwle0sUhTdmIAKE1FNPSELIYQgtAgZYBg1DnAAsIJw0IyFBRxJ3DGTqPIpqUnPAIlYZhC2uCYzs9tK8kBq4sIgP9vFjUMIp3oFrcvlKpKe0yvluIudwwaUa28J62sbhW1b/3k+vcq97xp6Vdz4t5z0dCkVTov33Ihr3tHTSnZ1YzcCAjTNozQDQxYyOYG21VxlemL5TLNmjofXT5SyVbpPmKcqubh1bR59hIoWkC3sxhNyGIEk4KQUQkZQGCsgU7tCgtQ9RCWWVwZGih6XsMSfBCnZeAQeAXYycmC3xugcvTcEFx0Y1jlwMnchybZpKDeBFHo4L4zGblIm2W0UTKZYVCHptGlGqZzRmAlMtu9amvqjH7YM17Cj+7im2FI6l1D0PW/l5kO2Z/4Xnvr/jvxOzq9OHtwFn5yvWrTttyLQeKgNVMsy2rbfjEdc3GzG1gI/ro8meFxgmqBtoG5oo4vsl4l4vj0aU5i7ZhBnacGB1pA8JaSFqifbmIpyHqG3XgwLXO5u56ndf/gTcEAQB5HiQEgGWfCV01weOzSvTR9S6XeisSNJ4FC9r8UIYVc9lKDiOw0sa8Izcg7HJbMdWsUlDK7qFr4uFXd2CRe/hJaODFSpFD196O7sd2U5HweuTeoedte17V9r8+8e99EYt8vW1/4bd9t+/O5g1FxqdSYEAEZi6nZJUGLsVB8Z/L7yHJRY4VKTHjUIEBg5BHOIPmKyHf5ThMV4KkC/xIXOxDaEs2pBz9F+bPjNI1L5E/AAAAAElFTkSuQmCC\",\"imageUrl\":null,\"color\":\"#fff\",\"overlay\":{\"enabled\":true,\"color\":\"rgba(255,255,255,0.72)\",\"blur\":3}}},\"title\":\"UV Index\",\"dropShadow\":true,\"enableFullscreen\":false,\"titleStyle\":null,\"mobileHeight\":null,\"configMode\":\"basic\",\"actions\":{},\"showTitleIcon\":true,\"titleIcon\":\"light_mode\",\"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\":null,\"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": [ + "weather", + "environment", + "uv" + ] +} \ No newline at end of file diff --git a/application/src/main/data/json/system/widget_types/uv_index_card.json b/application/src/main/data/json/system/widget_types/uv_index_card.json new file mode 100644 index 0000000000..cba061819f --- /dev/null +++ b/application/src/main/data/json/system/widget_types/uv_index_card.json @@ -0,0 +1,28 @@ +{ + "fqn": "uv_index_card", + "name": "UV Index card", + "deprecated": false, + "image": "data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAAMgAAACgCAMAAAB+IdObAAAAnFBMVEXg4ODf39/g4ODg4OAAAAD////g4OCAwywhISGqqqr5+fm/4ZXj4+Oenp7P6a/Ozs62trbz8/PCwsJ0dHSkpKRYWFg9PT3n5+fv9+Xx8fH3+/LIyMisrKyQy0ag0mDu7u7f8Mra2trV1dWwsLCv2XsvLy+8vLyQkJCIxznn9NiYzlOCgoJKSkrH5aOrq6tmZmbX7L3H5aK43Yio1m6jslkrAAAABXRSTlPvIL+vAC9A4IoAAARXSURBVHja7M9JEQAwCAPAUA4PvPDvsjYCk3WwCHuo7dwChsn1GgbvPGAeKk/AlUgpQkYRNoqwUYSNImwUYaMIG0XYfGbraMVRGAyg8NUhPzTKQogYHaUUs9rqtLPM+7/bpo6zinVKb1ZyQDExNx8RyQuQvKsKou8FSKrUkej7z5C3Kz8UEUTLG5AZJz1wGu+YjGXW8qSdIIcDY0fV5dzLm3QLgvVALzpSyFGpZnoqvhyVUsUWJJEShoEJ4szvm23BtdYMAVLerHG0LZiEud0gRaXUgUUXpS5sQZy0YXD9hmjJkluwGd8asWFoksxSStmKZm43CHk1bUlRTJBLsQnBZiSiZ8jbeImBwd5nwlvHLfMti/aDkH8UcG46paomD8O0YBvyS/RgWUHG19Zi5Z7GiWfZLpC5d/VVdWadlgSQHpw3cl1DnCQj5DboELQ+TCzaF5Kq77qcdTY76X4U9N67NQQ76DKzXCWhTMJM23vH3K6QvFL/qlmnBxGfECrF8AA5ZeKthfa+KqhxvmduV0iqFh15yGmepd20yvHYLpDzZ13XZ/hcQv7Aex2K8wS5DWlUqIF6CTnARYVSYuyHHblUVXUOoPWOhPk6J8YC5IWfbyj2s/xzSNHNjoqou0Ne25I4v6hXIRwmRvdB3P1lzwxWG4ZhMHxShgzGkhGkNFATu5htp63v/3CTGxGWlhV6yJpDfoJi2X+IvhhD4jwCObZVcTg1jMvB0iflHPwptrH/ePu9TI2Dvf2eF+OJboru4U4h2lj65cvTLWlcH8Q4lpWfbvLe20O30OMC6xpCnMZGsi61CYaWGIgZrbnSF+Ln0WZkJjvegQTEAB1SZfFV8xj0YCkyAAtihKFgTqIpIfYAkwWCFFSQdiUBowo6DW4FEDifp7K/3t4N6PQN9yCcBOoA2fUIM4h3LKy9Q3QNE0ZqR0cziDKVBjImkJRr82AHFF6wi2IgsVYPiXCABUgrlUYIUQ10BQmCOIM4b2skY5Q+hnaxZ7W/DISVwkNOLGkGqdcZ8VyVKSaB/gqSSd3zjIjNCHbazKSe1hWH14AgosNSvMtYCJy0MjpfREFIk4QFo0MiUW9wFSXPIBlJxmmJSaeeorBYiNcE+Xi898stOG7BgUX2YB2zwVlqssTOiTM15+Z24xXkGbmCJe2/FXaQbWoH2Zp2kK1pB9madpAf9udYAAAAAGCQv/U0dpRBNyI3IjciNyI3IjciNyI3IjciNyK1d/c4CMNAEIWdH2cLS9TEElZKUkRCcP+7YTpSpptdvVdM/51grrbt+ZxLyL08rORz/iD1aGbmHrK1p5l7yP7+KQJAilkkSPtEgLSj5pt7yKvUvgEgPSBA/gICBAgQIECA9IAAAQIECBAgTgOiFhC1gKgFRC0gagFRC4haQNQCohYQtYCoBUQtIGoBUQuIWkDUAqIWELWAqAVELSBqAVFrSSmHaEljiMvmdUpDCiBZO2MepsV7aRzmL/oPrqtS4mUjAAAAAElFTkSuQmCC", + "description": "Displays a latest UV index telemetry data in a box layout.", + "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: 'uv', label: 'UV Index', 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\":\"UV Index\",\"color\":\"#2196f3\",\"settings\":{},\"_hash\":0.2392660816082064,\"funcBody\":\"var value = prevValue + Math.ceil(Math.random() * 4 - 2);\\nif (value < 0) {\\n\\tvalue = 0;\\n} else if (value > 14) {\\n\\tvalue = 14;\\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\":{\"size\":16,\"sizeUnit\":\"px\",\"family\":\"Roboto\",\"weight\":\"500\",\"style\":\"normal\"},\"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\":\"light_mode\",\"iconColor\":{\"type\":\"range\",\"color\":\"rgba(0, 0, 0, 0.87)\",\"rangeList\":[{\"from\":0,\"to\":2,\"color\":\"#80C32C\"},{\"from\":2,\"to\":5,\"color\":\"#FFA600\"},{\"from\":5,\"to\":7,\"color\":\"#F36900\"},{\"from\":7,\"to\":10,\"color\":\"#F04022\"},{\"from\":10,\"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\":52,\"sizeUnit\":\"px\",\"family\":\"Roboto\",\"weight\":\"500\",\"style\":\"normal\"},\"valueColor\":{\"type\":\"range\",\"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';\",\"rangeList\":[{\"from\":0,\"to\":2,\"color\":\"#80C32C\"},{\"from\":2,\"to\":5,\"color\":\"#FFA600\"},{\"from\":5,\"to\":7,\"color\":\"#F36900\"},{\"from\":7,\"to\":10,\"color\":\"#F04022\"},{\"from\":10,\"to\":null,\"color\":\"#D81838\"}]},\"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\":\"UV Index card\",\"dropShadow\":true,\"enableFullscreen\":false,\"titleStyle\":{\"fontSize\":\"16px\",\"fontWeight\":400},\"units\":null,\"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": [ + "weather", + "environment", + "uv" + ] +} \ No newline at end of file diff --git a/application/src/main/data/json/system/widget_types/uv_index_card_with_background.json b/application/src/main/data/json/system/widget_types/uv_index_card_with_background.json new file mode 100644 index 0000000000..73b0f89692 --- /dev/null +++ b/application/src/main/data/json/system/widget_types/uv_index_card_with_background.json @@ -0,0 +1,28 @@ +{ + "fqn": "uv_index_card_with_background", + "name": "UV Index card with background", + "deprecated": false, + "image": "data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAAMgAAACgCAMAAAB+IdObAAAC+lBMVEW6o3DUs2IAAADs0ZTfvGTnz5Pvz4/20o+4qHP/9+D/9d7/8tL/9Nr/9Nf/9NT/9eH/+OP/+ef/993/883/8sj/88v/9tr/88//8dD/+uv/8sP/9Nz/8cz//fj/9dHz6tT37NP///7/++7/+/F8wyL169T//PP//PX/88X+8dXv6djx6tb//vr/9tf27db/1n/99ePz7Nj879D57tb57tH91ITz6ND88NPu48v679P789zv59P+2n7k28j99d7/1YPz58z61If67c38xU3r4s/n2sP/6q//3ID36sv778Pw5c7/1Xbi2sv98tjs5NLw0pD/2X3j2MPr4Mv68Njt59b/x0v90XL/1Ybh2s3x6tj8783/3oXrwWD/yVT26tDe2Mz/7rzd1sj88Nf504r/02r+0Gj00o3/2IHx5cb/zF3n38357tPl3cz/5a//4Y7903//1HD+zmT/1nv80nvg2cj06Mbv4MP/5qP/5Zzb1s31yWn2x2Dt0ZL10orp38nm3Mj47MT/0WD+zVXa1cn/45Xs3sP+0G3/7LWno5n/34n/yE/p3MTu4sjp0JXm4NGynmDxw17/yET/6ajxxWbCqGL+3I/3xlusqaH304z80Xbe1cP5zW3lvV8hIB/twFr/0FngsUJcPwPs4Mb/3pj+xj36y2barkzitlH+zU35w0z61IzTqEbbqjn9+e+4tKratFbLnj3+xjP65La3oV/878jctmCtml7Rrli7pGHHqlnhvGjpwGa+pFzDv7TLrWDSpDTJo0xAPzz40oC923Tyw1Tqt0XmsTSemo7zznx0cmyPyj3wuzrBmUDNyLvVtWhYV1XirCj91orXoiLO4Yjv78dMOAyTXwLz7d/k496e0FLTu30pHwX59erJrWr9wyTMy8XDkyaHVwDf6a+2kEX/zD4+Lgau1mnQwpovLi2tgyrutSWEZCDP45iQj42JdkPy8e3F34q93HrVz76gj2KceC6hbAfo7LuCf3j/2XZqZVtvVyXa5qPZyJifg0jRlAKlAAAACXRSTlP7IAC1tSAgv7+sbVSmAAAhlklEQVR42qzUP0tbURzG8Yui5cbEaCNNjLZQBbsEbpdsl16yGDIZ6JDBJRCIkw24tIPZhODQxSl7NsfgG8k76nN+589z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", + "description": "Displays a latest UV index telemetry data in a box layout with background.", + "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: 'uv', label: 'UV Index', 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\":\"UV Index\",\"color\":\"#2196f3\",\"settings\":{},\"_hash\":0.2392660816082064,\"funcBody\":\"var value = prevValue + Math.ceil(Math.random() * 4 - 2);\\nif (value < 0) {\\n\\tvalue = 0;\\n} else if (value > 14) {\\n\\tvalue = 14;\\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\":{\"size\":16,\"sizeUnit\":\"px\",\"family\":\"Roboto\",\"weight\":\"500\",\"style\":\"normal\"},\"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\":\"light_mode\",\"iconColor\":{\"type\":\"range\",\"color\":\"rgba(0, 0, 0, 0.87)\",\"rangeList\":[{\"from\":0,\"to\":2,\"color\":\"#7CC322\"},{\"from\":2,\"to\":5,\"color\":\"#F89E0D\"},{\"from\":5,\"to\":7,\"color\":\"#F77410\"},{\"from\":7,\"to\":10,\"color\":\"#F04022\"},{\"from\":10,\"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\":52,\"sizeUnit\":\"px\",\"family\":\"Roboto\",\"weight\":\"500\",\"style\":\"normal\"},\"valueColor\":{\"type\":\"range\",\"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';\",\"rangeList\":[{\"from\":0,\"to\":2,\"color\":\"#7CC322\"},{\"from\":2,\"to\":5,\"color\":\"#F89E0D\"},{\"from\":5,\"to\":7,\"color\":\"#F77410\"},{\"from\":7,\"to\":10,\"color\":\"#F04022\"},{\"from\":10,\"to\":null,\"color\":\"#DE2343\"}]},\"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\",\"imageBase64\":\"data:image/png;base64,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\",\"imageUrl\":null,\"color\":\"#fff\",\"overlay\":{\"enabled\":true,\"color\":\"rgba(255,255,255,0.72)\",\"blur\":3}},\"autoScale\":true},\"title\":\"UV Index card\",\"dropShadow\":true,\"enableFullscreen\":false,\"titleStyle\":{\"fontSize\":\"16px\",\"fontWeight\":400},\"units\":null,\"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": [ + "weather", + "environment", + "uv" + ] +} \ No newline at end of file diff --git a/application/src/main/data/json/system/widget_types/uv_index_chart_card.json b/application/src/main/data/json/system/widget_types/uv_index_chart_card.json new file mode 100644 index 0000000000..44e789ae80 --- /dev/null +++ b/application/src/main/data/json/system/widget_types/uv_index_chart_card.json @@ -0,0 +1,31 @@ +{ + "fqn": "uv_index_chart_card", + "name": "UV Index chart card", + "deprecated": false, + "image": "data:image/png;base64,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", + "description": "Displays a UV index data as a combination of the latest and aggregated values. Optionally may display the corresponding historical values as a 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: 'uv', label: 'UV Index', type: 'timeseries', color: 'rgba(0, 0, 0, 0.87)', units: '', decimals: 0 }\n ];\n },\n defaultLatestDataKeysFunction: function(configComponent, configData) {\n return configComponent.createDefaultAggregatedValueLatestDataKeys(configData, 'uv', '', 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\":\"UV Index\",\"color\":\"rgba(0, 0, 0, 0.87)\",\"settings\":{\"showLines\":true,\"fillLines\":true,\"showPoints\":false},\"_hash\":0.8587686344902596,\"funcBody\":\"var value = prevValue + Math.ceil(Math.random() * 4 - 2);\\nif (value < 0) {\\n\\tvalue = 0;\\n} else if (value > 14) {\\n\\tvalue = 14;\\n}\\nreturn value;\",\"aggregationType\":null,\"units\":null,\"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\":2,\"color\":\"#80C32C\"},{\"from\":2,\"to\":5,\"color\":\"#FFA600\"},{\"from\":5,\"to\":7,\"color\":\"#F36900\"},{\"from\":7,\"to\":10,\"color\":\"#F04022\"},{\"from\":10,\"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.ceil(Math.random() * 4 - 2);\\nif (value < 0) {\\n\\tvalue = 0;\\n} else if (value > 14) {\\n\\tvalue = 14;\\n}\\nreturn value;\",\"aggregationType\":null,\"units\":null,\"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 = Math.ceil(prevValue + Math.random() * 2 - 1);\\nif (value < -2) {\\n\\tvalue = -2;\\n} else if (value > 2) {\\n\\tvalue = 2;\\n}\\nreturn value;\",\"aggregationType\":null,\"units\":null,\"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\":\"UV Index\",\"dropShadow\":true,\"enableFullscreen\":false,\"titleStyle\":{\"fontSize\":\"16px\",\"fontWeight\":400},\"mobileHeight\":null,\"configMode\":\"basic\",\"actions\":{},\"showTitleIcon\":true,\"titleIcon\":\"light_mode\",\"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": [ + "weather", + "environment", + "uv" + ] +} \ No newline at end of file diff --git a/application/src/main/data/json/system/widget_types/uv_index_chart_card_with_background.json b/application/src/main/data/json/system/widget_types/uv_index_chart_card_with_background.json new file mode 100644 index 0000000000..629d12aad3 --- /dev/null +++ b/application/src/main/data/json/system/widget_types/uv_index_chart_card_with_background.json @@ -0,0 +1,31 @@ +{ + "fqn": "uv_index_chart_card_with_background", + "name": "UV Index chart card with background", + "deprecated": false, + "image": "data:image/png;base64,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", + "description": "Displays a UV index data as a combination of the latest and aggregated values with background. Optionally may display the corresponding historical values as a 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: 'uv', label: 'UV Index', type: 'timeseries', color: 'rgba(0, 0, 0, 0.87)', units: '', decimals: 0 }\n ];\n },\n defaultLatestDataKeysFunction: function(configComponent, configData) {\n return configComponent.createDefaultAggregatedValueLatestDataKeys(configData, 'uv', '', 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\":\"UV Index\",\"color\":\"rgba(0, 0, 0, 0.87)\",\"settings\":{\"showLines\":true,\"fillLines\":true,\"showPoints\":false},\"_hash\":0.8587686344902596,\"funcBody\":\"var value = prevValue + Math.ceil(Math.random() * 4 - 2);\\nif (value < 0) {\\n\\tvalue = 0;\\n} else if (value > 14) {\\n\\tvalue = 14;\\n}\\nreturn value;\",\"aggregationType\":null,\"units\":null,\"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\":2,\"color\":\"#7CC322\"},{\"from\":2,\"to\":5,\"color\":\"#F89E0D\"},{\"from\":5,\"to\":7,\"color\":\"#F77410\"},{\"from\":7,\"to\":10,\"color\":\"#F04022\"},{\"from\":10,\"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.ceil(Math.random() * 4 - 2);\\nif (value < 0) {\\n\\tvalue = 0;\\n} else if (value > 14) {\\n\\tvalue = 14;\\n}\\nreturn value;\",\"aggregationType\":null,\"units\":null,\"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 = Math.ceil(prevValue + Math.random() * 2 - 1);\\nif (value < -2) {\\n\\tvalue = -2;\\n} else if (value > 2) {\\n\\tvalue = 2;\\n}\\nreturn value;\",\"aggregationType\":null,\"units\":null,\"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\",\"imageBase64\":\"data:image/png;base64,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\",\"imageUrl\":null,\"color\":\"#fff\",\"overlay\":{\"enabled\":true,\"color\":\"rgba(255,255,255,0.72)\",\"blur\":3}},\"autoScale\":true},\"title\":\"UV Index\",\"dropShadow\":true,\"enableFullscreen\":false,\"titleStyle\":{\"fontSize\":\"16px\",\"fontWeight\":400},\"mobileHeight\":null,\"configMode\":\"basic\",\"actions\":{},\"showTitleIcon\":true,\"titleIcon\":\"light_mode\",\"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": [ + "weather", + "environment", + "uv" + ] +} \ No newline at end of file From 35d40a88ebed382a09cfa1686b14fe5f725034be Mon Sep 17 00:00:00 2001 From: Vladyslav_Prykhodko Date: Mon, 23 Oct 2023 14:31:02 +0300 Subject: [PATCH 28/29] UI: Improved show confirm on exit dialog in widget editor --- .../app/core/guards/confirm-on-exit.guard.ts | 11 ++++++- .../dashboard-page.component.ts | 11 +++++++ .../pages/widget/widget-editor.component.ts | 33 +++++++++++++++++-- .../app/shared/models/window-message.model.ts | 3 +- .../assets/locale/locale.constant-en_US.json | 1 + 5 files changed, 54 insertions(+), 5 deletions(-) diff --git a/ui-ngx/src/app/core/guards/confirm-on-exit.guard.ts b/ui-ngx/src/app/core/guards/confirm-on-exit.guard.ts index f3a72e7aae..e28578fe61 100644 --- a/ui-ngx/src/app/core/guards/confirm-on-exit.guard.ts +++ b/ui-ngx/src/app/core/guards/confirm-on-exit.guard.ts @@ -28,10 +28,12 @@ import { isDefined } from '../utils'; export interface HasConfirmForm { confirmForm(): UntypedFormGroup; + confirmOnExitMessage?: string; } export interface HasDirtyFlag { isDirty: boolean; + confirmOnExitMessage?: string; } @Injectable({ @@ -66,9 +68,10 @@ export class ConfirmOnExitGuard implements CanDeactivate { if (dialogResult) { @@ -85,4 +88,10 @@ export class ConfirmOnExitGuard implements CanDeactivateAre you sure you want to leave this page?", "widget-type-not-found": "Problem loading widget configuration.
Probably associated\n widget type was removed.", "widget-type-load-error": "Widget wasn't loaded due to the following errors:", "remove": "Remove widget", From d23c6c1047c0768b4965bd9ef8593892e60fd0ce Mon Sep 17 00:00:00 2001 From: Vladyslav_Prykhodko Date: Mon, 23 Oct 2023 16:43:57 +0300 Subject: [PATCH 29/29] UI: Fixed widget bundle and widget editor after review --- .../home/pages/widget/widget-editor.component.ts | 11 ++++------- .../widget/widgets-bundle-widgets.component.html | 2 +- .../pages/widget/widgets-bundle-widgets.component.ts | 11 ++++++++--- ui-ngx/src/assets/locale/locale.constant-en_US.json | 2 +- 4 files changed, 14 insertions(+), 12 deletions(-) diff --git a/ui-ngx/src/app/modules/home/pages/widget/widget-editor.component.ts b/ui-ngx/src/app/modules/home/pages/widget/widget-editor.component.ts index 5688a6a9d4..a669a88214 100644 --- a/ui-ngx/src/app/modules/home/pages/widget/widget-editor.component.ts +++ b/ui-ngx/src/app/modules/home/pages/widget/widget-editor.component.ts @@ -52,11 +52,11 @@ import { SaveWidgetTypeAsDialogComponent, SaveWidgetTypeAsDialogResult } from '@home/pages/widget/save-widget-type-as-dialog.component'; -import { forkJoin, mergeMap, of, Subscription, throwError } from 'rxjs'; +import { forkJoin, mergeMap, of, Subscription } from 'rxjs'; import { ResizeObserver } from '@juggle/resize-observer'; import { widgetEditorCompleter } from '@home/pages/widget/widget-editor.models'; import { Observable } from 'rxjs/internal/Observable'; -import { catchError, map, tap } from 'rxjs/operators'; +import { map, tap } from 'rxjs/operators'; import { beautifyCss, beautifyHtml, beautifyJs } from '@shared/models/beautify.models'; import Timeout = NodeJS.Timeout; @@ -566,12 +566,9 @@ export class WidgetEditorComponent extends PageComponent implements OnInit, OnDe this.widgetService.saveWidgetTypeDetails(this.widget, id, createdTime).pipe( mergeMap((widgetTypeDetails) => { const widgetsBundleId = this.route.snapshot.params.widgetsBundleId as string; - if (widgetsBundleId) { + if (widgetsBundleId && !id) { return this.widgetService.addWidgetFqnToWidgetBundle(widgetsBundleId, widgetTypeDetails.fqn).pipe( - map(() => widgetTypeDetails), - catchError((error) => this.widgetService.deleteWidgetType(widgetTypeDetails.id.id).pipe( - mergeMap(() => throwError(() => error)) - )) + map(() => widgetTypeDetails) ); } return of(widgetTypeDetails); diff --git a/ui-ngx/src/app/modules/home/pages/widget/widgets-bundle-widgets.component.html b/ui-ngx/src/app/modules/home/pages/widget/widgets-bundle-widgets.component.html index a353f49ab1..fdd49c4a61 100644 --- a/ui-ngx/src/app/modules/home/pages/widget/widgets-bundle-widgets.component.html +++ b/ui-ngx/src/app/modules/home/pages/widget/widgets-bundle-widgets.component.html @@ -28,7 +28,7 @@ {{ widgetsBundle.title }}: {{ 'widget.widgets' | translate }}