diff --git a/src/panels/lovelace/cards/energy/hui-energy-devices-detail-graph-card.ts b/src/panels/lovelace/cards/energy/hui-energy-devices-detail-graph-card.ts index c56c31f23b..e0d2db9e60 100644 --- a/src/panels/lovelace/cards/energy/hui-energy-devices-detail-graph-card.ts +++ b/src/panels/lovelace/cards/energy/hui-energy-devices-detail-graph-card.ts @@ -334,10 +334,12 @@ export class HuiEnergyDevicesDetailGraphCard } untrackedConsumption.push(dataPoint); }); + // random id to always add untracked at the end + const order = Date.now(); const dataset: BarSeriesOption = { type: "bar", cursor: "default", - id: compare ? "compare-untracked" : "untracked", + id: compare ? `compare-untracked-${order}` : `untracked-${order}`, name: this.hass.localize( "ui.panel.lovelace.cards.energy.energy_devices_detail_graph.untracked_consumption" ), @@ -420,9 +422,10 @@ export class HuiEnergyDevicesDetailGraphCard data.push({ type: "bar", cursor: "default", + // add order to id, otherwise echarts refuses to reorder them id: compare - ? `compare-${source.stat_consumption}` - : source.stat_consumption, + ? `compare-${source.stat_consumption}-${order}` + : `${source.stat_consumption}-${order}`, name: source.name || getStatisticLabel( @@ -439,7 +442,9 @@ export class HuiEnergyDevicesDetailGraphCard stack: compare ? "devicesCompare" : "devices", }); }); - return data; + return sorted_devices.map( + (device) => data.find((d) => (d.id as string).includes(device))! + ); } static styles = css` diff --git a/src/panels/lovelace/cards/energy/hui-energy-devices-graph-card.ts b/src/panels/lovelace/cards/energy/hui-energy-devices-graph-card.ts index e12f747c90..3c99584415 100644 --- a/src/panels/lovelace/cards/energy/hui-energy-devices-graph-card.ts +++ b/src/panels/lovelace/cards/energy/hui-energy-devices-graph-card.ts @@ -88,7 +88,7 @@ export class HuiEnergyDevicesGraphCard @@ -110,18 +110,17 @@ export class HuiEnergyDevicesGraphCard } private _createOptions = memoizeOne( - (darkMode: boolean): ECOption => ({ + (data: BarSeriesOption[]): ECOption => ({ xAxis: { type: "value", name: "kWh", - splitLine: { - lineStyle: darkMode ? { opacity: 0.15 } : {}, - }, }, yAxis: { type: "category", inverse: true, triggerEvent: true, + // take order from data + data: data[0]?.data?.map((d: any) => d.value[1]), axisLabel: { formatter: this._getDeviceName.bind(this), overflow: "truncate",