Batteriespannungs-Diagramm: feste 170px-Höhe statt aspect-ratio, Y-Achse geklemmt
Die aspect-ratio-Lösung für die volle Spaltenbreite ließ auf großen Bildschirmen die gesamte Koordinatenfläche mitwachsen - Achsenbeschriftungen (fester font-size in SVG-Einheiten) wurden dadurch auf ~26px zu groß, das Diagramm unnötig hoch. Zurück auf eine feste 170px-Höhe: der Y-Maßstab bleibt immer 1:1, nur die X-Achse dehnt sich auf die volle Breite - normale Schriftgröße, kompaktes Diagramm, trotzdem volle Spaltenbreite. bvSkalaY()/y() klemmen jetzt auf [0,1] statt roh zu extrapolieren - ein Punkt außerhalb von yMin/yMax (z. B. ein Ausreißer auf einer noch nicht aktualisierten Instanz) zeichnet sich sonst weit außerhalb der Fläche und reißt die Linie über den Rand hinaus, statt sichtbar am Achsenrand zu liegen. Co-Authored-By: Claude Sonnet 5 <[email protected]>
This commit is contained in:
@@ -1806,7 +1806,7 @@ function vBatterieverlauf() {
|
||||
</div>
|
||||
${genug ? `
|
||||
<div id="bvChart" style="margin-top:14px;touch-action:none;position:relative">
|
||||
<svg id="bvSvg" viewBox="0 0 ${BV_W} ${BV_H}" preserveAspectRatio="none" style="width:100%;aspect-ratio:${BV_W}/${BV_H};display:block"></svg>
|
||||
<svg id="bvSvg" viewBox="0 0 ${BV_W} ${BV_H}" preserveAspectRatio="none" style="width:100%;height:${BV_H}px;display:block"></svg>
|
||||
</div>
|
||||
<div style="display:flex;justify-content:space-between;align-items:center;margin-top:10px">
|
||||
<span class="label" id="bvRange" style="margin-top:0"></span>
|
||||
@@ -1872,7 +1872,15 @@ function vBatterieliste() {
|
||||
}
|
||||
|
||||
function bvSkalaX(t) { return BV_ML + ((t - bvDomain[0]) / (bvDomain[1] - bvDomain[0])) * (BV_W - BV_ML - BV_MR); }
|
||||
function bvSkalaY(v, yMin, yMax) { return BV_H - BV_MB - ((v - yMin) / (yMax - yMin)) * (BV_H - BV_MT - BV_MB); }
|
||||
/* Auf [0,1] geklemmter Anteil statt roher Extrapolation - ein Punkt außerhalb
|
||||
von yMin/yMax (z. B. ein Ausreißer, der die Plausibilitätsgrenze auf einer
|
||||
noch nicht aktualisierten Instanz umgangen hat) zeichnet sich sonst weit
|
||||
außerhalb der sichtbaren Fläche und reißt die Linie unkontrolliert nach
|
||||
unten/oben aus - geklemmt liegt er sichtbar am oberen/unteren Rand. */
|
||||
function bvSkalaY(v, yMin, yMax) {
|
||||
const anteil = Math.max(0, Math.min(1, (v - yMin) / (yMax - yMin)));
|
||||
return BV_H - BV_MB - anteil * (BV_H - BV_MT - BV_MB);
|
||||
}
|
||||
function bvDomainKlemmen(domain) {
|
||||
let [a, b] = domain;
|
||||
const volle = bvVollDomain[1] - bvVollDomain[0];
|
||||
|
||||
Reference in New Issue
Block a user