Skip to content
Merged
Show file tree
Hide file tree
Changes from all commits
Commits
Show all changes
31 commits
Select commit Hold shift + click to select a range
ccabd78
Show which state changed events a template listeners for in dev tools
bdraco Sep 11, 2020
b16d7ef
Update src/data/ws-templates.ts
bdraco Sep 11, 2020
bd4495e
Update src/data/ws-templates.ts
bdraco Sep 11, 2020
8b98238
Update src/panels/developer-tools/template/developer-tools-template.ts
bdraco Sep 11, 2020
3916574
Update src/panels/developer-tools/template/developer-tools-template.ts
bdraco Sep 11, 2020
0d9046a
Update src/panels/developer-tools/template/developer-tools-template.ts
bdraco Sep 11, 2020
bdb216e
Update src/panels/developer-tools/template/developer-tools-template.ts
bdraco Sep 11, 2020
a4249e9
merge
bdraco Sep 11, 2020
a488225
Update src/panels/lovelace/cards/hui-markdown-card.ts
bdraco Sep 11, 2020
ad8bba4
fix string reversal
bdraco Sep 11, 2020
28e6790
Update src/panels/lovelace/cards/hui-markdown-card.ts
bdraco Sep 11, 2020
f8bc180
Update src/panels/developer-tools/template/developer-tools-template.ts
bdraco Sep 11, 2020
cb41fcd
error to string
bdraco Sep 11, 2020
0dd0dc2
cleanup
bdraco Sep 11, 2020
c207465
cleanup
bdraco Sep 11, 2020
85ae280
no listeners is probably worth warning about as well
bdraco Sep 11, 2020
3015b38
handle unknown error
bdraco Sep 11, 2020
cbd5156
fix error alignment in pre
bdraco Sep 11, 2020
0c81dc5
fix error alignment in pre
bdraco Sep 11, 2020
9b98447
fix error alignment in pre
bdraco Sep 11, 2020
4f79df0
fix error alignment in pre
bdraco Sep 11, 2020
d4b478c
Merge branch 'show_listen' of github.com:bdraco/frontend into show_li…
bdraco Sep 11, 2020
6bd30d0
reformat
bdraco Sep 11, 2020
757a3a8
reformat
bdraco Sep 11, 2020
aba77bc
reformat
bdraco Sep 11, 2020
9a756f2
fix accidential revert
bdraco Sep 11, 2020
ba92a45
Update src/panels/developer-tools/template/developer-tools-template.ts
bdraco Sep 11, 2020
2f4afd8
Update src/panels/developer-tools/template/developer-tools-template.ts
bdraco Sep 11, 2020
1dd7e95
clear error on success
bdraco Sep 11, 2020
068e5cb
tweak to not error if listeners are not returned
bdraco Sep 11, 2020
8f9f98d
Update src/panels/developer-tools/template/developer-tools-template.ts
bdraco Sep 11, 2020
File filter

Filter by extension

Filter by extension

Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
19 changes: 13 additions & 6 deletions src/data/ws-templates.ts
Original file line number Diff line number Diff line change
@@ -1,20 +1,27 @@
import { Connection, UnsubscribeFunc } from "home-assistant-js-websocket";

interface RenderTemplateResult {
export interface RenderTemplateResult {
result: string;
listeners: TemplateListeners;
}

interface TemplateListeners {
all: boolean;
domains: string[];
entities: string[];
}

export const subscribeRenderTemplate = (
conn: Connection,
onChange: (result: string) => void,
onChange: (result: RenderTemplateResult) => void,
params: {
template: string;
entity_ids?: string | string[];
variables?: object;
}
): Promise<UnsubscribeFunc> => {
return conn.subscribeMessage(
(msg: RenderTemplateResult) => onChange(msg.result),
{ type: "render_template", ...params }
);
return conn.subscribeMessage((msg: RenderTemplateResult) => onChange(msg), {
type: "render_template",
...params,
});
};
78 changes: 68 additions & 10 deletions src/panels/developer-tools/template/developer-tools-template.ts
Original file line number Diff line number Diff line change
Expand Up @@ -13,7 +13,10 @@ import { classMap } from "lit-html/directives/class-map";
import { debounce } from "../../../common/util/debounce";
import "../../../components/ha-circular-progress";
import "../../../components/ha-code-editor";
import { subscribeRenderTemplate } from "../../../data/ws-templates";
import {
subscribeRenderTemplate,
RenderTemplateResult,
} from "../../../data/ws-templates";
import { haStyle } from "../../../resources/styles";
import { HomeAssistant } from "../../../types";

Expand Down Expand Up @@ -44,11 +47,11 @@ class HaPanelDevTemplate extends LitElement {

@property() public narrow!: boolean;

@internalProperty() private _error = false;
@internalProperty() private _error?: string;

@internalProperty() private _rendering = false;

@internalProperty() private _processed = "";
@internalProperty() private _templateResult?: RenderTemplateResult;

@internalProperty() private _unsubRenderTemplate?: Promise<UnsubscribeFunc>;

Expand Down Expand Up @@ -139,9 +142,57 @@ class HaPanelDevTemplate extends LitElement {
.active=${this._rendering}
size="small"
></ha-circular-progress>
<pre class="rendered ${classMap({ error: this._error })}">
${this._processed}</pre
>

<pre
class="rendered ${classMap({ error: Boolean(this._error) })}"
><!-- display: block -->${this._error}${this._templateResult
?.result}</pre>
${!this._templateResult?.listeners
? ""
: this._templateResult.listeners.all
? html`
<span class="all_listeners">
${this.hass.localize(
"ui.panel.developer-tools.tabs.templates.all_listeners"
)}
</span>
`
: this._templateResult.listeners.domains.length ||
this._templateResult.listeners.entities.length
? html`
${this.hass.localize(
"ui.panel.developer-tools.tabs.templates.listeners"
)}
<ul>
${this._templateResult.listeners.domains.map(
(domain) =>
html`
<li>
${this.hass.localize(
"ui.panel.developer-tools.tabs.templates.domain"
)}:
${domain}
</li>
`
)}
${this._templateResult.listeners.entities.map(
(entity_id) =>
html`
<li>
${this.hass.localize(
"ui.panel.developer-tools.tabs.templates.entity"
)}:
${entity_id}
</li>
`
)}
</ul>
`
: html` <span class="all_listeners">
${this.hass.localize(
"ui.panel.developer-tools.tabs.templates.no_listeners"
)}
</span>`}
</div>
</div>
`;
Expand Down Expand Up @@ -189,6 +240,11 @@ ${this._processed}</pre
@apply --paper-font-code1;
clear: both;
white-space: pre-wrap;
background-color: var(--secondary-background-color);
}

.all_listeners {
color: var(--warning-color);
}

.rendered.error {
Expand All @@ -210,7 +266,7 @@ ${this._processed}</pre
private _templateChanged(ev) {
this._template = ev.detail.value;
if (this._error) {
this._error = false;
this._error = undefined;
}
this._debounceRender();
}
Expand All @@ -222,17 +278,19 @@ ${this._processed}</pre
this._unsubRenderTemplate = subscribeRenderTemplate(
this.hass.connection,
(result) => {
this._processed = result;
this._templateResult = result;
this._error = undefined;
},
{
template: this._template,
}
);
await this._unsubRenderTemplate;
} catch (err) {
this._error = true;
this._error = "Unknown error";
if (err.message) {
this._processed = err.message;
this._error = err.message;
this._templateResult = undefined;
}
this._unsubRenderTemplate = undefined;
} finally {
Expand Down
16 changes: 11 additions & 5 deletions src/panels/lovelace/cards/hui-markdown-card.ts
Original file line number Diff line number Diff line change
Expand Up @@ -14,7 +14,10 @@ import { classMap } from "lit-html/directives/class-map";
import { applyThemesOnElement } from "../../../common/dom/apply_themes_on_element";
import "../../../components/ha-card";
import "../../../components/ha-markdown";
import { subscribeRenderTemplate } from "../../../data/ws-templates";
import {
subscribeRenderTemplate,
RenderTemplateResult,
} from "../../../data/ws-templates";
import type { HomeAssistant } from "../../../types";
import type { LovelaceCard, LovelaceCardEditor } from "../types";
import type { MarkdownCardConfig } from "./types";
Expand All @@ -40,7 +43,7 @@ export class HuiMarkdownCard extends LitElement implements LovelaceCard {

@internalProperty() private _config?: MarkdownCardConfig;

@internalProperty() private _content = "";
@internalProperty() private _templateResult?: RenderTemplateResult;

@internalProperty() private _unsubRenderTemplate?: Promise<UnsubscribeFunc>;

Expand Down Expand Up @@ -85,7 +88,7 @@ export class HuiMarkdownCard extends LitElement implements LovelaceCard {
class=${classMap({
"no-header": !this._config.title,
})}
.content="${this._content}"
.content="${this._templateResult?.result}"
></ha-markdown>
</ha-card>
`;
Expand Down Expand Up @@ -127,7 +130,7 @@ export class HuiMarkdownCard extends LitElement implements LovelaceCard {
this._unsubRenderTemplate = subscribeRenderTemplate(
this.hass.connection,
(result) => {
this._content = result;
this._templateResult = result;
},
{
template: this._config.content,
Expand All @@ -139,7 +142,10 @@ export class HuiMarkdownCard extends LitElement implements LovelaceCard {
}
);
} catch (_err) {
this._content = this._config!.content;
this._templateResult = {
result: this._config!.content,
listeners: { all: false, domains: [], entities: [] },
};
this._unsubRenderTemplate = undefined;
}
}
Expand Down
7 changes: 6 additions & 1 deletion src/translations/en.json
Original file line number Diff line number Diff line change
Expand Up @@ -2729,7 +2729,12 @@
"reset": "Reset to demo template",
"jinja_documentation": "Jinja2 template documentation",
"template_extensions": "Home Assistant template extensions",
"unknown_error_template": "Unknown error rendering template"
"unknown_error_template": "Unknown error rendering template",
"all_listeners": "This template listens for all state changed events.",
"no_listeners": "This template does not listen for any state changed events and will not update automatically.",
"listeners": "This template listens for the following state changed events:",
"entity": "Entity",
"domain": "Domain"
}
}
},
Expand Down