diff --git a/src/views/ConsumerConfig.vue b/src/views/ConsumerConfig.vue
index e82013457..db2cf9777 100644
--- a/src/views/ConsumerConfig.vue
+++ b/src/views/ConsumerConfig.vue
@@ -310,40 +310,55 @@
Betriebsmodus umstellen
-
- Stellt den Betriebsmodus automatisch auf einen anderen Modus um: "Mitternacht" täglich um 0:00 Uhr
-
-
- Stellt den Betriebsmodus automatisch auf einen anderen Modus um, einmalig zum angegebenen Zeitpunkt.
-
- Stellt den Betriebsmodus nicht automatisch um.
+ Schaltet den Verbraucher automatisch zum eingestellten Termin in den Zielmodus um.
-
-
+
+
+
+
+
+
String(dateTimePart).padStart(2, "0");
+ return `${date.getFullYear()}-${pad(date.getMonth() + 1)}-${pad(date.getDate())}`;
+ },
+ defaultResetTime() {
+ return "00:00";
+ },
+ isResetModeEnabled(consumer) {
+ return consumer.consumerUsage?.reset_chargemode?.active;
+ },
+ currentResetMode(consumer) {
+ const selected = consumer.consumerUsage?.reset_chargemode?.frequency?.selected;
+ return selected === "once" || selected === "daily" || selected === "weekly" ? selected : "daily";
+ },
+ setResetEnabled(consumer, active) {
+ this.updateUsage(consumer.id, active, "reset_chargemode.active");
+ if (!active) return;
+
+ this.updateUsage(consumer.id, true, "reset_chargemode.active");
+ const mode = this.currentResetMode(consumer);
+ this.setResetMode(consumer, mode);
+ this.setResetTime(consumer, this.getResetTime(consumer));
+ },
+ defaultWeekly() {
+ return [false, false, false, false, false, false, false];
+ },
+ normalizedResetFrequency(consumer) {
+ const frequency = consumer.consumerUsage?.reset_chargemode?.frequency;
+ const selected = this.currentResetMode(consumer);
return {
- date: `${date.getFullYear()}-${pad(date.getMonth() + 1)}-${pad(date.getDate())}`,
- time: `${pad(date.getHours())}:${pad(date.getMinutes())}`,
+ selected,
+ once: frequency?.once ?? this.todayDateString(),
+ weekly:
+ Array.isArray(frequency?.weekly) && frequency.weekly.length === 7 ? frequency.weekly : this.defaultWeekly(),
};
},
- setResetDate(consumer, dateString) {
- this.writeResetTime(consumer.id, dateString, this.resetDateParts(consumer).time);
+ getResetTime(consumer) {
+ const time = consumer.consumerUsage?.reset_chargemode?.time;
+ return typeof time === "string" && time ? time : this.defaultResetTime();
+ },
+ setResetTime(consumer, time) {
+ if (!time) return;
+ this.updateUsage(consumer.id, time, "reset_chargemode.time");
+ },
+ setResetMode(consumer, mode) {
+ if (mode !== "once" && mode !== "daily" && mode !== "weekly") return;
+ const frequency = this.normalizedResetFrequency(consumer);
+ frequency.selected = mode;
+ if (mode === "weekly" && !frequency.weekly.some((enabled) => enabled)) {
+ const weekdayIndex = (new Date().getDay() + 6) % 7;
+ frequency.weekly[weekdayIndex] = true;
+ }
+ this.updateUsage(consumer.id, frequency, "reset_chargemode.frequency");
+ },
+ getResetOnceDate(consumer) {
+ return this.normalizedResetFrequency(consumer).once;
+ },
+ setResetOnceDate(consumer, dateString) {
+ if (!dateString) return;
+ const frequency = this.normalizedResetFrequency(consumer);
+ frequency.once = dateString;
+ this.updateUsage(consumer.id, frequency, "reset_chargemode.frequency");
},
- setResetTime(consumer, timeString) {
- this.writeResetTime(consumer.id, this.resetDateParts(consumer).date, timeString);
+ getResetWeeklyDay(consumer, dayIndex) {
+ return this.normalizedResetFrequency(consumer).weekly[dayIndex];
},
- writeResetTime(consumerId, dateString, timeString) {
- if (!dateString || !timeString) return;
- const epoch = Math.floor(new Date(`${dateString}T${timeString}`).getTime() / 1000);
- if (Number.isNaN(epoch)) return;
- this.updateUsage(consumerId, epoch, "reset_chargemode.time");
+ setResetWeeklyDay(consumer, dayIndex, value) {
+ const frequency = this.normalizedResetFrequency(consumer);
+ frequency.weekly[dayIndex] = value;
+ this.updateUsage(consumer.id, frequency, "reset_chargemode.frequency");
},
commandAfterSavingConsumerUsage(command, data, hideSaveModal = false) {
this.commandQueue.push({ command, data });