Einstellungsseite: Reiter, Kachelwerte und Geraeteliste
Die Einstellungen bestanden aus einer einzigen langen Spalte mit den Preistabellen. Sie bekommt Reiter, und darin zwei neue Flaechen: was die Kacheln der Startseite anzeigen, und welche Geraete es ueberhaupt gibt. Reiter gab es vorher dreimal in drei Ausfuehrungen - die Etagen ueber den Automatismen mit eigenem switchTab(), die Geraetegruppen im Raum-Modal mit eigener CSS-Klasse, und die Einstellungsseite noch einmal anders. Jetzt baut restricted/reiter.php alle drei; umgeschaltet wird von Bootstrap, den offenen Reiter merkt reiterMerken() in der Adresse. Kachelwerte: was auf einer Kachel steht, stand fest in rooms.php. Die neue Tabelle kachelWerte (solarLog_kacheln.sql) ueberschreibt das je Raum, die Maske waehlt die Messwerte aus demselben Katalog wie der Automatik-Editor - nach Etage sortiert, die Geraete des eigenen Raums oben. Fehlt die Tabelle, zeigt jede Kachel weiter ihre Vorgabe. Geraete: die Zuordnung Geraet -> Raum war ein Modal, erreichbar ueber ein Zahnrad neben den Automatismen. Sie ist eine Einstellung und steht jetzt dort, zusammen mit dem, was fehlte: seit wann ein Geraet nichts mehr meldet, in welchen Automatiken es steckt, und ein Loeschknopf. Letzterer ist noetig, weil der Suchlauf nichts loescht - er legt an und frischt auf, damit die Automatiken ihre Zustands-Ids behalten; ein abgebautes Geraet bliebe sonst fuer immer stehen. Geloescht wird nur, was in keiner Automatik vorkommt. Co-Authored-By: Claude Opus 5 <noreply@anthropic.com>
This commit is contained in:
@@ -215,3 +215,36 @@ function updateWeatherCards(value) {
|
||||
document.getElementById("windGust").innerHTML = value("maxgust");
|
||||
document.getElementById("ambPress").innerHTML = Math.round(value("qff") * 10) / 10;
|
||||
}
|
||||
|
||||
|
||||
/**
|
||||
* Offenen Reiter in der Adresse merken.
|
||||
*
|
||||
* Gilt fuer jede Leiste, die restricted/reiter.php mit "merken" gebaut hat -
|
||||
* erkennbar an data-reiter-merken. Ohne das landet man nach jedem Neuladen
|
||||
* wieder im ersten Reiter, obwohl man gerade woanders gearbeitet hat.
|
||||
*
|
||||
* In der Adresse steht nur das Kuerzel des Reiters (#kacheln), nicht der Name
|
||||
* der Leiste: es ist eine Adresse, die man auch von Hand tippt. Zwei merkende
|
||||
* Leisten auf einer Seite waeren damit nicht zu unterscheiden - dann muesste
|
||||
* hier der Name davor, und die Adresse waere haesslicher als noetig.
|
||||
*/
|
||||
function reiterMerken() {
|
||||
if (typeof bootstrap === "undefined") return;
|
||||
|
||||
document.querySelectorAll("[data-reiter-merken]").forEach(function (leiste) {
|
||||
const knoepfe = leiste.querySelectorAll("[data-reiter]");
|
||||
const gewuenscht = location.hash.replace("#", "");
|
||||
|
||||
knoepfe.forEach(function (knopf) {
|
||||
knopf.addEventListener("shown.bs.tab", function () {
|
||||
history.replaceState(null, "", "#" + knopf.dataset.reiter);
|
||||
});
|
||||
if (gewuenscht && knopf.dataset.reiter === gewuenscht) {
|
||||
new bootstrap.Tab(knopf).show();
|
||||
}
|
||||
});
|
||||
});
|
||||
}
|
||||
|
||||
document.addEventListener("DOMContentLoaded", reiterMerken);
|
||||
|
||||
Reference in New Issue
Block a user