From 7b579c8e7a42f74247209894698f94955afa7384 Mon Sep 17 00:00:00 2001 From: c727 Date: Tue, 24 Jul 2018 16:02:52 +0200 Subject: [PATCH] Fix header toggle for entity objects (#1514) * Fix header toggle for entity objects * Finish * Lint --- src/common/const.js | 8 ++++++++ src/panels/lovelace/cards/hui-entities-card.js | 7 ++++++- src/panels/lovelace/cards/hui-picture-glance-card.js | 7 +------ src/panels/lovelace/components/hui-entities-toggle.js | 11 ++++------- .../lovelace/entity-rows/hui-group-entity-row.js | 8 +------- 5 files changed, 20 insertions(+), 21 deletions(-) diff --git a/src/common/const.js b/src/common/const.js index 56813fa321..1582b1a05c 100644 --- a/src/common/const.js +++ b/src/common/const.js @@ -69,6 +69,14 @@ export const STATES_OFF = [ 'off' ]; +/** Domains where we allow toggle in Lovelace. */ +export const DOMAINS_TOGGLE = new Set([ + 'fan', + 'input_boolean', + 'light', + 'switch' +]); + /** Temperature units. */ export const UNIT_C = '°C'; export const UNIT_F = '°F'; diff --git a/src/panels/lovelace/cards/hui-entities-card.js b/src/panels/lovelace/cards/hui-entities-card.js index e3d1977db6..f0c28d8314 100644 --- a/src/panels/lovelace/cards/hui-entities-card.js +++ b/src/panels/lovelace/cards/hui-entities-card.js @@ -53,7 +53,7 @@ class HuiEntitiesCard extends EventsMixin(PolymerElement) {
[[_config.title]]
@@ -132,6 +132,11 @@ class HuiEntitiesCard extends EventsMixin(PolymerElement) { element.hass = hass; }); } + + _filterEntities(items) { + return items.filter(item => (typeof item === 'string' || item.entity)).map(item => + (typeof item === 'string' ? item : item.entity)); + } } customElements.define('hui-entities-card', HuiEntitiesCard); diff --git a/src/panels/lovelace/cards/hui-picture-glance-card.js b/src/panels/lovelace/cards/hui-picture-glance-card.js index 365d568f67..19b0812a1a 100644 --- a/src/panels/lovelace/cards/hui-picture-glance-card.js +++ b/src/panels/lovelace/cards/hui-picture-glance-card.js @@ -7,6 +7,7 @@ import '../components/hui-image.js'; import computeStateDisplay from '../../../common/entity/compute_state_display.js'; import computeStateName from '../../../common/entity/compute_state_name.js'; +import { DOMAINS_TOGGLE } from '../../../common/const.js'; import stateIcon from '../../../common/entity/state_icon.js'; import toggleEntity from '../common/entity/toggle-entity.js'; import processConfigEntities from '../common/process-config-entities'; @@ -16,12 +17,6 @@ import LocalizeMixin from '../../../mixins/localize-mixin.js'; import NavigateMixin from '../../../mixins/navigate-mixin.js'; import computeDomain from '../../../common/entity/compute_domain'; -const DOMAINS_TOGGLE = new Set([ - 'input_boolean', - 'light', - 'switch' -]); - const STATES_OFF = new Set([ 'closed', 'locked', diff --git a/src/panels/lovelace/components/hui-entities-toggle.js b/src/panels/lovelace/components/hui-entities-toggle.js index e87c679af1..34695eb7ba 100644 --- a/src/panels/lovelace/components/hui-entities-toggle.js +++ b/src/panels/lovelace/components/hui-entities-toggle.js @@ -2,11 +2,8 @@ import { html } from '@polymer/polymer/lib/utils/html-tag.js'; import { PolymerElement } from '@polymer/polymer/polymer-element.js'; import '@polymer/paper-toggle-button/paper-toggle-button.js'; -import canToggleState from '../../../common/entity/can_toggle_state.js'; +import { DOMAINS_TOGGLE } from '../../../common/const.js'; import turnOnOffEntities from '../common/entity/turn-on-off-entities.js'; -import { STATES_OFF } from '../../../common/const.js'; - -const EXCLUDED_DOMAINS = ['cover', 'lock']; class HuiEntitiesToggle extends PolymerElement { static get template() { @@ -41,12 +38,12 @@ class HuiEntitiesToggle extends PolymerElement { } _computeToggleEntities(hass, entityIds) { - return entityIds.filter(entityId => (entityId in hass.states ? - !EXCLUDED_DOMAINS.includes(entityId.split('.', 1)[0]) && canToggleState(hass, hass.states[entityId]) : false)); + return entityIds.filter(entityId => (entityId in hass.states && + DOMAINS_TOGGLE.has(entityId.split('.', 1)[0]))); } _computeIsChecked(hass, entityIds) { - return entityIds.some(entityId => !STATES_OFF.includes(hass.states[entityId].state)); + return entityIds.some(entityId => hass.states[entityId].state === 'on'); } _callService(ev) { diff --git a/src/panels/lovelace/entity-rows/hui-group-entity-row.js b/src/panels/lovelace/entity-rows/hui-group-entity-row.js index 23430a9edc..6dc6386ebe 100644 --- a/src/panels/lovelace/entity-rows/hui-group-entity-row.js +++ b/src/panels/lovelace/entity-rows/hui-group-entity-row.js @@ -5,15 +5,9 @@ import '../components/hui-generic-entity-row.js'; import '../../../components/entity/ha-entity-toggle.js'; import computeStateDisplay from '../../../common/entity/compute_state_display.js'; +import { DOMAINS_TOGGLE } from '../../../common/const.js'; import LocalizeMixin from '../../../mixins/localize-mixin.js'; -const DOMAINS_TOGGLE = new Set([ - 'fan', - 'input_boolean', - 'light', - 'switch' -]); - /* * @appliesMixin LocalizeMixin */