From 3701e022bc1bcdaf13057c4aff249fb73d0eb931 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Ab=C3=ADlio=20Costa?= Date: Fri, 9 Feb 2018 22:30:35 +0000 Subject: [PATCH] Badge sorting (#844) * sort badges correctly in user-defined group * rename sorting list that is used for badges and groups * remove trailing space * better array iteration * Revert "better array iteration" This reverts commit 0a87b3350cf2bd60450e3d2985c7449efe73c18d. * simplify sorting of badges --- src/components/ha-cards.html | 33 ++++++++++++++++++++++----------- src/layouts/partial-cards.html | 16 ++++++++-------- 2 files changed, 30 insertions(+), 19 deletions(-) diff --git a/src/components/ha-cards.html b/src/components/ha-cards.html index 298a29bcb6..a86732387b 100644 --- a/src/components/ha-cards.html +++ b/src/components/ha-cards.html @@ -164,7 +164,7 @@ value: false, }, - orderedGroups: Array, + orderedGroupEntities: Array, cards: Object, }; @@ -172,7 +172,7 @@ static get observers() { return [ - 'updateCards(columns, states, panelVisible, viewVisible, orderedGroups)', + 'updateCards(columns, states, panelVisible, viewVisible, orderedGroupEntities)', ]; } @@ -181,7 +181,7 @@ states, panelVisible, viewVisible, - orderedGroups + orderedGroupEntities ) { if (!panelVisible || !viewVisible) { if (this.$.main.parentNode) { @@ -198,7 +198,7 @@ () => { // Things might have changed since it got scheduled. if (this.panelVisible && this.viewVisible) { - this.cards = this.computeCards(columns, states, orderedGroups); + this.cards = this.computeCards(columns, states, orderedGroupEntities); } } ); @@ -212,7 +212,7 @@ }; } - computeCards(columns, states, orderedGroups) { + computeCards(columns, states, orderedGroupEntities) { const hass = this.hass; const cards = this.emptyCards(); @@ -285,9 +285,9 @@ } const splitted = window.HAWS.splitByGroups(states); - if (orderedGroups) { - splitted.groups.sort((gr1, gr2) => orderedGroups[gr1.entity_id] - - orderedGroups[gr2.entity_id]); + if (orderedGroupEntities) { + splitted.groups.sort((gr1, gr2) => orderedGroupEntities[gr1.entity_id] - + orderedGroupEntities[gr2.entity_id]); } else { splitted.groups.sort((gr1, gr2) => gr1.attributes.order - gr2.attributes.order); } @@ -327,9 +327,20 @@ coll[domain].states.push(state); }); - iterateDomainSorted(badgesColl, (domain) => { - cards.badges.push.apply(cards.badges, domain.states); - }); + if (orderedGroupEntities) { + Object.keys(badgesColl) + .map(key => badgesColl[key]) + .forEach((domain) => { + cards.badges.push.apply(cards.badges, domain.states); + }); + + cards.badges.sort((e1, e2) => orderedGroupEntities[e1.entity_id] - + orderedGroupEntities[e2.entity_id]); + } else { + iterateDomainSorted(badgesColl, (domain) => { + cards.badges.push.apply(cards.badges, domain.states); + }); + } iterateDomainSorted(beforeGroupColl, (domain) => { addEntitiesCard(domain.domain, domain.states); diff --git a/src/layouts/partial-cards.html b/src/layouts/partial-cards.html index 010f8a065f..19ada8afcb 100644 --- a/src/layouts/partial-cards.html +++ b/src/layouts/partial-cards.html @@ -113,7 +113,7 @@ columns='[[_columns]]' hass='[[hass]]' panel-visible='[[panelVisible]]' - ordered-groups='[[orderedGroups]]' + ordered-group-entities='[[orderedGroupEntities]]' > @@ -198,9 +198,9 @@ computed: 'computeViewStates(currentView, hass, defaultView)', }, - orderedGroups: { + orderedGroupEntities: { type: Array, - computed: 'computeOrderedGroups(currentView, hass, defaultView)', + computed: 'computeOrderedGroupEntities(currentView, hass, defaultView)', }, showTabs: { @@ -372,19 +372,19 @@ /* Compute the ordered list of groups for this view */ - computeOrderedGroups(currentView, hass, defaultView) { + computeOrderedGroupEntities(currentView, hass, defaultView) { if (!this.isView(currentView, defaultView)) { return null; } - var orderedGroups = {}; + var orderedGroupEntities = {}; var entitiesList = hass.states[currentView || DEFAULT_VIEW_ENTITY_ID].attributes.entity_id; for (var i = 0; i < entitiesList.length; i++) { - orderedGroups[entitiesList[i]] = i; + orderedGroupEntities[entitiesList[i]] = i; } - return orderedGroups; + return orderedGroupEntities; } }