Files
ha-frontend-cdce8p/panels/dev-service/services-list.html
T
2016-07-19 02:25:26 -07:00

78 lines
1.6 KiB
HTML

<link rel="import" href="../../bower_components/polymer/polymer.html">
<link rel="import" href="../../src/util/hass-behavior.html">
<dom-module id="services-list">
<template>
<style>
ul {
margin: 0;
padding: 0;
}
li {
list-style: none;
line-height: 2em;
}
a {
color: var(--dark-primary-color);
}
</style>
<ul>
<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]]</span>/<span>[[service]]</span>
</a></li>
</template>
</template>
</ul>
</template>
</dom-module>
<script>
Polymer({
is: 'services-list',
behaviors: [window.hassBehavior],
properties: {
hass: {
type: Object,
},
serviceDomains: {
type: Array,
bindNuclear: function (hass) {
return hass.serviceGetters.entityMap;
},
},
},
computeDomains: function (serviceDomains) {
return serviceDomains
.valueSeq()
.map(function (domain) { return domain.domain; })
.sort()
.toJS();
},
computeServices: function (serviceDomains, domain) {
return serviceDomains
.get(domain)
.get('services')
.keySeq()
.toArray();
},
serviceClicked: function (ev) {
ev.preventDefault();
this.fire(
'service-selected', { domain: ev.model.domain,
service: ev.model.service });
},
});
</script>