diff --git a/docs/features/plans.mdx b/docs/features/plans.mdx
index 5f8e74e8e..17910e6c2 100644
--- a/docs/features/plans.mdx
+++ b/docs/features/plans.mdx
@@ -31,6 +31,25 @@ Mit dem "Aktiv"-Schalter aktivierst du deinen Plan.
caption="Screenshot einer Ladeplanung mittels Ladestand"
/>
+## Wiederholende Pläne
+
+Zusätzlich kannst du auch wiederholende Pläne anlegen.
+Definiere, an welchen **Wochentagen** der Plan gelten soll.
+Sind mehrere Pläne aktiv, wird immer der nächste passende Zeitpunkt verwendet und die Planung im Diagramm dargestellt.
+
+
+
+:::note Hinweis
+Diese Ladestand-basierten Pläne werden pro Fahrzeug gespeichert.
+Das heißt, du kannst [mehrere Fahrzeuge](./vehicle#mehrere-fahrzeuge) an derselben Wallbox laden.
+Es wird immer die Planung des aktuell verbundenen Fahrzeugs verwendet.
+:::
+
+## Plan nach Energiemenge
+
Sind Ladestand und Kapazität nicht bekannt, wird über die Angabe einer **Energiemenge in kWh** geplant.
-Das Ladeziel wird gespeichert.
-Steckst du dein Fahrzeug vor Erreichen des Ziels ab und steckst es später wieder an, wird der Plan fortgesetzt.
-
-Aktuell ist die Planung auf einen Eintrag beschränkt.
-In einem späteren Release wird es möglich sein, mehrere Pläne zu setzen und Wiederholungen zu definieren.
+Dieser Plan gilt nur für den aktuellen Ladevorgang.
+In diesem Modus sind die wiederholenden Pläne nicht verfügbar.
diff --git a/docs/features/screenshots/plan-energy-dark-1x.webp b/docs/features/screenshots/plan-energy-dark-1x.webp
index a1e8043c2..a63d240a7 100644
Binary files a/docs/features/screenshots/plan-energy-dark-1x.webp and b/docs/features/screenshots/plan-energy-dark-1x.webp differ
diff --git a/docs/features/screenshots/plan-energy-dark-2x.webp b/docs/features/screenshots/plan-energy-dark-2x.webp
index 8e57708ad..f2748136f 100644
Binary files a/docs/features/screenshots/plan-energy-dark-2x.webp and b/docs/features/screenshots/plan-energy-dark-2x.webp differ
diff --git a/docs/features/screenshots/plan-energy-light-1x.webp b/docs/features/screenshots/plan-energy-light-1x.webp
index b9483ff0c..cb37cd783 100644
Binary files a/docs/features/screenshots/plan-energy-light-1x.webp and b/docs/features/screenshots/plan-energy-light-1x.webp differ
diff --git a/docs/features/screenshots/plan-energy-light-2x.webp b/docs/features/screenshots/plan-energy-light-2x.webp
index 34df2ab64..aa0bf6e4b 100644
Binary files a/docs/features/screenshots/plan-energy-light-2x.webp and b/docs/features/screenshots/plan-energy-light-2x.webp differ
diff --git a/docs/features/screenshots/plan-soc-dark-1x.webp b/docs/features/screenshots/plan-soc-dark-1x.webp
index 357559306..59328711e 100644
Binary files a/docs/features/screenshots/plan-soc-dark-1x.webp and b/docs/features/screenshots/plan-soc-dark-1x.webp differ
diff --git a/docs/features/screenshots/plan-soc-dark-2x.webp b/docs/features/screenshots/plan-soc-dark-2x.webp
index 95c992693..f727c430e 100644
Binary files a/docs/features/screenshots/plan-soc-dark-2x.webp and b/docs/features/screenshots/plan-soc-dark-2x.webp differ
diff --git a/docs/features/screenshots/plan-soc-light-1x.webp b/docs/features/screenshots/plan-soc-light-1x.webp
index 82b4b130b..2da91ab24 100644
Binary files a/docs/features/screenshots/plan-soc-light-1x.webp and b/docs/features/screenshots/plan-soc-light-1x.webp differ
diff --git a/docs/features/screenshots/plan-soc-light-2x.webp b/docs/features/screenshots/plan-soc-light-2x.webp
index bbbad1b5b..7cfbcaea6 100644
Binary files a/docs/features/screenshots/plan-soc-light-2x.webp and b/docs/features/screenshots/plan-soc-light-2x.webp differ
diff --git a/docs/features/screenshots/plan-soc-repeating-dark-1x.webp b/docs/features/screenshots/plan-soc-repeating-dark-1x.webp
new file mode 100644
index 000000000..cde88d122
Binary files /dev/null and b/docs/features/screenshots/plan-soc-repeating-dark-1x.webp differ
diff --git a/docs/features/screenshots/plan-soc-repeating-dark-2x.webp b/docs/features/screenshots/plan-soc-repeating-dark-2x.webp
new file mode 100644
index 000000000..d261b730c
Binary files /dev/null and b/docs/features/screenshots/plan-soc-repeating-dark-2x.webp differ
diff --git a/docs/features/screenshots/plan-soc-repeating-light-1x.webp b/docs/features/screenshots/plan-soc-repeating-light-1x.webp
new file mode 100644
index 000000000..a8a5b0c1b
Binary files /dev/null and b/docs/features/screenshots/plan-soc-repeating-light-1x.webp differ
diff --git a/docs/features/screenshots/plan-soc-repeating-light-2x.webp b/docs/features/screenshots/plan-soc-repeating-light-2x.webp
new file mode 100644
index 000000000..ea0f3837f
Binary files /dev/null and b/docs/features/screenshots/plan-soc-repeating-light-2x.webp differ
diff --git a/i18n/en/docusaurus-plugin-content-docs/current/features/plans.mdx b/i18n/en/docusaurus-plugin-content-docs/current/features/plans.mdx
index b948cc4bc..1d1b228d5 100644
--- a/i18n/en/docusaurus-plugin-content-docs/current/features/plans.mdx
+++ b/i18n/en/docusaurus-plugin-content-docs/current/features/plans.mdx
@@ -31,15 +31,31 @@ Use the "Active" switch to activate your plan.
caption="Screenshot of a charging plan using the charging status"
/>
-If the charge level and capacity are not known, planning is done by specifying an **energy quantity in kWh**.
+## Repeating plans
+
+You can also create repeating plans.
+Define on which **weekdays** the plan should be active.
+When multiple plans are active, the next matching time will be used and the plan prognosis will be shown in the diagram.
-The charging goal is saved.
-If you unplug your vehicle before reaching the goal and plug it back in later, the plan will continue.
+:::note Note
+These state-of-charge based plans are stored per vehicle.
+This means you can charge [multiple vehicles](./vehicle#multiple-vehicles) at the same charging point.
+The planning of the currently connected vehicle will always be used.
+:::
+
+## Energy amount plan
+
+If the charge level and capacity are not known, planning is done by specifying an **energy amount in kWh**.
+
+
-Currently, planning is limited to one entry.
-In a later release, it will be possible to set multiple plans and define repetitions.
+This plan only applies to the current charging session.
+Repeating plans are not available in this mode.
\ No newline at end of file
diff --git a/i18n/en/docusaurus-plugin-content-docs/current/features/screenshots/plan-energy-dark-1x.webp b/i18n/en/docusaurus-plugin-content-docs/current/features/screenshots/plan-energy-dark-1x.webp
index 53ca18735..4e9142818 100644
Binary files a/i18n/en/docusaurus-plugin-content-docs/current/features/screenshots/plan-energy-dark-1x.webp and b/i18n/en/docusaurus-plugin-content-docs/current/features/screenshots/plan-energy-dark-1x.webp differ
diff --git a/i18n/en/docusaurus-plugin-content-docs/current/features/screenshots/plan-energy-dark-2x.webp b/i18n/en/docusaurus-plugin-content-docs/current/features/screenshots/plan-energy-dark-2x.webp
index e6f77a3fd..c70ee3bf5 100644
Binary files a/i18n/en/docusaurus-plugin-content-docs/current/features/screenshots/plan-energy-dark-2x.webp and b/i18n/en/docusaurus-plugin-content-docs/current/features/screenshots/plan-energy-dark-2x.webp differ
diff --git a/i18n/en/docusaurus-plugin-content-docs/current/features/screenshots/plan-energy-light-1x.webp b/i18n/en/docusaurus-plugin-content-docs/current/features/screenshots/plan-energy-light-1x.webp
index 10a2c50e0..c4a0a6631 100644
Binary files a/i18n/en/docusaurus-plugin-content-docs/current/features/screenshots/plan-energy-light-1x.webp and b/i18n/en/docusaurus-plugin-content-docs/current/features/screenshots/plan-energy-light-1x.webp differ
diff --git a/i18n/en/docusaurus-plugin-content-docs/current/features/screenshots/plan-energy-light-2x.webp b/i18n/en/docusaurus-plugin-content-docs/current/features/screenshots/plan-energy-light-2x.webp
index 609ce5b35..efd8ff1a6 100644
Binary files a/i18n/en/docusaurus-plugin-content-docs/current/features/screenshots/plan-energy-light-2x.webp and b/i18n/en/docusaurus-plugin-content-docs/current/features/screenshots/plan-energy-light-2x.webp differ
diff --git a/i18n/en/docusaurus-plugin-content-docs/current/features/screenshots/plan-soc-dark-1x.webp b/i18n/en/docusaurus-plugin-content-docs/current/features/screenshots/plan-soc-dark-1x.webp
index 89f57774a..233b9af79 100644
Binary files a/i18n/en/docusaurus-plugin-content-docs/current/features/screenshots/plan-soc-dark-1x.webp and b/i18n/en/docusaurus-plugin-content-docs/current/features/screenshots/plan-soc-dark-1x.webp differ
diff --git a/i18n/en/docusaurus-plugin-content-docs/current/features/screenshots/plan-soc-dark-2x.webp b/i18n/en/docusaurus-plugin-content-docs/current/features/screenshots/plan-soc-dark-2x.webp
index 04b61a264..06f117235 100644
Binary files a/i18n/en/docusaurus-plugin-content-docs/current/features/screenshots/plan-soc-dark-2x.webp and b/i18n/en/docusaurus-plugin-content-docs/current/features/screenshots/plan-soc-dark-2x.webp differ
diff --git a/i18n/en/docusaurus-plugin-content-docs/current/features/screenshots/plan-soc-light-1x.webp b/i18n/en/docusaurus-plugin-content-docs/current/features/screenshots/plan-soc-light-1x.webp
index a1b456280..cafee97dc 100644
Binary files a/i18n/en/docusaurus-plugin-content-docs/current/features/screenshots/plan-soc-light-1x.webp and b/i18n/en/docusaurus-plugin-content-docs/current/features/screenshots/plan-soc-light-1x.webp differ
diff --git a/i18n/en/docusaurus-plugin-content-docs/current/features/screenshots/plan-soc-light-2x.webp b/i18n/en/docusaurus-plugin-content-docs/current/features/screenshots/plan-soc-light-2x.webp
index d15f23f64..cc2ccb520 100644
Binary files a/i18n/en/docusaurus-plugin-content-docs/current/features/screenshots/plan-soc-light-2x.webp and b/i18n/en/docusaurus-plugin-content-docs/current/features/screenshots/plan-soc-light-2x.webp differ
diff --git a/i18n/en/docusaurus-plugin-content-docs/current/features/screenshots/plan-soc-repeating-dark-1x.webp b/i18n/en/docusaurus-plugin-content-docs/current/features/screenshots/plan-soc-repeating-dark-1x.webp
new file mode 100644
index 000000000..7d3b519ff
Binary files /dev/null and b/i18n/en/docusaurus-plugin-content-docs/current/features/screenshots/plan-soc-repeating-dark-1x.webp differ
diff --git a/i18n/en/docusaurus-plugin-content-docs/current/features/screenshots/plan-soc-repeating-dark-2x.webp b/i18n/en/docusaurus-plugin-content-docs/current/features/screenshots/plan-soc-repeating-dark-2x.webp
new file mode 100644
index 000000000..c80efdd47
Binary files /dev/null and b/i18n/en/docusaurus-plugin-content-docs/current/features/screenshots/plan-soc-repeating-dark-2x.webp differ
diff --git a/i18n/en/docusaurus-plugin-content-docs/current/features/screenshots/plan-soc-repeating-light-1x.webp b/i18n/en/docusaurus-plugin-content-docs/current/features/screenshots/plan-soc-repeating-light-1x.webp
new file mode 100644
index 000000000..b47f8b199
Binary files /dev/null and b/i18n/en/docusaurus-plugin-content-docs/current/features/screenshots/plan-soc-repeating-light-1x.webp differ
diff --git a/i18n/en/docusaurus-plugin-content-docs/current/features/screenshots/plan-soc-repeating-light-2x.webp b/i18n/en/docusaurus-plugin-content-docs/current/features/screenshots/plan-soc-repeating-light-2x.webp
new file mode 100644
index 000000000..fae4775fa
Binary files /dev/null and b/i18n/en/docusaurus-plugin-content-docs/current/features/screenshots/plan-soc-repeating-light-2x.webp differ
diff --git a/screenshot-generator/playwright.config.js b/screenshot-generator/playwright.config.js
index ca990b112..29d872538 100644
--- a/screenshot-generator/playwright.config.js
+++ b/screenshot-generator/playwright.config.js
@@ -22,7 +22,11 @@ module.exports = defineConfig({
projects: [
{
name: "chromium",
- use: { ...devices["Desktop Chrome"], deviceScaleFactor: 2 },
+ use: {
+ ...devices["Desktop Chrome"],
+ deviceScaleFactor: 2,
+ viewport: { width: 1280, height: 1600 },
+ },
},
],
});
diff --git a/screenshot-generator/recipes/plan.spec.js b/screenshot-generator/recipes/plan.spec.js
index 499d81870..c8e0e9102 100644
--- a/screenshot-generator/recipes/plan.spec.js
+++ b/screenshot-generator/recipes/plan.spec.js
@@ -1,6 +1,6 @@
const { test, expect } = require("@playwright/test");
import { loop } from "./utils/loop";
-import { CURSOR, ARROW, placeOverlay } from "./utils/overlay";
+import { CURSOR, placeOverlay, removeOverlays } from "./utils/overlay";
const { start, stop } = require("./utils/evcc");
const BASE_PATH = "features/screenshots";
@@ -19,9 +19,9 @@ loop((screenshot) => {
await page.goto(`/`);
await page.locator("[data-testid=charging-plan] button").first().click();
await wait(300);
- await page.getByTestId("plan-soc").selectOption("90");
- await page.getByTestId("plan-active").click();
- await placeOverlay(page, "#chargingplan-1_0-goal", CURSOR, 60, 5);
+ await page.getByTestId("static-plan-soc").selectOption("90");
+ await page.getByTestId("static-plan-active").click();
+ await placeOverlay(page, "#chargingplan-lp1-1-goal", CURSOR, 60, 5);
await screenshot(
page,
`${BASE_PATH}/plan-soc`,
@@ -30,6 +30,20 @@ loop((screenshot) => {
all: 20,
},
);
+ await removeOverlays(page);
+ await page.getByTestId("static-plan-active").click();
+ await page.getByTestId("repeating-plan-add").click();
+ await page.getByTestId("repeating-plan-soc").selectOption("40");
+ await page.getByTestId("repeating-plan-active").click();
+ await placeOverlay(page, "#chargingplan-lp1-2-weekdays", CURSOR, 0, 5);
+ await screenshot(
+ page,
+ `${BASE_PATH}/plan-soc-repeating`,
+ "#chargingPlanModal_1 .modal-content",
+ {
+ all: 20,
+ },
+ );
});
test("charging plan energy", async ({ page }) => {
@@ -41,9 +55,9 @@ loop((screenshot) => {
await page.locator("[data-testid=charging-plan] button").first().click();
await wait(300);
- await page.getByTestId("plan-energy").selectOption("20");
- await page.getByTestId("plan-active").click();
- await placeOverlay(page, "#chargingplan-1_0-goal", CURSOR, 60, 5);
+ await page.getByTestId("static-plan-energy").selectOption("20");
+ await page.getByTestId("static-plan-active").click();
+ await placeOverlay(page, "#chargingplan-lp1-1-goal", CURSOR, 60, 5);
await screenshot(
page,
`${BASE_PATH}/plan-energy`,