From bc94dce8f799c164e1a8830263aa74d8a31cbb87 Mon Sep 17 00:00:00 2001 From: Paulus Schoutsen Date: Sun, 26 Nov 2017 10:05:07 -0800 Subject: [PATCH] Fix bugs in service picker and service dev tool (#687) --- panels/dev-service/ha-panel-dev-service.html | 2 +- src/components/ha-combo-box.html | 2 +- src/components/ha-service-picker.html | 19 +++++++++++++------ 3 files changed, 15 insertions(+), 8 deletions(-) diff --git a/panels/dev-service/ha-panel-dev-service.html b/panels/dev-service/ha-panel-dev-service.html index 6d9fede93e..aff3ef8fe4 100644 --- a/panels/dev-service/ha-panel-dev-service.html +++ b/panels/dev-service/ha-panel-dev-service.html @@ -294,7 +294,7 @@ alert(`Error parsing JSON: ${this.serviceData}`); } - this.hass.callService(this.domain, this.service, this.parsedJSON); + this.hass.callService(this._domain, this._service, this.parsedJSON); } _entityPicked(ev) { diff --git a/src/components/ha-combo-box.html b/src/components/ha-combo-box.html index 1be00a835c..d3c817e53e 100644 --- a/src/components/ha-combo-box.html +++ b/src/components/ha-combo-box.html @@ -16,7 +16,7 @@ } @@ -19,7 +19,11 @@ class HaServicePicker extends Polymer.Element { static get properties() { return { - hass: Object, + hass: { + type: Object, + observer: '_hassChanged', + }, + _services: Array, value: { type: String, notify: true, @@ -27,11 +31,14 @@ class HaServicePicker extends Polymer.Element { }; } - _computeServices(hass) { + _hassChanged(hass, oldHass) { + if (!hass) { + this._services = []; + } else if (oldHass && hass.config.services === oldHass.config.services) { + return; + } const result = []; - if (!hass) return result; - Object.keys(hass.config.services).sort().forEach((domain) => { const services = Object.keys(hass.config.services[domain]).sort(); @@ -40,7 +47,7 @@ class HaServicePicker extends Polymer.Element { } }); - return result; + this._services = result; } }