Love: Improve code in glance picture (#1339)

* Live: Improve code in glance card

* Lint

* Fix constants
This commit is contained in:
c727 2018-06-26 16:52:53 +02:00 committed by Paulus Schoutsen
parent e1e88aa8b2
commit aa27ee609d
2 changed files with 15 additions and 15 deletions

View File

@ -63,16 +63,16 @@ export const DOMAINS_MORE_INFO_NO_HISTORY = [
/** States that we consider "on". */ /** States that we consider "on". */
export const STATES_ON = [ export const STATES_ON = [
'home', 'home',
'locked',
'on', 'on',
'open', 'open',
'unlocked'
]; ];
/** States that we consider "off". */ /** States that we consider "off". */
export const STATES_OFF = [ export const STATES_OFF = [
'closed', 'closed',
'off', 'locked',
'unlocked', 'off'
]; ];
/** Temperature units. */ /** Temperature units. */

View File

@ -5,6 +5,7 @@ import '@polymer/paper-icon-button/paper-icon-button.js';
import '../../../components/ha-card.js'; import '../../../components/ha-card.js';
import { STATES_ON } from '../../../common/const.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 computeDomain from '../../../common/entity/compute_domain.js';
import computeStateDisplay from '../../../common/entity/compute_state_display.js'; import computeStateDisplay from '../../../common/entity/compute_state_display.js';
import computeStateName from '../../../common/entity/compute_state_name.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 EventsMixin from '../../../mixins/events-mixin.js';
import LocalizeMixin from '../../../mixins/localize-mixin.js'; import LocalizeMixin from '../../../mixins/localize-mixin.js';
const DOMAINS_FORCE_DIALOG = ['binary_sensor', 'device_tracker', 'sensor'];
/* /*
* @appliesMixin EventsMixin * @appliesMixin EventsMixin
* @appliesMixin LocalizeMixin * @appliesMixin LocalizeMixin
@ -129,9 +128,9 @@ class HuiPictureGlanceCard extends LocalizeMixin(EventsMixin(PolymerElement)) {
if (config.force_dialog) { if (config.force_dialog) {
dialog = config.entities; dialog = config.entities;
} else { } else {
dialog = config.entities service = config.entities.filter(entity =>
.filter(entity => DOMAINS_FORCE_DIALOG.includes(computeDomain(entity))); canToggleState(this.hass, this.hass.states[entity]));
service = config.entities.filter(entity => !dialog.includes(entity)); dialog = config.entities.filter(entity => !service.includes(entity));
} }
} else { } else {
_error = 'Error in card configuration.'; _error = 'Error in card configuration.';
@ -165,21 +164,22 @@ class HuiPictureGlanceCard extends LocalizeMixin(EventsMixin(PolymerElement)) {
_callService(ev) { _callService(ev) {
const entityId = ev.model.item; const entityId = ev.model.item;
const domain = computeDomain(entityId); let domain = computeDomain(entityId);
const isOn = STATES_ON.includes(this.hass.states[entityId].state); const turnOn = !STATES_ON.includes(this.hass.states[entityId].state);
let service; let service;
switch (domain) { switch (domain) {
case 'lock': case 'lock':
service = isOn ? 'unlock' : 'lock'; service = turnOn ? 'unlock' : 'lock';
break; break;
case 'cover': case 'cover':
service = isOn ? 'close' : 'open'; service = turnOn ? 'open_cover' : 'close_cover';
break; break;
case 'scene': case 'group':
service = 'turn_on'; domain = 'homeassistant';
service = turnOn ? 'turn_on' : 'turn_off';
break; break;
default: default:
service = isOn ? 'turn_off' : 'turn_on'; service = turnOn ? 'turn_on' : 'turn_off';
} }
this.hass.callService(domain, service, { entity_id: entityId }); this.hass.callService(domain, service, { entity_id: entityId });
} }