Config UI: custom charger meter title (#21954)

This commit is contained in:
Michael Geers 2025-06-21 06:23:33 +02:00 • committed by GitHub
parent abf34f1fc4
commit 1333a07664
No known key found for this signature in database
GPG key ID: B5690EEEBB952194
2 changed files with 47 additions and 17 deletions

View file

@ -656,7 +656,10 @@ export default {
const name = this.values.meter;
if (!name) return "";
const meter = this.meters.find((m) => m.name === name);
const title = meter?.deviceProduct || meter?.config?.template || "unknown";
const title =
meter?.deviceProduct ||
meter?.config?.template ||
this.$t("config.general.customOption");
return `${title} [${name}]`;
},
isDeletable() {

View file

@ -431,12 +431,12 @@ test.describe("loadpoint", async () => {
await expectModalVisible(chargerModal);
await chargerModal.getByLabel("Manufacturer").selectOption("User-defined device");
await page.waitForLoadState("networkidle");
const editor = chargerModal.getByTestId("yaml-editor");
await expect(editor).toContainText("status: # charger status [A..F]");
const chargerEditor = chargerModal.getByTestId("yaml-editor");
await expect(chargerEditor).toContainText("status: # charger status [A..F]");
await editorClear(editor, 10);
await editorClear(chargerEditor, 10);
await editorPaste(
editor,
chargerEditor,
page,
`status:
source: const
@ -455,18 +455,42 @@ power:
value: 11000`
);
const restResult = chargerModal.getByTestId("test-result");
await expect(restResult).toContainText("Status: unknown");
await restResult.getByRole("link", { name: "validate" }).click();
await expect(restResult).toContainText("Status: successful");
await expect(restResult).toContainText(["Status", "charging"].join(""));
await expect(restResult).toContainText(["Enabled", "yes"].join(""));
await expect(restResult).toContainText(["Power", "11.0 kW"].join(""));
// create
const chargerRestResult = chargerModal.getByTestId("test-result");
await expect(chargerRestResult).toContainText("Status: unknown");
await chargerRestResult.getByRole("link", { name: "validate" }).click();
await expect(chargerRestResult).toContainText("Status: successful");
await expect(chargerRestResult).toContainText(["Status", "charging"].join(""));
await expect(chargerRestResult).toContainText(["Enabled", "yes"].join(""));
await expect(chargerRestResult).toContainText(["Power", "11.0 kW"].join(""));
await chargerModal.getByRole("button", { name: "Save" }).click();
await expectModalHidden(chargerModal);
await expectModalVisible(lpModal);
// add user-defined meter
await lpModal.getByRole("button", { name: "Add dedicated charger meter" }).click();
const meterModal = page.getByTestId("meter-modal");
await expectModalVisible(meterModal);
await meterModal.getByLabel("Manufacturer").selectOption("User-defined device");
await page.waitForLoadState("networkidle");
const meterEditor = meterModal.getByTestId("yaml-editor");
await editorClear(meterEditor, 10);
await editorPaste(
meterEditor,
page,
`power:
source: const
value: 5000`
);
const meterRestResult = meterModal.getByTestId("test-result");
await expect(meterRestResult).toContainText("Status: unknown");
await meterRestResult.getByRole("link", { name: "validate" }).click();
await expect(meterRestResult).toContainText("Status: successful");
await expect(meterRestResult).toContainText(["Power", "5.0 kW"].join(""));
await meterModal.getByRole("button", { name: "Save" }).click();
await expectModalHidden(meterModal);
// create
await lpModal.getByRole("button", { name: "Save" }).click();
await expectModalHidden(lpModal);
@ -482,18 +506,21 @@ power:
await expect(lpEntry).toContainText("Carport");
await expect(lpEntry).toContainText(["Status", "charging"].join(""));
await expect(lpEntry).toContainText(["Enabled", "yes"].join(""));
await expect(lpEntry).toContainText(["Power", "11.0 kW"].join(""));
await expect(lpEntry).toContainText(["Power", "5.0 kW"].join(""));
await lpEntry.getByRole("button", { name: "edit" }).click();
await expectModalVisible(lpModal);
await expect(lpModal.getByLabel("Charger").first()).toHaveValue("User-defined device [db:1]");
await expect(lpModal.getByLabel("Energy meter").first()).toHaveValue(
"User-defined device [db:2]"
);
await lpModal.getByLabel("Charger").first().click();
await expectModalVisible(chargerModal);
await expect(chargerModal.getByLabel("Manufacturer")).toHaveValue("User-defined device");
await page.waitForLoadState("networkidle");
await expect(editor).toContainText("value: 'C'");
await expect(editor).toContainText("value: 11000");
await expect(chargerEditor).toContainText("value: 'C'");
await expect(chargerEditor).toContainText("value: 11000");
});
});