diff --git a/src/panels/lovelace/cards/hui-picture-entity-card.js b/src/panels/lovelace/cards/hui-picture-entity-card.js index 64abd7537d..817c95bf6c 100644 --- a/src/panels/lovelace/cards/hui-picture-entity-card.js +++ b/src/panels/lovelace/cards/hui-picture-entity-card.js @@ -52,7 +52,7 @@ class HuiPictureEntityCard extends LocalizeMixin(PolymerElement) { image="[[_config.image]]" state-image="[[_config.state_image]]" camera-image="[[_config.camera_image]]" - state="[[_getStateObj(_oldState)]]" + entity="[[_config.entity]]" >
@@ -77,7 +77,8 @@ class HuiPictureEntityCard extends LocalizeMixin(PolymerElement) { } setConfig(config) { - if (!config || !config.entity || (!config.image && !config.state_image)) { + if (!config || !config.entity || + (!config.image && !config.state_image && !config.camera_image)) { throw new Error('Error in card configuration.'); } this._config = config; @@ -134,10 +135,6 @@ class HuiPictureEntityCard extends LocalizeMixin(PolymerElement) { toggleEntity(this.hass, entityId); } } - - _getStateObj() { - return this.hass && this.hass.states[this._config.entity]; - } } customElements.define('hui-picture-entity-card', HuiPictureEntityCard); diff --git a/src/panels/lovelace/cards/hui-picture-glance-card.js b/src/panels/lovelace/cards/hui-picture-glance-card.js index 3955a9b693..3ef0e5e993 100644 --- a/src/panels/lovelace/cards/hui-picture-glance-card.js +++ b/src/panels/lovelace/cards/hui-picture-glance-card.js @@ -60,7 +60,9 @@ class HuiPictureGlanceCard extends LocalizeMixin(EventsMixin(PolymerElement)) {
[[_config.title]]
@@ -115,7 +117,8 @@ class HuiPictureGlanceCard extends LocalizeMixin(EventsMixin(PolymerElement)) { setConfig(config) { if (!config || !config.entities || !Array.isArray(config.entities) || - !(config.image || config.camera_image)) { + !(config.image || config.camera_image || config.state_image) || + (config.state_image && !config.entity)) { throw new Error('Invalid card configuration'); } diff --git a/src/panels/lovelace/components/hui-image.js b/src/panels/lovelace/components/hui-image.js index 066a0a5deb..7926501752 100644 --- a/src/panels/lovelace/components/hui-image.js +++ b/src/panels/lovelace/components/hui-image.js @@ -49,12 +49,11 @@ class HuiImage extends LocalizeMixin(PolymerElement) { static get properties() { return { - hass: Object, - state: { + hass: { type: Object, - value: null, - observer: '_stateChanged' + observer: '_hassChanged' }, + entity: String, image: String, stateImage: Object, cameraImage: String, @@ -102,11 +101,12 @@ class HuiImage extends LocalizeMixin(PolymerElement) { this._error = false; } - _stateChanged(state) { - if (this.cameraImage) { + _hassChanged(hass) { + if (this.cameraImage || !this.entity) { return; } + const state = hass.states[this.entity]; const unavailable = !isValidObject(state, ['state']); if (!this.stateImage) { @@ -114,8 +114,7 @@ class HuiImage extends LocalizeMixin(PolymerElement) { return; } - const stateImg = !unavailable ? - (this.stateImage[state.state] || this.stateImage.default) : this.stateImage.unavailable; + const stateImg = !unavailable ? this.stateImage[state.state] : this.stateImage.unavailable; this.setProperties({ _imageClass: !stateImg && (unavailable || STATES_OFF.includes(state.state)) ? 'state-off' : '',