From 15e7b8117cb45b2ed0d371b1e50db866b9164940 Mon Sep 17 00:00:00 2001 From: Paulus Schoutsen Date: Fri, 7 Feb 2020 09:30:38 -0800 Subject: [PATCH] Add integrations to dev info page (#4800) * Add integrations to dev info page * Fix annoying looking html tags * What happened here --- .../info/developer-tools-info.ts | 5 +- .../developer-tools/info/integrations-card.ts | 75 +++++++++++++++++++ .../info/system-health-card.ts | 2 +- 3 files changed, 80 insertions(+), 2 deletions(-) create mode 100644 src/panels/developer-tools/info/integrations-card.ts diff --git a/src/panels/developer-tools/info/developer-tools-info.ts b/src/panels/developer-tools/info/developer-tools-info.ts index 7141d4b132..dc9b45ec53 100644 --- a/src/panels/developer-tools/info/developer-tools-info.ts +++ b/src/panels/developer-tools/info/developer-tools-info.ts @@ -11,6 +11,7 @@ import { HomeAssistant } from "../../../types"; import { haStyle } from "../../../resources/styles"; import "./system-health-card"; +import "./integrations-card"; const JS_TYPE = __BUILD__; const JS_VERSION = __VERSION__; @@ -149,6 +150,7 @@ class HaPanelDevInfo extends LitElement {
+
`; } @@ -205,7 +207,8 @@ class HaPanelDevInfo extends LitElement { color: var(--dark-primary-color); } - system-health-card { + system-health-card, + integrations-card { display: block; max-width: 600px; margin: 0 auto; diff --git a/src/panels/developer-tools/info/integrations-card.ts b/src/panels/developer-tools/info/integrations-card.ts new file mode 100644 index 0000000000..e51f73366a --- /dev/null +++ b/src/panels/developer-tools/info/integrations-card.ts @@ -0,0 +1,75 @@ +import { + LitElement, + property, + TemplateResult, + html, + customElement, + CSSResult, + css, +} from "lit-element"; +import { HomeAssistant } from "../../../types"; +import memoizeOne from "memoize-one"; + +@customElement("integrations-card") +class IntegrationsCard extends LitElement { + @property() public hass!: HomeAssistant; + + private _sortedIntegrations = memoizeOne((components: string[]) => { + return components.filter((comp) => !comp.includes(".")).sort(); + }); + + protected render(): TemplateResult { + return html` + + + + ${this._sortedIntegrations(this.hass!.config.components).map( + (domain) => html` + + + + + + ` + )} + +
${domain} + + Documentation + + + + Issues + +
+
+ `; + } + + static get styles(): CSSResult { + return css` + td { + line-height: 2em; + padding: 0 8px; + } + td:first-child { + padding-left: 0; + } + a { + color: var(--primary-color); + } + `; + } +} + +declare global { + interface HTMLElementTagNameMap { + "integrations-card": IntegrationsCard; + } +} diff --git a/src/panels/developer-tools/info/system-health-card.ts b/src/panels/developer-tools/info/system-health-card.ts index 35e1976d9e..92bef82cf6 100644 --- a/src/panels/developer-tools/info/system-health-card.ts +++ b/src/panels/developer-tools/info/system-health-card.ts @@ -78,7 +78,7 @@ class SystemHealthCard extends LitElement { } return html` - +
${sections}
`;