From 4cf9472bf4b1bd8e194d9780139ee80e8dec9ec4 Mon Sep 17 00:00:00 2001 From: Bram Kragten Date: Wed, 2 Oct 2019 21:23:37 +0200 Subject: [PATCH] Allow yaml in dev services (#3860) * Allow yaml in dev services * remove json --- .../service/developer-tools-service.js | 29 ++++++++++++------- 1 file changed, 19 insertions(+), 10 deletions(-) diff --git a/src/panels/developer-tools/service/developer-tools-service.js b/src/panels/developer-tools/service/developer-tools-service.js index 59f14a119e..acbe2856c2 100644 --- a/src/panels/developer-tools/service/developer-tools-service.js +++ b/src/panels/developer-tools/service/developer-tools-service.js @@ -3,6 +3,8 @@ import "@polymer/paper-input/paper-textarea"; import { html } from "@polymer/polymer/lib/utils/html-tag"; import { PolymerElement } from "@polymer/polymer/polymer-element"; +import yaml from "js-yaml"; + import { ENTITY_COMPONENT_DOMAINS } from "../../../data/entity"; import "../../../components/entity/ha-entity-picker"; import "../../../components/ha-service-picker"; @@ -109,7 +111,7 @@ class HaPanelDevService extends PolymerElement { @@ -249,7 +251,7 @@ class HaPanelDevService extends PolymerElement { _computeParsedServiceData(serviceData) { try { - return serviceData ? JSON.parse(serviceData) : {}; + return serviceData ? yaml.safeLoad(serviceData) : {}; } catch (err) { return ERROR_SENTINEL; } @@ -283,17 +285,24 @@ class HaPanelDevService extends PolymerElement { _fillExampleData() { const example = {}; this._attributes.forEach((attribute) => { - example[attribute.key] = attribute.example; + if (attribute.example) { + let value = ""; + try { + value = yaml.safeLoad(attribute.example); + } catch (err) { + value = attribute.example; + } + example[attribute.key] = value; + } }); - this.serviceData = JSON.stringify(example, null, 2); + this.serviceData = yaml.safeDump(example); } _entityPicked(ev) { - this.serviceData = JSON.stringify( - { ...this.parsedJSON, entity_id: ev.target.value }, - null, - 2 - ); + this.serviceData = yaml.safeDump({ + ...this.parsedJSON, + entity_id: ev.target.value, + }); } }