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

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 (146) 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-tree.d.ts +25 -0
  25. package/lib/or-dashboard-tree.js +62 -0
  26. package/lib/or-dashboard-tree.js.map +1 -0
  27. package/lib/or-dashboard-widgetcontainer.d.ts +23 -0
  28. package/lib/or-dashboard-widgetcontainer.js +20 -0
  29. package/lib/or-dashboard-widgetcontainer.js.map +1 -0
  30. package/lib/or-dashboard-widgetsettings.d.ts +15 -0
  31. package/lib/or-dashboard-widgetsettings.js +16 -0
  32. package/lib/or-dashboard-widgetsettings.js.map +1 -0
  33. package/lib/panels/assettypes-panel.d.ts +44 -0
  34. package/lib/panels/assettypes-panel.js +51 -0
  35. package/lib/panels/assettypes-panel.js.map +1 -0
  36. package/lib/panels/attributes-panel.d.ts +41 -0
  37. package/lib/panels/attributes-panel.js +126 -0
  38. package/lib/panels/attributes-panel.js.map +1 -0
  39. package/lib/panels/thresholds-panel.d.ts +39 -0
  40. package/lib/panels/thresholds-panel.js +129 -0
  41. package/lib/panels/thresholds-panel.js.map +1 -0
  42. package/lib/service/dashboard-service.d.ts +13 -0
  43. package/lib/service/dashboard-service.js +1 -0
  44. package/lib/service/dashboard-service.js.map +1 -0
  45. package/lib/service/widget-service.d.ts +8 -0
  46. package/lib/service/widget-service.js +1 -0
  47. package/lib/service/widget-service.js.map +1 -0
  48. package/lib/settings/attribute-input-settings.d.ts +13 -0
  49. package/lib/settings/attribute-input-settings.js +36 -0
  50. package/lib/settings/attribute-input-settings.js.map +1 -0
  51. package/lib/settings/chart-settings.d.ts +30 -0
  52. package/lib/settings/chart-settings.js +144 -0
  53. package/lib/settings/chart-settings.js.map +1 -0
  54. package/lib/settings/gauge-settings.d.ts +15 -0
  55. package/lib/settings/gauge-settings.js +37 -0
  56. package/lib/settings/gauge-settings.js.map +1 -0
  57. package/lib/settings/image-settings.d.ts +17 -0
  58. package/lib/settings/image-settings.js +52 -0
  59. package/lib/settings/image-settings.js.map +1 -0
  60. package/lib/settings/kpi-settings.d.ts +15 -0
  61. package/lib/settings/kpi-settings.js +47 -0
  62. package/lib/settings/kpi-settings.js.map +1 -0
  63. package/lib/settings/map-settings.d.ts +21 -0
  64. package/lib/settings/map-settings.js +72 -0
  65. package/lib/settings/map-settings.js.map +1 -0
  66. package/lib/settings/table-settings.d.ts +14 -0
  67. package/lib/settings/table-settings.js +33 -0
  68. package/lib/settings/table-settings.js.map +1 -0
  69. package/lib/style.d.ts +1 -0
  70. package/lib/style.js +99 -0
  71. package/lib/style.js.map +1 -0
  72. package/lib/util/or-asset-widget.d.ts +20 -0
  73. package/lib/util/or-asset-widget.js +1 -0
  74. package/lib/util/or-asset-widget.js.map +1 -0
  75. package/lib/util/or-widget.d.ts +31 -0
  76. package/lib/util/or-widget.js +1 -0
  77. package/lib/util/or-widget.js.map +1 -0
  78. package/lib/util/settings-panel.d.ts +9 -0
  79. package/lib/util/settings-panel.js +56 -0
  80. package/lib/util/settings-panel.js.map +1 -0
  81. package/lib/util/widget-config.d.ts +2 -0
  82. package/lib/util/widget-config.js +1 -0
  83. package/lib/util/widget-config.js.map +1 -0
  84. package/lib/util/widget-settings.d.ts +23 -0
  85. package/lib/util/widget-settings.js +1 -0
  86. package/lib/util/widget-settings.js.map +1 -0
  87. package/lib/widgets/attribute-input-widget.d.ts +24 -0
  88. package/lib/widgets/attribute-input-widget.js +31 -0
  89. package/lib/widgets/attribute-input-widget.js.map +1 -0
  90. package/lib/widgets/chart-widget.d.ts +25 -0
  91. package/lib/widgets/chart-widget.js +15 -0
  92. package/lib/widgets/chart-widget.js.map +1 -0
  93. package/lib/widgets/gauge-widget.d.ts +22 -0
  94. package/lib/widgets/gauge-widget.js +12 -0
  95. package/lib/widgets/gauge-widget.js.map +1 -0
  96. package/lib/widgets/image-widget.d.ts +25 -0
  97. package/lib/widgets/image-widget.js +54 -0
  98. package/lib/widgets/image-widget.js.map +1 -0
  99. package/lib/widgets/kpi-widget.d.ts +21 -0
  100. package/lib/widgets/kpi-widget.js +8 -0
  101. package/lib/widgets/kpi-widget.js.map +1 -0
  102. package/lib/widgets/map-widget.d.ts +39 -0
  103. package/lib/widgets/map-widget.js +9 -0
  104. package/lib/widgets/map-widget.js.map +1 -0
  105. package/lib/widgets/table-widget.d.ts +25 -0
  106. package/lib/widgets/table-widget.js +12 -0
  107. package/lib/widgets/table-widget.js.map +1 -0
  108. package/package.json +32 -0
  109. package/src/controls/dashboard-refresh-controls.ts +100 -0
  110. package/src/index.ts +731 -0
  111. package/src/or-dashboard-boardsettings.ts +249 -0
  112. package/src/or-dashboard-browser.ts +160 -0
  113. package/src/or-dashboard-engine.ts +17 -0
  114. package/src/or-dashboard-keyhandler.ts +25 -0
  115. package/src/or-dashboard-preview.ts +713 -0
  116. package/src/or-dashboard-tree.ts +304 -0
  117. package/src/or-dashboard-widgetcontainer.ts +155 -0
  118. package/src/or-dashboard-widgetsettings.ts +91 -0
  119. package/src/panels/assettypes-panel.ts +311 -0
  120. package/src/panels/attributes-panel.ts +304 -0
  121. package/src/panels/thresholds-panel.ts +285 -0
  122. package/src/service/dashboard-service.ts +89 -0
  123. package/src/service/widget-service.ts +48 -0
  124. package/src/settings/attribute-input-settings.ts +79 -0
  125. package/src/settings/chart-settings.ts +306 -0
  126. package/src/settings/gauge-settings.ts +93 -0
  127. package/src/settings/image-settings.ts +175 -0
  128. package/src/settings/kpi-settings.ts +106 -0
  129. package/src/settings/map-settings.ts +185 -0
  130. package/src/settings/table-settings.ts +92 -0
  131. package/src/style.ts +104 -0
  132. package/src/util/or-asset-widget.ts +110 -0
  133. package/src/util/or-widget.ts +60 -0
  134. package/src/util/settings-panel.ts +93 -0
  135. package/src/util/widget-config.ts +2 -0
  136. package/src/util/widget-settings.ts +58 -0
  137. package/src/widgets/attribute-input-widget.ts +143 -0
  138. package/src/widgets/chart-widget.ts +203 -0
  139. package/src/widgets/gauge-widget.ts +111 -0
  140. package/src/widgets/image-widget.ts +180 -0
  141. package/src/widgets/kpi-widget.ts +97 -0
  142. package/src/widgets/map-widget.ts +187 -0
  143. package/src/widgets/table-widget.ts +157 -0
  144. package/tsconfig.json +15 -0
  145. package/tsconfig.tsbuildinfo +1 -0
  146. package/webpack.config.js +10 -0
@@ -0,0 +1 @@
1
+ var __decorate=this&&this.__decorate||function(t,e,i,n){var o,r=arguments.length,s=r<3?e:null===n?n=Object.getOwnPropertyDescriptor(e,i):n;if("object"==typeof Reflect&&"function"==typeof Reflect.decorate)s=Reflect.decorate(t,e,i,n);else for(var g=t.length-1;g>=0;g--)(o=t[g])&&(s=(r<3?o(s):r>3?o(e,i,s):o(e,i))||s);return r>3&&s&&Object.defineProperty(e,i,s),s};import{LitElement}from"lit";import{property}from"lit/decorators.js";import{style}from"../style";export class WidgetSettingsChangedEvent extends CustomEvent{constructor(t){super(WidgetSettingsChangedEvent.NAME,{bubbles:!0,composed:!0,detail:t})}}WidgetSettingsChangedEvent.NAME="settings-changed";export class WidgetSettings extends LitElement{static get styles(){return[style]}constructor(t){super(),this.widgetConfig=t}willUpdate(t){t.has("widgetConfig")&&this.widgetConfig&&this.dispatchEvent(new WidgetSettingsChangedEvent(this.widgetConfig))}notifyConfigUpdate(){this.requestUpdate("widgetConfig")}}__decorate([property()],WidgetSettings.prototype,"widgetConfig",void 0);
@@ -0,0 +1 @@
1
+ {"version":3,"file":"widget-settings.js","sourceRoot":"","sources":["../../src/util/widget-settings.ts"],"names":[],"mappings":";;;;;;AAAA,OAAO,EAAC,UAAU,EAAkC,MAAM,KAAK,CAAC;AAChE,OAAO,EAAE,QAAQ,EAAE,MAAM,mBAAmB,CAAC;AAE7C,OAAO,EAAC,KAAK,EAAC,MAAM,UAAU,CAAC;AAE/B,MAAM,OAAO,0BAA2B,SAAQ,WAAyB;IAIrE,YAAY,YAA0B;QAClC,KAAK,CAAC,0BAA0B,CAAC,IAAI,EAAE;YACnC,OAAO,EAAE,IAAI;YACb,QAAQ,EAAE,IAAI;YACd,MAAM,EAAE,YAAY;SACvB,CAAC,CAAC;IACP,CAAC;;AARsB,+BAAI,GAAG,kBAAkB,CAAC;AAYrD,MAAM,OAAgB,cAAe,SAAQ,UAAU;IAKnD,MAAM,KAAK,MAAM;QACb,OAAO,CAAC,KAAK,CAAC,CAAC;IACnB,CAAC;IAID,YAAY,MAAoB;QAC5B,KAAK,EAAE,CAAC;QACR,IAAI,CAAC,YAAY,GAAG,MAAM,CAAC;IAC/B,CAAC;IAGD,oFAAoF;IAC1E,UAAU,CAAC,YAA4B;QAC7C,IAAG,YAAY,CAAC,GAAG,CAAC,cAAc,CAAC,IAAI,IAAI,CAAC,YAAY,EAAE,CAAC;YACvD,IAAI,CAAC,aAAa,CAAC,IAAI,0BAA0B,CAAC,IAAI,CAAC,YAAY,CAAC,CAAC,CAAC;QAC1E,CAAC;IACL,CAAC;IAES,kBAAkB;QACxB,IAAI,CAAC,aAAa,CAAC,cAAc,CAAC,CAAC;IACvC,CAAC;CAYJ;AAnCsB;IADlB,QAAQ,EAAE;oDACmC"}
@@ -0,0 +1,24 @@
1
+ import { PropertyValues, TemplateResult } from "lit";
2
+ import { OrAssetWidget } from "../util/or-asset-widget";
3
+ import { WidgetConfig } from "../util/widget-config";
4
+ import { AttributeRef } from "@openremote/model";
5
+ import { WidgetManifest } from "../util/or-widget";
6
+ import "@openremote/or-attribute-input";
7
+ export interface AttributeInputWidgetConfig extends WidgetConfig {
8
+ attributeRefs: AttributeRef[];
9
+ readonly: boolean;
10
+ showHelperText: boolean;
11
+ }
12
+ export declare class AttributeInputWidget extends OrAssetWidget {
13
+ protected widgetConfig: AttributeInputWidgetConfig;
14
+ protected widgetWrapperElem?: HTMLElement;
15
+ protected attributeInputElems?: NodeList;
16
+ protected resizeObserver?: ResizeObserver;
17
+ static getManifest(): WidgetManifest;
18
+ refreshContent(force: boolean): void;
19
+ static get styles(): import("lit").CSSResult[];
20
+ disconnectedCallback(): void;
21
+ protected updated(changedProps: PropertyValues): void;
22
+ protected loadAssets(attributeRefs: AttributeRef[]): void;
23
+ protected render(): TemplateResult;
24
+ }
@@ -0,0 +1,31 @@
1
+ var AttributeInputWidget_1,__decorate=this&&this.__decorate||function(t,e,i,r){var s,n=arguments.length,o=n<3?e:null===r?r=Object.getOwnPropertyDescriptor(e,i):r;if("object"==typeof Reflect&&"function"==typeof Reflect.decorate)o=Reflect.decorate(t,e,i,r);else for(var d=t.length-1;d>=0;d--)(s=t[d])&&(o=(n<3?s(o):n>3?s(e,i,o):s(e,i))||o);return n>3&&o&&Object.defineProperty(e,i,o),o};import{css,html}from"lit";import{OrAssetWidget}from"../util/or-asset-widget";import{customElement,query,queryAll}from"lit/decorators.js";import{AttributeInputSettings}from"../settings/attribute-input-settings";import{when}from"lit/directives/when.js";import{throttle}from"lodash";import{Util}from"@openremote/core";import"@openremote/or-attribute-input";function getDefaultWidgetConfig(){return{attributeRefs:[],readonly:!1,showHelperText:!0}}const styling=css`
2
+ #widget-wrapper {
3
+ height: 100%;
4
+ display: flex;
5
+ justify-content: center;
6
+ align-items: center;
7
+ overflow: hidden;
8
+ }
9
+
10
+ .attr-input {
11
+ width: 100%;
12
+ box-sizing: border-box;
13
+ }
14
+ `;let AttributeInputWidget=AttributeInputWidget_1=class extends OrAssetWidget{static getManifest(){return{displayName:"Attribute",displayIcon:"form-textbox",getContentHtml:t=>new AttributeInputWidget_1(t),getDefaultConfig:()=>getDefaultWidgetConfig(),getSettingsHtml:t=>new AttributeInputSettings(t)}}refreshContent(t){this.widgetConfig=JSON.parse(JSON.stringify(this.widgetConfig))}static get styles(){return[...super.styles,styling]}disconnectedCallback(){var t;super.disconnectedCallback(),null===(t=this.resizeObserver)||void 0===t||t.disconnect(),delete this.resizeObserver}updated(t){if(t.has("widgetConfig")&&this.widgetConfig){const t=this.widgetConfig.attributeRefs;t.length>0&&!this.isAttributeRefLoaded(t[0])&&this.loadAssets(t)}return!this.resizeObserver&&this.widgetWrapperElem&&(this.resizeObserver=new ResizeObserver(throttle((()=>{window.dispatchEvent(new Event("resize"))}),200)),this.resizeObserver.observe(this.widgetWrapperElem)),super.updated(t)}loadAssets(t){this.fetchAssets(t).then((t=>{this.loadedAssets=t}))}render(){var t;const e=this.widgetConfig,i=e.attributeRefs.length>0&&(null===(t=this.loadedAssets[0])||void 0===t?void 0:t.attributes)?this.loadedAssets[0].attributes[e.attributeRefs[0].name]:void 0,r=Util.getMetaValue("readOnly",i);return html`
15
+ ${when(e.attributeRefs.length>0&&i&&this.loadedAssets&&this.loadedAssets.length>0,(()=>{var t,s;return html`
16
+ <div id="widget-wrapper">
17
+ <or-attribute-input class="attr-input" fullWidth
18
+ .assetType="${null===(t=this.loadedAssets[0])||void 0===t?void 0:t.type}"
19
+ .attribute="${i}"
20
+ .assetId="${null===(s=this.loadedAssets[0])||void 0===s?void 0:s.id}"
21
+ .disabled="${!this.loadedAssets}"
22
+ .readonly="${e.readonly||r||this.getEditMode()}"
23
+ .hasHelperText="${e.showHelperText}"
24
+ ></or-attribute-input>
25
+ </div>
26
+ `}),(()=>html`
27
+ <div style="height: 100%; display: flex; justify-content: center; align-items: center;">
28
+ <span><or-translate value="noAttributesConnected"></or-translate></span>
29
+ </div>
30
+ `))}
31
+ `}};__decorate([query("#widget-wrapper")],AttributeInputWidget.prototype,"widgetWrapperElem",void 0),__decorate([queryAll(".attr-input")],AttributeInputWidget.prototype,"attributeInputElems",void 0),AttributeInputWidget=AttributeInputWidget_1=__decorate([customElement("attribute-input-widget")],AttributeInputWidget);export{AttributeInputWidget};
@@ -0,0 +1 @@
1
+ {"version":3,"file":"attribute-input-widget.js","sourceRoot":"","sources":["../../src/widgets/attribute-input-widget.ts"],"names":[],"mappings":"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"}
@@ -0,0 +1,25 @@
1
+ import { AssetDatapointLTTBQuery, AssetDatapointQueryUnion, AttributeRef } from "@openremote/model";
2
+ import { PropertyValues, TemplateResult } from "lit";
3
+ import { OrAssetWidget } from "../util/or-asset-widget";
4
+ import { WidgetConfig } from "../util/widget-config";
5
+ import { WidgetManifest } from "../util/or-widget";
6
+ import "@openremote/or-chart";
7
+ export interface ChartWidgetConfig extends WidgetConfig {
8
+ attributeRefs: AttributeRef[];
9
+ rightAxisAttributes: AttributeRef[];
10
+ datapointQuery: AssetDatapointQueryUnion;
11
+ chartOptions?: any;
12
+ showTimestampControls: boolean;
13
+ defaultTimePresetKey: string;
14
+ showLegend: boolean;
15
+ }
16
+ export declare class ChartWidget extends OrAssetWidget {
17
+ protected datapointQuery: AssetDatapointQueryUnion;
18
+ protected widgetConfig: ChartWidgetConfig;
19
+ static getManifest(): WidgetManifest;
20
+ refreshContent(force: boolean): void;
21
+ protected willUpdate(changedProps: PropertyValues): void;
22
+ protected updated(changedProps: Map<string, any>): void;
23
+ protected render(): TemplateResult;
24
+ protected getDefaultQuery(): AssetDatapointLTTBQuery;
25
+ }
@@ -0,0 +1,15 @@
1
+ var ChartWidget_1,__decorate=this&&this.__decorate||function(t,e,i,s){var o,a=arguments.length,n=a<3?e:null===s?s=Object.getOwnPropertyDescriptor(e,i):s;if("object"==typeof Reflect&&"function"==typeof Reflect.decorate)n=Reflect.decorate(t,e,i,s);else for(var r=t.length-1;r>=0;r--)(o=t[r])&&(n=(a<3?o(n):a>3?o(e,i,n):o(e,i))||n);return a>3&&n&&Object.defineProperty(e,i,n),n};import{html}from"lit";import{when}from"lit/directives/when.js";import moment from"moment";import{OrAssetWidget}from"../util/or-asset-widget";import{customElement,state}from"lit/decorators.js";import{ChartSettings}from"../settings/chart-settings";import"@openremote/or-chart";function getDefaultTimePresetOptions(){return new Map([["lastHour",t=>[moment(t).subtract(1,"hour").toDate(),t]],["last24Hours",t=>[moment(t).subtract(24,"hours").toDate(),t]],["last7Days",t=>[moment(t).subtract(7,"days").toDate(),t]],["last30Days",t=>[moment(t).subtract(30,"days").toDate(),t]],["last90Days",t=>[moment(t).subtract(90,"days").toDate(),t]],["last6Months",t=>[moment(t).subtract(6,"months").toDate(),t]],["lastYear",t=>[moment(t).subtract(1,"year").toDate(),t]],["thisHour",t=>[moment(t).startOf("hour").toDate(),moment(t).endOf("hour").toDate()]],["thisDay",t=>[moment(t).startOf("day").toDate(),moment(t).endOf("day").toDate()]],["thisWeek",t=>[moment(t).startOf("isoWeek").toDate(),moment(t).endOf("isoWeek").toDate()]],["thisMonth",t=>[moment(t).startOf("month").toDate(),moment(t).endOf("month").toDate()]],["thisYear",t=>[moment(t).startOf("year").toDate(),moment(t).endOf("year").toDate()]],["yesterday",t=>[moment(t).subtract(24,"hours").startOf("day").toDate(),moment(t).subtract(24,"hours").endOf("day").toDate()]],["thisDayLastWeek",t=>[moment(t).subtract(1,"week").startOf("day").toDate(),moment(t).subtract(1,"week").endOf("day").toDate()]],["previousWeek",t=>[moment(t).subtract(1,"week").startOf("isoWeek").toDate(),moment(t).subtract(1,"week").endOf("isoWeek").toDate()]],["previousMonth",t=>[moment(t).subtract(1,"month").startOf("month").toDate(),moment(t).subtract(1,"month").endOf("month").toDate()]],["previousYear",t=>[moment(t).subtract(1,"year").startOf("year").toDate(),moment(t).subtract(1,"year").endOf("year").toDate()]]])}function getDefaultSamplingOptions(){return new Map([["lttb","lttb"],["withInterval","interval"]])}function getDefaultWidgetConfig(){const t="last24Hours",e=getDefaultTimePresetOptions().get(t)(new Date);return{attributeRefs:[],rightAxisAttributes:[],datapointQuery:{type:"lttb",fromTimestamp:e[0].getTime(),toTimestamp:e[1].getTime()},chartOptions:{options:{scales:{y:{min:void 0,max:void 0},y1:{min:void 0,max:void 0}}}},showTimestampControls:!1,defaultTimePresetKey:t,showLegend:!0}}let ChartWidget=ChartWidget_1=class extends OrAssetWidget{static getManifest(){return{displayName:"Line Chart",displayIcon:"chart-line",minColumnWidth:2,minColumnHeight:2,getContentHtml:t=>new ChartWidget_1(t),getSettingsHtml(t){const e=new ChartSettings(t);return e.setTimePresetOptions(getDefaultTimePresetOptions()),e.setSamplingOptions(getDefaultSamplingOptions()),e},getDefaultConfig:()=>getDefaultWidgetConfig()}}refreshContent(t){if(t)this.widgetConfig=JSON.parse(JSON.stringify(this.widgetConfig));else{const t=JSON.parse(JSON.stringify(this.widgetConfig.datapointQuery));t.fromTimestamp=void 0,t.toTimestamp=void 0,this.datapointQuery=t}}willUpdate(t){return this.widgetConfig.datapointQuery||(this.widgetConfig.datapointQuery=this.getDefaultQuery(),t.has("widgetConfig")||t.set("widgetConfig",this.widgetConfig)),t.has("widgetConfig")&&this.widgetConfig&&(this.datapointQuery=this.widgetConfig.datapointQuery),super.willUpdate(t)}updated(t){if(super.updated(t),t.has("widgetConfig")&&this.widgetConfig){const t=this.widgetConfig.attributeRefs;(null==t?void 0:t.filter((t=>!this.isAttributeRefLoaded(t)))).length>0&&this.fetchAssets(t).then((e=>{this.loadedAssets=e,this.assetAttributes=null==t?void 0:t.map((t=>{const i=e.findIndex((e=>e.id===t.id)),s=i>=0?e[i]:void 0;return s&&s.attributes?[i,s.attributes[t.name]]:void 0})).filter((t=>!!t))}))}return super.updated(t)}render(){return html`
2
+ ${when(this.loadedAssets&&this.assetAttributes&&this.loadedAssets.length>0&&this.assetAttributes.length>0,(()=>{var t,e,i,s,o;return html`
3
+ <or-chart .assets="${this.loadedAssets}" .assetAttributes="${this.assetAttributes}" .rightAxisAttributes="${this.widgetConfig.rightAxisAttributes}"
4
+ .showLegend="${null==(null===(t=this.widgetConfig)||void 0===t?void 0:t.showLegend)||(null===(e=this.widgetConfig)||void 0===e?void 0:e.showLegend)}"
5
+ .attributeControls="${!1}" .timestampControls="${!(null===(i=this.widgetConfig)||void 0===i?void 0:i.showTimestampControls)}"
6
+ .timePresetOptions="${getDefaultTimePresetOptions()}" .timePresetKey="${null===(s=this.widgetConfig)||void 0===s?void 0:s.defaultTimePresetKey}"
7
+ .datapointQuery="${this.datapointQuery}" .chartOptions="${null===(o=this.widgetConfig)||void 0===o?void 0:o.chartOptions}"
8
+ style="height: 100%"
9
+ ></or-chart>
10
+ `}),(()=>html`
11
+ <div style="height: 100%; display: flex; justify-content: center; align-items: center;">
12
+ <span><or-translate value="noAttributesConnected"></or-translate></span>
13
+ </div>
14
+ `))}
15
+ `}getDefaultQuery(){return{type:"lttb",fromTimestamp:moment().set("minute",-60).toDate().getTime(),toTimestamp:moment().set("minute",60).toDate().getTime()}}};__decorate([state()],ChartWidget.prototype,"datapointQuery",void 0),ChartWidget=ChartWidget_1=__decorate([customElement("chart-widget")],ChartWidget);export{ChartWidget};
@@ -0,0 +1 @@
1
+ {"version":3,"file":"chart-widget.js","sourceRoot":"","sources":["../../src/widgets/chart-widget.ts"],"names":[],"mappings":"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"}
@@ -0,0 +1,22 @@
1
+ import { TemplateResult } from "lit";
2
+ import { OrAssetWidget } from "../util/or-asset-widget";
3
+ import { WidgetConfig } from "../util/widget-config";
4
+ import { AttributeRef } from "@openremote/model";
5
+ import { WidgetManifest } from "../util/or-widget";
6
+ import "@openremote/or-gauge";
7
+ export interface GaugeWidgetConfig extends WidgetConfig {
8
+ attributeRefs: AttributeRef[];
9
+ thresholds: [number, string][];
10
+ decimals: number;
11
+ min: number;
12
+ max: number;
13
+ valueType: string;
14
+ }
15
+ export declare class GaugeWidget extends OrAssetWidget {
16
+ protected widgetConfig: GaugeWidgetConfig;
17
+ static getManifest(): WidgetManifest;
18
+ refreshContent(force: boolean): void;
19
+ protected updated(changedProps: Map<string, any>): void;
20
+ protected loadAssets(attributeRefs: AttributeRef[]): void;
21
+ protected render(): TemplateResult;
22
+ }
@@ -0,0 +1,12 @@
1
+ var GaugeWidget_1,__decorate=this&&this.__decorate||function(t,e,i,s){var n,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 g=t.length-1;g>=0;g--)(n=t[g])&&(a=(r<3?n(a):r>3?n(e,i,a):n(e,i))||a);return r>3&&a&&Object.defineProperty(e,i,a),a};import{html}from"lit";import{customElement}from"lit/decorators.js";import{OrAssetWidget}from"../util/or-asset-widget";import{GaugeSettings}from"../settings/gauge-settings";import{when}from"lit/directives/when.js";import"@openremote/or-gauge";function getDefaultWidgetConfig(){return{attributeRefs:[],thresholds:[[0,"#4caf50"],[75,"#ff9800"],[90,"#ef5350"]],decimals:0,min:0,max:100,valueType:"number"}}let GaugeWidget=GaugeWidget_1=class extends OrAssetWidget{static getManifest(){return{displayName:"Gauge",displayIcon:"gauge",minColumnWidth:1,minColumnHeight:1,getContentHtml:t=>new GaugeWidget_1(t),getSettingsHtml:t=>new GaugeSettings(t),getDefaultConfig:()=>getDefaultWidgetConfig()}}refreshContent(t){this.loadAssets(this.widgetConfig.attributeRefs)}updated(t){if(super.updated(t),t.has("widgetConfig")&&this.widgetConfig){const t=this.widgetConfig.attributeRefs,e=null==t?void 0:t.filter((t=>this.isAttributeRefLoaded(t)));(null==e?void 0:e.length)!==(t?t.length:0)&&this.loadAssets(t)}return super.updated(t)}loadAssets(t){this.fetchAssets(t).then((e=>{this.loadedAssets=e,this.assetAttributes=null==t?void 0:t.map((t=>{const i=e.findIndex((e=>e.id===t.id)),s=i>=0?e[i]:void 0;return s&&s.attributes?[i,s.attributes[t.name]]:void 0})).filter((t=>!!t))}))}render(){return html`
2
+ ${when(this.loadedAssets&&this.assetAttributes&&this.loadedAssets.length>0&&this.assetAttributes.length>0,(()=>html`
3
+ <or-gauge .asset="${this.loadedAssets[0]}" .assetAttribute="${this.assetAttributes[0]}" .thresholds="${this.widgetConfig.thresholds}"
4
+ .decimals="${this.widgetConfig.decimals}" .min="${this.widgetConfig.min}" .max="${this.widgetConfig.max}"
5
+ style="height: 100%; overflow: hidden;">
6
+ </or-gauge>
7
+ `),(()=>html`
8
+ <div style="height: 100%; display: flex; justify-content: center; align-items: center;">
9
+ <span><or-translate value="noAttributeConnected"></or-translate></span>
10
+ </div>
11
+ `))}
12
+ `}};GaugeWidget=GaugeWidget_1=__decorate([customElement("gauge-widget")],GaugeWidget);export{GaugeWidget};
@@ -0,0 +1 @@
1
+ {"version":3,"file":"gauge-widget.js","sourceRoot":"","sources":["../../src/widgets/gauge-widget.ts"],"names":[],"mappings":"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"}
@@ -0,0 +1,25 @@
1
+ import { WidgetConfig } from "../util/widget-config";
2
+ import { AttributeRef } from "@openremote/model";
3
+ import { WidgetManifest } from "../util/or-widget";
4
+ import { CSSResult, PropertyValues, TemplateResult } from "lit";
5
+ import { OrAssetWidget } from "../util/or-asset-widget";
6
+ export interface ImageAssetMarker {
7
+ attributeRef: AttributeRef;
8
+ coordinates: [number, number];
9
+ }
10
+ export interface ImageWidgetConfig extends WidgetConfig {
11
+ attributeRefs: AttributeRef[];
12
+ markers: ImageAssetMarker[];
13
+ showTimestampControls: boolean;
14
+ imagePath: string;
15
+ }
16
+ export declare class ImageWidget extends OrAssetWidget {
17
+ protected readonly widgetConfig: ImageWidgetConfig;
18
+ static getManifest(): WidgetManifest;
19
+ refreshContent(force: boolean): void;
20
+ static get styles(): CSSResult[];
21
+ updated(changedProps: PropertyValues): void;
22
+ protected loadAssets(): void;
23
+ protected handleMarkerPlacement(config: ImageWidgetConfig): TemplateResult<1>[] | undefined;
24
+ protected render(): TemplateResult;
25
+ }
@@ -0,0 +1,54 @@
1
+ var ImageWidget_1,__decorate=this&&this.__decorate||function(t,e,i,r){var s,o=arguments.length,a=o<3?e:null===r?r=Object.getOwnPropertyDescriptor(e,i):r;if("object"==typeof Reflect&&"function"==typeof Reflect.decorate)a=Reflect.decorate(t,e,i,r);else for(var n=t.length-1;n>=0;n--)(s=t[n])&&(a=(o<3?s(a):o>3?s(e,i,a):s(e,i))||a);return o>3&&a&&Object.defineProperty(e,i,a),a};import{AssetModelUtil}from"@openremote/model";import{customElement}from"lit/decorators.js";import{css,html,unsafeCSS}from"lit";import{OrAssetWidget}from"../util/or-asset-widget";import{ImageSettings}from"../settings/image-settings";import{when}from"lit/directives/when.js";import{DefaultColor2,DefaultColor3,Util}from"@openremote/core";import{styleMap}from"lit/directives/style-map.js";const styling=css`
2
+ #img-wrapper {
3
+ height: 100%;
4
+ width: 100%;
5
+ display: flex;
6
+ flex-direction: column;
7
+ justify-content: center;
8
+ align-items: center;
9
+ overflow: hidden;
10
+ z-index: 1;
11
+ }
12
+
13
+ #img-container {
14
+ position: relative;
15
+ max-height: 100%;
16
+ }
17
+
18
+ #img-content {
19
+ height: 100%;
20
+ max-height: 100%;
21
+ max-width: 100%;
22
+ }
23
+
24
+ #overlay {
25
+ position: absolute;
26
+ z-index: 3;
27
+
28
+ /* additional marker styling */
29
+ color: var(--or-app-color2, ${unsafeCSS(DefaultColor2)});
30
+ background-color: var(--or-app-color3, ${unsafeCSS(DefaultColor3)});
31
+ border-radius: 15px;
32
+ padding: 3px 8px 5px 8px;
33
+ object-fit: contain;
34
+ text-overflow: ellipsis;
35
+ white-space: nowrap;
36
+ }
37
+ `;function getDefaultWidgetConfig(){return{attributeRefs:[],showTimestampControls:!1,imagePath:"",markers:[]}}let ImageWidget=ImageWidget_1=class extends OrAssetWidget{static getManifest(){return{displayName:"Image",displayIcon:"file-image-marker",minColumnWidth:1,minColumnHeight:1,getContentHtml:t=>new ImageWidget_1(t),getSettingsHtml:t=>new ImageSettings(t),getDefaultConfig:()=>getDefaultWidgetConfig()}}refreshContent(t){this.loadAssets()}static get styles(){return[...super.styles,styling]}updated(t){if(t.has("widgetConfig")&&this.widgetConfig){const t=this.widgetConfig.attributeRefs;(null==t?void 0:t.filter((t=>!this.isAttributeRefLoaded(t)))).length>0&&this.loadAssets()}}loadAssets(){this.fetchAssets(this.widgetConfig.attributeRefs).then((t=>{this.loadedAssets=t,this.assetAttributes=this.widgetConfig.attributeRefs.map((e=>{const i=t.findIndex((t=>t.id===e.id)),r=i>=0?t[i]:void 0;return r&&r.attributes?[i,r.attributes[e.name]]:void 0})).filter((t=>!!t))}))}handleMarkerPlacement(t){if(this.assetAttributes.length&&t.attributeRefs.length>0)return 0===t.markers.length?(console.error("No markers found!"),[]):t.attributeRefs.map(((e,i)=>{const r=t.markers.find((t=>t.attributeRef.id===e.id&&t.attributeRef.name===e.name)),s=this.loadedAssets.find((t=>t.id===e.id));let o;const a={left:`${r.coordinates[0]}%`,top:`${r.coordinates[1]}%`};if(s){const t=s.attributes[e.name],i=AssetModelUtil.getAttributeAndValueDescriptors(s.type,e.name,t);o=Util.getAttributeValueAsString(t,i[0],s.type,!0,"-"),"colourRGB"===(null==t?void 0:t.type)&&"-"!==o&&(a.backgroundColor=o,a.minHeight="21px",a.minWidth="13px",o=void 0)}return html`
38
+ <span id="overlay" style="${styleMap(a)}">
39
+ ${o}
40
+ </span>
41
+ `}))}render(){const t=this.widgetConfig.imagePath;return html`
42
+ <div id="img-wrapper">
43
+ ${when(t,(()=>html`
44
+ <div id="img-container">
45
+ <img id="img-content" src="${t}" alt=""/>
46
+ <div>
47
+ ${this.handleMarkerPlacement(this.widgetConfig)}
48
+ </div>
49
+ </div>
50
+ `),(()=>html`
51
+ <span><or-translate value="dashboard.noImageSelected"></or-translate></span>
52
+ `))}
53
+ </div>
54
+ `}};ImageWidget=ImageWidget_1=__decorate([customElement("image-widget")],ImageWidget);export{ImageWidget};
@@ -0,0 +1 @@
1
+ {"version":3,"file":"image-widget.js","sourceRoot":"","sources":["../../src/widgets/image-widget.ts"],"names":[],"mappings":"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"}
@@ -0,0 +1,21 @@
1
+ import { OrAssetWidget } from "../util/or-asset-widget";
2
+ import { WidgetManifest } from "../util/or-widget";
3
+ import { WidgetConfig } from "../util/widget-config";
4
+ import { AttributeRef } from "@openremote/model";
5
+ import { TemplateResult } from "lit";
6
+ import "@openremote/or-attribute-card";
7
+ export interface KpiWidgetConfig extends WidgetConfig {
8
+ attributeRefs: AttributeRef[];
9
+ period?: 'year' | 'month' | 'week' | 'day' | 'hour';
10
+ decimals: number;
11
+ deltaFormat: "absolute" | "percentage";
12
+ showTimestampControls: boolean;
13
+ }
14
+ export declare class KpiWidget extends OrAssetWidget {
15
+ protected widgetConfig: KpiWidgetConfig;
16
+ static getManifest(): WidgetManifest;
17
+ refreshContent(force: boolean): void;
18
+ protected updated(changedProps: Map<string, any>): void;
19
+ protected loadAssets(attributeRefs: AttributeRef[]): void;
20
+ protected render(): TemplateResult;
21
+ }
@@ -0,0 +1,8 @@
1
+ var KpiWidget_1,__decorate=this&&this.__decorate||function(t,e,i,s){var o,r=arguments.length,d=r<3?e:null===s?s=Object.getOwnPropertyDescriptor(e,i):s;if("object"==typeof Reflect&&"function"==typeof Reflect.decorate)d=Reflect.decorate(t,e,i,s);else for(var n=t.length-1;n>=0;n--)(o=t[n])&&(d=(r<3?o(d):r>3?o(e,i,d):o(e,i))||d);return r>3&&d&&Object.defineProperty(e,i,d),d};import{customElement}from"lit/decorators.js";import{OrAssetWidget}from"../util/or-asset-widget";import{html}from"lit";import{KpiSettings}from"../settings/kpi-settings";import"@openremote/or-attribute-card";function getDefaultWidgetConfig(){return{attributeRefs:[],period:"day",decimals:0,deltaFormat:"absolute",showTimestampControls:!1}}let KpiWidget=KpiWidget_1=class extends OrAssetWidget{static getManifest(){return{displayName:"KPI",displayIcon:"label",minColumnWidth:1,minColumnHeight:1,getContentHtml:t=>new KpiWidget_1(t),getSettingsHtml:t=>new KpiSettings(t),getDefaultConfig:()=>getDefaultWidgetConfig()}}refreshContent(t){this.loadAssets(this.widgetConfig.attributeRefs)}updated(t){if(super.updated(t),t.has("widgetConfig")&&this.widgetConfig){const t=this.widgetConfig.attributeRefs,e=null==t?void 0:t.filter((t=>this.isAttributeRefLoaded(t)));(null==e?void 0:e.length)!==(t?t.length:0)&&this.loadAssets(t)}return super.updated(t)}loadAssets(t){this.fetchAssets(t).then((e=>{this.loadedAssets=e,this.assetAttributes=null==t?void 0:t.map((t=>{const i=e.findIndex((e=>e.id===t.id)),s=i>=0?e[i]:void 0;return s&&s.attributes?[i,s.attributes[t.name]]:void 0})).filter((t=>!!t))}))}render(){var t;return html`
2
+ <div style="height: 100%; overflow: hidden;">
3
+ <or-attribute-card .assets="${this.loadedAssets}" .assetAttributes="${this.assetAttributes}" .period="${this.widgetConfig.period}"
4
+ .deltaFormat="${this.widgetConfig.deltaFormat}" .mainValueDecimals="${this.widgetConfig.decimals}"
5
+ showControls="${null===(t=this.widgetConfig)||void 0===t?void 0:t.showTimestampControls}" showTitle="${!1}" style="height: 100%;">
6
+ </or-attribute-card>
7
+ </div>
8
+ `}};KpiWidget=KpiWidget_1=__decorate([customElement("kpi-widget")],KpiWidget);export{KpiWidget};
@@ -0,0 +1 @@
1
+ {"version":3,"file":"kpi-widget.js","sourceRoot":"","sources":["../../src/widgets/kpi-widget.ts"],"names":[],"mappings":"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"}
@@ -0,0 +1,39 @@
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 { Asset, AssetDescriptor, AttributeRef } from "@openremote/model";
6
+ import { LngLatLike, MapMarkerColours } from "@openremote/or-map";
7
+ import "@openremote/or-map";
8
+ export interface MapWidgetConfig extends WidgetConfig {
9
+ attributeRefs: AttributeRef[];
10
+ zoom?: number;
11
+ center?: LngLatLike;
12
+ lat?: number;
13
+ lng?: number;
14
+ showLabels: boolean;
15
+ showUnits: boolean;
16
+ showGeoJson: boolean;
17
+ boolColors: MapMarkerColours;
18
+ textColors: [string, string][];
19
+ thresholds: [number, string][];
20
+ min?: number;
21
+ max?: number;
22
+ assetType?: string;
23
+ valueType?: string;
24
+ attributeName?: string;
25
+ assetTypes: AssetDescriptor[];
26
+ assetIds: string[];
27
+ attributes: string[];
28
+ }
29
+ export declare class MapWidget extends OrAssetWidget {
30
+ protected widgetConfig: MapWidgetConfig;
31
+ private markers;
32
+ static getManifest(): WidgetManifest;
33
+ refreshContent(force: boolean): void;
34
+ protected updated(changedProps: PropertyValues): void;
35
+ protected loadAssets(): Promise<void>;
36
+ protected fetchAssetsByType(assetTypes: string[], attributeName: string): Promise<Asset[]>;
37
+ protected render(): TemplateResult;
38
+ protected getMarkerTemplates(): TemplateResult[];
39
+ }
@@ -0,0 +1,9 @@
1
+ var MapWidget_1,__decorate=this&&this.__decorate||function(e,t,s,i){var o,r=arguments.length,a=r<3?t:null===i?i=Object.getOwnPropertyDescriptor(t,s):i;if("object"==typeof Reflect&&"function"==typeof Reflect.decorate)a=Reflect.decorate(e,t,s,i);else for(var n=e.length-1;n>=0;n--)(o=e[n])&&(a=(r<3?o(a):r>3?o(t,s,a):o(t,s))||a);return r>3&&a&&Object.defineProperty(t,s,a),a},__awaiter=this&&this.__awaiter||function(e,t,s,i){return new(s||(s=Promise))((function(o,r){function a(e){try{l(i.next(e))}catch(e){r(e)}}function n(e){try{l(i.throw(e))}catch(e){r(e)}}function l(e){var t;e.done?o(e.value):(t=e.value,t instanceof s?t:new s((function(e){e(t)}))).then(a,n)}l((i=i.apply(e,t||[])).next())}))};import{html}from"lit";import{customElement}from"lit/decorators.js";import{OrAssetWidget}from"../util/or-asset-widget";import{MapSettings}from"../settings/map-settings";import{when}from"lit/directives/when.js";import manager,{Util}from"@openremote/core";import{showSnackbar}from"@openremote/or-mwc-components/or-mwc-snackbar";import"@openremote/or-map";function getDefaultWidgetConfig(){return{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:[]}}let MapWidget=MapWidget_1=class extends OrAssetWidget{constructor(){super(...arguments),this.markers={}}static getManifest(){return{displayName:"Map",displayIcon:"map",minColumnWidth:2,minColumnHeight:2,getContentHtml:e=>new MapWidget_1(e),getSettingsHtml:e=>new MapSettings(e),getDefaultConfig:()=>getDefaultWidgetConfig()}}refreshContent(e){this.loadAssets()}updated(e){e.has("widgetConfig")&&this.widgetConfig&&this.loadAssets()}loadAssets(){return __awaiter(this,void 0,void 0,(function*(){this.widgetConfig.assetType&&this.widgetConfig.attributeName&&this.fetchAssetsByType([this.widgetConfig.assetType],this.widgetConfig.attributeName).then((e=>{this.loadedAssets=e}))}))}fetchAssetsByType(e,t){return __awaiter(this,void 0,void 0,(function*(){let s=[];return yield manager.rest.api.AssetResource.queryAssets({realm:{name:manager.displayRealm},select:{attributes:[t,"location"]},types:e}).then((e=>{s=e.data,this.markers={}})).catch((e=>{console.error(e),showSnackbar(void 0,"errorOccurred")})),s}))}render(){return html`
2
+ <div style="height: 100%; display: flex; flex-direction: column; overflow: hidden;">
3
+ <or-map id="miniMap" class="or-map" .zoom="${this.widgetConfig.zoom}" .center="${this.widgetConfig.center}" .showGeoJson="${this.widgetConfig.showGeoJson}" style="flex: 1;">
4
+ ${when(this.loadedAssets,(()=>this.getMarkerTemplates()))}
5
+ </or-map>
6
+ </div>
7
+ `}getMarkerTemplates(){return this.loadedAssets.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.widgetConfig.attributeName},this.markers[e.type].showUnits=this.widgetConfig.showUnits,this.markers[e.type].showLabel=this.widgetConfig.showLabels,"boolean"==this.widgetConfig.valueType)this.widgetConfig.boolColors.true=this.widgetConfig.boolColors.true.replace("#",""),this.widgetConfig.boolColors.false=this.widgetConfig.boolColors.false.replace("#",""),this.markers[e.type].colours=this.widgetConfig.boolColors;else if("text"==this.widgetConfig.valueType){var t={type:"string"};this.widgetConfig.textColors.map((e=>{t[e[0]]=e[1].replace("#","")})),this.markers[e.type].colours=t}else{var s=[];this.widgetConfig.thresholds.sort(((e,t)=>e[0]>t[0]?-1:1)).map(((e,t)=>{var i={min:e[0],colour:e[1].replace("#","")};s.push(i)}));var i={type:"range",ranges:s};this.markers[e.type].colours=i}return html`
8
+ <or-map-marker-asset .asset="${e}" .config="${this.markers}"></or-map-marker-asset>
9
+ `}))}};MapWidget=MapWidget_1=__decorate([customElement("map-widget")],MapWidget);export{MapWidget};
@@ -0,0 +1 @@
1
+ {"version":3,"file":"map-widget.js","sourceRoot":"","sources":["../../src/widgets/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.20240512154942",
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.20240512154942",
20
+ "@openremote/model": "1.2.0-snapshot.20240512154942",
21
+ "@openremote/or-chart": "1.2.0-snapshot.20240512154942",
22
+ "@openremote/rest": "1.2.0-snapshot.20240512154942",
23
+ "gridstack": "^7.2.0",
24
+ "lit": "^2.0.2"
25
+ },
26
+ "devDependencies": {
27
+ "@openremote/util": "1.2.0-snapshot.20240512154942"
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
+ }