diff --git a/assets/img/AG.png b/assets/img/AG.png index 1c87df6..0582555 100644 Binary files a/assets/img/AG.png and b/assets/img/AG.png differ diff --git a/css/solar.css b/css/solar.css index 5be521c..38ec19b 100644 --- a/css/solar.css +++ b/css/solar.css @@ -967,3 +967,37 @@ input[type='range']::-webkit-slider-runnable-track { die Zustandszeile darunter soll trotzdem lesbar bleiben. */ .log-liste .log-wahl.active .text-secondary, .log-liste .log-wahl.active .text-warning { color: rgba(255, 255, 255, .75) !important; } + +/* Etagenschalter im Grundriss der Home-Ansicht. + + Vorher waren sie ein duenner Ring in einem Amber (#aa7713), das sonst + nirgends im Dashboard vorkommt - und alle vier sahen immer gleich aus, + die aktive Etage war an ihnen nicht zu erkennen. Jetzt tragen sie + dieselbe Scheibe wie die Kacheln im Grundriss, und die aktive Etage + bekommt die Akzentfarbe der Schieberegler. */ +.floorBtn { cursor: pointer; } + +.floorBtn circle { + fill: #0006; + stroke: #9aa0a6; + stroke-width: 4; + opacity: .55; + transition: stroke .25s ease, opacity .25s ease; +} + +.floorBtn text { + font: 600 34px Poppins, system-ui, sans-serif; + fill: #9aa0a6; + opacity: .8; + transition: fill .25s ease, opacity .25s ease; + /* Der Kreis faengt den Klick, nicht die Beschriftung - sonst wandert der + Textcursor ueber die Schrift, sobald man sie streift. */ + user-select: none; + pointer-events: none; +} + +.floorBtn:hover circle { opacity: .8; } +.floorBtn:hover text { opacity: 1; } + +.floorBtn.active circle { stroke: #00788F; opacity: 1; } +.floorBtn.active text { fill: #e8ede9; opacity: 1; } diff --git a/js/solar/homeMQTT.js b/js/solar/homeMQTT.js index e878bb5..0ca0866 100644 --- a/js/solar/homeMQTT.js +++ b/js/solar/homeMQTT.js @@ -232,6 +232,15 @@ function switchFloor(floor){ }; inAnim.play(); outAnim.play(); + + // Welche Etage gerade zu sehen ist, stand den Schaltern bisher nicht an - + // alle vier sahen immer gleich aus. classList und nicht die Helfer + // addClass/removeClass weiter oben: deren "el.className +=" wirkt auf + // SVG-Elementen nicht, dort ist className schreibgeschuetzt. + document.querySelectorAll(".floorBtn").forEach(function (schalter) { + schalter.classList.toggle("active", schalter.id === floor); + }); + currentFloor = floor; } diff --git a/restricted/home.php b/restricted/home.php index 021df39..dd0ea94 100644 --- a/restricted/home.php +++ b/restricted/home.php @@ -38,10 +38,6 @@ - - - @@ -80,27 +76,38 @@ 1 - ? min(100, (295 - 61) / (count($etagen) - 1)) + ? min(100, (295 - $kreisUnten) / (count($etagen) - 1)) : 0; - // Von Hand mittig gerueckt, je nach Breite der Buchstaben. - $textX = ["OG" => 62, "EG" => 64, "UG" => 63, "AG" => 62]; ?> $etage): ?> - - - - + " + onclick="switchFloor('')" + transform="translate(0,), scale()"> + + + diff --git a/restricted/rooms.php b/restricted/rooms.php index 57a0295..45203ea 100644 --- a/restricted/rooms.php +++ b/restricted/rooms.php @@ -107,7 +107,7 @@ $rooms = [ // Die Namen muessen genau so lauten wie unter invertersN/name. Passt // einer nicht, schreibt homeMQTT.js die vorhandenen Namen in die // Browser-Konsole - dann steht dort, was hier hingehoert. - ["floor" => "AG", "mqtt" => "Carport EG", "id" => "carport_eg", "x" => 156, "y" => 214, + ["floor" => "AG", "mqtt" => "Carport EG", "id" => "carport_eg", "x" => 179, "y" => 207, "werte" => [ ["wechselrichter" => ["Carport 1-6", "Carport 7-12", "Carport 13-16", "Carport 17-19"], @@ -116,7 +116,7 @@ $rooms = [ // Am Carport OG haengt der go-e Charger. Die Ladeleistung ist das // Einzige, was sich hier messen laesst - und sie beantwortet die Frage, // die man sich vor dem Carport stellt: laedt gerade jemand? - ["floor" => "AG", "mqtt" => "Carport OG", "id" => "carport_og", "x" => 38, "y" => 155, + ["floor" => "AG", "mqtt" => "Carport OG", "id" => "carport_og", "x" => 72, "y" => 154, "werte" => [ ["topic" => "solarManager/evPowerOG", "einheit" => "W", "stellen" => 0, "icon" => "ev-station"], @@ -139,19 +139,19 @@ $rooms = [ // "feld" => "p_AC", "einheit" => "W", "stellen" => 0, "icon" => "sun"] ["floor" => "AG", "mqtt" => "Veranda EG", "id" => "veranda_eg", "werte" => []], ["floor" => "AG", "mqtt" => "Veranda OG", "id" => "veranda_og", "werte" => []], - ["floor" => "AG", "mqtt" => "Terrasse EG", "id" => "terrasse_eg", "x" => 212, "y" => 160, "werte" => []], - ["floor" => "AG", "mqtt" => "Terrasse OG", "id" => "terrasse_og", "x" => 205, "y" => 122, "werte" => []], - ["floor" => "AG", "mqtt" => "Pergola", "id" => "pergola", "x" => 339, "y" => 108, "werte" => []], + ["floor" => "AG", "mqtt" => "Terrasse EG", "id" => "terrasse_eg", "x" => 229, "y" => 158, "werte" => []], + ["floor" => "AG", "mqtt" => "Terrasse OG", "id" => "terrasse_og", "x" => 223, "y" => 124, "werte" => []], + ["floor" => "AG", "mqtt" => "Pergola", "id" => "pergola", "x" => 344, "y" => 111, "werte" => []], // In der Garage steht die Wattpilot der EG-Partei, siehe fahrzeuge() in // restricted/config.php. Ohne Kuerzel im Topic ist das die EG-Wallbox. - ["floor" => "AG", "mqtt" => "Garage", "id" => "garage", "x" => 103, "y" => 134, + ["floor" => "AG", "mqtt" => "Garage", "id" => "garage", "x" => 131, "y" => 135, "werte" => [ ["topic" => "solarManager/evPower", "einheit" => "W", "stellen" => 0, "icon" => "ev-station"], ]], // Der Garten ist kein Bauteil wie die anderen, aber ein Ort: hier haengen // der Regensensor und die beiden Ventilsteuerungen. - ["floor" => "AG", "mqtt" => "Garten", "id" => "garten", "x" => 288, "y" => 180, + ["floor" => "AG", "mqtt" => "Garten", "id" => "garten", "x" => 298, "y" => 176, "werte" => [ // gatherRainData.py im SolarManager legt auf Wetter/Regen ein JSON // mit tage1 bis tage7 und dem Stand des Sammlers. "tage1" ist der