From 0ae6fa07636f4d66c15e3f2169fc63e49acb272f Mon Sep 17 00:00:00 2001 From: Jan-Philipp Benecke Date: Wed, 5 Feb 2025 18:33:00 +0100 Subject: [PATCH 01/11] Fix area registry dialog field (#24090) --- src/panels/config/areas/dialog-area-registry-detail.ts | 3 +++ 1 file changed, 3 insertions(+) diff --git a/src/panels/config/areas/dialog-area-registry-detail.ts b/src/panels/config/areas/dialog-area-registry-detail.ts index 26f98283b4..98367f9a0c 100644 --- a/src/panels/config/areas/dialog-area-registry-detail.ts +++ b/src/panels/config/areas/dialog-area-registry-detail.ts @@ -329,6 +329,9 @@ class DialogAreaDetail extends LitElement { return [ haStyleDialog, css` + ha-textfield { + display: block; + } ha-aliases-editor, ha-entity-picker, ha-floor-picker, From bf962b29afcb621233b82bf445e7b59d79f700a7 Mon Sep 17 00:00:00 2001 From: Petar Petrov Date: Thu, 6 Feb 2025 10:36:58 +0200 Subject: [PATCH 02/11] Reduce padding in energy charts and align unit (#24095) --- .../cards/energy/common/energy-chart-options.ts | 13 ++++++++----- .../energy/hui-energy-devices-detail-graph-card.ts | 5 +++-- 2 files changed, 11 insertions(+), 7 deletions(-) diff --git a/src/panels/lovelace/cards/energy/common/energy-chart-options.ts b/src/panels/lovelace/cards/energy/common/energy-chart-options.ts index 2e576c7c9e..a5c5f1ba9b 100644 --- a/src/panels/lovelace/cards/energy/common/energy-chart-options.ts +++ b/src/panels/lovelace/cards/energy/common/energy-chart-options.ts @@ -72,7 +72,10 @@ export function getCommonOptions( yAxis: { type: "value", name: unit, - nameGap: 5, + nameGap: 2, + nameTextStyle: { + align: "left", + }, axisLabel: { formatter: (value: number) => formatNumber(Math.abs(value), locale), }, @@ -81,10 +84,10 @@ export function getCommonOptions( }, }, grid: { - top: 35, - bottom: 10, - left: 10, - right: 10, + top: 15, + bottom: 0, + left: 1, + right: 1, containLabel: true, }, tooltip: { 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 a1501155b9..0e0b60b16a 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 @@ -193,9 +193,10 @@ export class HuiEnergyDevicesDetailGraphCard icon: "circle", }, grid: { + top: 45, bottom: 0, - left: 5, - right: 5, + left: 1, + right: 1, containLabel: true, }, }; From dcb04067b8de5572c8459db50f6d0b68d9a8e85c Mon Sep 17 00:00:00 2001 From: Wendelin <12148533+wendevlin@users.noreply.github.com> Date: Thu, 6 Feb 2025 08:49:05 +0100 Subject: [PATCH 03/11] Add network adapter translations (#24096) --- src/components/ha-network.ts | 19 +++++++++++++------ src/translations/en.json | 7 ++++++- 2 files changed, 19 insertions(+), 7 deletions(-) diff --git a/src/components/ha-network.ts b/src/components/ha-network.ts index 0841010272..f46bf00ced 100644 --- a/src/components/ha-network.ts +++ b/src/components/ha-network.ts @@ -64,9 +64,13 @@ export class HaNetwork extends LitElement { > - Auto Configure + + ${this.hass.localize( + "ui.panel.config.network.adapter.auto_configure" + )} + - Detected: + ${this.hass.localize("ui.panel.config.network.adapter.detected")}: ${format_auto_detected_interfaces(this.networkConfig.adapters)} @@ -85,18 +89,21 @@ export class HaNetwork extends LitElement { - Adapter: ${adapter.name} + ${this.hass.localize( + "ui.panel.config.network.adapter.adapter" + )}: + ${adapter.name} ${adapter.default ? html` - (Default)` - : ""} + (${this.hass.localize("ui.common.default")})` + : nothing} ${format_addresses([...adapter.ipv4, ...adapter.ipv6])} ` ) - : ""} + : nothing} `; } diff --git a/src/translations/en.json b/src/translations/en.json index 8271cb33d7..80d7b4f6de 100644 --- a/src/translations/en.json +++ b/src/translations/en.json @@ -6122,7 +6122,12 @@ }, "network_adapter": "Network adapter", "network_adapter_info": "Configure which network adapters integrations will use. Currently this setting only affects multicast traffic. A restart is required for these settings to apply.", - "ip_information": "IP Information" + "ip_information": "IP Information", + "adapter": { + "auto_configure": "Auto configure", + "detected": "Detected", + "adapter": "Adapter" + } }, "storage": { "caption": "Storage", From a30e501031ba944c698e3d5e114e89bdbe0342a2 Mon Sep 17 00:00:00 2001 From: Petar Petrov Date: Thu, 6 Feb 2025 13:16:35 +0200 Subject: [PATCH 04/11] Set charts font to Roboto (#24097) --- src/components/chart/ha-chart-base.ts | 1 + src/util/text.ts | 2 +- 2 files changed, 2 insertions(+), 1 deletion(-) diff --git a/src/components/chart/ha-chart-base.ts b/src/components/chart/ha-chart-base.ts index 4988ff75c8..81029851a0 100644 --- a/src/components/chart/ha-chart-base.ts +++ b/src/components/chart/ha-chart-base.ts @@ -328,6 +328,7 @@ export class HaChartBase extends LitElement { backgroundColor: "transparent", textStyle: { color: style.getPropertyValue("--primary-text-color"), + fontFamily: "Roboto, Noto, sans-serif", }, title: { textStyle: { diff --git a/src/util/text.ts b/src/util/text.ts index edd6afdd08..433f7b5fee 100644 --- a/src/util/text.ts +++ b/src/util/text.ts @@ -10,7 +10,7 @@ let textMeasureCanvas: HTMLCanvasElement | undefined; export function measureTextWidth( text: string, fontSize: number, - fontFamily = "sans-serif" + fontFamily = "Roboto, Noto, sans-serif" ): number { if (!textMeasureCanvas) { textMeasureCanvas = document.createElement("canvas"); From 9ab5be4730f23c654af807b209adb5b2fedacc96 Mon Sep 17 00:00:00 2001 From: Petar Petrov Date: Thu, 6 Feb 2025 13:38:22 +0200 Subject: [PATCH 05/11] Fix energy dashboard data formatting (#24101) --- src/panels/lovelace/cards/energy/common/energy-chart-options.ts | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/src/panels/lovelace/cards/energy/common/energy-chart-options.ts b/src/panels/lovelace/cards/energy/common/energy-chart-options.ts index a5c5f1ba9b..d26d47f96d 100644 --- a/src/panels/lovelace/cards/energy/common/energy-chart-options.ts +++ b/src/panels/lovelace/cards/energy/common/energy-chart-options.ts @@ -225,7 +225,7 @@ export function fillDataGapsAndRoundCaps(datasets: BarSeriesOption[]) { if (x === undefined) { continue; } - if (x !== bucket) { + if (Number(x) !== bucket) { datasets[i].data?.splice(index, 0, { value: [bucket, 0], itemStyle: { From 936f66c41cf5457fbd567a93b559540644462199 Mon Sep 17 00:00:00 2001 From: karwosts <32912880+karwosts@users.noreply.github.com> Date: Thu, 6 Feb 2025 21:44:39 -0800 Subject: [PATCH 06/11] Stack solar forecasts (#24113) --- src/panels/lovelace/cards/energy/hui-energy-solar-graph-card.ts | 1 + 1 file changed, 1 insertion(+) diff --git a/src/panels/lovelace/cards/energy/hui-energy-solar-graph-card.ts b/src/panels/lovelace/cards/energy/hui-energy-solar-graph-card.ts index e1ffa869f0..3119e53138 100644 --- a/src/panels/lovelace/cards/energy/hui-energy-solar-graph-card.ts +++ b/src/panels/lovelace/cards/energy/hui-energy-solar-graph-card.ts @@ -367,6 +367,7 @@ export class HuiEnergySolarGraphCard data.push({ id: "forecast-" + source.stat_energy_from, type: "line", + stack: "forecast", name: this.hass.localize( "ui.panel.lovelace.cards.energy.energy_solar_graph.forecast", { From 91e8750f4487efa3daf9d4de7ffee19453f4b60d Mon Sep 17 00:00:00 2001 From: Petar Petrov Date: Mon, 10 Feb 2025 11:12:42 +0200 Subject: [PATCH 07/11] Fix device energy card with `max_devices` (#24150) --- .../cards/energy/hui-energy-devices-detail-graph-card.ts | 6 +++--- 1 file changed, 3 insertions(+), 3 deletions(-) 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 0e0b60b16a..42edcdaacc 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 @@ -447,9 +447,9 @@ export class HuiEnergyDevicesDetailGraphCard stack: compare ? "devicesCompare" : "devices", }); }); - return sorted_devices.map( - (device) => data.find((d) => (d.id as string).includes(device))! - ); + return sorted_devices + .map((device) => data.find((d) => (d.id as string).includes(device))!) + .filter(Boolean); } static styles = css` From 090086995739251be33c562cab1791bed383d723 Mon Sep 17 00:00:00 2001 From: Petar Petrov Date: Mon, 10 Feb 2025 11:12:12 +0200 Subject: [PATCH 08/11] Round log scale limits (#24151) --- src/components/chart/state-history-chart-line.ts | 4 ++-- src/components/chart/statistics-chart.ts | 5 ++--- 2 files changed, 4 insertions(+), 5 deletions(-) diff --git a/src/components/chart/state-history-chart-line.ts b/src/components/chart/state-history-chart-line.ts index d268bd5d7c..76e73a89e7 100644 --- a/src/components/chart/state-history-chart-line.ts +++ b/src/components/chart/state-history-chart-line.ts @@ -222,14 +222,14 @@ export class StateHistoryChartLine extends LitElement { minYAxis = ({ min }) => Math.min(min, this.minYAxis!); } } else if (this.logarithmicScale) { - minYAxis = ({ min }) => (min > 0 ? min * 0.95 : min * 1.05); + minYAxis = ({ min }) => Math.floor(min > 0 ? min * 0.95 : min * 1.05); } if (typeof maxYAxis === "number") { if (this.fitYData) { maxYAxis = ({ max }) => Math.max(max, this.maxYAxis!); } } else if (this.logarithmicScale) { - maxYAxis = ({ max }) => (max > 0 ? max * 1.05 : max * 0.95); + maxYAxis = ({ max }) => Math.ceil(max > 0 ? max * 1.05 : max * 0.95); } this._chartOptions = { xAxis: { diff --git a/src/components/chart/statistics-chart.ts b/src/components/chart/statistics-chart.ts index ac9aabf85e..fd34fa5733 100644 --- a/src/components/chart/statistics-chart.ts +++ b/src/components/chart/statistics-chart.ts @@ -237,14 +237,14 @@ export class StatisticsChart extends LitElement { minYAxis = ({ min }) => Math.min(min, this.minYAxis!); } } else if (this.logarithmicScale) { - minYAxis = ({ min }) => (min > 0 ? min * 0.95 : min * 1.05); + minYAxis = ({ min }) => Math.floor(min > 0 ? min * 0.95 : min * 1.05); } if (typeof maxYAxis === "number") { if (this.fitYData) { maxYAxis = ({ max }) => Math.max(max, this.maxYAxis!); } } else if (this.logarithmicScale) { - maxYAxis = ({ max }) => (max > 0 ? max * 1.05 : max * 0.95); + maxYAxis = ({ max }) => Math.ceil(max > 0 ? max * 1.05 : max * 0.95); } const endTime = this.endTime ?? new Date(); let startTime = this.startTime; @@ -290,7 +290,6 @@ export class StatisticsChart extends LitElement { align: "left", }, position: computeRTL(this.hass) ? "right" : "left", - // @ts-ignore scale: true, min: this._clampYAxis(minYAxis), max: this._clampYAxis(maxYAxis), From 2ca739573335514eff9c590fc52409c417e2076b Mon Sep 17 00:00:00 2001 From: Petar Petrov Date: Mon, 10 Feb 2025 16:54:20 +0200 Subject: [PATCH 09/11] Limit max label width of hui-energy-devices-graph-card (#24152) --- .../energy/hui-energy-devices-graph-card.ts | 23 +++++++++++++++---- 1 file changed, 19 insertions(+), 4 deletions(-) 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 3c99584415..fc987b3300 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 @@ -27,6 +27,7 @@ import { hasConfigChanged } from "../../common/has-changed"; import type { ECOption } from "../../../../resources/echarts"; import "../../../../components/ha-card"; import { fireEvent } from "../../../../common/dom/fire_event"; +import { measureTextWidth } from "../../../../util/text"; @customElement("hui-energy-devices-graph-card") export class HuiEnergyDevicesGraphCard @@ -109,8 +110,11 @@ export class HuiEnergyDevicesGraphCard return `${title}${params.marker} ${params.seriesName}: ${value}`; } - private _createOptions = memoizeOne( - (data: BarSeriesOption[]): ECOption => ({ + private _createOptions = memoizeOne((data: BarSeriesOption[]): ECOption => { + const isMobile = window.matchMedia( + "all and (max-width: 450px), all and (max-height: 500px)" + ).matches; + return { xAxis: { type: "value", name: "kWh", @@ -124,6 +128,17 @@ export class HuiEnergyDevicesGraphCard axisLabel: { formatter: this._getDeviceName.bind(this), overflow: "truncate", + fontSize: 12, + margin: 5, + width: Math.min( + isMobile ? 100 : 200, + Math.max( + ...(data[0]?.data?.map( + (d: any) => + measureTextWidth(this._getDeviceName(d.value[1]), 12) + 5 + ) || []) + ) + ), }, }, grid: { @@ -137,8 +152,8 @@ export class HuiEnergyDevicesGraphCard show: true, formatter: this._renderTooltip.bind(this), }, - }) - ); + }; + }); private _getDeviceName(statisticId: string): string { return ( From 76977b64fa2cfa0c142e6c659824428986d9cf2d Mon Sep 17 00:00:00 2001 From: Petar Petrov Date: Mon, 10 Feb 2025 16:53:36 +0200 Subject: [PATCH 10/11] Bring back energy usage graph order (#24156) --- .../cards/energy/hui-energy-usage-graph-card.ts | 13 ++++++++++++- 1 file changed, 12 insertions(+), 1 deletion(-) diff --git a/src/panels/lovelace/cards/energy/hui-energy-usage-graph-card.ts b/src/panels/lovelace/cards/energy/hui-energy-usage-graph-card.ts index 9836c7f061..18e737696f 100644 --- a/src/panels/lovelace/cards/energy/hui-energy-usage-graph-card.ts +++ b/src/panels/lovelace/cards/energy/hui-energy-usage-graph-card.ts @@ -300,6 +300,8 @@ export class HuiEnergyUsageGraphCard type: "bar", stack: "usage", data: [], + // @ts-expect-error + order: 0, }); } @@ -315,6 +317,8 @@ export class HuiEnergyUsageGraphCard ) ); + // @ts-expect-error + datasets.sort((a, b) => a.order - b.order); fillDataGapsAndRoundCaps(datasets); this._chartData = datasets; } @@ -482,7 +486,7 @@ export class HuiEnergyUsageGraphCard this._compareStart! ); - Object.entries(combinedData).forEach(([type, sources]) => { + Object.entries(combinedData).forEach(([type, sources], idx) => { Object.entries(sources).forEach(([statId, source]) => { const points: BarSeriesOption["data"] = []; // Process chart data. @@ -513,6 +517,13 @@ export class HuiEnergyUsageGraphCard statId, statisticsMetaData[statId] ), + // @ts-expect-error + order: + type === "used_solar" + ? 1 + : type === "to_battery" + ? Object.keys(combinedData).length + : idx + 2, barMaxWidth: 50, itemStyle: { borderColor: getEnergyColor( From 4498747fb132baa151dd3adbcce99d1214698a4e Mon Sep 17 00:00:00 2001 From: Bram Kragten Date: Mon, 10 Feb 2025 19:38:30 +0100 Subject: [PATCH 11/11] Bumped version to 20250210.0 --- pyproject.toml | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/pyproject.toml b/pyproject.toml index 193a84b4b7..a7effa1919 100644 --- a/pyproject.toml +++ b/pyproject.toml @@ -4,7 +4,7 @@ build-backend = "setuptools.build_meta" [project] name = "home-assistant-frontend" -version = "20250205.0" +version = "20250210.0" license = {text = "Apache-2.0"} description = "The Home Assistant frontend" readme = "README.md"