diff --git a/src/panels/lovelace/cards/hui-camera-preview-card.js b/src/panels/lovelace/cards/hui-camera-preview-card.js deleted file mode 100644 index 5ecbd62b85..0000000000 --- a/src/panels/lovelace/cards/hui-camera-preview-card.js +++ /dev/null @@ -1,15 +0,0 @@ -import '../../../cards/ha-camera-card.js'; - -import LegacyWrapperCard from './hui-legacy-wrapper-card.js'; - -class HuiCameraPreviewCard extends LegacyWrapperCard { - constructor() { - super('ha-camera-card', 'camera'); - } - - getCardSize() { - return 4; - } -} - -customElements.define('hui-camera-preview-card', HuiCameraPreviewCard); diff --git a/src/panels/lovelace/cards/hui-picture-entity-card.js b/src/panels/lovelace/cards/hui-picture-entity-card.js index ac64cf6734..aabcfc7fca 100644 --- a/src/panels/lovelace/cards/hui-picture-entity-card.js +++ b/src/panels/lovelace/cards/hui-picture-entity-card.js @@ -6,7 +6,6 @@ import '../components/hui-image.js'; import computeDomain from '../../../common/entity/compute_domain.js'; import computeStateDisplay from '../../../common/entity/compute_state_display.js'; -import computeStateDomain from '../../../common/entity/compute_state_domain.js'; import computeStateName from '../../../common/entity/compute_state_name.js'; import toggleEntity from '../common/entity/toggle-entity.js'; @@ -58,7 +57,7 @@ class HuiPictureEntityCard extends EventsMixin(LocalizeMixin(PolymerElement)) { hass="[[hass]]" image="[[_config.image]]" state-image="[[_config.state_image]]" - camera-image="[[_config.camera_image]]" + camera-image="[[_getCameraImage(_config)]]" entity="[[_config.entity]]" >
@@ -84,10 +83,16 @@ class HuiPictureEntityCard extends EventsMixin(LocalizeMixin(PolymerElement)) { } setConfig(config) { - if (!config || !config.entity || - (!config.image && !config.state_image && !config.camera_image)) { + if (!config || !config.entity) { throw new Error('Error in card configuration.'); } + + this._entityDomain = computeDomain(config.entity); + if (this._entityDomain !== 'camera' && + (!config.image && !config.state_image && !config.camera_image)) { + throw new Error('No image source configured.'); + } + this._config = config; } @@ -125,8 +130,7 @@ class HuiPictureEntityCard extends EventsMixin(LocalizeMixin(PolymerElement)) { } _computeStateLabel(stateObj) { - const domain = computeStateDomain(stateObj); - switch (domain) { + switch (this._entityDomain) { case 'scene': return this.localize('ui.card.scene.activate'); case 'script': @@ -145,22 +149,24 @@ class HuiPictureEntityCard extends EventsMixin(LocalizeMixin(PolymerElement)) { _cardClicked() { const entityId = this._config && this._config.entity; - const stateObj = this.hass.states[entityId]; - if (!entityId || !stateObj) return; + if (!entityId || !(entityId in this.hass.states)) return; if (this._config.tap_action !== 'toggle') { this.fire('hass-more-info', { entityId }); return; } - const domain = computeDomain(entityId); - if (domain === 'weblink') { + if (this._entityDomain === 'weblink') { window.open(this.hass.states[entityId].state); } else { toggleEntity(this.hass, entityId); } } + + _getCameraImage(config) { + return this._entityDomain === 'camera' ? config.entity : config.camera_image; + } } customElements.define('hui-picture-entity-card', HuiPictureEntityCard); diff --git a/src/panels/lovelace/common/create-card-element.js b/src/panels/lovelace/common/create-card-element.js index d5cc9f2f67..e9d053d51f 100644 --- a/src/panels/lovelace/common/create-card-element.js +++ b/src/panels/lovelace/common/create-card-element.js @@ -1,6 +1,5 @@ import fireEvent from '../../../common/dom/fire_event.js'; -import '../cards/hui-camera-preview-card.js'; import '../cards/hui-entities-card.js'; import '../cards/hui-entity-filter-card.js'; import '../cards/hui-error-card.js'; @@ -21,7 +20,6 @@ import '../cards/hui-weather-forecast-card'; import createErrorCardConfig from './create-error-card-config.js'; const CARD_TYPES = [ - 'camera-preview', 'entities', 'entity-filter', 'error',