diff --git a/assets/js/components/Battery/BatteryUsageSettings.vue b/assets/js/components/Battery/BatteryUsageSettings.vue index 234aed40e..636c734bf 100644 --- a/assets/js/components/Battery/BatteryUsageSettings.vue +++ b/assets/js/components/Battery/BatteryUsageSettings.vue @@ -98,28 +98,23 @@ > {{ $t("batterySettings.legendTopName") }} - + - + {{ $t("batterySettings.legendTopAutostart") }} ({ + ...option, + name: + option.value === 100 + ? this.$t("batterySettings.legendTopSublineDisabledState") + : this.$t("batterySettings.legendTopSublineAbove", { + soc: this.fmtSoc(option.value), + }), + })); + }, bufferStartTop() { if (!this.selectedBufferStartSoc) return 0; return 100 - this.selectedBufferStartSoc; @@ -286,6 +292,16 @@ export default defineComponent({ selectedBufferStartName() { return this.getBufferStartName(this.selectedBufferStartSoc); }, + topSublineKeypath() { + return this.selectedBufferSoc < 100 + ? "batterySettings.legendTopSubline" + : "batterySettings.legendTopSublineDisabled"; + }, + topSublineValue() { + return this.selectedBufferSoc < 100 + ? this.fmtSoc(this.selectedBufferSoc) + : this.$t("batterySettings.legendTopSublineDisabledState"); + }, topHeight() { return 100 - (this.bufferSoc || 100); }, diff --git a/i18n/de.json b/i18n/de.json index 0109436bd..6b1e952ad 100644 --- a/i18n/de.json +++ b/i18n/de.json @@ -39,6 +39,9 @@ "legendTopAutostart": "Starte automatisch", "legendTopName": "Batterieunterstütztes Fahrzeugladen", "legendTopSubline": "wenn Hausbatterie über {soc} ist.", + "legendTopSublineAbove": "wenn über {soc}", + "legendTopSublineDisabled": "ist {soc}.", + "legendTopSublineDisabledState": "deaktiviert", "modalTitle": "Hausbatterie", "noBattery": "Keine Batterien konfiguriert.", "usageTab": "Batterienutzung" diff --git a/i18n/en.json b/i18n/en.json index 21c535d13..ed19e2bf7 100644 --- a/i18n/en.json +++ b/i18n/en.json @@ -39,6 +39,9 @@ "legendTopAutostart": "Start automatically", "legendTopName": "Battery-supported vehicle charging", "legendTopSubline": "when home battery is above {soc}.", + "legendTopSublineAbove": "when above {soc}", + "legendTopSublineDisabled": "is {soc}.", + "legendTopSublineDisabledState": "disabled", "modalTitle": "Home Battery", "noBattery": "No batteries configured.", "usageTab": "Battery usage" diff --git a/tests/battery-settings.spec.ts b/tests/battery-settings.spec.ts index 5e03b5d22..ce43ab357 100644 --- a/tests/battery-settings.spec.ts +++ b/tests/battery-settings.spec.ts @@ -28,11 +28,28 @@ test.describe("battery settings", async () => { await page.locator("#batterySettingsPriority").selectOption({ label: "50%" }); await expect(page.locator("label[for=batterySettingsPriorityMiddle] span")).toHaveText("50%"); await expect(page.locator("label[for=batterySettingsPriorityBottom] span")).toHaveText("50%"); - await page.locator("#batterySettingsBufferTop").selectOption({ label: "80%" }); + await page.locator("#batterySettingsBufferTop").selectOption({ label: "when above 80%" }); await page.locator("#batterySettingsBufferStart").selectOption({ label: "when above 90%." }); await expect(page.locator("label[for=batterySettingsBuffer] span")).toHaveText("80%"); }); + test("buffer 100% disables battery-supported charging", async ({ page }) => { + await page.goto("/#/battery"); + + const topRow = page.getByText("Battery-supported vehicle charging"); + const bufferSoc = topRow.getByRole("combobox").filter({ hasText: "disabled" }); + + await expect(bufferSoc).toHaveValue("100"); + await expect(page.getByText("Start automatically")).toBeHidden(); + + await bufferSoc.selectOption({ label: "when above 80%" }); + await expect(bufferSoc).toHaveValue("80"); + await expect(page.getByText("Start automatically")).toBeVisible(); + + await bufferSoc.selectOption({ label: "disabled" }); + await expect(page.getByText("Start automatically")).toBeHidden(); + }); + test("grid charging", async ({ page }) => { await page.goto("/#/battery");