From aa27ee609d50494723e46c6b2cf23c6982416e36 Mon Sep 17 00:00:00 2001 From: c727 Date: Tue, 26 Jun 2018 16:52:53 +0200 Subject: [PATCH] Love: Improve code in glance picture (#1339) * Live: Improve code in glance card * Lint * Fix constants --- src/common/const.js | 6 ++--- .../lovelace/cards/hui-picture-glance-card.js | 24 +++++++++---------- 2 files changed, 15 insertions(+), 15 deletions(-) diff --git a/src/common/const.js b/src/common/const.js index f9ee04ec30..9e30ba40f2 100644 --- a/src/common/const.js +++ b/src/common/const.js @@ -63,16 +63,16 @@ export const DOMAINS_MORE_INFO_NO_HISTORY = [ /** States that we consider "on". */ export const STATES_ON = [ 'home', - 'locked', 'on', 'open', + 'unlocked' ]; /** States that we consider "off". */ export const STATES_OFF = [ 'closed', - 'off', - 'unlocked', + 'locked', + 'off' ]; /** Temperature units. */ diff --git a/src/panels/lovelace/cards/hui-picture-glance-card.js b/src/panels/lovelace/cards/hui-picture-glance-card.js index 7da67341e7..59bc68aadb 100644 --- a/src/panels/lovelace/cards/hui-picture-glance-card.js +++ b/src/panels/lovelace/cards/hui-picture-glance-card.js @@ -5,6 +5,7 @@ import '@polymer/paper-icon-button/paper-icon-button.js'; import '../../../components/ha-card.js'; import { STATES_ON } from '../../../common/const.js'; +import canToggleState from '../../../common/entity/can_toggle_state.js'; import computeDomain from '../../../common/entity/compute_domain.js'; import computeStateDisplay from '../../../common/entity/compute_state_display.js'; import computeStateName from '../../../common/entity/compute_state_name.js'; @@ -13,8 +14,6 @@ import stateIcon from '../../../common/entity/state_icon.js'; import EventsMixin from '../../../mixins/events-mixin.js'; import LocalizeMixin from '../../../mixins/localize-mixin.js'; -const DOMAINS_FORCE_DIALOG = ['binary_sensor', 'device_tracker', 'sensor']; - /* * @appliesMixin EventsMixin * @appliesMixin LocalizeMixin @@ -129,9 +128,9 @@ class HuiPictureGlanceCard extends LocalizeMixin(EventsMixin(PolymerElement)) { if (config.force_dialog) { dialog = config.entities; } else { - dialog = config.entities - .filter(entity => DOMAINS_FORCE_DIALOG.includes(computeDomain(entity))); - service = config.entities.filter(entity => !dialog.includes(entity)); + service = config.entities.filter(entity => + canToggleState(this.hass, this.hass.states[entity])); + dialog = config.entities.filter(entity => !service.includes(entity)); } } else { _error = 'Error in card configuration.'; @@ -165,21 +164,22 @@ class HuiPictureGlanceCard extends LocalizeMixin(EventsMixin(PolymerElement)) { _callService(ev) { const entityId = ev.model.item; - const domain = computeDomain(entityId); - const isOn = STATES_ON.includes(this.hass.states[entityId].state); + let domain = computeDomain(entityId); + const turnOn = !STATES_ON.includes(this.hass.states[entityId].state); let service; switch (domain) { case 'lock': - service = isOn ? 'unlock' : 'lock'; + service = turnOn ? 'unlock' : 'lock'; break; case 'cover': - service = isOn ? 'close' : 'open'; + service = turnOn ? 'open_cover' : 'close_cover'; break; - case 'scene': - service = 'turn_on'; + case 'group': + domain = 'homeassistant'; + service = turnOn ? 'turn_on' : 'turn_off'; break; default: - service = isOn ? 'turn_off' : 'turn_on'; + service = turnOn ? 'turn_on' : 'turn_off'; } this.hass.callService(domain, service, { entity_id: entityId }); }