Add service description in dev tools
This commit is contained in:
parent
8c317b4c27
commit
72bceff0fc
|
@ -23,10 +23,10 @@
|
|||
|
||||
<template>
|
||||
<ul>
|
||||
<template is='dom-repeat' items="[[serviceDomains]]" as="domain">
|
||||
<template is='dom-repeat' items="[[domain.services]]" as="service">
|
||||
<template is='dom-repeat' items="[[computeDomains(serviceDomains)]]" as="domain">
|
||||
<template is='dom-repeat' items="[[computeServices(serviceDomains, domain)]]" as="service">
|
||||
<li><a href='#' on-click='serviceClicked'>
|
||||
<span>[[domain.domain]]</span>/<span>[[service]]</span>
|
||||
<span>[[domain]]</span>/<span>[[service]]</span>
|
||||
</a></li>
|
||||
</template>
|
||||
</template>
|
||||
|
|
|
@ -13,21 +13,22 @@ export default new Polymer({
|
|||
properties: {
|
||||
serviceDomains: {
|
||||
type: Array,
|
||||
bindNuclear: [
|
||||
serviceGetters.entityMap,
|
||||
(map) => map.valueSeq().sortBy((domain) => domain.domain).toJS(),
|
||||
],
|
||||
bindNuclear: serviceGetters.entityMap,
|
||||
},
|
||||
},
|
||||
|
||||
computeServices(domain) {
|
||||
return this.services.get(domain).toArray();
|
||||
computeDomains(serviceDomains) {
|
||||
return serviceDomains.valueSeq().map((domain) => domain.domain).sort().toJS();
|
||||
},
|
||||
|
||||
computeServices(serviceDomains, domain) {
|
||||
return serviceDomains.get(domain).get('services').keySeq().toArray();
|
||||
},
|
||||
|
||||
serviceClicked(ev) {
|
||||
ev.preventDefault();
|
||||
this.fire(
|
||||
'service-selected', {domain: ev.model.domain.domain,
|
||||
'service-selected', {domain: ev.model.domain,
|
||||
service: ev.model.service});
|
||||
},
|
||||
});
|
||||
|
|
|
@ -18,6 +18,11 @@
|
|||
.ha-form {
|
||||
margin-right: 16px;
|
||||
}
|
||||
|
||||
.description {
|
||||
margin-top: 24px;
|
||||
white-space: pre-wrap;
|
||||
}
|
||||
</style>
|
||||
<template>
|
||||
<partial-base narrow="[[narrow]]" show-menu='[[showMenu]]'>
|
||||
|
@ -29,13 +34,15 @@
|
|||
</p>
|
||||
|
||||
<div class$='[[computeFormClasses(narrow)]]'>
|
||||
<div class='ha-form flex'>
|
||||
<paper-input label="Domain" autofocus value='{{domain}}'></paper-input>
|
||||
<paper-input label="Service" value='{{service}}'></paper-input>
|
||||
<paper-textarea label="Service Data (JSON, optional)" value='{{serviceData}}'></paper-textarea>
|
||||
<paper-button on-click='callService' raised>Call Service</paper-button>
|
||||
<div class='layout vertical flex'>
|
||||
<div class='ha-form'>
|
||||
<paper-input label="Domain" autofocus value='{{domain}}'></paper-input>
|
||||
<paper-input label="Service" value='{{service}}'></paper-input>
|
||||
<paper-textarea label="Service Data (JSON, optional)" value='{{serviceData}}'></paper-textarea>
|
||||
<paper-button on-click='callService' raised>Call Service</paper-button>
|
||||
</div>
|
||||
<div class='description'>[[description]]</div>
|
||||
</div>
|
||||
|
||||
<div>
|
||||
<h4>Available services:</h4>
|
||||
<services-list on-service-selected='serviceSelected'></services-list>
|
||||
|
|
|
@ -1,4 +1,8 @@
|
|||
import { serviceActions } from '../util/home-assistant-js-instance';
|
||||
import {
|
||||
reactor,
|
||||
serviceActions,
|
||||
serviceGetters,
|
||||
} from '../util/home-assistant-js-instance';
|
||||
|
||||
import Polymer from '../polymer';
|
||||
|
||||
|
@ -33,6 +37,20 @@ export default new Polymer({
|
|||
type: String,
|
||||
value: '',
|
||||
},
|
||||
|
||||
description: {
|
||||
type: String,
|
||||
computed: 'computeDescription(domain, service)',
|
||||
},
|
||||
},
|
||||
|
||||
computeDescription(domain, service) {
|
||||
return reactor.evaluate([
|
||||
serviceGetters.entityMap,
|
||||
map => map.has(domain) && map.get(domain).get('services').has(service) ?
|
||||
JSON.stringify(map.get(domain).get('services').get(service).toJS(), null, 2) :
|
||||
'No description available',
|
||||
]);
|
||||
},
|
||||
|
||||
serviceSelected(ev) {
|
||||
|
|
Loading…
Reference in New Issue