From 405162ed47be8817f1ab76fdad893d5ec641f86d Mon Sep 17 00:00:00 2001 From: Moirtz Wagner Date: Fri, 28 Aug 2026 16:14:54 +0200 Subject: [PATCH] setFlowWidth(): negative Breite bedeutet kein Fluss, nicht Fluss rueckwaerts Die Funktion bildete die uebergebene Breite mit Math.abs() ab. Die Aufrufer rechnen 55*(1-exp(x)); kehrt sich das Vorzeichen der Messgroesse um, wird der Ausdruck negativ. Frueher setzte das eine negative stroke-width und die Linie blieb leer. Mit Math.abs() erschien stattdessen eine Animation voller Staerke in unveraenderter Laufrichtung - das Diagramm zeigte einen Fluss, den es nicht gab. Beispiel: speist die EG-Etage mit 900 W zurueck, ergibt 55*(1-exp(900/2000)) den Wert -31,3. Math.abs machte daraus eine 31,3 breite laufende Linie, jetzt sind es 0 und die Linie ruht. Positive Breiten und die Schwelle von 0,5 bleiben unveraendert. Co-Authored-By: Claude Opus 5 --- js/solar/solarMQTT.js | 10 ++++++++-- 1 file changed, 8 insertions(+), 2 deletions(-) diff --git a/js/solar/solarMQTT.js b/js/solar/solarMQTT.js index 7757e6f..7e0cea2 100644 --- a/js/solar/solarMQTT.js +++ b/js/solar/solarMQTT.js @@ -126,8 +126,14 @@ function setDisplay(id, wert) { schreibe("d:" + id, wert, s => { svgElement(i // eine eigene Compositor-Ebene an, und die kostet Speicher. function setFlowWidth(id, width) { const flow = svgElement(id); - const sichtbar = Math.abs(width) >= 0.5; - flow.style.setProperty("--w", (sichtbar ? Math.abs(width) : 0) + "px"); + // Eine negative Breite heisst "kein Fluss in dieser Richtung" - die + // Aufrufer rechnen 55*(1-exp(x)), was bei umgekehrtem Vorzeichen negativ + // wird. Frueher zeichnete eine negative stroke-width schlicht nichts. + // Math.max haelt das bei; Math.abs wuerde stattdessen einen Fluss in der + // falschen Richtung mit voller Staerke anzeigen. + const breite = Math.max(0, width); + const sichtbar = breite >= 0.5; + flow.style.setProperty("--w", breite + "px"); flow.style.animationPlayState = sichtbar ? "running" : "paused"; flow.style.willChange = sichtbar ? "transform" : "auto"; }