@openremote/or-dashboard-builder 1.2.0-snapshot.20240512160221

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (167) hide show
  1. package/README.md +156 -0
  2. package/build.gradle +15 -0
  3. package/lib/controls/dashboard-refresh-controls.d.ts +17 -0
  4. package/lib/controls/dashboard-refresh-controls.js +17 -0
  5. package/lib/controls/dashboard-refresh-controls.js.map +1 -0
  6. package/lib/index.d.ts +71 -0
  7. package/lib/index.js +285 -0
  8. package/lib/index.js.map +1 -0
  9. package/lib/or-dashboard-boardsettings.d.ts +19 -0
  10. package/lib/or-dashboard-boardsettings.js +121 -0
  11. package/lib/or-dashboard-boardsettings.js.map +1 -0
  12. package/lib/or-dashboard-browser.d.ts +9 -0
  13. package/lib/or-dashboard-browser.js +35 -0
  14. package/lib/or-dashboard-browser.js.map +1 -0
  15. package/lib/or-dashboard-engine.d.ts +4 -0
  16. package/lib/or-dashboard-engine.js +1 -0
  17. package/lib/or-dashboard-engine.js.map +1 -0
  18. package/lib/or-dashboard-keyhandler.d.ts +6 -0
  19. package/lib/or-dashboard-keyhandler.js +1 -0
  20. package/lib/or-dashboard-keyhandler.js.map +1 -0
  21. package/lib/or-dashboard-preview.d.ts +70 -0
  22. package/lib/or-dashboard-preview.js +155 -0
  23. package/lib/or-dashboard-preview.js.map +1 -0
  24. package/lib/or-dashboard-settingspanel.d.ts +44 -0
  25. package/lib/or-dashboard-settingspanel.js +216 -0
  26. package/lib/or-dashboard-settingspanel.js.map +1 -0
  27. package/lib/or-dashboard-tree.d.ts +25 -0
  28. package/lib/or-dashboard-tree.js +62 -0
  29. package/lib/or-dashboard-tree.js.map +1 -0
  30. package/lib/or-dashboard-widget.d.ts +18 -0
  31. package/lib/or-dashboard-widget.js +15 -0
  32. package/lib/or-dashboard-widget.js.map +1 -0
  33. package/lib/or-dashboard-widgetcontainer.d.ts +23 -0
  34. package/lib/or-dashboard-widgetcontainer.js +20 -0
  35. package/lib/or-dashboard-widgetcontainer.js.map +1 -0
  36. package/lib/or-dashboard-widgetsettings.d.ts +15 -0
  37. package/lib/or-dashboard-widgetsettings.js +16 -0
  38. package/lib/or-dashboard-widgetsettings.js.map +1 -0
  39. package/lib/panels/assettypes-panel.d.ts +44 -0
  40. package/lib/panels/assettypes-panel.js +51 -0
  41. package/lib/panels/assettypes-panel.js.map +1 -0
  42. package/lib/panels/attributes-panel.d.ts +41 -0
  43. package/lib/panels/attributes-panel.js +126 -0
  44. package/lib/panels/attributes-panel.js.map +1 -0
  45. package/lib/panels/thresholds-panel.d.ts +39 -0
  46. package/lib/panels/thresholds-panel.js +129 -0
  47. package/lib/panels/thresholds-panel.js.map +1 -0
  48. package/lib/service/dashboard-service.d.ts +13 -0
  49. package/lib/service/dashboard-service.js +1 -0
  50. package/lib/service/dashboard-service.js.map +1 -0
  51. package/lib/service/widget-service.d.ts +8 -0
  52. package/lib/service/widget-service.js +1 -0
  53. package/lib/service/widget-service.js.map +1 -0
  54. package/lib/settings/attribute-input-settings.d.ts +13 -0
  55. package/lib/settings/attribute-input-settings.js +36 -0
  56. package/lib/settings/attribute-input-settings.js.map +1 -0
  57. package/lib/settings/chart-settings.d.ts +30 -0
  58. package/lib/settings/chart-settings.js +144 -0
  59. package/lib/settings/chart-settings.js.map +1 -0
  60. package/lib/settings/gauge-settings.d.ts +15 -0
  61. package/lib/settings/gauge-settings.js +37 -0
  62. package/lib/settings/gauge-settings.js.map +1 -0
  63. package/lib/settings/image-settings.d.ts +17 -0
  64. package/lib/settings/image-settings.js +52 -0
  65. package/lib/settings/image-settings.js.map +1 -0
  66. package/lib/settings/kpi-settings.d.ts +15 -0
  67. package/lib/settings/kpi-settings.js +47 -0
  68. package/lib/settings/kpi-settings.js.map +1 -0
  69. package/lib/settings/map-settings.d.ts +21 -0
  70. package/lib/settings/map-settings.js +72 -0
  71. package/lib/settings/map-settings.js.map +1 -0
  72. package/lib/settings/table-settings.d.ts +14 -0
  73. package/lib/settings/table-settings.js +33 -0
  74. package/lib/settings/table-settings.js.map +1 -0
  75. package/lib/style.d.ts +1 -0
  76. package/lib/style.js +99 -0
  77. package/lib/style.js.map +1 -0
  78. package/lib/util/or-asset-widget.d.ts +20 -0
  79. package/lib/util/or-asset-widget.js +1 -0
  80. package/lib/util/or-asset-widget.js.map +1 -0
  81. package/lib/util/or-widget.d.ts +31 -0
  82. package/lib/util/or-widget.js +1 -0
  83. package/lib/util/or-widget.js.map +1 -0
  84. package/lib/util/settings-panel.d.ts +9 -0
  85. package/lib/util/settings-panel.js +56 -0
  86. package/lib/util/settings-panel.js.map +1 -0
  87. package/lib/util/widget-config.d.ts +2 -0
  88. package/lib/util/widget-config.js +1 -0
  89. package/lib/util/widget-config.js.map +1 -0
  90. package/lib/util/widget-settings.d.ts +23 -0
  91. package/lib/util/widget-settings.js +1 -0
  92. package/lib/util/widget-settings.js.map +1 -0
  93. package/lib/widgets/attribute-input-widget.d.ts +24 -0
  94. package/lib/widgets/attribute-input-widget.js +31 -0
  95. package/lib/widgets/attribute-input-widget.js.map +1 -0
  96. package/lib/widgets/chart-widget.d.ts +25 -0
  97. package/lib/widgets/chart-widget.js +15 -0
  98. package/lib/widgets/chart-widget.js.map +1 -0
  99. package/lib/widgets/gauge-widget.d.ts +22 -0
  100. package/lib/widgets/gauge-widget.js +12 -0
  101. package/lib/widgets/gauge-widget.js.map +1 -0
  102. package/lib/widgets/image-widget.d.ts +25 -0
  103. package/lib/widgets/image-widget.js +54 -0
  104. package/lib/widgets/image-widget.js.map +1 -0
  105. package/lib/widgets/kpi-widget.d.ts +21 -0
  106. package/lib/widgets/kpi-widget.js +8 -0
  107. package/lib/widgets/kpi-widget.js.map +1 -0
  108. package/lib/widgets/map-widget.d.ts +39 -0
  109. package/lib/widgets/map-widget.js +9 -0
  110. package/lib/widgets/map-widget.js.map +1 -0
  111. package/lib/widgets/or-base-widget.d.ts +15 -0
  112. package/lib/widgets/or-base-widget.js +1 -0
  113. package/lib/widgets/or-base-widget.js.map +1 -0
  114. package/lib/widgets/or-chart-widget.d.ts +36 -0
  115. package/lib/widgets/or-chart-widget.js +112 -0
  116. package/lib/widgets/or-chart-widget.js.map +1 -0
  117. package/lib/widgets/or-gauge-widget.d.ts +46 -0
  118. package/lib/widgets/or-gauge-widget.js +60 -0
  119. package/lib/widgets/or-gauge-widget.js.map +1 -0
  120. package/lib/widgets/or-kpi-widget.d.ts +44 -0
  121. package/lib/widgets/or-kpi-widget.js +63 -0
  122. package/lib/widgets/or-kpi-widget.js.map +1 -0
  123. package/lib/widgets/or-map-widget.d.ts +49 -0
  124. package/lib/widgets/or-map-widget.js +75 -0
  125. package/lib/widgets/or-map-widget.js.map +1 -0
  126. package/lib/widgets/table-widget.d.ts +25 -0
  127. package/lib/widgets/table-widget.js +12 -0
  128. package/lib/widgets/table-widget.js.map +1 -0
  129. package/package.json +32 -0
  130. package/src/controls/dashboard-refresh-controls.ts +100 -0
  131. package/src/index.ts +731 -0
  132. package/src/or-dashboard-boardsettings.ts +249 -0
  133. package/src/or-dashboard-browser.ts +160 -0
  134. package/src/or-dashboard-engine.ts +17 -0
  135. package/src/or-dashboard-keyhandler.ts +25 -0
  136. package/src/or-dashboard-preview.ts +713 -0
  137. package/src/or-dashboard-tree.ts +304 -0
  138. package/src/or-dashboard-widgetcontainer.ts +155 -0
  139. package/src/or-dashboard-widgetsettings.ts +91 -0
  140. package/src/panels/assettypes-panel.ts +311 -0
  141. package/src/panels/attributes-panel.ts +304 -0
  142. package/src/panels/thresholds-panel.ts +285 -0
  143. package/src/service/dashboard-service.ts +89 -0
  144. package/src/service/widget-service.ts +48 -0
  145. package/src/settings/attribute-input-settings.ts +79 -0
  146. package/src/settings/chart-settings.ts +306 -0
  147. package/src/settings/gauge-settings.ts +93 -0
  148. package/src/settings/image-settings.ts +175 -0
  149. package/src/settings/kpi-settings.ts +106 -0
  150. package/src/settings/map-settings.ts +185 -0
  151. package/src/settings/table-settings.ts +92 -0
  152. package/src/style.ts +104 -0
  153. package/src/util/or-asset-widget.ts +110 -0
  154. package/src/util/or-widget.ts +60 -0
  155. package/src/util/settings-panel.ts +93 -0
  156. package/src/util/widget-config.ts +2 -0
  157. package/src/util/widget-settings.ts +58 -0
  158. package/src/widgets/attribute-input-widget.ts +143 -0
  159. package/src/widgets/chart-widget.ts +203 -0
  160. package/src/widgets/gauge-widget.ts +111 -0
  161. package/src/widgets/image-widget.ts +180 -0
  162. package/src/widgets/kpi-widget.ts +97 -0
  163. package/src/widgets/map-widget.ts +187 -0
  164. package/src/widgets/table-widget.ts +157 -0
  165. package/tsconfig.json +15 -0
  166. package/tsconfig.tsbuildinfo +1 -0
  167. package/webpack.config.js +10 -0
@@ -0,0 +1,60 @@
1
+ var __decorate=this&&this.__decorate||function(t,e,i,n){var s,a=arguments.length,d=a<3?e:null===n?n=Object.getOwnPropertyDescriptor(e,i):n;if("object"==typeof Reflect&&"function"==typeof Reflect.decorate)d=Reflect.decorate(t,e,i,n);else for(var o=t.length-1;o>=0;o--)(s=t[o])&&(d=(a<3?s(d):a>3?s(e,i,d):s(e,i))||d);return a>3&&d&&Object.defineProperty(e,i,d),d},__awaiter=this&&this.__awaiter||function(t,e,i,n){return new(i||(i=Promise))((function(s,a){function d(t){try{r(n.next(t))}catch(t){a(t)}}function o(t){try{r(n.throw(t))}catch(t){a(t)}}function r(t){var e;t.done?s(t.value):(e=t.value,e instanceof i?e:new i((function(t){t(e)}))).then(d,o)}r((n=n.apply(t,e||[])).next())}))};import{style}from"../style";import{SettingsPanelType,widgetSettingsStyling}from"../or-dashboard-settingspanel";import{html,LitElement}from"lit";import{customElement,property,state}from"lit/decorators.js";import"@openremote/or-gauge";import{i18next}from"@openremote/or-translate";import manager,{Util}from"@openremote/core";import{showSnackbar}from"@openremote/or-mwc-components/or-mwc-snackbar";import{InputType}from"@openremote/or-mwc-components/or-mwc-input";import{when}from"lit/directives/when.js";export class OrGaugeWidget{constructor(){this.DISPLAY_MDI_ICON="gauge",this.DISPLAY_NAME="Gauge",this.MIN_COLUMN_WIDTH=2,this.MIN_PIXEL_HEIGHT=0,this.MIN_PIXEL_WIDTH=0}getDefaultConfig(t){return{displayName:t.displayName,attributeRefs:[],thresholds:[[0,"#4caf50"],[75,"#ff9800"],[90,"#ef5350"]],decimals:0,min:0,max:100,valueType:"number"}}verifyConfigSpec(t){return Util.mergeObjects(this.getDefaultConfig(t),t.widgetConfig,!1)}getWidgetHTML(t,e,i){return html`<or-gauge-widget .widget="${t}" .editMode="${e}" realm="${i}"></or-gauge-widget>`}getSettingsHTML(t,e){return html`<or-gauge-widgetsettings .widget="${t}" realm="${e}"></or-gauge-widgetsettings>`}}let OrGaugeWidgetContent=class extends LitElement{constructor(){super(...arguments),this.assets=[],this.assetAttributes=[]}render(){var t;return html`
2
+ ${when(this.assets&&this.assetAttributes&&this.assets.length>0&&this.assetAttributes.length>0,(()=>{var t,e,i,n;return html`
3
+ <or-gauge .asset="${this.assets[0]}" .assetAttribute="${this.assetAttributes[0]}" .thresholds="${null===(t=this.widget)||void 0===t?void 0:t.widgetConfig.thresholds}"
4
+ .decimals="${null===(e=this.widget)||void 0===e?void 0:e.widgetConfig.decimals}" .min="${null===(i=this.widget)||void 0===i?void 0:i.widgetConfig.min}" .max="${null===(n=this.widget)||void 0===n?void 0:n.widgetConfig.max}"
5
+ style="height: 100%; overflow: hidden;"></or-gauge>
6
+ `}),(()=>html`
7
+ <div style="height: 100%; display: flex; justify-content: center; align-items: center;">
8
+ <span>${i18next.t("noAttributeConnected")}</span>
9
+ </div>
10
+ `))}
11
+ <!--<or-gauge .attrRef="${null===(t=this.widget)||void 0===t?void 0:t.widgetConfig.attributeRefs[0]}"></or-gauge>-->
12
+ `}updated(t){var e;(t.has("widget")||t.has("editMode"))&&this.fetchAssets(null===(e=this.widget)||void 0===e?void 0:e.widgetConfig).then((t=>{var e;this.assets=t,this.assetAttributes=null===(e=this.widget)||void 0===e?void 0:e.widgetConfig.attributeRefs.map((e=>{const i=t.findIndex((t=>t.id===e.id)),n=i>=0?t[i]:void 0;return n&&n.attributes?[i,n.attributes[e.name]]:void 0})).filter((t=>!!t)),this.requestUpdate()}))}fetchAssets(t){var e,i;return __awaiter(this,void 0,void 0,(function*(){if(t.attributeRefs&&t.attributeRefs.length>0){let n=[];return yield manager.rest.api.AssetResource.queryAssets({ids:null===(e=t.attributeRefs)||void 0===e?void 0:e.map((t=>t.id)),select:{attributes:null===(i=t.attributeRefs)||void 0===i?void 0:i.map((t=>t.name))}}).then((t=>{n=t.data})).catch((t=>{console.error(t),showSnackbar(void 0,i18next.t("errorOccurred"))})),n}}))}};__decorate([property()],OrGaugeWidgetContent.prototype,"widget",void 0),__decorate([property()],OrGaugeWidgetContent.prototype,"editMode",void 0),__decorate([property()],OrGaugeWidgetContent.prototype,"realm",void 0),__decorate([state()],OrGaugeWidgetContent.prototype,"assets",void 0),__decorate([state()],OrGaugeWidgetContent.prototype,"assetAttributes",void 0),OrGaugeWidgetContent=__decorate([customElement("or-gauge-widget")],OrGaugeWidgetContent);export{OrGaugeWidgetContent};let OrGaugeWidgetSettings=class extends LitElement{constructor(){super(...arguments),this.expandedPanels=[i18next.t("attributes"),i18next.t("values"),i18next.t("thresholds")]}static get styles(){return[style,widgetSettingsStyling]}render(){var t,e,i,n,s,a;const d=JSON.parse(JSON.stringify(this.widget.widgetConfig));return html`
13
+ <div>
14
+ ${this.generateExpandableHeader(i18next.t("attributes"))}
15
+ </div>
16
+ <div>
17
+ ${this.expandedPanels.includes(i18next.t("attributes"))?html`
18
+ <or-dashboard-settingspanel .type="${SettingsPanelType.SINGLE_ATTRIBUTE}" .onlyDataAttrs="${!1}" .widgetConfig="${null===(t=this.widget)||void 0===t?void 0:t.widgetConfig}"
19
+ @updated="${t=>{this.updateConfig(this.widget,t.detail.changes.get("config")),this.onAttributesUpdate(t.detail.changes)}}"
20
+ ></or-dashboard-settingspanel>
21
+ `:null}
22
+ </div>
23
+ <div>
24
+ ${this.generateExpandableHeader(i18next.t("values"))}
25
+ </div>
26
+ <div>
27
+ ${this.expandedPanels.includes(i18next.t("values"))?html`
28
+ <div style="padding: 12px 24px 48px 24px; display: flex; flex-direction: column; gap: 16px;">
29
+ <div style="display: flex; gap: 8px;">
30
+ <or-mwc-input type="${InputType.NUMBER}" label="${i18next.t("min")}" .max="${null===(e=this.widget)||void 0===e?void 0:e.widgetConfig.max}" .value="${null===(i=this.widget)||void 0===i?void 0:i.widgetConfig.min}"
31
+ @or-mwc-input-changed="${t=>{var e;t.detail.value<(null===(e=this.widget)||void 0===e?void 0:e.widgetConfig.max)&&(d.min=t.detail.value,d.thresholds[1][0]>t.detail.value&&(d.thresholds[0][0]=t.detail.value),this.updateConfig(this.widget,d))}}"
32
+ ></or-mwc-input>
33
+ <or-mwc-input type="${InputType.NUMBER}" label="${i18next.t("max")}" .min="${null===(n=this.widget)||void 0===n?void 0:n.widgetConfig.min}" .value="${null===(s=this.widget)||void 0===s?void 0:s.widgetConfig.max}"
34
+ @or-mwc-input-changed="${t=>{var e;t.detail.value>(null===(e=this.widget)||void 0===e?void 0:e.widgetConfig.min)&&(d.max=t.detail.value,this.updateConfig(this.widget,d))}}"
35
+ ></or-mwc-input>
36
+ </div>
37
+ <div>
38
+ <or-mwc-input type="${InputType.NUMBER}" style="width: 100%;" .value="${d.decimals}" label="${i18next.t("decimals")}" .min="${0}"
39
+ @or-mwc-input-changed="${t=>{d.decimals=t.detail.value,this.updateConfig(this.widget,d)}}"
40
+ ></or-mwc-input>
41
+ </div>
42
+ </div>
43
+ `:null}
44
+ </div>
45
+ <div>
46
+ ${this.generateExpandableHeader(i18next.t("thresholds"))}
47
+ </div>
48
+ <div>
49
+ ${this.expandedPanels.includes(i18next.t("thresholds"))?html`
50
+ <or-dashboard-settingspanel .type="${SettingsPanelType.THRESHOLDS}" .widgetConfig="${null===(a=this.widget)||void 0===a?void 0:a.widgetConfig}"
51
+ @updated="${t=>{this.updateConfig(this.widget,t.detail.changes.get("config"))}}">
52
+ </or-dashboard-settingspanel>
53
+ `:null}
54
+ </div>
55
+ `}updateConfig(t,e,i=!1){const n=JSON.parse(JSON.stringify(t));t.widgetConfig=e,this.requestUpdate("widget",n),this.forceParentUpdate(new Map([["widget",t]]),i)}onAttributesUpdate(t){var e,i;if(t.has("loadedAssets")&&(this.loadedAsset=t.get("loadedAssets")[0]),t.has("config")){const n=t.get("config");n.attributeRefs.length>0&&(this.widget.displayName=(null===(e=this.loadedAsset)||void 0===e?void 0:e.name)+" - "+(null===(i=this.loadedAsset)||void 0===i?void 0:i.attributes[n.attributeRefs[0].name].name))}}forceParentUpdate(t,e=!1){this.dispatchEvent(new CustomEvent("updated",{detail:{changes:t,force:e}}))}generateExpandableHeader(t){return html`
56
+ <span class="expandableHeader panel-title" @click="${()=>{this.expandPanel(t)}}">
57
+ <or-icon icon="${this.expandedPanels.includes(t)?"chevron-down":"chevron-right"}"></or-icon>
58
+ <span style="margin-left: 6px; height: 25px; line-height: 25px;">${t}</span>
59
+ </span>
60
+ `}expandPanel(t){if(this.expandedPanels.includes(t)){const e=this.expandedPanels.indexOf(t,0);e>-1&&this.expandedPanels.splice(e,1)}else this.expandedPanels.push(t);this.requestUpdate()}};__decorate([property()],OrGaugeWidgetSettings.prototype,"widget",void 0),OrGaugeWidgetSettings=__decorate([customElement("or-gauge-widgetsettings")],OrGaugeWidgetSettings);export{OrGaugeWidgetSettings};
@@ -0,0 +1 @@
1
+ {"version":3,"file":"or-gauge-widget.js","sourceRoot":"","sources":["../../src/widgets/or-gauge-widget.ts"],"names":[],"mappings":"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"}
@@ -0,0 +1,44 @@
1
+ import { Asset, AttributeRef, DashboardWidget } from "@openremote/model";
2
+ import { LitElement, TemplateResult } from "lit";
3
+ import { OrWidgetConfig, OrWidgetEntity } from "./or-base-widget";
4
+ export interface KpiWidgetConfig extends OrWidgetConfig {
5
+ displayName: string;
6
+ attributeRefs: AttributeRef[];
7
+ period?: 'year' | 'month' | 'week' | 'day' | 'hour';
8
+ decimals: number;
9
+ deltaFormat: "absolute" | "percentage";
10
+ showTimestampControls: boolean;
11
+ }
12
+ export declare class OrKpiWidget implements OrWidgetEntity {
13
+ readonly DISPLAY_MDI_ICON: string;
14
+ readonly DISPLAY_NAME: string;
15
+ readonly MIN_COLUMN_WIDTH: number;
16
+ readonly MIN_PIXEL_HEIGHT: number;
17
+ readonly MIN_PIXEL_WIDTH: number;
18
+ getDefaultConfig(widget: DashboardWidget): OrWidgetConfig;
19
+ verifyConfigSpec(widget: DashboardWidget): KpiWidgetConfig;
20
+ getSettingsHTML(widget: DashboardWidget, realm: string): TemplateResult<1>;
21
+ getWidgetHTML(widget: DashboardWidget, editMode: boolean, realm: string): TemplateResult<1>;
22
+ }
23
+ export declare class OrKpiWidgetContent extends LitElement {
24
+ readonly widget?: DashboardWidget;
25
+ editMode?: boolean;
26
+ realm?: string;
27
+ private loadedAssets;
28
+ private assetAttributes;
29
+ render(): TemplateResult<1>;
30
+ updated(changedProperties: Map<string, any>): void;
31
+ fetchAssets(config: OrWidgetConfig | any): Promise<Asset[] | undefined>;
32
+ }
33
+ export declare class OrKpiWidgetSettings extends LitElement {
34
+ readonly widget?: DashboardWidget;
35
+ private expandedPanels;
36
+ private loadedAsset?;
37
+ static get styles(): import("lit").CSSResult[];
38
+ render(): TemplateResult<1>;
39
+ updateConfig(widget: DashboardWidget, config: OrWidgetConfig | any, force?: boolean): void;
40
+ onAttributesUpdate(changes: Map<string, any>): void;
41
+ forceParentUpdate(changes: Map<string, any>, force?: boolean): void;
42
+ generateExpandableHeader(name: string): TemplateResult;
43
+ expandPanel(panelName: string): void;
44
+ }
@@ -0,0 +1,63 @@
1
+ var __decorate=this&&this.__decorate||function(t,e,i,s){var n,d=arguments.length,a=d<3?e:null===s?s=Object.getOwnPropertyDescriptor(e,i):s;if("object"==typeof Reflect&&"function"==typeof Reflect.decorate)a=Reflect.decorate(t,e,i,s);else for(var o=t.length-1;o>=0;o--)(n=t[o])&&(a=(d<3?n(a):d>3?n(e,i,a):n(e,i))||a);return d>3&&a&&Object.defineProperty(e,i,a),a},__awaiter=this&&this.__awaiter||function(t,e,i,s){return new(i||(i=Promise))((function(n,d){function a(t){try{r(s.next(t))}catch(t){d(t)}}function o(t){try{r(s.throw(t))}catch(t){d(t)}}function r(t){var e;t.done?n(t.value):(e=t.value,e instanceof i?e:new i((function(t){t(e)}))).then(a,o)}r((s=s.apply(t,e||[])).next())}))};import manager,{Util}from"@openremote/core";import{showSnackbar}from"@openremote/or-mwc-components/or-mwc-snackbar";import{i18next}from"@openremote/or-translate";import{html,LitElement}from"lit";import{customElement,property,state}from"lit/decorators.js";import{style}from"../style";import{SettingsPanelType,widgetSettingsStyling}from"../or-dashboard-settingspanel";import{InputType}from"@openremote/or-mwc-components/or-mwc-input";export class OrKpiWidget{constructor(){this.DISPLAY_MDI_ICON="label",this.DISPLAY_NAME="KPI",this.MIN_COLUMN_WIDTH=2,this.MIN_PIXEL_HEIGHT=0,this.MIN_PIXEL_WIDTH=0}getDefaultConfig(t){return{displayName:t.displayName,attributeRefs:[],period:"day",decimals:0,deltaFormat:"absolute",showTimestampControls:!1}}verifyConfigSpec(t){return Util.mergeObjects(this.getDefaultConfig(t),t.widgetConfig,!1)}getSettingsHTML(t,e){return html`<or-kpi-widgetsettings .widget="${t}" realm="${e}"></or-kpi-widgetsettings>`}getWidgetHTML(t,e,i){return html`<or-kpi-widget .widget="${t}" .editMode="${e}" realm="${i}" style="height: 100%; overflow: hidden;"></or-kpi-widget>`}}let OrKpiWidgetContent=class extends LitElement{constructor(){super(...arguments),this.loadedAssets=[],this.assetAttributes=[]}render(){var t,e,i,s,n;return html`
2
+ <or-attribute-card .assets="${this.loadedAssets}" .assetAttributes="${this.assetAttributes}" .period="${null===(t=this.widget)||void 0===t?void 0:t.widgetConfig.period}"
3
+ .deltaFormat="${null===(e=this.widget)||void 0===e?void 0:e.widgetConfig.deltaFormat}" .mainValueDecimals="${null===(i=this.widget)||void 0===i?void 0:i.widgetConfig.decimals}"
4
+ showControls="${!this.editMode&&(null===(n=null===(s=this.widget)||void 0===s?void 0:s.widgetConfig)||void 0===n?void 0:n.showTimestampControls)}" showTitle="${!1}" realm="${this.realm}" style="height: 100%;">
5
+ </or-attribute-card>
6
+ `}updated(t){var e;(t.has("widget")||t.has("editMode"))&&this.fetchAssets(null===(e=this.widget)||void 0===e?void 0:e.widgetConfig).then((t=>{var e;this.loadedAssets=t||[],this.assetAttributes=null===(e=this.widget)||void 0===e?void 0:e.widgetConfig.attributeRefs.map((e=>{const i=t.findIndex((t=>t.id===e.id)),s=i>=0?t[i]:void 0;return s&&s.attributes?[i,s.attributes[e.name]]:void 0})).filter((t=>!!t)),this.requestUpdate()}))}fetchAssets(t){var e,i;return __awaiter(this,void 0,void 0,(function*(){if(t.attributeRefs&&t.attributeRefs.length>0){let s=[];return yield manager.rest.api.AssetResource.queryAssets({ids:null===(e=t.attributeRefs)||void 0===e?void 0:e.map((t=>t.id)),select:{attributes:null===(i=t.attributeRefs)||void 0===i?void 0:i.map((t=>t.name))}}).then((t=>{s=t.data})).catch((t=>{console.error(t),showSnackbar(void 0,i18next.t("errorOccurred"))})),s}}))}};__decorate([property()],OrKpiWidgetContent.prototype,"widget",void 0),__decorate([property()],OrKpiWidgetContent.prototype,"editMode",void 0),__decorate([property()],OrKpiWidgetContent.prototype,"realm",void 0),__decorate([state()],OrKpiWidgetContent.prototype,"loadedAssets",void 0),__decorate([state()],OrKpiWidgetContent.prototype,"assetAttributes",void 0),OrKpiWidgetContent=__decorate([customElement("or-kpi-widget")],OrKpiWidgetContent);export{OrKpiWidgetContent};let OrKpiWidgetSettings=class extends LitElement{constructor(){super(...arguments),this.expandedPanels=[i18next.t("attributes"),i18next.t("display"),i18next.t("values")]}static get styles(){return[style,widgetSettingsStyling]}render(){const t=JSON.parse(JSON.stringify(this.widget.widgetConfig));return html`
7
+ <div>
8
+ ${this.generateExpandableHeader(i18next.t("attributes"))}
9
+ </div>
10
+ <div>
11
+ ${this.expandedPanels.includes(i18next.t("attributes"))?html`
12
+ <or-dashboard-settingspanel .type="${SettingsPanelType.SINGLE_ATTRIBUTE}" .widgetConfig="${this.widget.widgetConfig}"
13
+ @updated="${t=>{this.onAttributesUpdate(t.detail.changes),this.updateConfig(this.widget,t.detail.changes.get("config"))}}"
14
+ ></or-dashboard-settingspanel>
15
+ `:null}
16
+ </div>
17
+ <div>
18
+ ${this.generateExpandableHeader(i18next.t("display"))}
19
+ </div>
20
+ <div>
21
+ ${this.expandedPanels.includes(i18next.t("display"))?html`
22
+ <div style="padding: 24px 24px 48px 24px;">
23
+ <div>
24
+ <or-mwc-input .type="${InputType.SELECT}" style="width: 100%;"
25
+ .options="${["year","month","week","day","hour"]}"
26
+ .value="${t.period}" label="${i18next.t("timeframe")}"
27
+ @or-mwc-input-changed="${e=>{t.period=e.detail.value,this.updateConfig(this.widget,t)}}"
28
+ ></or-mwc-input>
29
+ </div>
30
+ <div class="switchMwcInputContainer" style="margin-top: 16px;">
31
+ <span>${i18next.t("dashboard.allowTimerangeSelect")}</span>
32
+ <or-mwc-input .type="${InputType.SWITCH}" style="margin: 0 -10px;" .value="${t.showTimestampControls}"
33
+ @or-mwc-input-changed="${e=>{t.showTimestampControls=e.detail.value,this.updateConfig(this.widget,t)}}"
34
+ ></or-mwc-input>
35
+ </div>
36
+ </div>
37
+ `:null}
38
+ </div>
39
+ <div>
40
+ ${this.generateExpandableHeader(i18next.t("values"))}
41
+ </div>
42
+ <div>
43
+ ${this.expandedPanels.includes(i18next.t("values"))?html`
44
+ <div style="padding: 24px 24px 48px 24px;">
45
+ <div>
46
+ <or-mwc-input .type="${InputType.SELECT}" style="width: 100%;" .options="${["absolute","percentage"]}" .value="${t.deltaFormat}" label="${i18next.t("dashboard.showValueAs")}"
47
+ @or-mwc-input-changed="${e=>{t.deltaFormat=e.detail.value,this.updateConfig(this.widget,t)}}"
48
+ ></or-mwc-input>
49
+ </div>
50
+ <div style="margin-top: 18px;">
51
+ <or-mwc-input .type="${InputType.NUMBER}" style="width: 100%;" .value="${t.decimals}" label="${i18next.t("decimals")}"
52
+ @or-mwc-input-changed="${e=>{t.decimals=e.detail.value,this.updateConfig(this.widget,t)}}"
53
+ ></or-mwc-input>
54
+ </div>
55
+ </div>
56
+ `:null}
57
+ </div>
58
+ `}updateConfig(t,e,i=!1){const s=JSON.parse(JSON.stringify(t));t.widgetConfig=e,this.requestUpdate("widget",s),this.forceParentUpdate(new Map([["widget",t]]),i)}onAttributesUpdate(t){var e,i;if(t.has("loadedAssets")&&(this.loadedAsset=t.get("loadedAssets")[0]),t.has("config")){const s=t.get("config");s.attributeRefs.length>0&&(this.widget.displayName=(null===(e=this.loadedAsset)||void 0===e?void 0:e.name)+" - "+(null===(i=this.loadedAsset)||void 0===i?void 0:i.attributes[s.attributeRefs[0].name].name))}}forceParentUpdate(t,e=!1){this.requestUpdate(),this.dispatchEvent(new CustomEvent("updated",{detail:{changes:t,force:e}}))}generateExpandableHeader(t){return html`
59
+ <span class="expandableHeader panel-title" @click="${()=>{this.expandPanel(t)}}">
60
+ <or-icon icon="${this.expandedPanels.includes(t)?"chevron-down":"chevron-right"}"></or-icon>
61
+ <span style="margin-left: 6px; height: 25px; line-height: 25px;">${t}</span>
62
+ </span>
63
+ `}expandPanel(t){if(this.expandedPanels.includes(t)){const e=this.expandedPanels.indexOf(t,0);e>-1&&this.expandedPanels.splice(e,1)}else this.expandedPanels.push(t);this.requestUpdate()}};__decorate([property()],OrKpiWidgetSettings.prototype,"widget",void 0),OrKpiWidgetSettings=__decorate([customElement("or-kpi-widgetsettings")],OrKpiWidgetSettings);export{OrKpiWidgetSettings};
@@ -0,0 +1 @@
1
+ {"version":3,"file":"or-kpi-widget.js","sourceRoot":"","sources":["../../src/widgets/or-kpi-widget.ts"],"names":[],"mappings":"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"}
@@ -0,0 +1,49 @@
1
+ import { Asset, AttributeRef, DashboardWidget, AssetDescriptor } from "@openremote/model";
2
+ import { LitElement, TemplateResult } from "lit";
3
+ import { OrWidgetConfig, OrWidgetEntity } from "./or-base-widget";
4
+ import "@openremote/or-map";
5
+ import { OrMap, LngLatLike, MapMarkerColours } from "@openremote/or-map";
6
+ export interface MapWidgetConfig extends OrWidgetConfig {
7
+ displayName: string;
8
+ attributeRefs: AttributeRef[];
9
+ zoom?: number;
10
+ center?: LngLatLike;
11
+ lat?: number;
12
+ lng?: number;
13
+ showLabels: boolean;
14
+ showUnits: boolean;
15
+ showGeoJson: boolean;
16
+ boolColors: MapMarkerColours;
17
+ textColors: [string, string][];
18
+ thresholds: [number, string][];
19
+ min?: number;
20
+ max?: number;
21
+ assetType?: string;
22
+ valueType?: string;
23
+ attributeName?: string;
24
+ assetTypes: AssetDescriptor[];
25
+ assetIds: string[];
26
+ attributes: string[];
27
+ }
28
+ export declare class OrMapWidget implements OrWidgetEntity {
29
+ readonly DISPLAY_NAME: string;
30
+ readonly DISPLAY_MDI_ICON: string;
31
+ readonly MIN_COLUMN_WIDTH: number;
32
+ readonly MIN_PIXEL_WIDTH: number;
33
+ readonly MIN_PIXEL_HEIGHT: number;
34
+ getDefaultConfig(widget: DashboardWidget): MapWidgetConfig;
35
+ verifyConfigSpec(widget: DashboardWidget): MapWidgetConfig;
36
+ getWidgetHTML(widget: DashboardWidget, editMode: boolean, realm: string): TemplateResult;
37
+ getSettingsHTML(widget: DashboardWidget, realm: string): TemplateResult;
38
+ }
39
+ export declare class OrMapWidgetContent extends LitElement {
40
+ readonly widget?: DashboardWidget;
41
+ editMode?: boolean;
42
+ realm?: string;
43
+ private assets?;
44
+ protected _map?: OrMap;
45
+ private markers;
46
+ render(): TemplateResult<1>;
47
+ updated(changedProperties: Map<string, any>): void;
48
+ fetchAssets(config: OrWidgetConfig | any): Promise<Asset[] | undefined>;
49
+ }
@@ -0,0 +1,75 @@
1
+ var __decorate=this&&this.__decorate||function(e,t,i,o){var s,n=arguments.length,a=n<3?t:null===o?o=Object.getOwnPropertyDescriptor(t,i):o;if("object"==typeof Reflect&&"function"==typeof Reflect.decorate)a=Reflect.decorate(e,t,i,o);else for(var d=e.length-1;d>=0;d--)(s=e[d])&&(a=(n<3?s(a):n>3?s(t,i,a):s(t,i))||a);return n>3&&a&&Object.defineProperty(t,i,a),a},__awaiter=this&&this.__awaiter||function(e,t,i,o){return new(i||(i=Promise))((function(s,n){function a(e){try{r(o.next(e))}catch(e){n(e)}}function d(e){try{r(o.throw(e))}catch(e){n(e)}}function r(e){var t;e.done?s(e.value):(t=e.value,t instanceof i?t:new i((function(e){e(t)}))).then(a,d)}r((o=o.apply(e,t||[])).next())}))};import{InputType}from"@openremote/or-mwc-components/or-mwc-input";import{i18next}from"@openremote/or-translate";import{html,LitElement}from"lit";import{customElement,property,state,query}from"lit/decorators.js";import{SettingsPanelType,widgetSettingsStyling}from"../or-dashboard-settingspanel";import{style}from"../style";import manager,{Util}from"@openremote/core";import{showSnackbar}from"@openremote/or-mwc-components/or-mwc-snackbar";import"@openremote/or-map";import{LngLat}from"maplibre-gl";export class OrMapWidget{constructor(){this.DISPLAY_NAME="Map",this.DISPLAY_MDI_ICON="map",this.MIN_COLUMN_WIDTH=2,this.MIN_PIXEL_WIDTH=0,this.MIN_PIXEL_HEIGHT=0}getDefaultConfig(e){return{displayName:null==e?void 0:e.displayName,attributeRefs:[],showLabels:!1,showUnits:!1,showGeoJson:!0,boolColors:{type:"boolean",false:"#ef5350",true:"#4caf50"},textColors:[["example","4caf50"],["example2","ef5350"]],thresholds:[[0,"#4caf50"],[75,"#ff9800"],[90,"#ef5350"]],assetTypes:[],assetType:void 0,assetIds:[],attributes:[]}}verifyConfigSpec(e){return Util.mergeObjects(this.getDefaultConfig(e),e.widgetConfig,!1)}getWidgetHTML(e,t,i){return html`
2
+ <or-map-widget .widget="${e}" .editMode="${t}" .realm="${i}" style="overflow: hidden;"></or-map-widget>`}getSettingsHTML(e,t){return html`
3
+ <or-map-widgetsettings .widget="${e}" .realm="${t}"></or-map-widgetsettings>`}}let OrMapWidgetContent=class extends LitElement{constructor(){super(...arguments),this.assets=[],this.markers={}}render(){var e,t,i,o,s,n;return this.markers={},html`
4
+ <div style="height: 100%; display: flex; flex-direction: column; overflow: hidden;">
5
+ <or-map id="miniMap" class="or-map" .zoom="${null===(t=null===(e=this.widget)||void 0===e?void 0:e.widgetConfig)||void 0===t?void 0:t.zoom}"
6
+ .center="${null===(o=null===(i=this.widget)||void 0===i?void 0:i.widgetConfig)||void 0===o?void 0:o.center}" .showGeoJson="${null===(n=null===(s=this.widget)||void 0===s?void 0:s.widgetConfig)||void 0===n?void 0:n.showGeoJson}"
7
+ style="flex: 1;">
8
+ ${this.assets?this.assets.filter((e=>{if(!e.attributes)return!1;const t=e.attributes.location;return!(t&&t.meta&&t.meta.hasOwnProperty("showOnDashboard")&&!Util.getMetaValue("showOnDashboard",t))})).map((e=>{if(this.markers)if(this.markers[e.type]={attributeName:this.widget.widgetConfig.attributeName},this.markers[e.type].showUnits=this.widget.widgetConfig.showUnits,this.markers[e.type].showLabel=this.widget.widgetConfig.showLabels,"boolean"==this.widget.widgetConfig.valueType)this.widget.widgetConfig.boolColors.true=this.widget.widgetConfig.boolColors.true.replace("#",""),this.widget.widgetConfig.boolColors.false=this.widget.widgetConfig.boolColors.false.replace("#",""),this.markers[e.type].colours=this.widget.widgetConfig.boolColors;else if("text"==this.widget.widgetConfig.valueType){var t={type:"string"};this.widget.widgetConfig.textColors.map((e=>{t[e[0]]=e[1].replace("#","")})),this.markers[e.type].colours=t}else{var i=[];this.widget.widgetConfig.thresholds.sort(((e,t)=>e[0]>t[0]?-1:1)).map(((e,t)=>{var o={min:e[0],colour:e[1].replace("#","")};i.push(o)}));var o={type:"range",ranges:i};this.markers[e.type].colours=o}return html`
9
+ <or-map-marker-asset .asset="${e}"
10
+ .config="${this.markers}"></or-map-marker-asset>
11
+ `})):void 0}
12
+ }
13
+ </or-map>
14
+ </div>
15
+ `}updated(e){var t,i,o;if(e.has("widget")||e.has("editMode")){const e=null!=(null===(t=this.assets)||void 0===t?void 0:t.find((e=>{var t,i,o;return!(null===(o=null===(i=null===(t=this.widget)||void 0===t?void 0:t.widgetConfig)||void 0===i?void 0:i.assetIds)||void 0===o?void 0:o.includes(e.id))})));(null==this.assets||0===(null===(i=this.assets)||void 0===i?void 0:i.length)||e)&&this.fetchAssets(null===(o=this.widget)||void 0===o?void 0:o.widgetConfig).then((e=>{this.assets=e}))}}fetchAssets(e){return __awaiter(this,void 0,void 0,(function*(){if(e.assetType&&e.attributeName){let t=[];return yield manager.rest.api.AssetResource.queryAssets({realm:{name:this.realm},select:{attributes:[e.attributeName,"location"]},types:[e.assetType]}).then((e=>{t=e.data,this.markers={}})).catch((e=>{console.error(e),showSnackbar(void 0,i18next.t("errorOccurred"))})),t}}))}};__decorate([property()],OrMapWidgetContent.prototype,"widget",void 0),__decorate([property()],OrMapWidgetContent.prototype,"editMode",void 0),__decorate([property()],OrMapWidgetContent.prototype,"realm",void 0),__decorate([state()],OrMapWidgetContent.prototype,"assets",void 0),__decorate([query("#miniMap")],OrMapWidgetContent.prototype,"_map",void 0),OrMapWidgetContent=__decorate([customElement("or-map-widget")],OrMapWidgetContent);export{OrMapWidgetContent};let OrMapWidgetSettings=class extends LitElement{constructor(){super(...arguments),this.assetTypes=[],this.expandedPanels=[i18next.t("configuration.mapSettings"),i18next.t("attributes"),i18next.t("thresholds")]}static get styles(){return[style,widgetSettingsStyling]}render(){var e,t,i,o,s,n,a,d,r;const l=JSON.parse(JSON.stringify(this.widget.widgetConfig));return html`
16
+ <div>
17
+ ${this.generateExpandableHeader(i18next.t("configuration.mapSettings"))}
18
+ </div>
19
+ <div>
20
+ ${this.expandedPanels.includes(i18next.t("configuration.mapSettings"))?html`
21
+ <div style="padding: 12px 24px 48px 24px; display: flex; flex-direction: column; gap: 16px;">
22
+
23
+ <div>
24
+ <or-mwc-input .type="${InputType.NUMBER}" style="width: 100%;"
25
+ .value="${null===(t=null===(e=this.widget)||void 0===e?void 0:e.widgetConfig)||void 0===t?void 0:t.zoom}" label="${i18next.t("dashboard.zoom")}"
26
+ @or-mwc-input-changed="${e=>{l.zoom=e.detail.value,this.updateConfig(this.widget,l)}}"
27
+ ></or-mwc-input>
28
+ </div>
29
+ <div style="display: flex; gap: 8px;">
30
+ <or-mwc-input .type="${InputType.TEXT}" style="width: 100%;"
31
+ .value="${(null===(o=null===(i=this.widget)||void 0===i?void 0:i.widgetConfig)||void 0===o?void 0:o.center)?Object.values(this.widget.widgetConfig.center)[0]+", "+Object.values(this.widget.widgetConfig.center)[1]:void 0}"
32
+ label="${i18next.t("dashboard.center")}"
33
+ @or-mwc-input-changed="${e=>{if(e.detail.value){const i=e.detail.value.split(/[, ]/).filter((e=>!!e));if(2===i.length){var t=new LngLat(Number.parseFloat(i[0]),Number.parseFloat(i[1]));l.center=t,this.updateConfig(this.widget,l)}}}}"
34
+ ></or-mwc-input>
35
+ </div>
36
+ <div style="display: flex; justify-content: space-between; align-items: center; padding: 0 10px 12px 10px;">
37
+ <span>${i18next.t("dashboard.showGeoJson")}</span>
38
+ <or-mwc-input .type="${InputType.SWITCH}" style="width: 70px;"
39
+ .value="${l.showGeoJson}"
40
+ @or-mwc-input-changed="${e=>{l.showGeoJson=e.detail.value,this.updateConfig(this.widget,l,!0)}}"
41
+ ></or-mwc-input>
42
+ </div>
43
+ </div>
44
+ `:null}
45
+ </div>
46
+ <div>
47
+ ${this.generateExpandableHeader(i18next.t("attributes"))}
48
+ </div>
49
+ <div>
50
+ ${this.expandedPanels.includes(i18next.t("attributes"))?html`
51
+ <or-dashboard-settingspanel .type="${SettingsPanelType.ASSETTYPES}"
52
+ .widgetConfig="${null===(s=this.widget)||void 0===s?void 0:s.widgetConfig}"
53
+ @updated="${e=>{this.updateConfig(this.widget,e.detail.changes.get("config"))}}">
54
+ </or-dashboard-settingspanel>
55
+ `:null}
56
+ </div>
57
+ ${(null===(d=null===(a=null===(n=this.widget)||void 0===n?void 0:n.widgetConfig)||void 0===a?void 0:a.assetIds)||void 0===d?void 0:d.length)>0?html`
58
+ <div>
59
+ ${this.generateExpandableHeader(i18next.t("thresholds"))}
60
+ </div>
61
+ <div>
62
+ ${this.expandedPanels.includes(i18next.t("thresholds"))?html`
63
+ <or-dashboard-settingspanel .type="${SettingsPanelType.THRESHOLDS}"
64
+ .widgetConfig="${null===(r=this.widget)||void 0===r?void 0:r.widgetConfig}"
65
+ @updated="${e=>{this.updateConfig(this.widget,e.detail.changes.get("config"))}}"
66
+ ></or-dashboard-settingspanel>
67
+ `:null}
68
+ </div>
69
+ `:null}
70
+ `}updated(e){var t,i,o,s;(null===(i=null===(t=this.widget)||void 0===t?void 0:t.widgetConfig)||void 0===i?void 0:i.zoom)||(null===(s=null===(o=this.widget)||void 0===o?void 0:o.widgetConfig)||void 0===s?void 0:s.center)||manager.rest.api.MapResource.getSettings().then((e=>{this.widget.widgetConfig.zoom=e.data.options.default.zoom,this.widget.widgetConfig.center=e.data.options.default.center,this.updateConfig(this.widget,this.widget.widgetConfig)}))}updateConfig(e,t,i=!1){const o=JSON.parse(JSON.stringify(e));e.widgetConfig=t,this.requestUpdate("widget",o),this.forceParentUpdate(new Map([["widget",e]]),i)}forceParentUpdate(e,t=!1){this.dispatchEvent(new CustomEvent("updated",{detail:{changes:e,force:t}}))}generateExpandableHeader(e){return html`
71
+ <span class="expandableHeader panel-title" @click="${()=>{this.expandPanel(e)}}">
72
+ <or-icon icon="${this.expandedPanels.includes(e)?"chevron-down":"chevron-right"}"></or-icon>
73
+ <span style="margin-left: 6px; height: 25px; line-height: 25px;">${e}</span>
74
+ </span>
75
+ `}expandPanel(e){if(this.expandedPanels.includes(e)){const t=this.expandedPanels.indexOf(e,0);t>-1&&this.expandedPanels.splice(t,1)}else this.expandedPanels.push(e);this.requestUpdate()}};__decorate([property()],OrMapWidgetSettings.prototype,"widget",void 0),__decorate([state()],OrMapWidgetSettings.prototype,"assetTypes",void 0),OrMapWidgetSettings=__decorate([customElement("or-map-widgetsettings")],OrMapWidgetSettings);
@@ -0,0 +1 @@
1
+ {"version":3,"file":"or-map-widget.js","sourceRoot":"","sources":["../../src/widgets/or-map-widget.ts"],"names":[],"mappings":"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"}
@@ -0,0 +1,25 @@
1
+ import { PropertyValues, TemplateResult } from "lit";
2
+ import { OrAssetWidget } from "../util/or-asset-widget";
3
+ import { WidgetManifest } from "../util/or-widget";
4
+ import { WidgetConfig } from "../util/widget-config";
5
+ import { OrMwcTableRowClickEvent, TableColumn, TableRow } from "@openremote/or-mwc-components/or-mwc-table";
6
+ import "@openremote/or-mwc-components/or-mwc-table";
7
+ export interface TableWidgetConfig extends WidgetConfig {
8
+ assetType?: string;
9
+ assetIds: string[];
10
+ attributeNames: string[];
11
+ tableSize: number;
12
+ tableOptions: number[];
13
+ }
14
+ export declare class TableWidget extends OrAssetWidget {
15
+ protected widgetConfig: TableWidgetConfig;
16
+ static getManifest(): WidgetManifest;
17
+ static get styles(): import("lit").CSSResult[];
18
+ refreshContent(force: boolean): void;
19
+ protected willUpdate(changedProps: PropertyValues): void;
20
+ protected loadAssets(): void;
21
+ protected getColumns(attributeNames: string[]): TableColumn[];
22
+ protected getRows(attributeNames: string[]): TableRow[];
23
+ protected render(): TemplateResult;
24
+ protected onTableRowClick(ev: OrMwcTableRowClickEvent): void;
25
+ }
@@ -0,0 +1,12 @@
1
+ var TableWidget_1,__decorate=this&&this.__decorate||function(t,e,i,s){var o,r=arguments.length,a=r<3?e:null===s?s=Object.getOwnPropertyDescriptor(e,i):s;if("object"==typeof Reflect&&"function"==typeof Reflect.decorate)a=Reflect.decorate(t,e,i,s);else for(var l=t.length-1;l>=0;l--)(o=t[l])&&(a=(r<3?o(a):r>3?o(e,i,a):o(e,i))||a);return r>3&&a&&Object.defineProperty(e,i,a),a};import{css,html}from"lit";import{customElement}from"lit/decorators.js";import{OrAssetWidget}from"../util/or-asset-widget";import{TableSettings}from"../settings/table-settings";import{i18next}from"@openremote/or-translate";import{Util}from"@openremote/core";import{AssetModelUtil}from"@openremote/model";import"@openremote/or-mwc-components/or-mwc-table";function getDefaultConfig(){return{assetType:void 0,assetIds:[],attributeNames:[],tableSize:10,tableOptions:[10,25,100]}}const styling=css`
2
+ #widget-wrapper {
3
+ height: 100%;
4
+ overflow: hidden;
5
+ }
6
+ `;let TableWidget=TableWidget_1=class extends OrAssetWidget{static getManifest(){return{displayName:"Table",displayIcon:"table",getContentHtml:t=>new TableWidget_1(t),getDefaultConfig:()=>getDefaultConfig(),getSettingsHtml:t=>new TableSettings(t)}}static get styles(){return[...super.styles,styling]}refreshContent(t){this.widgetConfig=JSON.parse(JSON.stringify(this.widgetConfig))}willUpdate(t){return t.has("widgetConfig")&&this.widgetConfig&&this.loadAssets(),super.willUpdate(t)}loadAssets(){this.widgetConfig.assetIds.find((t=>!this.isAssetLoaded(t)))&&this.queryAssets({ids:this.widgetConfig.assetIds,select:{attributes:this.widgetConfig.attributeNames}}).then((t=>{this.loadedAssets=t}))}getColumns(t){const e=this.loadedAssets[0],i=t.map((t=>{var i,s;let o=t,r=!1;if(this.widgetConfig.assetType&&e&&e.attributes&&e.attributes[t]){const a=AssetModelUtil.getAttributeDescriptor(t,this.widgetConfig.assetType);o=Util.getAttributeLabel(e.attributes[t],a,this.widgetConfig.assetType,!0),r=(null===(i=null==a?void 0:a.format)||void 0===i?void 0:i.asNumber)||(null===(s=null==a?void 0:a.format)||void 0===s?void 0:s.asSlider)||!1}return{title:o,isSortable:!0,isNumeric:r}}));return Array.of({title:i18next.t("assetName"),isSortable:!0},...i)}getRows(t){return this.loadedAssets.map((e=>{const i=t.map((t=>{if(e.attributes&&e.attributes[t]){const i=AssetModelUtil.getAttributeDescriptor(t,e.type),s=Util.getAttributeValueAsString(e.attributes[t],i,e.type,!1),o=parseFloat(s);return isNaN(o)?s:o}return"N.A."}));return{content:Array.of(e.name,...i)}}))}render(){const t={fullHeight:!0,pagination:{enable:!0,options:this.widgetConfig.tableOptions}},e=this.getColumns(this.widgetConfig.attributeNames),i=this.getRows(this.widgetConfig.attributeNames);return html`
7
+ <div id="widget-wrapper">
8
+ <or-mwc-table .columns="${e}" .rows="${i}" .config="${t}" .paginationSize="${this.widgetConfig.tableSize}"
9
+ @or-mwc-table-row-click="${t=>this.onTableRowClick(t)}"
10
+ ></or-mwc-table>
11
+ </div>
12
+ `}onTableRowClick(t){}};TableWidget=TableWidget_1=__decorate([customElement("table-widget")],TableWidget);export{TableWidget};
@@ -0,0 +1 @@
1
+ {"version":3,"file":"table-widget.js","sourceRoot":"","sources":["../../src/widgets/table-widget.ts"],"names":[],"mappings":";;;;;;;AAAA,OAAO,EAAC,GAAG,EAAE,IAAI,EAAkC,MAAM,KAAK,CAAC;AAC/D,OAAO,EAAE,aAAa,EAAE,MAAM,mBAAmB,CAAC;AAClD,OAAO,EAAC,aAAa,EAAC,MAAM,yBAAyB,CAAC;AAItD,OAAO,EAAC,aAAa,EAAC,MAAM,4BAA4B,CAAC;AAEzD,OAAO,EAAC,OAAO,EAAC,MAAM,0BAA0B,CAAC;AACjD,OAAO,EAAC,IAAI,EAAC,MAAM,kBAAkB,CAAC;AACtC,OAAO,EAAQ,cAAc,EAAC,MAAM,mBAAmB,CAAC;AACxD,OAAO,4CAA4C,CAAC;AAUpD,SAAS,gBAAgB;IACrB,OAAO;QACH,SAAS,EAAE,SAAS;QACpB,QAAQ,EAAE,EAAE;QACZ,cAAc,EAAE,EAAE;QAClB,SAAS,EAAE,EAAE;QACb,YAAY,EAAE,CAAC,EAAE,EAAE,EAAE,EAAE,GAAG,CAAC;KAC9B,CAAA;AACL,CAAC;AAED,MAAM,OAAO,GAAG,GAAG,CAAA;;;;;CAKlB,CAAA;AAGM,IAAM,WAAW,mBAAjB,MAAM,WAAY,SAAQ,aAAa;IAI1C,MAAM,CAAC,WAAW;QACd,OAAO;YACH,WAAW,EAAE,OAAO;YACpB,WAAW,EAAE,OAAO;YACpB,cAAc,CAAC,MAAoB;gBAC/B,OAAO,IAAI,aAAW,CAAC,MAAM,CAAC,CAAC;YACnC,CAAC;YACD,gBAAgB;gBACZ,OAAO,gBAAgB,EAAE,CAAC;YAC9B,CAAC;YACD,eAAe,CAAC,MAAoB;gBAChC,OAAO,IAAI,aAAa,CAAC,MAAM,CAAC,CAAC;YACrC,CAAC;SAEJ,CAAA;IACL,CAAC;IAED,MAAM,KAAK,MAAM;QACb,OAAO,CAAC,GAAG,KAAK,CAAC,MAAM,EAAE,OAAO,CAAC,CAAC;IACtC,CAAC;IAED,0CAA0C;IAC1C,cAAc,CAAC,KAAc;QACzB,IAAI,CAAC,YAAY,GAAG,IAAI,CAAC,KAAK,CAAC,IAAI,CAAC,SAAS,CAAC,IAAI,CAAC,YAAY,CAAC,CAAsB,CAAC;IAC3F,CAAC;IAED,gBAAgB;IACN,UAAU,CAAC,YAA4B;QAC7C,IAAG,YAAY,CAAC,GAAG,CAAC,cAAc,CAAC,IAAI,IAAI,CAAC,YAAY,EAAE,CAAC;YACvD,IAAI,CAAC,UAAU,EAAE,CAAC;QACtB,CAAC;QAED,OAAO,KAAK,CAAC,UAAU,CAAC,YAAY,CAAC,CAAC;IAC1C,CAAC;IAGD,6CAA6C;IAEnC,UAAU;QAChB,IAAG,IAAI,CAAC,YAAY,CAAC,QAAQ,CAAC,IAAI,CAAC,EAAE,CAAC,EAAE,CAAC,CAAC,IAAI,CAAC,aAAa,CAAC,EAAE,CAAC,CAAC,EAAE,CAAC;YACjE,IAAI,CAAC,WAAW,CAAC;gBACb,GAAG,EAAE,IAAI,CAAC,YAAY,CAAC,QAAQ;gBAC/B,MAAM,EAAE;oBACJ,UAAU,EAAE,IAAI,CAAC,YAAY,CAAC,cAAc;iBAC/C;aACJ,CAAC,CAAC,IAAI,CAAC,CAAC,MAAM,EAAE,EAAE;gBACf,IAAI,CAAC,YAAY,GAAG,MAAM,CAAC;YAC/B,CAAC,CAAC,CAAA;QACL,CAAC;IACL,CAAC;IAES,UAAU,CAAC,cAAwB;QACzC,MAAM,cAAc,GAAsB,IAAI,CAAC,YAAY,CAAC,CAAC,CAAC,CAAC;QAC/D,MAAM,WAAW,GAAG,cAAc,CAAC,GAAG,CAAC,QAAQ,CAAC,EAAE;;YAC9C,IAAI,IAAI,GAAG,QAAQ,CAAC;YACpB,IAAI,OAAO,GAAG,KAAK,CAAC;YACpB,IAAG,IAAI,CAAC,YAAY,CAAC,SAAS,IAAI,cAAc,IAAI,cAAc,CAAC,UAAU,IAAI,cAAc,CAAC,UAAU,CAAC,QAAQ,CAAC,EAAE,CAAC;gBACnH,MAAM,mBAAmB,GAAG,cAAc,CAAC,sBAAsB,CAAC,QAAQ,EAAE,IAAI,CAAC,YAAY,CAAC,SAAS,CAAC,CAAC;gBACzG,IAAI,GAAG,IAAI,CAAC,iBAAiB,CAAC,cAAc,CAAC,UAAU,CAAC,QAAQ,CAAC,EAAE,mBAAmB,EAAE,IAAI,CAAC,YAAY,CAAC,SAAS,EAAE,IAAI,CAAC,CAAC;gBAC3H,OAAO,GAAG,CAAA,MAAA,mBAAmB,aAAnB,mBAAmB,uBAAnB,mBAAmB,CAAE,MAAM,0CAAE,QAAQ,MAAI,MAAA,mBAAmB,aAAnB,mBAAmB,uBAAnB,mBAAmB,CAAE,MAAM,0CAAE,QAAQ,CAAA,IAAI,KAAK,CAAC;YACtG,CAAC;YACD,OAAO;gBACH,KAAK,EAAE,IAAI;gBACX,UAAU,EAAE,IAAI;gBAChB,SAAS,EAAE,OAAO;aACN,CAAC;QACrB,CAAC,CAAC,CAAC;QACH,OAAO,KAAK,CAAC,EAAE,CAAC,EAAE,KAAK,EAAE,OAAO,CAAC,CAAC,CAAC,WAAW,CAAC,EAAE,UAAU,EAAE,IAAI,EAAE,EAAE,GAAG,WAAW,CAAC,CAAC;IACzF,CAAC;IAES,OAAO,CAAC,cAAwB;QACtC,OAAO,IAAI,CAAC,YAAY,CAAC,GAAG,CAAC,KAAK,CAAC,EAAE;YACjC,MAAM,WAAW,GAAG,cAAc,CAAC,GAAG,CAAC,QAAQ,CAAC,EAAE;gBAC9C,IAAG,KAAK,CAAC,UAAU,IAAI,KAAK,CAAC,UAAU,CAAC,QAAQ,CAAC,EAAE,CAAC;oBAChD,MAAM,mBAAmB,GAAG,cAAc,CAAC,sBAAsB,CAAC,QAAQ,EAAE,KAAK,CAAC,IAAK,CAAC,CAAC;oBACzF,MAAM,QAAQ,GAAG,IAAI,CAAC,yBAAyB,CAAC,KAAK,CAAC,UAAU,CAAC,QAAQ,CAAC,EAAE,mBAAmB,EAAE,KAAK,CAAC,IAAI,EAAE,KAAK,CAAC,CAAC;oBACpH,MAAM,QAAQ,GAAG,UAAU,CAAC,QAAQ,CAAC,CAAC;oBACtC,OAAO,KAAK,CAAC,QAAQ,CAAC,CAAC,CAAC,CAAC,QAAQ,CAAC,CAAC,CAAC,QAAQ,CAAC;gBACjD,CAAC;qBAAM,CAAC;oBACJ,OAAO,MAAM,CAAA;gBACjB,CAAC;YACL,CAAC,CAAC,CAAA;YACF,MAAM,OAAO,GAAU,KAAK,CAAC,EAAE,CAAC,KAAK,CAAC,IAAK,EAAE,GAAG,WAAW,CAAC,CAAC;YAC7D,OAAO;gBACH,OAAO,EAAE,OAAO;aACnB,CAAC;QACN,CAAC,CAAC,CAAA;IACN,CAAC;IAES,MAAM;QACZ,MAAM,WAAW,GAAQ;YACrB,UAAU,EAAE,IAAI;YAChB,UAAU,EAAE;gBACR,MAAM,EAAE,IAAI;gBACZ,OAAO,EAAE,IAAI,CAAC,YAAY,CAAC,YAAY;aAC1C;SACW,CAAA;QAChB,MAAM,OAAO,GAAkB,IAAI,CAAC,UAAU,CAAC,IAAI,CAAC,YAAY,CAAC,cAAc,CAAC,CAAC;QACjF,MAAM,IAAI,GAAe,IAAI,CAAC,OAAO,CAAC,IAAI,CAAC,YAAY,CAAC,cAAc,CAAC,CAAC;QACxE,OAAO,IAAI,CAAA;;0CAEuB,OAAO,YAAY,IAAI,cAAc,WAAW,sBAAsB,IAAI,CAAC,YAAY,CAAC,SAAS;yDAClF,CAAC,EAA2B,EAAE,EAAE,CAAC,IAAI,CAAC,eAAe,CAAC,EAAE,CAAC;;;SAGzG,CAAC;IACN,CAAC;IAES,eAAe,CAAC,EAA2B;IAErD,CAAC;CAGJ,CAAA;AArHY,WAAW;IADvB,aAAa,CAAC,cAAc,CAAC;GACjB,WAAW,CAqHvB"}
package/package.json ADDED
@@ -0,0 +1,32 @@
1
+ {
2
+ "name": "@openremote/or-dashboard-builder",
3
+ "version": "1.2.0-snapshot.20240512160221",
4
+ "description": "OpenRemote Dashboard Builder",
5
+ "main": "dist/umd/index.bundle.js",
6
+ "module": "lib/index.js",
7
+ "exports": {
8
+ ".": "./lib/index.js",
9
+ "./*": "./lib/*.js"
10
+ },
11
+ "types": "lib/index.d.ts",
12
+ "scripts": {
13
+ "test": "echo \"No tests\" && exit 0",
14
+ "prepublishOnly": "npx webpack"
15
+ },
16
+ "author": "OpenRemote",
17
+ "license": "AGPL-3.0-or-later",
18
+ "dependencies": {
19
+ "@openremote/core": "1.2.0-snapshot.20240512160221",
20
+ "@openremote/model": "1.2.0-snapshot.20240512160221",
21
+ "@openremote/or-chart": "1.2.0-snapshot.20240512160221",
22
+ "@openremote/rest": "1.2.0-snapshot.20240512160221",
23
+ "gridstack": "^7.2.0",
24
+ "lit": "^2.0.2"
25
+ },
26
+ "devDependencies": {
27
+ "@openremote/util": "1.2.0-snapshot.20240512160221"
28
+ },
29
+ "publishConfig": {
30
+ "access": "public"
31
+ }
32
+ }
@@ -0,0 +1,100 @@
1
+ import {InputType} from "@openremote/or-mwc-components/or-mwc-input";
2
+ import {ListItem} from "@openremote/or-mwc-components/or-mwc-list";
3
+ import {getContentWithMenuTemplate} from "@openremote/or-mwc-components/or-mwc-menu";
4
+ import {html, LitElement, PropertyValues, TemplateResult} from "lit";
5
+ import {customElement, property} from "lit/decorators.js";
6
+ import {when} from "lit/directives/when.js";
7
+ import {DashboardRefreshInterval} from "@openremote/model";
8
+
9
+ export function intervalToMillis(interval: DashboardRefreshInterval): number | undefined {
10
+ switch (interval) {
11
+ case DashboardRefreshInterval.OFF:
12
+ return undefined;
13
+ case DashboardRefreshInterval.ONE_MIN:
14
+ return (60 * 1000);
15
+ case DashboardRefreshInterval.FIVE_MIN:
16
+ return (5 * 60 * 1000);
17
+ case DashboardRefreshInterval.QUARTER:
18
+ return (15 * 60 * 1000);
19
+ case DashboardRefreshInterval.ONE_HOUR:
20
+ return (60 * 60 * 1000);
21
+ default:
22
+ return undefined;
23
+ }
24
+ }
25
+
26
+ export class IntervalSelectEvent extends CustomEvent<DashboardRefreshInterval> {
27
+
28
+ public static readonly NAME = "interval-select";
29
+
30
+ constructor(interval: DashboardRefreshInterval) {
31
+ super(IntervalSelectEvent.NAME, {
32
+ bubbles: true,
33
+ composed: true,
34
+ detail: interval
35
+ });
36
+ }
37
+ }
38
+
39
+ @customElement("dashboard-refresh-controls")
40
+ export class DashboardRefreshControls extends LitElement {
41
+
42
+ @property()
43
+ protected interval: DashboardRefreshInterval = DashboardRefreshInterval.OFF;
44
+
45
+ @property()
46
+ protected readonly = true;
47
+
48
+ // TODO: Replace this with Object.values(), after generated typescript enums support this. ('const' variable issue in model.ts)
49
+ protected intervalOptions = [DashboardRefreshInterval.OFF, DashboardRefreshInterval.ONE_MIN, DashboardRefreshInterval.FIVE_MIN, DashboardRefreshInterval.QUARTER, DashboardRefreshInterval.ONE_HOUR]
50
+
51
+ protected willUpdate(changedProps: PropertyValues) {
52
+ super.willUpdate(changedProps);
53
+ if (changedProps.has("interval") && this.interval !== undefined) {
54
+ this.dispatchEvent(new IntervalSelectEvent(this.interval));
55
+ }
56
+ }
57
+
58
+ protected render(): TemplateResult {
59
+ const intervalOptions: string[] = this.getRefreshOptions();
60
+ const value = this.getIntervalString(this.interval);
61
+ return html`
62
+ <div style="height: 100%; display: flex; align-items: center;">
63
+ ${when(this.readonly, () => html`
64
+ ${when(this.interval === DashboardRefreshInterval.OFF, () => html`
65
+ <or-mwc-input .type="${InputType.BUTTON}" icon="pause" disabled="true" style="height: 36px; margin-top: -12px;"></or-mwc-input>
66
+ `, () => html`
67
+ <or-mwc-input .type="${InputType.BUTTON}" label="${value}" disabled="true"></or-mwc-input>
68
+ `)}
69
+ `, () => html`
70
+ ${getContentWithMenuTemplate(
71
+ this.interval === DashboardRefreshInterval.OFF ? html`
72
+ <or-mwc-input .type="${InputType.BUTTON}" icon="pause" style="height: 36px; margin-top: -12px;"></or-mwc-input>
73
+ ` : html`
74
+ <or-mwc-input .type="${InputType.BUTTON}" label="${value}"></or-mwc-input>
75
+ `,
76
+ intervalOptions.map(o => ({value: o} as ListItem)),
77
+ value,
78
+ (newVal) => this.onIntervalSelect(intervalOptions, newVal as string),
79
+ undefined,
80
+ false,
81
+ true,
82
+ true
83
+ )}
84
+ `)}
85
+ </div>
86
+ `;
87
+ }
88
+
89
+ protected onIntervalSelect(stringOptions: string[], value: string) {
90
+ this.interval = this.intervalOptions[stringOptions.indexOf(value as DashboardRefreshInterval)];
91
+ }
92
+
93
+ protected getIntervalString(interval: DashboardRefreshInterval): string {
94
+ return (`dashboard.interval.${interval.toLowerCase()}`);
95
+ }
96
+
97
+ protected getRefreshOptions(): string[] {
98
+ return this.intervalOptions.map(interval => this.getIntervalString(interval));
99
+ }
100
+ }