diff --git a/src/panels/lovelace/cards/hui-statistics-graph-card.ts b/src/panels/lovelace/cards/hui-statistics-graph-card.ts index 5ff105a67c..fd44114d3e 100644 --- a/src/panels/lovelace/cards/hui-statistics-graph-card.ts +++ b/src/panels/lovelace/cards/hui-statistics-graph-card.ts @@ -19,6 +19,15 @@ import { fetchStatistics, Statistics } from "../../../data/history"; @customElement("hui-statistics-graph-card") export class HuiStatisticsGraphCard extends LitElement implements LovelaceCard { + public static async getConfigElement() { + await import("../editor/config-elements/hui-statistics-graph-card-editor"); + return document.createElement("hui-statistics-graph-card-editor"); + } + + public static getStubConfig(): StatisticsGraphCardConfig { + return { type: "statistics-graph", entities: [] }; + } + @property({ attribute: false }) public hass?: HomeAssistant; @state() private _statistics?: Statistics; diff --git a/src/panels/lovelace/editor/config-elements/hui-history-graph-card-editor.ts b/src/panels/lovelace/editor/config-elements/hui-history-graph-card-editor.ts index 7df5df1faa..405277dd74 100644 --- a/src/panels/lovelace/editor/config-elements/hui-history-graph-card-editor.ts +++ b/src/panels/lovelace/editor/config-elements/hui-history-graph-card-editor.ts @@ -38,10 +38,6 @@ export class HuiHistoryGraphCardEditor this._configEntities = processEditorEntities(config.entities); } - get _entity(): string { - return this._config!.entity || ""; - } - get _title(): string { return this._config!.title || ""; } diff --git a/src/panels/lovelace/editor/config-elements/hui-statistics-graph-card-editor.ts b/src/panels/lovelace/editor/config-elements/hui-statistics-graph-card-editor.ts new file mode 100644 index 0000000000..831177442b --- /dev/null +++ b/src/panels/lovelace/editor/config-elements/hui-statistics-graph-card-editor.ts @@ -0,0 +1,130 @@ +import "@polymer/paper-input/paper-input"; +import { CSSResultGroup, html, LitElement, TemplateResult } from "lit"; +import { customElement, property, state } from "lit/decorators"; +import { array, assert, number, object, optional, string } from "superstruct"; +import { fireEvent } from "../../../../common/dom/fire_event"; +import { HomeAssistant } from "../../../../types"; +import { StatisticsGraphCardConfig } from "../../cards/types"; +import { LovelaceCardEditor } from "../../types"; +import { entitiesConfigStruct } from "../structs/entities-struct"; +import { EditorTarget } from "../types"; +import { configElementStyle } from "./config-elements-style"; +import "../../../../components/entity/ha-statistics-picker"; +import { processConfigEntities } from "../../common/process-config-entities"; + +const cardConfigStruct = object({ + type: string(), + entities: array(entitiesConfigStruct), + title: optional(string()), + days_to_show: optional(number()), +}); + +@customElement("hui-statistics-graph-card-editor") +export class HuiStatisticsGraphCardEditor + extends LitElement + implements LovelaceCardEditor +{ + @property({ attribute: false }) public hass?: HomeAssistant; + + @state() private _config?: StatisticsGraphCardConfig; + + @state() private _configEntities?: string[]; + + public setConfig(config: StatisticsGraphCardConfig): void { + assert(config, cardConfigStruct); + this._config = config; + this._configEntities = config.entities + ? processConfigEntities(config.entities).map((cfg) => cfg.entity) + : []; + } + + get _title(): string { + return this._config!.title || ""; + } + + get _days_to_show(): number { + return this._config!.days_to_show || 30; + } + + protected render(): TemplateResult { + if (!this.hass || !this._config) { + return html``; + } + + return html` +