mirror of
https://github.com/home-assistant/frontend.git
synced 2025-07-25 18:26:35 +00:00
Add listeners to template helper preview (#17833)
This commit is contained in:
parent
29aed5371c
commit
c1c05f8d22
@ -6,7 +6,7 @@ export interface RenderTemplateResult {
|
|||||||
listeners: TemplateListeners;
|
listeners: TemplateListeners;
|
||||||
}
|
}
|
||||||
|
|
||||||
interface TemplateListeners {
|
export interface TemplateListeners {
|
||||||
all: boolean;
|
all: boolean;
|
||||||
domains: string[];
|
domains: string[];
|
||||||
entities: string[];
|
entities: string[];
|
||||||
@ -18,6 +18,7 @@ export type TemplatePreview = TemplatePreviewState | TemplatePreviewError;
|
|||||||
interface TemplatePreviewState {
|
interface TemplatePreviewState {
|
||||||
state: string;
|
state: string;
|
||||||
attributes: Record<string, any>;
|
attributes: Record<string, any>;
|
||||||
|
listeners: TemplateListeners;
|
||||||
}
|
}
|
||||||
|
|
||||||
interface TemplatePreviewError {
|
interface TemplatePreviewError {
|
||||||
|
@ -1,9 +1,10 @@
|
|||||||
import { HassEntity, UnsubscribeFunc } from "home-assistant-js-websocket";
|
import { HassEntity, UnsubscribeFunc } from "home-assistant-js-websocket";
|
||||||
import { LitElement, html } from "lit";
|
import { LitElement, html, nothing } from "lit";
|
||||||
import { customElement, property, state } from "lit/decorators";
|
import { customElement, property, state } from "lit/decorators";
|
||||||
import { debounce } from "../../../common/util/debounce";
|
import { debounce } from "../../../common/util/debounce";
|
||||||
import { FlowType } from "../../../data/data_entry_flow";
|
import { FlowType } from "../../../data/data_entry_flow";
|
||||||
import {
|
import {
|
||||||
|
TemplateListeners,
|
||||||
TemplatePreview,
|
TemplatePreview,
|
||||||
subscribePreviewTemplate,
|
subscribePreviewTemplate,
|
||||||
} from "../../../data/ws-templates";
|
} from "../../../data/ws-templates";
|
||||||
@ -27,6 +28,8 @@ class FlowPreviewTemplate extends LitElement {
|
|||||||
|
|
||||||
@state() private _preview?: HassEntity;
|
@state() private _preview?: HassEntity;
|
||||||
|
|
||||||
|
@state() private _listeners?: TemplateListeners;
|
||||||
|
|
||||||
@state() private _error?: string;
|
@state() private _error?: string;
|
||||||
|
|
||||||
private _unsub?: Promise<UnsubscribeFunc>;
|
private _unsub?: Promise<UnsubscribeFunc>;
|
||||||
@ -50,9 +53,69 @@ class FlowPreviewTemplate extends LitElement {
|
|||||||
return html`<ha-alert alert-type="error">${this._error}</ha-alert>`;
|
return html`<ha-alert alert-type="error">${this._error}</ha-alert>`;
|
||||||
}
|
}
|
||||||
return html`<entity-preview-row
|
return html`<entity-preview-row
|
||||||
.hass=${this.hass}
|
.hass=${this.hass}
|
||||||
.stateObj=${this._preview}
|
.stateObj=${this._preview}
|
||||||
></entity-preview-row>`;
|
></entity-preview-row>
|
||||||
|
${this._listeners?.time
|
||||||
|
? html`
|
||||||
|
<p>
|
||||||
|
${this.hass.localize("ui.dialogs.helper_settings.template.time")}
|
||||||
|
</p>
|
||||||
|
`
|
||||||
|
: nothing}
|
||||||
|
${!this._listeners
|
||||||
|
? nothing
|
||||||
|
: this._listeners.all
|
||||||
|
? html`
|
||||||
|
<p class="all_listeners">
|
||||||
|
${this.hass.localize(
|
||||||
|
"ui.dialogs.helper_settings.template.all_listeners"
|
||||||
|
)}
|
||||||
|
</p>
|
||||||
|
`
|
||||||
|
: this._listeners.domains.length || this._listeners.entities.length
|
||||||
|
? html`
|
||||||
|
<p>
|
||||||
|
${this.hass.localize(
|
||||||
|
"ui.dialogs.helper_settings.template.listeners"
|
||||||
|
)}
|
||||||
|
</p>
|
||||||
|
<ul>
|
||||||
|
${this._listeners.domains
|
||||||
|
.sort()
|
||||||
|
.map(
|
||||||
|
(domain) => html`
|
||||||
|
<li>
|
||||||
|
<b
|
||||||
|
>${this.hass.localize(
|
||||||
|
"ui.dialogs.helper_settings.template.domain"
|
||||||
|
)}</b
|
||||||
|
>: ${domain}
|
||||||
|
</li>
|
||||||
|
`
|
||||||
|
)}
|
||||||
|
${this._listeners.entities
|
||||||
|
.sort()
|
||||||
|
.map(
|
||||||
|
(entity_id) => html`
|
||||||
|
<li>
|
||||||
|
<b
|
||||||
|
>${this.hass.localize(
|
||||||
|
"ui.dialogs.helper_settings.template.entity"
|
||||||
|
)}</b
|
||||||
|
>: ${entity_id}
|
||||||
|
</li>
|
||||||
|
`
|
||||||
|
)}
|
||||||
|
</ul>
|
||||||
|
`
|
||||||
|
: !this._listeners.time
|
||||||
|
? html`<span class="all_listeners">
|
||||||
|
${this.hass.localize(
|
||||||
|
"ui.dialogs.helper_settings.template.no_listeners"
|
||||||
|
)}
|
||||||
|
</span>`
|
||||||
|
: nothing} `;
|
||||||
}
|
}
|
||||||
|
|
||||||
private _setPreview = (preview: TemplatePreview) => {
|
private _setPreview = (preview: TemplatePreview) => {
|
||||||
@ -62,13 +125,15 @@ class FlowPreviewTemplate extends LitElement {
|
|||||||
return;
|
return;
|
||||||
}
|
}
|
||||||
this._error = undefined;
|
this._error = undefined;
|
||||||
|
this._listeners = preview.listeners;
|
||||||
const now = new Date().toISOString();
|
const now = new Date().toISOString();
|
||||||
this._preview = {
|
this._preview = {
|
||||||
entity_id: `${this.stepId}.flow_preview`,
|
entity_id: `${this.stepId}.flow_preview`,
|
||||||
last_changed: now,
|
last_changed: now,
|
||||||
last_updated: now,
|
last_updated: now,
|
||||||
context: { id: "", parent_id: null, user_id: null },
|
context: { id: "", parent_id: null, user_id: null },
|
||||||
...preview,
|
attributes: preview.attributes,
|
||||||
|
state: preview.state,
|
||||||
};
|
};
|
||||||
};
|
};
|
||||||
|
|
||||||
|
@ -180,9 +180,9 @@ class HaPanelDevTemplate extends LitElement {
|
|||||||
)}
|
)}
|
||||||
</p>
|
</p>
|
||||||
`
|
`
|
||||||
: ""}
|
: nothing}
|
||||||
${!this._templateResult?.listeners
|
${!this._templateResult?.listeners
|
||||||
? ""
|
? nothing
|
||||||
: this._templateResult.listeners.all
|
: this._templateResult.listeners.all
|
||||||
? html`
|
? html`
|
||||||
<p class="all_listeners">
|
<p class="all_listeners">
|
||||||
@ -229,7 +229,7 @@ class HaPanelDevTemplate extends LitElement {
|
|||||||
</ul>
|
</ul>
|
||||||
`
|
`
|
||||||
: !this._templateResult?.listeners.time
|
: !this._templateResult?.listeners.time
|
||||||
? html` <span class="all_listeners">
|
? html`<span class="all_listeners">
|
||||||
${this.hass.localize(
|
${this.hass.localize(
|
||||||
"ui.panel.developer-tools.tabs.templates.no_listeners"
|
"ui.panel.developer-tools.tabs.templates.no_listeners"
|
||||||
)}
|
)}
|
||||||
|
@ -1280,6 +1280,14 @@
|
|||||||
"schedule": {
|
"schedule": {
|
||||||
"delete": "Delete item?",
|
"delete": "Delete item?",
|
||||||
"confirm_delete": "Do you want to delete this item?"
|
"confirm_delete": "Do you want to delete this item?"
|
||||||
|
},
|
||||||
|
"template": {
|
||||||
|
"time": "[%key:ui::panel::developer-tools::tabs::templates::time%]",
|
||||||
|
"all_listeners": "[%key:ui::panel::developer-tools::tabs::templates::all_listeners%]",
|
||||||
|
"no_listeners": "[%key:ui::panel::developer-tools::tabs::templates::no_listeners%]",
|
||||||
|
"listeners": "[%key:ui::panel::developer-tools::tabs::templates::listeners%]",
|
||||||
|
"entity": "[%key:ui::panel::developer-tools::tabs::templates::entity%]",
|
||||||
|
"domain": "[%key:ui::panel::developer-tools::tabs::templates::domain%]"
|
||||||
}
|
}
|
||||||
},
|
},
|
||||||
"options_flow": {
|
"options_flow": {
|
||||||
|
Loading…
x
Reference in New Issue
Block a user