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 <noreply@anthropic.com>
This commit is contained in:
@@ -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";
|
||||
}
|
||||
|
||||
Reference in New Issue
Block a user