diff --git a/src/data/ws-templates.ts b/src/data/ws-templates.ts index 3b4256be27..ed873c69f7 100644 --- a/src/data/ws-templates.ts +++ b/src/data/ws-templates.ts @@ -6,7 +6,7 @@ export interface RenderTemplateResult { listeners: TemplateListeners; } -interface TemplateListeners { +export interface TemplateListeners { all: boolean; domains: string[]; entities: string[]; @@ -18,6 +18,7 @@ export type TemplatePreview = TemplatePreviewState | TemplatePreviewError; interface TemplatePreviewState { state: string; attributes: Record; + listeners: TemplateListeners; } interface TemplatePreviewError { diff --git a/src/dialogs/config-flow/previews/flow-preview-template.ts b/src/dialogs/config-flow/previews/flow-preview-template.ts index 44fbe03ff5..ebd5eb503a 100644 --- a/src/dialogs/config-flow/previews/flow-preview-template.ts +++ b/src/dialogs/config-flow/previews/flow-preview-template.ts @@ -1,9 +1,10 @@ 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 { debounce } from "../../../common/util/debounce"; import { FlowType } from "../../../data/data_entry_flow"; import { + TemplateListeners, TemplatePreview, subscribePreviewTemplate, } from "../../../data/ws-templates"; @@ -27,6 +28,8 @@ class FlowPreviewTemplate extends LitElement { @state() private _preview?: HassEntity; + @state() private _listeners?: TemplateListeners; + @state() private _error?: string; private _unsub?: Promise; @@ -50,9 +53,69 @@ class FlowPreviewTemplate extends LitElement { return html`${this._error}`; } return html``; + .hass=${this.hass} + .stateObj=${this._preview} + > + ${this._listeners?.time + ? html` +

+ ${this.hass.localize("ui.dialogs.helper_settings.template.time")} +

+ ` + : nothing} + ${!this._listeners + ? nothing + : this._listeners.all + ? html` +

+ ${this.hass.localize( + "ui.dialogs.helper_settings.template.all_listeners" + )} +

+ ` + : this._listeners.domains.length || this._listeners.entities.length + ? html` +

+ ${this.hass.localize( + "ui.dialogs.helper_settings.template.listeners" + )} +

+ + ` + : !this._listeners.time + ? html` + ${this.hass.localize( + "ui.dialogs.helper_settings.template.no_listeners" + )} + ` + : nothing} `; } private _setPreview = (preview: TemplatePreview) => { @@ -62,13 +125,15 @@ class FlowPreviewTemplate extends LitElement { return; } this._error = undefined; + this._listeners = preview.listeners; const now = new Date().toISOString(); this._preview = { entity_id: `${this.stepId}.flow_preview`, last_changed: now, last_updated: now, context: { id: "", parent_id: null, user_id: null }, - ...preview, + attributes: preview.attributes, + state: preview.state, }; }; diff --git a/src/panels/developer-tools/template/developer-tools-template.ts b/src/panels/developer-tools/template/developer-tools-template.ts index c977bdba83..5f5d0f2122 100644 --- a/src/panels/developer-tools/template/developer-tools-template.ts +++ b/src/panels/developer-tools/template/developer-tools-template.ts @@ -180,9 +180,9 @@ class HaPanelDevTemplate extends LitElement { )}

` - : ""} + : nothing} ${!this._templateResult?.listeners - ? "" + ? nothing : this._templateResult.listeners.all ? html`

@@ -229,7 +229,7 @@ class HaPanelDevTemplate extends LitElement { ` : !this._templateResult?.listeners.time - ? html` + ? html` ${this.hass.localize( "ui.panel.developer-tools.tabs.templates.no_listeners" )} diff --git a/src/translations/en.json b/src/translations/en.json index 6c5e1e1918..ac4df38fd4 100644 --- a/src/translations/en.json +++ b/src/translations/en.json @@ -1280,6 +1280,14 @@ "schedule": { "delete": "Delete 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": {