Haltezeit frei in Minuten eingeben statt aus Stufen waehlen
Wonach man sucht, haengt am Messwert: eine offene Tuer faellt nach zwei Minuten auf, ein laufender Wasserhahn erst nach Stunden. Eine Stufenliste traf damit immer nur die Haelfte der Faelle. Das Feld nimmt Minuten, das Modell rechnet in Sekunden weiter. Die Kopfzeile des Rahmens rechnet beim Tippen mit - aus "210" wird dort "erst nach 3,5 Std.", also steht die lesbare Fassung neben der eingebbaren. haltezeitPruefen() ersetzt die Whitelist: nicht unter null, nicht ueber einen Tag, auf ganze Minuten gerundet. Sekunden gewinnen hier nichts, die Messwerte kommen viel seltener. Co-Authored-By: Claude Opus 5 <noreply@anthropic.com>
This commit is contained in:
@@ -26,7 +26,6 @@
|
||||
let autoModel = null;
|
||||
let autoDevices = [];
|
||||
let autoLockouts = [];
|
||||
let autoHaltezeiten = [];
|
||||
let autoFerien = [];
|
||||
let autoFeiertage = [];
|
||||
let autoTagVorlagen = [];
|
||||
@@ -1182,9 +1181,7 @@ function fuelleFormular() {
|
||||
const sperre = document.getElementById("lockoutSecs");
|
||||
optionListe(sperre, autoLockouts.map(o => ({ value: o.value, text: o.label })),
|
||||
autoModel.lockout_secs);
|
||||
optionListe(document.getElementById("holdSecs"),
|
||||
autoHaltezeiten.map(o => ({ value: o.value, text: o.label })),
|
||||
autoModel.hold_secs);
|
||||
document.getElementById("holdMin").value = autoModel.hold_secs / 60;
|
||||
document.getElementById("autoName").value = autoModel.name;
|
||||
// Kennt die Liste die Etage nicht, bleibt eine Auswahlliste sonst leer
|
||||
// stehen und schickt beim Speichern "" mit.
|
||||
@@ -1219,7 +1216,10 @@ function leseFormular() {
|
||||
autoModel.once_per_day = document.getElementById("oncePerDay").checked;
|
||||
autoModel.next_day = document.getElementById("nextDay").checked;
|
||||
autoModel.lockout_secs = Number(document.getElementById("lockoutSecs").value);
|
||||
autoModel.hold_secs = Number(document.getElementById("holdSecs").value);
|
||||
// Minuten im Feld, Sekunden im Modell - und nichts Unmoegliches: ein
|
||||
// leeres Feld ist 0, ein Tag ist die Obergrenze (siehe haltezeitPruefen()).
|
||||
const halten = Math.round(Number(document.getElementById("holdMin").value) || 0);
|
||||
autoModel.hold_secs = Math.min(Math.max(halten, 0), 1440) * 60;
|
||||
}
|
||||
|
||||
/**
|
||||
@@ -1227,11 +1227,16 @@ function leseFormular() {
|
||||
* Ohne das stuende dort "rund um die Uhr", waehrend darunter 08:45 steht.
|
||||
*/
|
||||
function rahmenFelderVerdrahten() {
|
||||
["tSpanFrom", "tSpanTo", "lockoutSecs", "holdSecs",
|
||||
["tSpanFrom", "tSpanTo", "lockoutSecs", "holdMin",
|
||||
"runOnce", "oncePerDay", "nextDay"].forEach(id => {
|
||||
const feld = document.getElementById(id);
|
||||
if (feld) feld.addEventListener("change", () => { leseFormular(); renderRahmen(); });
|
||||
});
|
||||
// Bei der Haltezeit schon beim Tippen: aus "210" wird in der Kopfzeile
|
||||
// "erst nach 3,5 Std." - genau dafuer gibt man die Zahl ein. "change"
|
||||
// allein kaeme erst beim Verlassen des Feldes.
|
||||
document.getElementById("holdMin")
|
||||
.addEventListener("input", () => { leseFormular(); renderRahmen(); });
|
||||
|
||||
// Zugeklappt steht in der Kopfzeile, was gilt; aufgeklappt stehen dort die
|
||||
// drei Vorlagen. Beides gleichzeitig waere eine volle Zeile aus
|
||||
@@ -1256,7 +1261,6 @@ function loadAutomatic() {
|
||||
const daten = JSON.parse(document.getElementById("autoActionData").textContent);
|
||||
autoDevices = daten.devices;
|
||||
autoLockouts = daten.lockouts;
|
||||
autoHaltezeiten = daten.haltezeiten || [];
|
||||
autoFerien = daten.ferien || [];
|
||||
autoFeiertage = daten.feiertage || [];
|
||||
autoTagVorlagen = daten.tagvorlagen || [];
|
||||
|
||||
Reference in New Issue
Block a user