diff --git a/src/panels/lovelace/common/data.ts b/src/data/lovelace.ts similarity index 61% rename from src/panels/lovelace/common/data.ts rename to src/data/lovelace.ts index 289e277b46..9aac8076ab 100644 --- a/src/panels/lovelace/common/data.ts +++ b/src/data/lovelace.ts @@ -1,5 +1,29 @@ -import { HomeAssistant } from "../../../types"; -import { LovelaceConfig, LovelaceCardConfig } from "../types"; +import { HomeAssistant } from "../types"; + +export interface LovelaceConfig { + _frontendAuto: boolean; + title?: string; + views: LovelaceViewConfig[]; +} + +export interface LovelaceViewConfig { + title?: string; + badges?: string[]; + cards?: LovelaceCardConfig[]; + id?: string; + icon?: string; +} + +export interface LovelaceCardConfig { + id?: string; + type: string; + [key: string]: any; +} + +export const fetchConfig = (hass: HomeAssistant): Promise => + hass.callWS({ + type: "lovelace/config", + }); export const migrateConfig = (hass: HomeAssistant): Promise => hass.callWS({ diff --git a/src/panels/lovelace/cards/hui-conditional-card.ts b/src/panels/lovelace/cards/hui-conditional-card.ts index 4646b7386b..0f2e6329cc 100644 --- a/src/panels/lovelace/cards/hui-conditional-card.ts +++ b/src/panels/lovelace/cards/hui-conditional-card.ts @@ -1,7 +1,8 @@ import createCardElement from "../common/create-card-element"; import { computeCardSize } from "../common/compute-card-size"; import { HomeAssistant } from "../../../types"; -import { LovelaceCard, LovelaceCardConfig } from "../types"; +import { LovelaceCard } from "../types"; +import { LovelaceCardConfig } from "../../../data/lovelace"; interface Condition { entity: string; diff --git a/src/panels/lovelace/cards/hui-entities-card.ts b/src/panels/lovelace/cards/hui-entities-card.ts index cbb51e71a7..182c26aac5 100644 --- a/src/panels/lovelace/cards/hui-entities-card.ts +++ b/src/panels/lovelace/cards/hui-entities-card.ts @@ -14,7 +14,8 @@ import { DOMAINS_HIDE_MORE_INFO } from "../../../common/const"; import { hassLocalizeLitMixin } from "../../../mixins/lit-localize-mixin"; import { HomeAssistant } from "../../../types"; import { EntityConfig, EntityRow } from "../entity-rows/types"; -import { LovelaceCard, LovelaceCardConfig, LovelaceCardEditor } from "../types"; +import { LovelaceCard, LovelaceCardEditor } from "../types"; +import { LovelaceCardConfig } from "../../../data/lovelace"; import processConfigEntities from "../common/process-config-entities"; import createRowElement from "../common/create-row-element"; import computeDomain from "../../../common/entity/compute_domain"; diff --git a/src/panels/lovelace/cards/hui-entity-button-card.ts b/src/panels/lovelace/cards/hui-entity-button-card.ts index 78c0320e26..4bc9d08e5d 100644 --- a/src/panels/lovelace/cards/hui-entity-button-card.ts +++ b/src/panels/lovelace/cards/hui-entity-button-card.ts @@ -18,7 +18,8 @@ import applyThemesOnElement from "../../../common/dom/apply_themes_on_element"; import { toggleEntity } from "../common/entity/toggle-entity"; import { HomeAssistant, LightEntity } from "../../../types"; import { hassLocalizeLitMixin } from "../../../mixins/lit-localize-mixin"; -import { LovelaceCard, LovelaceCardConfig } from "../types"; +import { LovelaceCard } from "../types"; +import { LovelaceCardConfig } from "../../../data/lovelace"; import { longPress } from "../common/directives/long-press-directive"; import { fireEvent } from "../../../common/dom/fire_event"; diff --git a/src/panels/lovelace/cards/hui-error-card.ts b/src/panels/lovelace/cards/hui-error-card.ts index 6d89c406c9..4cbcedb3eb 100644 --- a/src/panels/lovelace/cards/hui-error-card.ts +++ b/src/panels/lovelace/cards/hui-error-card.ts @@ -1,6 +1,7 @@ import { html, LitElement } from "@polymer/lit-element"; -import { LovelaceCard, LovelaceCardConfig } from "../types"; +import { LovelaceCard } from "../types"; +import { LovelaceCardConfig } from "../../../data/lovelace"; import { TemplateResult } from "lit-html"; interface Config extends LovelaceCardConfig { diff --git a/src/panels/lovelace/cards/hui-gauge-card.ts b/src/panels/lovelace/cards/hui-gauge-card.ts index e901f5d3cf..aea51d6419 100644 --- a/src/panels/lovelace/cards/hui-gauge-card.ts +++ b/src/panels/lovelace/cards/hui-gauge-card.ts @@ -6,7 +6,8 @@ import { } from "@polymer/lit-element"; import { TemplateResult } from "lit-html"; -import { LovelaceCard, LovelaceCardConfig } from "../types"; +import { LovelaceCard } from "../types"; +import { LovelaceCardConfig } from "../../../data/lovelace"; import { HomeAssistant } from "../../../types"; import { fireEvent } from "../../../common/dom/fire_event"; diff --git a/src/panels/lovelace/cards/hui-glance-card.ts b/src/panels/lovelace/cards/hui-glance-card.ts index 246a0e564d..0fefb11001 100644 --- a/src/panels/lovelace/cards/hui-glance-card.ts +++ b/src/panels/lovelace/cards/hui-glance-card.ts @@ -10,7 +10,8 @@ import { classMap } from "lit-html/directives/classMap"; import { fireEvent } from "../../../common/dom/fire_event"; import { hassLocalizeLitMixin } from "../../../mixins/lit-localize-mixin"; import { HomeAssistant } from "../../../types"; -import { LovelaceCard, LovelaceCardConfig, LovelaceCardEditor } from "../types"; +import { LovelaceCard, LovelaceCardEditor } from "../types"; +import { LovelaceCardConfig } from "../../../data/lovelace"; import { longPress } from "../common/directives/long-press-directive"; import { EntityConfig } from "../entity-rows/types"; import { toggleEntity } from "../common/entity/toggle-entity"; diff --git a/src/panels/lovelace/cards/hui-iframe-card.ts b/src/panels/lovelace/cards/hui-iframe-card.ts index a964bcac90..93a643fc53 100644 --- a/src/panels/lovelace/cards/hui-iframe-card.ts +++ b/src/panels/lovelace/cards/hui-iframe-card.ts @@ -2,7 +2,8 @@ import { html, LitElement, PropertyDeclarations } from "@polymer/lit-element"; import "../../../components/ha-card"; -import { LovelaceCard, LovelaceCardConfig } from "../types"; +import { LovelaceCard } from "../types"; +import { LovelaceCardConfig } from "../../../data/lovelace"; import { TemplateResult } from "lit-html"; import { styleMap } from "lit-html/directives/styleMap"; diff --git a/src/panels/lovelace/cards/hui-light-card.ts b/src/panels/lovelace/cards/hui-light-card.ts index 99e2c2c613..11204aa5fc 100644 --- a/src/panels/lovelace/cards/hui-light-card.ts +++ b/src/panels/lovelace/cards/hui-light-card.ts @@ -12,7 +12,8 @@ import { jQuery } from "../../../resources/jquery"; import { roundSliderStyle } from "../../../resources/jquery.roundslider"; import { HomeAssistant, LightEntity } from "../../../types"; import { hassLocalizeLitMixin } from "../../../mixins/lit-localize-mixin"; -import { LovelaceCard, LovelaceCardConfig } from "../types"; +import { LovelaceCard } from "../types"; +import { LovelaceCardConfig } from "../../../data/lovelace"; import { longPress } from "../common/directives/long-press-directive"; import stateIcon from "../../../common/entity/state_icon"; diff --git a/src/panels/lovelace/cards/hui-markdown-card.ts b/src/panels/lovelace/cards/hui-markdown-card.ts index 99380293a8..e30fadaa40 100644 --- a/src/panels/lovelace/cards/hui-markdown-card.ts +++ b/src/panels/lovelace/cards/hui-markdown-card.ts @@ -4,7 +4,8 @@ import { classMap } from "lit-html/directives/classMap"; import "../../../components/ha-card"; import "../../../components/ha-markdown"; -import { LovelaceCard, LovelaceCardConfig } from "../types"; +import { LovelaceCard } from "../types"; +import { LovelaceCardConfig } from "../../../data/lovelace"; import { TemplateResult } from "lit-html"; interface Config extends LovelaceCardConfig { diff --git a/src/panels/lovelace/cards/hui-picture-card.ts b/src/panels/lovelace/cards/hui-picture-card.ts index f5744a5c7f..a638da66a2 100644 --- a/src/panels/lovelace/cards/hui-picture-card.ts +++ b/src/panels/lovelace/cards/hui-picture-card.ts @@ -2,7 +2,8 @@ import { html, LitElement, PropertyDeclarations } from "@polymer/lit-element"; import "../../../components/ha-card"; -import { LovelaceCard, LovelaceCardConfig } from "../types"; +import { LovelaceCard } from "../types"; +import { LovelaceCardConfig } from "../../../data/lovelace"; import { navigate } from "../../../common/navigate"; import { HomeAssistant } from "../../../types"; import { TemplateResult } from "lit-html"; diff --git a/src/panels/lovelace/cards/hui-picture-elements-card.ts b/src/panels/lovelace/cards/hui-picture-elements-card.ts index 4d77fdaab8..16e22e1bb6 100644 --- a/src/panels/lovelace/cards/hui-picture-elements-card.ts +++ b/src/panels/lovelace/cards/hui-picture-elements-card.ts @@ -3,7 +3,8 @@ import { TemplateResult } from "lit-html"; import createHuiElement from "../common/create-hui-element"; -import { LovelaceCard, LovelaceCardConfig } from "../types"; +import { LovelaceCard } from "../types"; +import { LovelaceCardConfig } from "../../../data/lovelace"; import { HomeAssistant } from "../../../types"; import { LovelaceElementConfig, LovelaceElement } from "../elements/types"; diff --git a/src/panels/lovelace/cards/hui-picture-glance-card.ts b/src/panels/lovelace/cards/hui-picture-glance-card.ts index 8853146118..816148aa86 100644 --- a/src/panels/lovelace/cards/hui-picture-glance-card.ts +++ b/src/panels/lovelace/cards/hui-picture-glance-card.ts @@ -5,7 +5,8 @@ import { TemplateResult } from "lit-html"; import { hassLocalizeLitMixin } from "../../../mixins/lit-localize-mixin"; import { fireEvent } from "../../../common/dom/fire_event"; import { DOMAINS_TOGGLE } from "../../../common/const"; -import { LovelaceCard, LovelaceCardConfig } from "../types"; +import { LovelaceCard } from "../types"; +import { LovelaceCardConfig } from "../../../data/lovelace"; import { EntityConfig } from "../entity-rows/types"; import { navigate } from "../../../common/navigate"; import { HomeAssistant } from "../../../types"; diff --git a/src/panels/lovelace/cards/hui-shopping-list-card.ts b/src/panels/lovelace/cards/hui-shopping-list-card.ts index 1930dfbdff..05a53d88e0 100644 --- a/src/panels/lovelace/cards/hui-shopping-list-card.ts +++ b/src/panels/lovelace/cards/hui-shopping-list-card.ts @@ -9,7 +9,8 @@ import "../../../components/ha-icon"; import { hassLocalizeLitMixin } from "../../../mixins/lit-localize-mixin"; import { HomeAssistant } from "../../../types"; -import { LovelaceCard, LovelaceCardConfig } from "../types"; +import { LovelaceCard } from "../types"; +import { LovelaceCardConfig } from "../../../data/lovelace"; import { fetchItems, completeItem, diff --git a/src/panels/lovelace/cards/hui-stack-card.ts b/src/panels/lovelace/cards/hui-stack-card.ts index cf2820cdc8..f246ed8c74 100644 --- a/src/panels/lovelace/cards/hui-stack-card.ts +++ b/src/panels/lovelace/cards/hui-stack-card.ts @@ -3,7 +3,8 @@ import { TemplateResult } from "lit-html"; import createCardElement from "../common/create-card-element"; -import { LovelaceCard, LovelaceCardConfig } from "../types"; +import { LovelaceCard } from "../types"; +import { LovelaceCardConfig } from "../../../data/lovelace"; import { HomeAssistant } from "../../../types"; interface Config extends LovelaceCardConfig { diff --git a/src/panels/lovelace/cards/hui-thermostat-card.ts b/src/panels/lovelace/cards/hui-thermostat-card.ts index e39376c32a..c2f5f5fab4 100644 --- a/src/panels/lovelace/cards/hui-thermostat-card.ts +++ b/src/panels/lovelace/cards/hui-thermostat-card.ts @@ -15,7 +15,8 @@ import { hasConfigOrEntityChanged } from "../common/has-changed"; import { roundSliderStyle } from "../../../resources/jquery.roundslider"; import { HomeAssistant, ClimateEntity } from "../../../types"; import { hassLocalizeLitMixin } from "../../../mixins/lit-localize-mixin"; -import { LovelaceCard, LovelaceCardConfig } from "../types"; +import { LovelaceCard } from "../types"; +import { LovelaceCardConfig } from "../../../data/lovelace"; import "../../../components/ha-card"; import "../../../components/ha-icon"; diff --git a/src/panels/lovelace/common/generate-lovelace-config.ts b/src/panels/lovelace/common/generate-lovelace-config.ts index 6109b96fef..ec53061460 100644 --- a/src/panels/lovelace/common/generate-lovelace-config.ts +++ b/src/panels/lovelace/common/generate-lovelace-config.ts @@ -3,7 +3,7 @@ import { LovelaceConfig, LovelaceCardConfig, LovelaceViewConfig, -} from "../types"; +} from "../../../data/lovelace"; import { HassEntity, HassEntities } from "home-assistant-js-websocket"; import extractViews from "../../../common/entity/extract_views"; import getViewEntities from "../../../common/entity/get_view_entities"; diff --git a/src/panels/lovelace/components/hui-card-options.ts b/src/panels/lovelace/components/hui-card-options.ts index 8cc1ab6a85..5b8126e206 100644 --- a/src/panels/lovelace/components/hui-card-options.ts +++ b/src/panels/lovelace/components/hui-card-options.ts @@ -6,7 +6,7 @@ import { registerEditCardDialog, } from "../editor/hui-dialog-edit-card"; import { HomeAssistant } from "../../../types"; -import { LovelaceCardConfig } from "../types"; +import { LovelaceCardConfig } from "../../../data/lovelace"; declare global { // for fire event diff --git a/src/panels/lovelace/editor/hui-card-preview.ts b/src/panels/lovelace/editor/hui-card-preview.ts index 31617da87d..4cedeec537 100644 --- a/src/panels/lovelace/editor/hui-card-preview.ts +++ b/src/panels/lovelace/editor/hui-card-preview.ts @@ -3,7 +3,8 @@ import "@polymer/paper-input/paper-textarea"; import createCardElement from "../common/create-card-element"; import createErrorCardConfig from "../common/create-error-card-config"; import { HomeAssistant } from "../../../types"; -import { LovelaceCard, LovelaceCardConfig } from "../types"; +import { LovelaceCardConfig } from "../../../data/lovelace"; +import { LovelaceCard } from "../types"; import { ConfigError } from "./types"; const CUSTOM_TYPE_PREFIX = "custom:"; diff --git a/src/panels/lovelace/editor/hui-dialog-edit-card.ts b/src/panels/lovelace/editor/hui-dialog-edit-card.ts index 741ac97497..7907098a47 100644 --- a/src/panels/lovelace/editor/hui-dialog-edit-card.ts +++ b/src/panels/lovelace/editor/hui-dialog-edit-card.ts @@ -3,7 +3,7 @@ import { TemplateResult } from "lit-html"; import { HomeAssistant } from "../../../types"; import { fireEvent, HASSDomEvent } from "../../../common/dom/fire_event"; -import { LovelaceCardConfig } from "../types"; +import { LovelaceCardConfig } from "../../../data/lovelace"; import "./hui-edit-card"; import "./hui-migrate-config"; diff --git a/src/panels/lovelace/editor/hui-dialog-save-config.ts b/src/panels/lovelace/editor/hui-dialog-save-config.ts index de759c54cf..9b7bc343ff 100644 --- a/src/panels/lovelace/editor/hui-dialog-save-config.ts +++ b/src/panels/lovelace/editor/hui-dialog-save-config.ts @@ -9,9 +9,12 @@ import { PaperDialogElement } from "@polymer/paper-dialog/paper-dialog"; import "@polymer/paper-button/paper-button"; import { HomeAssistant } from "../../../types"; -import { LovelaceConfig } from "../types"; -import { saveConfig, migrateConfig } from "../common/data"; +import { + saveConfig, + migrateConfig, + LovelaceConfig, +} from "../../../data/lovelace"; import { fireEvent } from "../../../common/dom/fire_event"; import { hassLocalizeLitMixin } from "../../../mixins/lit-localize-mixin"; diff --git a/src/panels/lovelace/editor/hui-edit-card.ts b/src/panels/lovelace/editor/hui-edit-card.ts index 6b7114e654..5e69084d92 100644 --- a/src/panels/lovelace/editor/hui-edit-card.ts +++ b/src/panels/lovelace/editor/hui-edit-card.ts @@ -12,7 +12,7 @@ import "@polymer/paper-button/paper-button"; import "@polymer/paper-input/paper-textarea"; import "@polymer/paper-dialog-scrollable/paper-dialog-scrollable"; import { HomeAssistant } from "../../../types"; -import { updateCardConfig } from "../common/data"; +import { updateCardConfig, LovelaceCardConfig } from "../../../data/lovelace"; import { fireEvent } from "../../../common/dom/fire_event"; import { hassLocalizeLitMixin } from "../../../mixins/lit-localize-mixin"; @@ -21,7 +21,7 @@ import "./hui-card-preview"; // This is not a duplicate import, one is for types, one is for element. // tslint:disable-next-line import { HuiCardPreview } from "./hui-card-preview"; -import { LovelaceCardEditor, LovelaceCardConfig } from "../types"; +import { LovelaceCardEditor } from "../types"; import { YamlChangedEvent, ConfigValue, ConfigError } from "./types"; import { extYamlSchema } from "./yaml-ext-schema"; import { EntityConfig } from "../entity-rows/types"; diff --git a/src/panels/lovelace/editor/hui-migrate-config.ts b/src/panels/lovelace/editor/hui-migrate-config.ts index 078a8a53cc..63d42786d6 100644 --- a/src/panels/lovelace/editor/hui-migrate-config.ts +++ b/src/panels/lovelace/editor/hui-migrate-config.ts @@ -11,7 +11,7 @@ import { fireEvent } from "../../../common/dom/fire_event"; import { HomeAssistant } from "../../../types"; import { hassLocalizeLitMixin } from "../../../mixins/lit-localize-mixin"; -import { migrateConfig } from "../common/data"; +import { migrateConfig } from "../../../data/lovelace"; export class HuiMigrateConfig extends hassLocalizeLitMixin(LitElement) { protected hass?: HomeAssistant; diff --git a/src/panels/lovelace/editor/hui-yaml-editor.ts b/src/panels/lovelace/editor/hui-yaml-editor.ts index da8f322cbf..6dcb47b70c 100644 --- a/src/panels/lovelace/editor/hui-yaml-editor.ts +++ b/src/panels/lovelace/editor/hui-yaml-editor.ts @@ -5,7 +5,7 @@ import "@polymer/paper-spinner/paper-spinner"; import { HomeAssistant } from "../../../types"; import { fireEvent } from "../../../common/dom/fire_event"; -import { getCardConfig } from "../common/data"; +import { getCardConfig } from "../../../data/lovelace"; export class HuiYAMLEditor extends LitElement { public cardId?: string; diff --git a/src/panels/lovelace/editor/types.ts b/src/panels/lovelace/editor/types.ts index c89ab3e10a..8c929f37a5 100644 --- a/src/panels/lovelace/editor/types.ts +++ b/src/panels/lovelace/editor/types.ts @@ -1,4 +1,4 @@ -import { LovelaceCardConfig } from "../types"; +import { LovelaceCardConfig } from "../../../data/lovelace"; import { EntityConfig } from "../entity-rows/types"; export interface YamlChangedEvent extends Event { diff --git a/src/panels/lovelace/ha-panel-lovelace.js b/src/panels/lovelace/ha-panel-lovelace.js index 2e7f4237de..c7b8fa27a8 100644 --- a/src/panels/lovelace/ha-panel-lovelace.js +++ b/src/panels/lovelace/ha-panel-lovelace.js @@ -3,6 +3,7 @@ import { PolymerElement } from "@polymer/polymer/polymer-element"; import "@polymer/paper-button/paper-button"; import { registerSaveDialog } from "./editor/hui-dialog-save-config"; +import { fetchConfig } from "../../data/lovelace"; import "../../layouts/hass-loading-screen"; import "../../layouts/hass-error-screen"; import "./hui-root"; @@ -114,7 +115,7 @@ class Lovelace extends localizeMixin(PolymerElement) { async _fetchConfig() { try { - const conf = await this.hass.callWS({ type: "lovelace/config" }); + const conf = await fetchConfig(this.hass); this.setProperties({ _config: conf, _state: "loaded", diff --git a/src/panels/lovelace/types.ts b/src/panels/lovelace/types.ts index 6ebd271676..141f12c86f 100644 --- a/src/panels/lovelace/types.ts +++ b/src/panels/lovelace/types.ts @@ -1,24 +1,5 @@ import { HomeAssistant } from "../../types"; - -export interface LovelaceCardConfig { - id?: string; - type: string; - [key: string]: any; -} - -export interface LovelaceViewConfig { - title?: string; - badges?: string[]; - cards?: LovelaceCardConfig[]; - id?: string; - icon?: string; -} - -export interface LovelaceConfig { - _frontendAuto: boolean; - title?: string; - views: LovelaceViewConfig[]; -} +import { LovelaceCardConfig } from "../../data/lovelace"; export interface LovelaceCard extends HTMLElement { hass?: HomeAssistant;