Haltezeit: Stufe 3,5 Std. und lesbare Angabe in Stunden

Die 3,5 Stunden fallen aus der Reihe, weil sie aus einem konkreten Fall
stammen: dauerhafter Wasserverbrauch. Kuerzer waere Fehlalarm (eine lange
Dusche, eine Waschmaschine), laenger liefe ein offener Hahn eine halbe
Nacht. Die 3 Std. weichen dafuer - niemand hat sie benutzt.

Dazu haltezeitKurz(): ab einer Stunde in Stunden statt in Minuten. "210
Min." muss man umrechnen, "3,5 Std." nicht. Die Beschriftungen der
Auswahlliste kommen jetzt aus derselben Funktion wie die Uebersichtszeile,
das JavaScript hat eine gleichlautende.

Co-Authored-By: Claude Opus 5 <noreply@anthropic.com>
This commit is contained in:
2026-09-21 09:10:55 +02:00
co-authored by Claude Opus 5
parent 01d04e8f56
commit e3ac9bad37
3 changed files with 37 additions and 12 deletions
+1 -1
View File
@@ -232,7 +232,7 @@ if ($action === "list") {
// die Bedingung stehen bleiben, dann wird ausgeloest.
if (!empty($a["hold_secs"])) {
$wann .= ", erst nach "
. intdiv($a["hold_secs"], 60) . " Min. ununterbrochen";
. haltezeitKurz($a["hold_secs"]) . " ununterbrochen";
}
if ($a["lockout_secs"] > 0) {
$wann .= ", frühestens alle "
+7 -3
View File
@@ -1126,9 +1126,7 @@ function rahmenKurzText() {
teile.push(autoModel.window_from === "00:00" && autoModel.window_to === "23:59"
? "rund um die Uhr"
: autoModel.window_from + "" + autoModel.window_to);
if (autoModel.hold_secs > 0) {
teile.push("erst nach " + Math.floor(autoModel.hold_secs / 60) + " Min.");
}
if (autoModel.hold_secs > 0) teile.push("erst nach " + haltezeitKurz(autoModel.hold_secs));
if (autoModel.lockout_secs > 0) {
teile.push("Sperre " + (autoModel.lockout_secs >= 60
? Math.floor(autoModel.lockout_secs / 60) + " Min."
@@ -1139,6 +1137,12 @@ function rahmenKurzText() {
return teile.join(" · ");
}
/** Wie haltezeitKurz() in automations.php: Minuten bis eine Stunde, dann Stunden. */
function haltezeitKurz(sekunden) {
if (sekunden < 3600) return Math.floor(sekunden / 60) + " Min.";
return (sekunden / 3600).toFixed(1).replace(/[.,]0$/, "").replace(".", ",") + " Std.";
}
function rahmenIstVorgabe() {
return autoModel.weekdays === 127
&& autoModel.on_vacation === 1
+28 -7
View File
@@ -226,14 +226,35 @@ function lockoutChoices()
*/
function haltezeitChoices()
{
return [
["value" => 0, "label" => "sofort"],
["value" => 300, "label" => "nach 5 Min. ununterbrochen"],
["value" => 900, "label" => "nach 15 Min. ununterbrochen"],
["value" => 1800, "label" => "nach 30 Min. ununterbrochen"],
["value" => 3600, "label" => "nach 1 Std. ununterbrochen"],
["value" => 10800, "label" => "nach 3 Std. ununterbrochen"],
// Die 3,5 Stunden fallen aus der Reihe, weil sie aus einem konkreten Fall
// stammen: dauerhafter Wasserverbrauch. Kuerzer waere Fehlalarm (eine
// lange Dusche, eine Waschmaschine), laenger liefe ein offener Hahn eine
// halbe Nacht.
$stufen = [0, 300, 900, 1800, 3600, 7200, 12600];
$aus = [];
foreach ($stufen as $sek) {
$aus[] = [
"value" => $sek,
"label" => $sek ? "nach " . haltezeitKurz($sek) . " ununterbrochen" : "sofort",
];
}
return $aus;
}
/**
* Eine Haltezeit in Worten - "45 Min.", "1 Std.", "3,5 Std."
*
* Minuten bis eine Stunde, darueber Stunden: "210 Min." muss man umrechnen,
* "3,5 Std." nicht. Die Nachkommastelle faellt weg, wenn sie null ist.
*/
function haltezeitKurz($sekunden)
{
$sekunden = intval($sekunden);
if ($sekunden < 3600) {
return intdiv($sekunden, 60) . " Min.";
}
$zahl = number_format($sekunden / 3600, 1, ",", "");
return rtrim(rtrim($zahl, "0"), ",") . " Std.";
}
/**