Section -> View Groups

This commit is contained in:
Paulus Schoutsen 2016-01-24 21:47:49 -08:00
parent 811de0a3fa
commit 66a7e370d4
3 changed files with 25 additions and 25 deletions

View File

@ -20,7 +20,7 @@
"author": "Paulus Schoutsen <Paulus@PaulusSchoutsen.nl> (http://paulusschoutsen.nl)", "author": "Paulus Schoutsen <Paulus@PaulusSchoutsen.nl> (http://paulusschoutsen.nl)",
"license": "MIT", "license": "MIT",
"dependencies": { "dependencies": {
"home-assistant-js": "git+https://github.com/balloob/home-assistant-js.git#25db573e8534c41f21d0a25392cf4c2c47eec646", "home-assistant-js": "git+https://github.com/balloob/home-assistant-js.git#db429f74a860587a0e73a8a3c62d6811adcfbc15",
"lodash": "^3.10.0", "lodash": "^3.10.0",
"moment": "^2.11.1" "moment": "^2.11.1"
}, },

View File

@ -26,16 +26,16 @@
<paper-toolbar class='medium'> <paper-toolbar class='medium'>
<paper-icon-button icon='mdi:menu' class$='[[computeMenuButtonClass(narrow, showMenu)]]' on-tap='toggleMenu'></paper-icon-button> <paper-icon-button icon='mdi:menu' class$='[[computeMenuButtonClass(narrow, showMenu)]]' on-tap='toggleMenu'></paper-icon-button>
<template is='dom-if' if='[[!hasSections]]'> <template is='dom-if' if='[[!hasViews]]'>
<div class='title'>[[locationName]]</div> <div class='title'>[[locationName]]</div>
</template> </template>
<template is='dom-if' if='[[hasSections]]'> <template is='dom-if' if='[[hasViews]]'>
<div class='flex'> <div class='flex'>
<paper-tabs selected='[[currentSection]]' attr-for-selected='data-entity' <paper-tabs selected='[[currentView]]' attr-for-selected='data-entity'
on-iron-select='sectionSelected' scrollable='true'> on-iron-select='viewSelected' scrollable='true'>
<paper-tab data-entity=''>[[locationName]]</paper-tab> <paper-tab data-entity=''>[[locationName]]</paper-tab>
<template is='dom-repeat' items='[[sections]]'> <template is='dom-repeat' items='[[views]]'>
<paper-tab data-entity$='[[item.entityId]]'> <paper-tab data-entity$='[[item.entityId]]'>
<template is='dom-if' if='[[item.attributes.icon]]'> <template is='dom-if' if='[[item.attributes.icon]]'>
<iron-icon icon='[[item.attributes.icon]]'></iron-icon> <iron-icon icon='[[item.attributes.icon]]'></iron-icon>
@ -61,7 +61,7 @@
<div class='fit'> <div class='fit'>
<ha-zone-cards <ha-zone-cards
show-introduction='[[computeShowIntroduction(currentSection, introductionLoaded, states)]]' show-introduction='[[computeShowIntroduction(currentView, introductionLoaded, states)]]'
states='[[states]]' columns='[[columns]]'></ha-zone-cards> states='[[states]]' columns='[[columns]]'></ha-zone-cards>
</div> </div>
</paper-header-panel> </paper-header-panel>

View File

@ -8,8 +8,8 @@ require('../components/ha-zone-cards');
const { const {
configGetters, configGetters,
sectionActions, viewActions,
sectionGetters, viewGetters,
voiceGetters, voiceGetters,
streamGetters, streamGetters,
syncGetters, syncGetters,
@ -63,32 +63,32 @@ export default new Polymer({
observer: 'windowChange', observer: 'windowChange',
}, },
currentSection: { currentView: {
type: String, type: String,
bindNuclear: [ bindNuclear: [
sectionGetters.currentSection, viewGetters.currentView,
section => section || '', view => view || '',
], ],
}, },
sections: { views: {
type: Array, type: Array,
bindNuclear: [ bindNuclear: [
sectionGetters.sections, viewGetters.views,
sections => sections.valueSeq() views => views.valueSeq()
.sortBy(section => section.attributes.order) .sortBy(view => view.attributes.order)
.toArray(), .toArray(),
], ],
}, },
hasSections: { hasViews: {
type: Boolean, type: Boolean,
computed: 'computeHasSections(sections)', computed: 'computeHasViews(views)',
}, },
states: { states: {
type: Object, type: Object,
bindNuclear: sectionGetters.currentSectionEntities, bindNuclear: viewGetters.currentViewEntities,
}, },
columns: { columns: {
@ -137,20 +137,20 @@ export default new Polymer({
} }
}, },
computeShowIntroduction(currentSection, introductionLoaded, states) { computeShowIntroduction(currentView, introductionLoaded, states) {
return currentSection === '' && (introductionLoaded || states.size === 0); return currentView === '' && (introductionLoaded || states.size === 0);
}, },
computeHasSections(sections) { computeHasViews(views) {
return sections.length > 0; return views.length > 0;
}, },
toggleMenu() { toggleMenu() {
this.fire('open-menu'); this.fire('open-menu');
}, },
sectionSelected(ev) { viewSelected(ev) {
const section = ev.detail.item.getAttribute('data-entity') || null; const section = ev.detail.item.getAttribute('data-entity') || null;
this.async(() => sectionActions.selectSection(section), 0); this.async(() => viewActions.selectView(section), 0);
}, },
}); });