@openremote/or-dashboard-builder 1.2.0 → 1.2.2

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.
@@ -12,7 +12,12 @@ export interface GatewayWidgetConfig extends WidgetConfig {
12
12
  export declare class GatewayWidget extends OrWidget {
13
13
  protected widgetConfig: GatewayWidgetConfig;
14
14
  protected _loading: boolean;
15
+ /**
16
+ * Cache of the active {@link GatwayTunnelInfo} we receive from the HTTP API.
17
+ * It contains all necessary information, such as ID, assigned port, target information, and autoCloseTime.
18
+ */
15
19
  protected _activeTunnel?: GatewayTunnelInfo;
20
+ protected _isReady: boolean;
16
21
  protected _startedByUser: boolean;
17
22
  protected _refreshTimer?: number;
18
23
  static getManifest(): WidgetManifest;
@@ -36,7 +41,7 @@ export declare class GatewayWidget extends OrWidget {
36
41
  /**
37
42
  * HTML callback function when 'open' button is pressed, meant to start using the tunnel.
38
43
  */
39
- protected _onTunnelNavigateClick(ev: OrInputChangedEvent): void;
44
+ protected _onTunnelNavigateClick(ev: OrInputChangedEvent, activeTunnel?: GatewayTunnelInfo): void;
40
45
  /**
41
46
  * Internal function to set the active tunnel.
42
47
  * Navigates the user to the tunnel after updating. This can be disabled using the {@link silent} parameter.
@@ -56,6 +61,15 @@ export declare class GatewayWidget extends OrWidget {
56
61
  * Returns `undefined` if no tunnel could be found on the Manager instance.
57
62
  */
58
63
  protected _getActiveTunnel(info: GatewayTunnelInfo): Promise<GatewayTunnelInfo | undefined>;
64
+ /**
65
+ * Internal function that requests the Manager API for the gatewayStatus of the gatewayId asset in {@link GatewayTunnelInfo}.
66
+ * Returns undefined if there is misalignment in the linked asset id or unexpected http code.
67
+ */
68
+ protected _getGatewayStatus(info: GatewayTunnelInfo): Promise<string | undefined>;
69
+ /**
70
+ * Function that tries to check the gateway status and sets the ready flag to true only if connected.
71
+ */
72
+ protected _readyCheck(config: GatewayWidgetConfig): void;
59
73
  /**
60
74
  * Function that tries to destroy the currently active tunnel.
61
75
  */
@@ -71,6 +85,7 @@ export declare class GatewayWidget extends OrWidget {
71
85
  protected _navigateToTunnel(info: GatewayTunnelInfo): void;
72
86
  /**
73
87
  * Internal function to get the tunnel address based on {@link GatewayTunnelInfo}
88
+ * WARNING: Could return incorrect address if not all fields are set.
74
89
  */
75
90
  protected _getTunnelAddress(info: GatewayTunnelInfo): string | undefined;
76
91
  /**
@@ -80,6 +95,7 @@ export declare class GatewayWidget extends OrWidget {
80
95
  protected _isConfigComplete(widgetConfig: GatewayWidgetConfig): boolean;
81
96
  /**
82
97
  * Internal function that parses a {@link GatewayWidgetConfig} into a new {@link GatewayTunnelInfo}.
98
+ * Be aware: this does not information received from the HTTP API such as ID, assigned port, etc. Please use {@link _activeTunnel} for this.
83
99
  */
84
100
  protected _getTunnelInfoByConfig(config: GatewayWidgetConfig): GatewayTunnelInfo;
85
101
  }
@@ -16,7 +16,7 @@ var GatewayWidget_1,__decorate=this&&this.__decorate||function(t,e,n,i){var o,a=
16
16
  flex-wrap: wrap;
17
17
  position: relative;
18
18
  }
19
- `;function getDefaultWidgetConfig(){return{type:"HTTPS",target:"localhost",targetPort:443}}let GatewayWidget=GatewayWidget_1=class extends OrWidget{constructor(){super(...arguments),this._loading=!0,this._startedByUser=!1,this._refreshTimer=void 0}static getManifest(){return{displayName:"Gateway",displayIcon:"lan-connect",minColumnWidth:1,minColumnHeight:1,getContentHtml:t=>new GatewayWidget_1(t),getSettingsHtml:t=>new GatewaySettings(t),getDefaultConfig:()=>getDefaultWidgetConfig()}}refreshContent(t){this.widgetConfig=JSON.parse(JSON.stringify(this.widgetConfig))}static get styles(){return[...super.styles,styling]}disconnectedCallback(){this._activeTunnel&&(this._startedByUser?this._stopTunnel(this._activeTunnel).then((()=>{console.warn("Stopped the active tunnel, as it was created through the widget.")})):console.warn("Keeping the active tunnel open, as it is not started through the widget.")),this._refreshTimer&&clearTimeout(this._refreshTimer),super.disconnectedCallback()}firstUpdated(t){return this.widgetConfig&&setTimeout((()=>{const t=this._getTunnelInfoByConfig(this.widgetConfig);this._getActiveTunnel(t).then((t=>{t&&(console.log("Existing tunnel found!",t),this._setActiveTunnel(t,!0))})).catch((t=>{console.error(t)})).finally((()=>{this._loading=!1}))}),500),super.firstUpdated(t)}render(){var t;const e=(null===(t=this.getEditMode)||void 0===t?void 0:t.call(this))||!this._isConfigComplete(this.widgetConfig);return html`
19
+ `;function getDefaultWidgetConfig(){return{type:"HTTPS",target:"localhost",targetPort:443}}let GatewayWidget=GatewayWidget_1=class extends OrWidget{constructor(){super(...arguments),this._loading=!0,this._isReady=!1,this._startedByUser=!1,this._refreshTimer=void 0}static getManifest(){return{displayName:"Gateway",displayIcon:"lan-connect",minColumnWidth:1,minColumnHeight:1,getContentHtml:t=>new GatewayWidget_1(t),getSettingsHtml:t=>new GatewaySettings(t),getDefaultConfig:()=>getDefaultWidgetConfig()}}refreshContent(t){this.widgetConfig=JSON.parse(JSON.stringify(this.widgetConfig)),this._readyCheck(this.widgetConfig)}static get styles(){return[...super.styles,styling]}disconnectedCallback(){this._activeTunnel&&(this._startedByUser?this._stopTunnel(this._activeTunnel).then((()=>{console.warn("Stopped the active tunnel, as it was created through the widget.")})):console.warn("Keeping the active tunnel open, as it is not started through the widget.")),this._refreshTimer&&clearTimeout(this._refreshTimer),super.disconnectedCallback()}firstUpdated(t){if(this.widgetConfig){const t=this._getTunnelInfoByConfig(this.widgetConfig);this._readyCheck(this.widgetConfig),setTimeout((()=>{this._getActiveTunnel(t).then((t=>{t&&(console.log("Existing tunnel found!",t),this._setActiveTunnel(t,!0))})).catch((t=>{console.error(t)})).finally((()=>{this._loading=!1}))}),500)}return super.firstUpdated(t)}render(){var t;this._getTunnelInfoByConfig(this.widgetConfig);const e=(null===(t=this.getEditMode)||void 0===t?void 0:t.call(this))||!this._isConfigComplete(this.widgetConfig)||!this._isReady;return html`
20
20
  <div id="gateway-widget-wrapper">
21
21
  <div id="gateway-widget-container">
22
22
  ${when(this._loading,(()=>html`
@@ -33,7 +33,7 @@ var GatewayWidget_1,__decorate=this&&this.__decorate||function(t,e,n,i){var o,a=
33
33
  ></or-mwc-input>
34
34
  `),(()=>html`
35
35
  <or-mwc-input .type="${InputType.BUTTON}" icon="open-in-new" label="${i18next.t("gatewayTunnels.open")}" outlined .disabled="${e}"
36
- @or-mwc-input-changed="${t=>this._onTunnelNavigateClick(t)}"
36
+ @or-mwc-input-changed="${t=>this._onTunnelNavigateClick(t,this._activeTunnel)}"
37
37
  ></or-mwc-input>
38
38
  `))}
39
39
  </div>
@@ -41,10 +41,10 @@ var GatewayWidget_1,__decorate=this&&this.__decorate||function(t,e,n,i){var o,a=
41
41
  <div><or-translate value="gatewayTunnels.closesAt"></or-translate>: ${moment(null===(t=this._activeTunnel)||void 0===t?void 0:t.autoCloseTime).format("lll")}</div>
42
42
  `}))}
43
43
  `:html`
44
- <or-mwc-input .type="${InputType.BUTTON}" label="${i18next.t("gatewayTunnels.start")}" outlined .disabled="${e}"
44
+ <or-mwc-input .type="${InputType.BUTTON}" label="${e?i18next.t("gatewayTunnels.offline"):i18next.t("gatewayTunnels.start")}" outlined .disabled="${e}"
45
45
  @or-mwc-input-changed="${t=>this._onStartTunnelClick(t)}"
46
46
  ></or-mwc-input>
47
47
  `}))}
48
48
  </div>
49
49
  </div>
50
- `}_onCopyTunnelAddressClick(t){if(this._isConfigComplete(this.widgetConfig)){const t=this._getTunnelInfoByConfig(this.widgetConfig),e=this._getTunnelAddress(t);e?navigator.clipboard.writeText(e).finally((()=>{showSnackbar(void 0,i18next.t("gatewayTunnels.copySuccess"))})):(console.warn("Could not copy tunnel address as it could not be found."),showSnackbar(void 0,i18next.t("errorOccurred")))}else console.warn("Could not copy tunnel address as configuration is not complete."),showSnackbar(void 0,i18next.t("errorOccurred"))}_onStartTunnelClick(t){this._tryStartTunnel(this.widgetConfig)}_onStopTunnelClick(t){this._tryStopTunnel(this.widgetConfig)}_onTunnelNavigateClick(t){this._isConfigComplete(this.widgetConfig)?this._navigateToTunnel(this._getTunnelInfoByConfig(this.widgetConfig)):console.warn("Could not navigate to tunnel as configuration is not complete.")}_setActiveTunnel(t,e=!1){if(this._activeTunnel=t,this._refreshTimer&&clearTimeout(this._refreshTimer),null==t?void 0:t.autoCloseTime){const e=(null==t?void 0:t.autoCloseTime)-Date.now();e>0&&(this._refreshTimer=window.setTimeout((()=>{this._getActiveTunnel(this._getTunnelInfoByConfig(this.widgetConfig)).then((t=>{t?this._setActiveTunnel(t,!0):this._setActiveTunnel(void 0)}))}),e))}t&&!e&&this._navigateToTunnel(t)}_tryStartTunnel(t){if(this._isConfigComplete(t)){const e=this._getTunnelInfoByConfig(t);this._loading=!0,this._getActiveTunnel(e).then((t=>{t?(console.log("Found an active tunnel!",t),this._setActiveTunnel(t),this._loading=!1):this._startTunnel(e).then((t=>{t?(console.log("Started a new tunnel!",t),this._setActiveTunnel(t),this._startedByUser=!0):console.warn("No new tunnel!")})).catch((t=>{console.error(t),showSnackbar(void 0,i18next.t("errorOccurred"))})).finally((()=>{this._loading=!1}))})).catch((t=>{console.error(t),showSnackbar(void 0,i18next.t("errorOccurred")),this._loading=!1}))}}_startTunnel(t){return __awaiter(this,void 0,void 0,(function*(){if(!(t.realm&&t.gatewayId&&t.target&&t.targetPort))throw new Error("Could not start tunnel, as some provided information was not set.");return(yield manager.rest.api.GatewayServiceResource.startTunnel(t)).data}))}_getActiveTunnel(t){return __awaiter(this,void 0,void 0,(function*(){if(!(t.realm&&t.gatewayId&&t.target&&t.targetPort))throw new Error("Could not get active tunnel, as some provided information was not set.");const e=yield manager.rest.api.GatewayServiceResource.getActiveTunnelInfo(t.realm,t.gatewayId,t.target,t.targetPort);return 204===e.status?void 0:e.data}))}_tryStopTunnel(t){const e=this._getTunnelInfoByConfig(t);this._loading=!0,this._stopTunnel(e).then((()=>{this._setActiveTunnel(void 0),this._startedByUser=!1})).catch((t=>{console.warn(t)})).finally((()=>{this._loading=!1}))}_stopTunnel(t){return __awaiter(this,void 0,void 0,(function*(){return(yield manager.rest.api.GatewayServiceResource.stopTunnel(t)).data}))}_navigateToTunnel(t){var e;t.realm&&t.gatewayId&&t.target&&t.targetPort||console.warn("Could not navigate to tunnel, as some provided information was not set.");const n=this._getTunnelAddress(t);switch(t.type){case"HTTPS":case"HTTP":null===(e=window.open(n))||void 0===e||e.focus();break;default:console.error("Unknown error when navigating to tunnel.")}}_getTunnelAddress(t){switch(t.type){case"HTTPS":case"HTTP":return"//"+t.id+"."+(t.hostname?t.hostname:window.location.hostname);case"TCP":return(t.hostname?t.hostname:window.location.hostname)+":"+t.assignedPort}}_isConfigComplete(t){return t.gatewayId?t.type?t.target?!!t.targetPort||(console.error("Could not start tunnel, since no gateway target port was configured."),!1):(console.error("Could not start tunnel, since no gateway target was configured."),!1):(console.error("Could not start tunnel, since no gateway type / protocol was configured."),!1):(console.error("Could not start tunnel, since no gateway asset was configured."),!1)}_getTunnelInfoByConfig(t){return{realm:manager.displayRealm,gatewayId:t.gatewayId,type:t.type,target:t.target,targetPort:t.targetPort}}};__decorate([state()],GatewayWidget.prototype,"_loading",void 0),__decorate([state()],GatewayWidget.prototype,"_activeTunnel",void 0),GatewayWidget=GatewayWidget_1=__decorate([customElement("gateway-widget")],GatewayWidget);export{GatewayWidget};
50
+ `}_onCopyTunnelAddressClick(t){if(this._isConfigComplete(this.widgetConfig)){const t=this._getTunnelInfoByConfig(this.widgetConfig),e=this._getTunnelAddress(t);e?navigator.clipboard.writeText(e).finally((()=>{showSnackbar(void 0,i18next.t("gatewayTunnels.copySuccess"))})):(console.warn("Could not copy tunnel address as it could not be found."),showSnackbar(void 0,i18next.t("errorOccurred")))}else console.warn("Could not copy tunnel address as configuration is not complete."),showSnackbar(void 0,i18next.t("errorOccurred"))}_onStartTunnelClick(t){this._tryStartTunnel(this.widgetConfig)}_onStopTunnelClick(t){this._tryStopTunnel(this.widgetConfig)}_onTunnelNavigateClick(t,e){e?this._navigateToTunnel(e):console.warn("Could not navigate to tunnel as configuration is not complete.")}_setActiveTunnel(t,e=!1){if(this._activeTunnel=t,this._refreshTimer&&clearTimeout(this._refreshTimer),null==t?void 0:t.autoCloseTime){const e=(null==t?void 0:t.autoCloseTime)-Date.now();e>0&&(this._refreshTimer=window.setTimeout((()=>{this._getActiveTunnel(this._getTunnelInfoByConfig(this.widgetConfig)).then((t=>{t?this._setActiveTunnel(t,!0):this._setActiveTunnel(void 0)}))}),e))}t&&!e&&this._navigateToTunnel(t)}_tryStartTunnel(t){if(this._isConfigComplete(t)){const e=this._getTunnelInfoByConfig(t);this._loading=!0,this._getActiveTunnel(e).then((t=>{t?(console.log("Found an active tunnel!",t),this._setActiveTunnel(t),this._loading=!1):this._startTunnel(e).then((t=>{t?(console.log("Started a new tunnel!",t),this._setActiveTunnel(t),this._startedByUser=!0):console.warn("No new tunnel!")})).catch((t=>{console.error(t),showSnackbar(void 0,i18next.t("errorOccurred"))})).finally((()=>{this._loading=!1}))})).catch((t=>{console.error(t),showSnackbar(void 0,i18next.t("errorOccurred")),this._loading=!1}))}}_startTunnel(t){return __awaiter(this,void 0,void 0,(function*(){if(!(t.realm&&t.gatewayId&&t.target&&t.targetPort))throw new Error("Could not start tunnel, as some provided information was not set.");return(yield manager.rest.api.GatewayServiceResource.startTunnel(t)).data}))}_getActiveTunnel(t){return __awaiter(this,void 0,void 0,(function*(){if(!(t.realm&&t.gatewayId&&t.target&&t.targetPort))throw new Error("Could not get active tunnel, as some provided information was not set.");const e=yield manager.rest.api.GatewayServiceResource.getActiveTunnelInfo(t.realm,t.gatewayId,t.target,t.targetPort);return 204===e.status?void 0:e.data}))}_getGatewayStatus(t){return __awaiter(this,void 0,void 0,(function*(){const e=yield manager.rest.api.AssetResource.get(t.gatewayId);return 200===e.status&&e.data&&e.data.attributes&&e.data.attributes.gatewayStatus?e.data.attributes.gatewayStatus.value:void 0}))}_readyCheck(t){const e=this._getTunnelInfoByConfig(t);this._getGatewayStatus(e).then((t=>{this._isReady="CONNECTED"===t}))}_tryStopTunnel(t){const e=this._getTunnelInfoByConfig(t);this._loading=!0,this._stopTunnel(e).then((()=>{this._setActiveTunnel(void 0),this._startedByUser=!1})).catch((t=>{console.warn(t)})).finally((()=>{this._loading=!1}))}_stopTunnel(t){return __awaiter(this,void 0,void 0,(function*(){return(yield manager.rest.api.GatewayServiceResource.stopTunnel(t)).data}))}_navigateToTunnel(t){var e;t.id&&t.realm&&t.gatewayId&&t.target&&t.targetPort||console.warn("Could not navigate to tunnel, as some provided information was not set.");const n=this._getTunnelAddress(t);switch(t.type){case"HTTPS":case"HTTP":null===(e=window.open(n))||void 0===e||e.focus();break;default:console.error("Unknown error when navigating to tunnel.")}}_getTunnelAddress(t){switch(t.type){case"HTTPS":case"HTTP":return"//"+t.id+"."+(t.hostname?t.hostname:window.location.hostname);case"TCP":return(t.hostname?t.hostname:window.location.hostname)+":"+t.assignedPort}}_isConfigComplete(t){return t.gatewayId?t.type?t.target?!!t.targetPort||(console.error("Could not start tunnel, since no gateway target port was configured."),!1):(console.error("Could not start tunnel, since no gateway target was configured."),!1):(console.error("Could not start tunnel, since no gateway type / protocol was configured."),!1):(console.error("Could not start tunnel, since no gateway asset was configured."),!1)}_getTunnelInfoByConfig(t){return{realm:manager.displayRealm,gatewayId:t.gatewayId,type:t.type,target:t.target,targetPort:t.targetPort}}};__decorate([state()],GatewayWidget.prototype,"_loading",void 0),__decorate([state()],GatewayWidget.prototype,"_activeTunnel",void 0),__decorate([state()],GatewayWidget.prototype,"_isReady",void 0),GatewayWidget=GatewayWidget_1=__decorate([customElement("gateway-widget")],GatewayWidget);export{GatewayWidget};
@@ -1 +1 @@
1
- {"version":3,"file":"gateway-widget.js","sourceRoot":"","sources":["../../src/widgets/gateway-widget.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"gateway-widget.js","sourceRoot":"","sources":["../../src/widgets/gateway-widget.ts"],"names":[],"mappings":";;;;;;;;;;;;;;;;AAAA,OAAO,EAAC,aAAa,EAAE,KAAK,EAAC,MAAM,mBAAmB,CAAC;AACvD,OAAO,EAAC,QAAQ,EAAiB,MAAM,mBAAmB,CAAC;AAC3D,OAAO,EAAC,GAAG,EAAE,IAAI,EAAiC,MAAM,KAAK,CAAC;AAG9D,OAAO,EAAC,eAAe,EAAC,MAAM,8BAA8B,CAAC;AAC7D,OAAO,EAAC,SAAS,EAAsB,MAAM,4CAA4C,CAAC;AAE1F,OAAO,OAAO,MAAM,kBAAkB,CAAC;AACvC,OAAO,EAAC,IAAI,EAAC,MAAM,wBAAwB,CAAC;AAC5C,OAAO,EAAC,OAAO,EAAC,MAAM,0BAA0B,CAAC;AACjD,OAAO,EAAC,YAAY,EAAC,MAAM,+CAA+C,CAAC;AAC3E,OAAO,MAAM,MAAM,QAAQ,CAAC;AAE5B,MAAM,OAAO,GAAG,GAAG,CAAA;;;;;;;;;;;;;;;;;;CAkBlB,CAAC;AASF,SAAS,sBAAsB;IAC3B,OAAO;QACH,IAAI,2CAA6B;QACjC,MAAM,EAAE,WAAW;QACnB,UAAU,EAAE,GAAG;KAClB,CAAC;AACN,CAAC;AAGM,IAAM,aAAa,qBAAnB,MAAM,aAAc,SAAQ,QAAQ;IAApC;;QAKO,aAAQ,GAAG,IAAI,CAAC;QAUhB,aAAQ,GAAG,KAAK,CAAC;QAEjB,mBAAc,GAAG,KAAK,CAAC;QAEvB,kBAAa,GAAY,SAAS,CAAC;IAgYjD,CAAC;IA9XG,MAAM,CAAC,WAAW;QACd,OAAO;YACH,WAAW,EAAE,SAAS;YACtB,WAAW,EAAE,aAAa;YAC1B,cAAc,EAAE,CAAC;YACjB,eAAe,EAAE,CAAC;YAClB,cAAc,CAAC,MAA2B;gBACtC,OAAO,IAAI,eAAa,CAAC,MAAM,CAAC,CAAC;YACrC,CAAC;YACD,eAAe,CAAC,MAA2B;gBACvC,OAAO,IAAI,eAAe,CAAC,MAAM,CAAC,CAAC;YACvC,CAAC;YACD,gBAAgB;gBACZ,OAAO,sBAAsB,EAAE,CAAC;YACpC,CAAC;SACJ,CAAC;IACN,CAAC;IAED,cAAc,CAAC,KAAc;QACzB,IAAI,CAAC,YAAY,GAAG,IAAI,CAAC,KAAK,CAAC,IAAI,CAAC,SAAS,CAAC,IAAI,CAAC,YAAY,CAAC,CAAwB,CAAC;QACzF,IAAI,CAAC,WAAW,CAAC,IAAI,CAAC,YAAY,CAAC,CAAC;IACxC,CAAC;IAED,MAAM,KAAK,MAAM;QACb,OAAO,CAAC,GAAG,KAAK,CAAC,MAAM,EAAE,OAAO,CAAC,CAAC;IACtC,CAAC;IAED,oBAAoB;QAChB,IAAG,IAAI,CAAC,aAAa,EAAE,CAAC;YACpB,IAAG,IAAI,CAAC,cAAc,EAAE,CAAC;gBACrB,IAAI,CAAC,WAAW,CAAC,IAAI,CAAC,aAAa,CAAC,CAAC,IAAI,CAAC,GAAG,EAAE;oBAC3C,OAAO,CAAC,IAAI,CAAC,kEAAkE,CAAC,CAAC;gBACrF,CAAC,CAAC,CAAC;YACP,CAAC;iBAAM,CAAC;gBACJ,OAAO,CAAC,IAAI,CAAC,0EAA0E,CAAC,CAAC;YAC7F,CAAC;QACL,CAAC;QAED,IAAI,IAAI,CAAC,aAAa,EAAE,CAAC;YACrB,YAAY,CAAC,IAAI,CAAC,aAAa,CAAC,CAAC;QACrC,CAAC;QAED,KAAK,CAAC,oBAAoB,EAAE,CAAC;IACjC,CAAC;IAES,YAAY,CAAC,YAA4B;QAC/C,IAAG,IAAI,CAAC,YAAY,EAAE,CAAC;YAEnB,MAAM,UAAU,GAAG,IAAI,CAAC,sBAAsB,CAAC,IAAI,CAAC,YAAY,CAAC,CAAC;YAClE,IAAI,CAAC,WAAW,CAAC,IAAI,CAAC,YAAY,CAAC,CAAC;YACpC,oHAAoH;YACpH,UAAU,CAAC,GAAG,EAAE;gBAEZ,mEAAmE;gBACnE,IAAI,CAAC,gBAAgB,CAAC,UAAU,CAAC,CAAC,IAAI,CAAC,IAAI,CAAC,EAAE;oBAC1C,IAAG,IAAI,EAAE,CAAC;wBACN,OAAO,CAAC,GAAG,CAAC,wBAAwB,EAAE,IAAI,CAAC,CAAC;wBAC5C,IAAI,CAAC,gBAAgB,CAAC,IAAI,EAAE,IAAI,CAAC,CAAA;oBACrC,CAAC;gBACL,CAAC,CAAC,CAAC,KAAK,CAAC,CAAC,CAAC,EAAE;oBACT,OAAO,CAAC,KAAK,CAAC,CAAC,CAAC,CAAC;gBACrB,CAAC,CAAC,CAAC,OAAO,CAAC,GAAG,EAAE;oBACZ,IAAI,CAAC,QAAQ,GAAG,KAAK,CAAC;gBAC1B,CAAC,CAAC,CAAC;YAEP,CAAC,EAAE,GAAG,CAAC,CAAC;QACZ,CAAC;QACD,OAAO,KAAK,CAAC,YAAY,CAAC,YAAY,CAAC,CAAC;IAC5C,CAAC;IAES,MAAM;;QACZ,MAAM,UAAU,GAAG,IAAI,CAAC,sBAAsB,CAAC,IAAI,CAAC,YAAY,CAAC,CAAC;QAClE,MAAM,QAAQ,GAAG,CAAA,MAAA,IAAI,CAAC,WAAW,oDAAI,KAAI,CAAC,IAAI,CAAC,iBAAiB,CAAC,IAAI,CAAC,YAAY,CAAC,IAAI,CAAC,IAAI,CAAC,QAAQ,CAAC;QACtG,OAAO,IAAI,CAAA;;;sBAGG,IAAI,CAAC,IAAI,CAAC,QAAQ,EAAE,GAAG,EAAE,CAAC,IAAI,CAAA;;qBAE/B,EAAE,GAAG,EAAE;;YACJ,IAAI,IAAI,CAAC,aAAa,EAAE,CAAC;gBACrB,OAAO,IAAI,CAAA;;uDAEgB,SAAS,CAAC,MAAM,wBAAwB,OAAO,CAAC,CAAC,CAAC,qBAAqB,CAAC,gBAAgB,QAAQ;uEAChF,CAAC,EAAuB,EAAE,EAAE,CAAC,IAAI,CAAC,kBAAkB,CAAC,EAAE,CAAC;;;kCAG7F,IAAI,CAAC,IAAI,CAAC,YAAY,CAAC,IAAI,0CAA8B,EAAE,GAAG,EAAE,CAAC,IAAI,CAAA;2DAC5C,SAAS,CAAC,MAAM,gCAAgC,OAAO,CAAC,CAAC,CAAC,4BAA4B,CAAC,yBAAyB,QAAQ;2EACxG,CAAC,EAAuB,EAAE,EAAE,CAAC,IAAI,CAAC,yBAAyB,CAAC,EAAE,CAAC;;iCAEzG,EAAE,GAAG,EAAE,CAAC,IAAI,CAAA;2DACc,SAAS,CAAC,MAAM,+BAA+B,OAAO,CAAC,CAAC,CAAC,qBAAqB,CAAC,yBAAyB,QAAQ;2EAChG,CAAC,EAAuB,EAAE,EAAE,CAAC,IAAI,CAAC,sBAAsB,CAAC,EAAE,EAAE,IAAI,CAAC,aAAa,CAAC;;iCAE1H,CAAC;;kCAEA,IAAI,CAAC,MAAA,IAAI,CAAC,aAAa,0CAAE,aAAa,EAAE,GAAG,EAAE;;oBAAC,OAAA,IAAI,CAAA;0GACsB,MAAM,CAAC,MAAA,IAAI,CAAC,aAAa,0CAAE,aAAa,CAAC,CAAC,MAAM,CAAC,KAAK,CAAC;iCAChI,CAAA;iBAAA,CAAC;6BACL,CAAC;YACN,CAAC;iBAAM,CAAC;gBACJ,OAAO,IAAI,CAAA;uDACgB,SAAS,CAAC,MAAM,YAAY,QAAQ,CAAC,CAAC,CAAC,OAAO,CAAC,CAAC,CAAC,wBAAwB,CAAC,CAAC,CAAC,CAAC,OAAO,CAAC,CAAC,CAAC,sBAAsB,CAAC,yBAAyB,QAAQ;uEAC/H,CAAC,EAAuB,EAAE,EAAE,CAAC,IAAI,CAAC,mBAAmB,CAAC,EAAE,CAAC;;6BAEnG,CAAC;YACN,CAAC;QACL,CAAC,CAAC;;;SAGb,CAAC;IACN,CAAC;IAED;;OAEG;IACO,yBAAyB,CAAC,EAAuB;QACvD,IAAI,IAAI,CAAC,iBAAiB,CAAC,IAAI,CAAC,YAAY,CAAC,EAAE,CAAC;YAC5C,MAAM,UAAU,GAAG,IAAI,CAAC,sBAAsB,CAAC,IAAI,CAAC,YAAY,CAAC,CAAC;YAClE,MAAM,OAAO,GAAG,IAAI,CAAC,iBAAiB,CAAC,UAAU,CAAC,CAAC;YACnD,IAAG,OAAO,EAAE,CAAC;gBACT,SAAS,CAAC,SAAS,CAAC,SAAS,CAAC,OAAO,CAAC,CAAC,OAAO,CAAC,GAAG,EAAE;oBAChD,YAAY,CAAC,SAAS,EAAE,OAAO,CAAC,CAAC,CAAC,4BAA4B,CAAC,CAAC,CAAC;gBACrE,CAAC,CAAC,CAAC;YACP,CAAC;iBAAM,CAAC;gBACJ,OAAO,CAAC,IAAI,CAAC,yDAAyD,CAAC,CAAC;gBACxE,YAAY,CAAC,SAAS,EAAE,OAAO,CAAC,CAAC,CAAC,eAAe,CAAC,CAAC,CAAC;YACxD,CAAC;QACL,CAAC;aAAM,CAAC;YACJ,OAAO,CAAC,IAAI,CAAC,iEAAiE,CAAC,CAAC;YAChF,YAAY,CAAC,SAAS,EAAE,OAAO,CAAC,CAAC,CAAC,eAAe,CAAC,CAAC,CAAC;QACxD,CAAC;IACL,CAAC;IAED;;OAEG;IACO,mBAAmB,CAAC,EAAuB;QACjD,IAAI,CAAC,eAAe,CAAC,IAAI,CAAC,YAAY,CAAC,CAAC;IAC5C,CAAC;IAED;;OAEG;IACO,kBAAkB,CAAC,EAAuB;QAChD,IAAI,CAAC,cAAc,CAAC,IAAI,CAAC,YAAY,CAAC,CAAC;IAC3C,CAAC;IAED;;OAEG;IACO,sBAAsB,CAAC,EAAuB,EAAE,YAAgC;QACtF,IAAG,YAAY,EAAE,CAAC;YACd,IAAI,CAAC,iBAAiB,CAAC,YAAY,CAAC,CAAC;QACzC,CAAC;aAAM,CAAC;YACJ,OAAO,CAAC,IAAI,CAAC,gEAAgE,CAAC,CAAA;QAClF,CAAC;IACL,CAAC;IAED;;;OAGG;IACO,gBAAgB,CAAC,UAA8B,EAAE,MAAM,GAAG,KAAK;QACrE,IAAI,CAAC,aAAa,GAAG,UAAU,CAAC;QAEhC,IAAI,IAAI,CAAC,aAAa,EAAE,CAAC;YACrB,YAAY,CAAC,IAAI,CAAC,aAAa,CAAC,CAAC;QACrC,CAAC;QAED,IAAI,UAAU,aAAV,UAAU,uBAAV,UAAU,CAAE,aAAa,EAAE,CAAC;YAC5B,MAAM,OAAO,GAAG,CAAA,UAAU,aAAV,UAAU,uBAAV,UAAU,CAAE,aAAa,IAAG,IAAI,CAAC,GAAG,EAAE,CAAC;YACvD,IAAI,OAAO,GAAG,CAAC,EAAE,CAAC;gBACd,IAAI,CAAC,aAAa,GAAG,MAAM,CAAC,UAAU,CAAC,GAAG,EAAE;oBACxC,IAAI,CAAC,gBAAgB,CAAC,IAAI,CAAC,sBAAsB,CAAC,IAAI,CAAC,YAAY,CAAC,CAAC,CAAC,IAAI,CAAC,IAAI,CAAC,EAAE;wBAC9E,IAAI,IAAI,EAAE,CAAC;4BACP,IAAI,CAAC,gBAAgB,CAAC,IAAI,EAAE,IAAI,CAAC,CAAA;wBACrC,CAAC;6BAAM,CAAC;4BACJ,IAAI,CAAC,gBAAgB,CAAC,SAAS,CAAC,CAAC;wBACrC,CAAC;oBACL,CAAC,CAAC,CAAC;gBACP,CAAC,EAAE,OAAO,CAAC,CAAC;YAChB,CAAC;QACL,CAAC;QAED,IAAG,UAAU,IAAI,CAAC,MAAM,EAAE,CAAC;YACvB,IAAI,CAAC,iBAAiB,CAAC,UAAU,CAAC,CAAC;QACvC,CAAC;IACL,CAAC;IAED;;;OAGG;IACO,eAAe,CAAC,YAAiC;QACvD,IAAI,IAAI,CAAC,iBAAiB,CAAC,YAAY,CAAC,EAAE,CAAC;YAEvC,MAAM,UAAU,GAAG,IAAI,CAAC,sBAAsB,CAAC,YAAY,CAAC,CAAC;YAC7D,IAAI,CAAC,QAAQ,GAAG,IAAI,CAAC;YAErB,IAAI,CAAC,gBAAgB,CAAC,UAAU,CAAC,CAAC,IAAI,CAAC,YAAY,CAAC,EAAE;gBAElD,IAAI,YAAY,EAAE,CAAC;oBACf,OAAO,CAAC,GAAG,CAAC,yBAAyB,EAAE,YAAY,CAAC,CAAC;oBACrD,IAAI,CAAC,gBAAgB,CAAC,YAAY,CAAC,CAAC;oBACpC,IAAI,CAAC,QAAQ,GAAG,KAAK,CAAC;gBAE1B,CAAC;qBAAM,CAAC;oBACJ,IAAI,CAAC,YAAY,CAAC,UAAU,CAAC,CAAC,IAAI,CAAC,SAAS,CAAC,EAAE;wBAE3C,IAAI,SAAS,EAAE,CAAC;4BACZ,OAAO,CAAC,GAAG,CAAC,uBAAuB,EAAE,SAAS,CAAC,CAAC;4BAChD,IAAI,CAAC,gBAAgB,CAAC,SAAS,CAAC,CAAC;4BACjC,IAAI,CAAC,cAAc,GAAG,IAAI,CAAC;wBAE/B,CAAC;6BAAM,CAAC;4BACJ,OAAO,CAAC,IAAI,CAAC,gBAAgB,CAAC,CAAC;wBACnC,CAAC;oBACL,CAAC,CAAC,CAAC,KAAK,CAAC,CAAC,CAAC,EAAE;wBACT,OAAO,CAAC,KAAK,CAAC,CAAC,CAAC,CAAC;wBACjB,YAAY,CAAC,SAAS,EAAE,OAAO,CAAC,CAAC,CAAC,eAAe,CAAC,CAAC,CAAC;oBACxD,CAAC,CAAC,CAAC,OAAO,CAAC,GAAG,EAAE;wBACZ,IAAI,CAAC,QAAQ,GAAG,KAAK,CAAC;oBAC1B,CAAC,CAAC,CAAC;gBACP,CAAC;YAEL,CAAC,CAAC,CAAC,KAAK,CAAC,CAAC,CAAC,EAAE;gBACT,OAAO,CAAC,KAAK,CAAC,CAAC,CAAC,CAAC;gBACjB,YAAY,CAAC,SAAS,EAAE,OAAO,CAAC,CAAC,CAAC,eAAe,CAAC,CAAC,CAAC;gBACpD,IAAI,CAAC,QAAQ,GAAG,KAAK,CAAC;YAC1B,CAAC,CAAC,CAAA;QACN,CAAC;IACL,CAAC;IAED;;OAEG;IACa,YAAY,CAAC,IAAuB;;YAChD,IAAI,CAAC,IAAI,CAAC,KAAK,IAAI,CAAC,IAAI,CAAC,SAAS,IAAI,CAAC,IAAI,CAAC,MAAM,IAAI,CAAC,IAAI,CAAC,UAAU,EAAE,CAAC;gBACrE,MAAM,IAAI,KAAK,CAAC,mEAAmE,CAAC,CAAC;YACzF,CAAC;YACD,OAAO,CAAC,MAAM,OAAO,CAAC,IAAI,CAAC,GAAG,CAAC,sBAAsB,CAAC,WAAW,CAAC,IAAI,CAAC,CAAC,CAAC,IAAI,CAAC;QAClF,CAAC;KAAA;IAED;;;OAGG;IACa,gBAAgB,CAAC,IAAuB;;YACpD,IAAI,CAAC,IAAI,CAAC,KAAK,IAAI,CAAC,IAAI,CAAC,SAAS,IAAI,CAAC,IAAI,CAAC,MAAM,IAAI,CAAC,IAAI,CAAC,UAAU,EAAE,CAAC;gBACrE,MAAM,IAAI,KAAK,CAAC,wEAAwE,CAAC,CAAA;YAC7F,CAAC;YACD,MAAM,QAAQ,GAAG,MAAM,OAAO,CAAC,IAAI,CAAC,GAAG,CAAC,sBAAsB,CAAC,mBAAmB,CAAC,IAAI,CAAC,KAAK,EAAE,IAAI,CAAC,SAAS,EAAE,IAAI,CAAC,MAAM,EAAE,IAAI,CAAC,UAAU,CAAC,CAAC;YAC7I,IAAG,QAAQ,CAAC,MAAM,KAAK,GAAG,EAAE,CAAC;gBACzB,OAAO,SAAS,CAAC;YACrB,CAAC;iBAAM,CAAC;gBACJ,OAAO,QAAQ,CAAC,IAAI,CAAC;YACzB,CAAC;QACL,CAAC;KAAA;IAED;;;OAGG;IACY,iBAAiB,CAAC,IAAuB;;YACpD,MAAM,QAAQ,GAAI,MAAM,OAAO,CAAC,IAAI,CAAC,GAAG,CAAC,aAAa,CAAC,GAAG,CAAC,IAAI,CAAC,SAAS,CAAC,CAAA;YAC1E,IAAI,QAAQ,CAAC,MAAM,KAAK,GAAG,IAAI,QAAQ,CAAC,IAAI,IAAI,QAAQ,CAAC,IAAI,CAAC,UAAU,IAAI,QAAQ,CAAC,IAAI,CAAC,UAAU,CAAC,aAAa,EAAE,CAAC;gBACjH,OAAO,QAAQ,CAAC,IAAI,CAAC,UAAU,CAAC,aAAa,CAAC,KAAK,CAAA;YACvD,CAAC;iBAAM,CAAC;gBACJ,OAAO,SAAS,CAAC;YAChB,CAAC;QACV,CAAC;KAAA;IAED;;OAEG;IACO,WAAW,CAAC,MAA2B;QAC7C,MAAM,UAAU,GAAG,IAAI,CAAC,sBAAsB,CAAC,MAAM,CAAC,CAAC;QACvD,oEAAoE;QACpE,IAAI,CAAC,iBAAiB,CAAC,UAAU,CAAC,CAAC,IAAI,CAAC,MAAM,CAAC,EAAE;YAC7C,IAAI,CAAC,QAAQ,GAAG,CAAC,MAAM,KAAK,WAAW,CAAC,CAAC;QACzC,CAAC,CAAC,CAAC;IACZ,CAAC;IAEA;;OAEG;IACO,cAAc,CAAC,MAA2B;QAChD,MAAM,UAAU,GAAG,IAAI,CAAC,sBAAsB,CAAC,MAAM,CAAC,CAAC;QACvD,IAAI,CAAC,QAAQ,GAAG,IAAI,CAAC;QACrB,IAAI,CAAC,WAAW,CAAC,UAAU,CAAC;aACvB,IAAI,CAAC,GAAG,EAAE;YACP,IAAI,CAAC,gBAAgB,CAAC,SAAS,CAAC,CAAC;YACjC,IAAI,CAAC,cAAc,GAAG,KAAK,CAAC;QAChC,CAAC,CAAC;aACD,KAAK,CAAC,CAAC,CAAC,EAAE;YACP,OAAO,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC;QACpB,CAAC,CAAC;aACD,OAAO,CAAC,GAAG,EAAE;YACV,IAAI,CAAC,QAAQ,GAAG,KAAK,CAAC;QAC1B,CAAC,CAAC,CAAC;IACX,CAAC;IAED;;OAEG;IACa,WAAW,CAAC,IAAuB;;YAC/C,OAAO,CAAC,MAAM,OAAO,CAAC,IAAI,CAAC,GAAG,CAAC,sBAAsB,CAAC,UAAU,CAAC,IAAI,CAAC,CAAC,CAAC,IAAI,CAAC;QACjF,CAAC;KAAA;IAED;;;OAGG;IACO,iBAAiB,CAAC,IAAuB;;QAC/C,IAAI,CAAC,IAAI,CAAC,EAAE,IAAI,CAAC,IAAI,CAAC,KAAK,IAAI,CAAC,IAAI,CAAC,SAAS,IAAI,CAAC,IAAI,CAAC,MAAM,IAAI,CAAC,IAAI,CAAC,UAAU,EAAE,CAAC;YACjF,OAAO,CAAC,IAAI,CAAC,yEAAyE,CAAC,CAAC;QAC5F,CAAC;QACD,MAAM,OAAO,GAAG,IAAI,CAAC,iBAAiB,CAAC,IAAI,CAAC,CAAC;QAC7C,QAAQ,IAAI,CAAC,IAAI,EAAE,CAAC;YAChB,+CAAiC;YACjC;gBACI,MAAA,MAAM,CAAC,IAAI,CAAC,OAAO,CAAC,0CAAE,KAAK,EAAE,CAAC;gBAC9B,MAAM;YACV;gBACI,OAAO,CAAC,KAAK,CAAC,0CAA0C,CAAC,CAAC;gBAC1D,MAAM;QACd,CAAC;IACL,CAAC;IAED;;;OAGG;IACO,iBAAiB,CAAC,IAAuB;QAC/C,QAAQ,IAAI,CAAC,IAAI,EAAE,CAAC;YAChB,+CAAiC;YACjC;gBACI,OAAO,IAAI,GAAG,IAAI,CAAC,EAAE,GAAG,GAAG,GAAG,CAAC,IAAI,CAAC,QAAQ,CAAC,CAAC,CAAC,IAAI,CAAC,QAAQ,CAAC,CAAC,CAAC,MAAM,CAAC,QAAQ,CAAC,QAAQ,CAAC,CAAC;YAC7F;gBACI,OAAO,CAAC,IAAI,CAAC,QAAQ,CAAC,CAAC,CAAC,IAAI,CAAC,QAAQ,CAAC,CAAC,CAAC,MAAM,CAAC,QAAQ,CAAC,QAAQ,CAAC,GAAG,GAAG,GAAG,IAAI,CAAC,YAAY,CAAC;QACpG,CAAC;IACL,CAAC;IAED;;;OAGG;IACO,iBAAiB,CAAC,YAAiC;QACzD,IAAI,CAAC,YAAY,CAAC,SAAS,EAAE,CAAC;YAC1B,OAAO,CAAC,KAAK,CAAC,gEAAgE,CAAC,CAAC;YAChF,OAAO,KAAK,CAAC;QACjB,CAAC;QACD,IAAI,CAAC,YAAY,CAAC,IAAI,EAAE,CAAC;YACrB,OAAO,CAAC,KAAK,CAAC,0EAA0E,CAAC,CAAC;YAC1F,OAAO,KAAK,CAAC;QACjB,CAAC;QACD,IAAI,CAAC,YAAY,CAAC,MAAM,EAAE,CAAC;YACvB,OAAO,CAAC,KAAK,CAAC,iEAAiE,CAAC,CAAC;YACjF,OAAO,KAAK,CAAC;QACjB,CAAC;QACD,IAAI,CAAC,YAAY,CAAC,UAAU,EAAE,CAAC;YAC3B,OAAO,CAAC,KAAK,CAAC,sEAAsE,CAAC,CAAC;YACtF,OAAO,KAAK,CAAC;QACjB,CAAC;QACD,OAAO,IAAI,CAAC;IAChB,CAAC;IAED;;;OAGG;IACO,sBAAsB,CAAC,MAA2B;QACxD,OAAO;YACH,KAAK,EAAE,OAAO,CAAC,YAAY;YAC3B,SAAS,EAAE,MAAM,CAAC,SAAS;YAC3B,IAAI,EAAE,MAAM,CAAC,IAAI;YACjB,MAAM,EAAE,MAAM,CAAC,MAAM;YACrB,UAAU,EAAE,MAAM,CAAC,UAAU;SACX,CAAC;IAC3B,CAAC;CAEJ,CAAA;AA9Ya;IADT,KAAK,EAAE;+CACkB;AAOhB;IADT,KAAK,EAAE;oDACoC;AAGlC;IADT,KAAK,EAAE;+CACmB;AAflB,aAAa;IADzB,aAAa,CAAC,gBAAgB,CAAC;GACnB,aAAa,CAmZzB"}
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@openremote/or-dashboard-builder",
3
- "version": "1.2.0",
3
+ "version": "1.2.2",
4
4
  "description": "OpenRemote Dashboard Builder",
5
5
  "main": "dist/umd/index.bundle.js",
6
6
  "module": "lib/index.js",
@@ -16,15 +16,15 @@
16
16
  "author": "OpenRemote",
17
17
  "license": "AGPL-3.0-or-later",
18
18
  "dependencies": {
19
- "@openremote/core": "1.2.0",
20
- "@openremote/model": "1.2.0",
21
- "@openremote/or-chart": "1.2.0",
22
- "@openremote/rest": "1.2.0",
19
+ "@openremote/core": "1.2.2",
20
+ "@openremote/model": "1.2.2",
21
+ "@openremote/or-chart": "1.2.2",
22
+ "@openremote/rest": "1.2.2",
23
23
  "gridstack": "^7.2.0",
24
24
  "lit": "^2.0.2"
25
25
  },
26
26
  "devDependencies": {
27
- "@openremote/util": "1.2.0"
27
+ "@openremote/util": "1.2.2"
28
28
  },
29
29
  "publishConfig": {
30
30
  "access": "public"
@@ -30,7 +30,7 @@ const styling = css`
30
30
  flex-wrap: wrap;
31
31
  position: relative;
32
32
  }
33
- `
33
+ `;
34
34
 
35
35
  export interface GatewayWidgetConfig extends WidgetConfig {
36
36
  gatewayId?: string;
@@ -55,9 +55,16 @@ export class GatewayWidget extends OrWidget {
55
55
  @state()
56
56
  protected _loading = true;
57
57
 
58
+ /**
59
+ * Cache of the active {@link GatwayTunnelInfo} we receive from the HTTP API.
60
+ * It contains all necessary information, such as ID, assigned port, target information, and autoCloseTime.
61
+ */
58
62
  @state()
59
63
  protected _activeTunnel?: GatewayTunnelInfo;
60
64
 
65
+ @state()
66
+ protected _isReady = false;
67
+
61
68
  protected _startedByUser = false;
62
69
 
63
70
  protected _refreshTimer?: number = undefined;
@@ -77,11 +84,12 @@ export class GatewayWidget extends OrWidget {
77
84
  getDefaultConfig(): GatewayWidgetConfig {
78
85
  return getDefaultWidgetConfig();
79
86
  }
80
- }
87
+ };
81
88
  }
82
89
 
83
90
  refreshContent(force: boolean): void {
84
91
  this.widgetConfig = JSON.parse(JSON.stringify(this.widgetConfig)) as GatewayWidgetConfig;
92
+ this._readyCheck(this.widgetConfig);
85
93
  }
86
94
 
87
95
  static get styles() {
@@ -92,10 +100,10 @@ export class GatewayWidget extends OrWidget {
92
100
  if(this._activeTunnel) {
93
101
  if(this._startedByUser) {
94
102
  this._stopTunnel(this._activeTunnel).then(() => {
95
- console.warn("Stopped the active tunnel, as it was created through the widget.")
103
+ console.warn("Stopped the active tunnel, as it was created through the widget.");
96
104
  });
97
105
  } else {
98
- console.warn("Keeping the active tunnel open, as it is not started through the widget.")
106
+ console.warn("Keeping the active tunnel open, as it is not started through the widget.");
99
107
  }
100
108
  }
101
109
 
@@ -109,11 +117,12 @@ export class GatewayWidget extends OrWidget {
109
117
  protected firstUpdated(changedProps: PropertyValues) {
110
118
  if(this.widgetConfig) {
111
119
 
120
+ const tunnelInfo = this._getTunnelInfoByConfig(this.widgetConfig);
121
+ this._readyCheck(this.widgetConfig);
112
122
  // Apply a timeout of 500 millis, so the tunnel has time to close upon disconnectedCallback() of a different widget.
113
123
  setTimeout(() => {
114
124
 
115
125
  // Check if the tunnel is already active upon widget initialization
116
- const tunnelInfo = this._getTunnelInfoByConfig(this.widgetConfig);
117
126
  this._getActiveTunnel(tunnelInfo).then(info => {
118
127
  if(info) {
119
128
  console.log("Existing tunnel found!", info);
@@ -131,7 +140,8 @@ export class GatewayWidget extends OrWidget {
131
140
  }
132
141
 
133
142
  protected render(): TemplateResult {
134
- const disabled = this.getEditMode?.() || !this._isConfigComplete(this.widgetConfig);
143
+ const tunnelInfo = this._getTunnelInfoByConfig(this.widgetConfig);
144
+ const disabled = this.getEditMode?.() || !this._isConfigComplete(this.widgetConfig) || !this._isReady;
135
145
  return html`
136
146
  <div id="gateway-widget-wrapper">
137
147
  <div id="gateway-widget-container">
@@ -151,7 +161,7 @@ export class GatewayWidget extends OrWidget {
151
161
  ></or-mwc-input>
152
162
  `, () => html`
153
163
  <or-mwc-input .type="${InputType.BUTTON}" icon="open-in-new" label="${i18next.t('gatewayTunnels.open')}" outlined .disabled="${disabled}"
154
- @or-mwc-input-changed="${(ev: OrInputChangedEvent) => this._onTunnelNavigateClick(ev)}"
164
+ @or-mwc-input-changed="${(ev: OrInputChangedEvent) => this._onTunnelNavigateClick(ev, this._activeTunnel)}"
155
165
  ></or-mwc-input>
156
166
  `)}
157
167
  </div>
@@ -161,7 +171,7 @@ export class GatewayWidget extends OrWidget {
161
171
  `;
162
172
  } else {
163
173
  return html`
164
- <or-mwc-input .type="${InputType.BUTTON}" label="${i18next.t('gatewayTunnels.start')}" outlined .disabled="${disabled}"
174
+ <or-mwc-input .type="${InputType.BUTTON}" label="${disabled ? i18next.t('gatewayTunnels.offline') : i18next.t('gatewayTunnels.start')}" outlined .disabled="${disabled}"
165
175
  @or-mwc-input-changed="${(ev: OrInputChangedEvent) => this._onStartTunnelClick(ev)}"
166
176
  ></or-mwc-input>
167
177
  `;
@@ -210,9 +220,9 @@ export class GatewayWidget extends OrWidget {
210
220
  /**
211
221
  * HTML callback function when 'open' button is pressed, meant to start using the tunnel.
212
222
  */
213
- protected _onTunnelNavigateClick(ev: OrInputChangedEvent) {
214
- if (this._isConfigComplete(this.widgetConfig)) {
215
- this._navigateToTunnel(this._getTunnelInfoByConfig(this.widgetConfig));
223
+ protected _onTunnelNavigateClick(ev: OrInputChangedEvent, activeTunnel?: GatewayTunnelInfo) {
224
+ if(activeTunnel) {
225
+ this._navigateToTunnel(activeTunnel);
216
226
  } else {
217
227
  console.warn("Could not navigate to tunnel as configuration is not complete.")
218
228
  }
@@ -319,6 +329,30 @@ export class GatewayWidget extends OrWidget {
319
329
  }
320
330
  }
321
331
 
332
+ /**
333
+ * Internal function that requests the Manager API for the gatewayStatus of the gatewayId asset in {@link GatewayTunnelInfo}.
334
+ * Returns undefined if there is misalignment in the linked asset id or unexpected http code.
335
+ */
336
+ protected async _getGatewayStatus(info: GatewayTunnelInfo): Promise<string | undefined> {
337
+ const response = await manager.rest.api.AssetResource.get(info.gatewayId)
338
+ if (response.status === 200 && response.data && response.data.attributes && response.data.attributes.gatewayStatus) {
339
+ return response.data.attributes.gatewayStatus.value
340
+ } else {
341
+ return undefined;
342
+ }
343
+ }
344
+
345
+ /**
346
+ * Function that tries to check the gateway status and sets the ready flag to true only if connected.
347
+ */
348
+ protected _readyCheck(config: GatewayWidgetConfig): void {
349
+ const tunnelInfo = this._getTunnelInfoByConfig(config);
350
+ //Check if the gateway is actually in a status to accept connections
351
+ this._getGatewayStatus(tunnelInfo).then(status => {
352
+ this._isReady = (status === "CONNECTED");
353
+ });
354
+ }
355
+
322
356
  /**
323
357
  * Function that tries to destroy the currently active tunnel.
324
358
  */
@@ -350,7 +384,7 @@ export class GatewayWidget extends OrWidget {
350
384
  * It will open in a new browser tab automatically.
351
385
  */
352
386
  protected _navigateToTunnel(info: GatewayTunnelInfo): void {
353
- if (!info.realm || !info.gatewayId || !info.target || !info.targetPort) {
387
+ if (!info.id || !info.realm || !info.gatewayId || !info.target || !info.targetPort) {
354
388
  console.warn("Could not navigate to tunnel, as some provided information was not set.");
355
389
  }
356
390
  const address = this._getTunnelAddress(info);
@@ -367,6 +401,7 @@ export class GatewayWidget extends OrWidget {
367
401
 
368
402
  /**
369
403
  * Internal function to get the tunnel address based on {@link GatewayTunnelInfo}
404
+ * WARNING: Could return incorrect address if not all fields are set.
370
405
  */
371
406
  protected _getTunnelAddress(info: GatewayTunnelInfo): string | undefined {
372
407
  switch (info.type) {
@@ -404,6 +439,7 @@ export class GatewayWidget extends OrWidget {
404
439
 
405
440
  /**
406
441
  * Internal function that parses a {@link GatewayWidgetConfig} into a new {@link GatewayTunnelInfo}.
442
+ * Be aware: this does not information received from the HTTP API such as ID, assigned port, etc. Please use {@link _activeTunnel} for this.
407
443
  */
408
444
  protected _getTunnelInfoByConfig(config: GatewayWidgetConfig): GatewayTunnelInfo {
409
445
  return {