mirror of
https://github.com/home-assistant/frontend.git
synced 2025-07-15 13:26:34 +00:00
Fix Z-Wave JS add node wizard and add interview status (#9145)
This commit is contained in:
parent
7e2bf920e1
commit
fd2728c02c
@ -34,8 +34,14 @@ class DialogZWaveJSAddNode extends LitElement {
|
|||||||
|
|
||||||
@state() private _status = "";
|
@state() private _status = "";
|
||||||
|
|
||||||
|
@state() private _nodeAdded = false;
|
||||||
|
|
||||||
@state() private _device?: ZWaveJSAddNodeDevice;
|
@state() private _device?: ZWaveJSAddNodeDevice;
|
||||||
|
|
||||||
|
@state() private _stages?: string[];
|
||||||
|
|
||||||
|
private _stoppedTimeout?: any;
|
||||||
|
|
||||||
private _addNodeTimeoutHandle?: number;
|
private _addNodeTimeoutHandle?: number;
|
||||||
|
|
||||||
private _subscribed?: Promise<() => Promise<void>>;
|
private _subscribed?: Promise<() => Promise<void>>;
|
||||||
@ -128,6 +134,40 @@ class DialogZWaveJSAddNode extends LitElement {
|
|||||||
</mwc-button>
|
</mwc-button>
|
||||||
`
|
`
|
||||||
: ``}
|
: ``}
|
||||||
|
${this._status === "interviewing"
|
||||||
|
? html`
|
||||||
|
<div class="flex-container">
|
||||||
|
<ha-circular-progress active></ha-circular-progress>
|
||||||
|
<div class="status">
|
||||||
|
<p>
|
||||||
|
<b
|
||||||
|
>${this.hass.localize(
|
||||||
|
"ui.panel.config.zwave_js.add_node.interview_started"
|
||||||
|
)}</b
|
||||||
|
>
|
||||||
|
</p>
|
||||||
|
${this._stages
|
||||||
|
? html` <div class="stages">
|
||||||
|
${this._stages.map(
|
||||||
|
(stage) => html`
|
||||||
|
<span class="stage">
|
||||||
|
<ha-svg-icon
|
||||||
|
.path=${mdiCheckCircle}
|
||||||
|
class="success"
|
||||||
|
></ha-svg-icon>
|
||||||
|
${stage}
|
||||||
|
</span>
|
||||||
|
`
|
||||||
|
)}
|
||||||
|
</div>`
|
||||||
|
: ""}
|
||||||
|
</div>
|
||||||
|
</div>
|
||||||
|
<mwc-button slot="primaryAction" @click=${this.closeDialog}>
|
||||||
|
${this.hass.localize("ui.panel.config.zwave_js.common.close")}
|
||||||
|
</mwc-button>
|
||||||
|
`
|
||||||
|
: ``}
|
||||||
${this._status === "failed"
|
${this._status === "failed"
|
||||||
? html`
|
? html`
|
||||||
<div class="flex-container">
|
<div class="flex-container">
|
||||||
@ -141,6 +181,21 @@ class DialogZWaveJSAddNode extends LitElement {
|
|||||||
"ui.panel.config.zwave_js.add_node.inclusion_failed"
|
"ui.panel.config.zwave_js.add_node.inclusion_failed"
|
||||||
)}
|
)}
|
||||||
</p>
|
</p>
|
||||||
|
${this._stages
|
||||||
|
? html` <div class="stages">
|
||||||
|
${this._stages.map(
|
||||||
|
(stage) => html`
|
||||||
|
<span class="stage">
|
||||||
|
<ha-svg-icon
|
||||||
|
.path=${mdiCheckCircle}
|
||||||
|
class="success"
|
||||||
|
></ha-svg-icon>
|
||||||
|
${stage}
|
||||||
|
</span>
|
||||||
|
`
|
||||||
|
)}
|
||||||
|
</div>`
|
||||||
|
: ""}
|
||||||
</div>
|
</div>
|
||||||
</div>
|
</div>
|
||||||
<mwc-button slot="primaryAction" @click=${this.closeDialog}>
|
<mwc-button slot="primaryAction" @click=${this.closeDialog}>
|
||||||
@ -168,6 +223,21 @@ class DialogZWaveJSAddNode extends LitElement {
|
|||||||
)}
|
)}
|
||||||
</mwc-button>
|
</mwc-button>
|
||||||
</a>
|
</a>
|
||||||
|
${this._stages
|
||||||
|
? html` <div class="stages">
|
||||||
|
${this._stages.map(
|
||||||
|
(stage) => html`
|
||||||
|
<span class="stage">
|
||||||
|
<ha-svg-icon
|
||||||
|
.path=${mdiCheckCircle}
|
||||||
|
class="success"
|
||||||
|
></ha-svg-icon>
|
||||||
|
${stage}
|
||||||
|
</span>
|
||||||
|
`
|
||||||
|
)}
|
||||||
|
</div>`
|
||||||
|
: ""}
|
||||||
</div>
|
</div>
|
||||||
</div>
|
</div>
|
||||||
<mwc-button slot="primaryAction" @click=${this.closeDialog}>
|
<mwc-button slot="primaryAction" @click=${this.closeDialog}>
|
||||||
@ -211,16 +281,41 @@ class DialogZWaveJSAddNode extends LitElement {
|
|||||||
this._status = "failed";
|
this._status = "failed";
|
||||||
}
|
}
|
||||||
if (message.event === "inclusion stopped") {
|
if (message.event === "inclusion stopped") {
|
||||||
if (this._status !== "finished") {
|
// we get the inclusion stopped event before the node added event
|
||||||
this._status = "";
|
// during a successful inclusion. so we set a timer to wait 3 seconds
|
||||||
}
|
// to give the node added event time to come in before assuming it
|
||||||
this._unsubscribe();
|
// timed out or was cancelled and unsubscribing.
|
||||||
|
this._stoppedTimeout = setTimeout(() => {
|
||||||
|
if (!this._nodeAdded) {
|
||||||
|
this._status = "";
|
||||||
|
this._unsubscribe();
|
||||||
|
this._stoppedTimeout = undefined;
|
||||||
|
}
|
||||||
|
}, 3000);
|
||||||
}
|
}
|
||||||
if (message.event === "device registered") {
|
if (message.event === "device registered") {
|
||||||
this._device = message.device;
|
this._device = message.device;
|
||||||
|
}
|
||||||
|
if (message.event === "node added") {
|
||||||
|
this._nodeAdded = true;
|
||||||
|
if (this._stoppedTimeout) {
|
||||||
|
clearTimeout(this._stoppedTimeout);
|
||||||
|
}
|
||||||
|
this._status = "interviewing";
|
||||||
|
}
|
||||||
|
|
||||||
|
if (message.event === "interview completed") {
|
||||||
this._status = "finished";
|
this._status = "finished";
|
||||||
this._unsubscribe();
|
this._unsubscribe();
|
||||||
}
|
}
|
||||||
|
|
||||||
|
if (message.event === "interview stage completed") {
|
||||||
|
if (this._stages === undefined) {
|
||||||
|
this._stages = [message.stage];
|
||||||
|
} else {
|
||||||
|
this._stages = [...this._stages, message.stage];
|
||||||
|
}
|
||||||
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
private _unsubscribe(): void {
|
private _unsubscribe(): void {
|
||||||
@ -246,7 +341,13 @@ class DialogZWaveJSAddNode extends LitElement {
|
|||||||
this._unsubscribe();
|
this._unsubscribe();
|
||||||
this.entry_id = undefined;
|
this.entry_id = undefined;
|
||||||
this._status = "";
|
this._status = "";
|
||||||
|
this._nodeAdded = false;
|
||||||
this._device = undefined;
|
this._device = undefined;
|
||||||
|
this._stages = undefined;
|
||||||
|
if (this._stoppedTimeout) {
|
||||||
|
clearTimeout(this._stoppedTimeout);
|
||||||
|
this._stoppedTimeout = undefined;
|
||||||
|
}
|
||||||
this._use_secure_inclusion = false;
|
this._use_secure_inclusion = false;
|
||||||
|
|
||||||
fireEvent(this, "dialog-closed", { dialog: this.localName });
|
fireEvent(this, "dialog-closed", { dialog: this.localName });
|
||||||
@ -261,11 +362,24 @@ class DialogZWaveJSAddNode extends LitElement {
|
|||||||
}
|
}
|
||||||
|
|
||||||
.success {
|
.success {
|
||||||
color: green;
|
color: var(--success-color);
|
||||||
}
|
}
|
||||||
|
|
||||||
.failed {
|
.failed {
|
||||||
color: red;
|
color: var(--warning-color);
|
||||||
|
}
|
||||||
|
|
||||||
|
.stages {
|
||||||
|
margin-top: 16px;
|
||||||
|
}
|
||||||
|
|
||||||
|
.flex-container .stage ha-svg-icon {
|
||||||
|
width: 16px;
|
||||||
|
height: 16px;
|
||||||
|
margin-right: 0px;
|
||||||
|
}
|
||||||
|
.stage {
|
||||||
|
padding: 8px;
|
||||||
}
|
}
|
||||||
|
|
||||||
blockquote {
|
blockquote {
|
||||||
|
@ -2633,8 +2633,10 @@
|
|||||||
"controller_in_inclusion_mode": "Your Z-Wave controller is now in inclusion mode.",
|
"controller_in_inclusion_mode": "Your Z-Wave controller is now in inclusion mode.",
|
||||||
"follow_device_instructions": "Follow the directions that came with your device to trigger pairing on the device.",
|
"follow_device_instructions": "Follow the directions that came with your device to trigger pairing on the device.",
|
||||||
"inclusion_failed": "The node could not be added. Please check the logs for more information.",
|
"inclusion_failed": "The node could not be added. Please check the logs for more information.",
|
||||||
"inclusion_finished": "The node has been added. It may take a few minutes for all entities to show up as we finish setting up the node in the background.",
|
"inclusion_finished": "The node has been added.",
|
||||||
"view_device": "View Device"
|
"view_device": "View Device",
|
||||||
|
"interview_started": "The device is being interviewed. This may take some time.",
|
||||||
|
"interview_failed": "The device interview failed. Additional information may be available in the logs."
|
||||||
},
|
},
|
||||||
"remove_node": {
|
"remove_node": {
|
||||||
"title": "Remove a Z-Wave Node",
|
"title": "Remove a Z-Wave Node",
|
||||||
|
Loading…
x
Reference in New Issue
Block a user