Die Zeitraeume bekommen eine Tafel -- und die Zahl, die fehlte

Filipe: "das muss viel geiler aussehen bitte. ich will dass es auch
seeeehr gut erkennbar ist, genau wie der text drueber. mach das bitte
alles so dass es mega speziell, hochwertig und lesbar ist."

DAS EIGENTLICHE PROBLEM WAR LESBARKEIT, nicht Geschmack. Im
Bildschirmfoto gemessen: Ueberschrift und Erklaersatz standen direkt
auf der Buehne -- einem Foto mit hellrotem Berg. Und die Karte griff
nach `--flaeche-tief`, einer Variablen, die es im ganzen Haus nicht
gibt; gegriffen hat der Ersatzwert mit 72 % Deckung, also kam der Berg
mit. Eine Variable, die nirgends steht, faellt nicht auf.

Jetzt sitzt alles in EINEM Koerper: vierfarbige Fassung, deckendes
Innenglas mit Messraster, die Zeitraeume als eingelassene Felder mit
dunklen Fugen. Das ist nicht neu erfunden, sondern die Rollenkachel der
Anmeldeseite -- ein Haus, eine Handschrift. Typenschild und Hauptzahl
in gebuerstetem Metall, mit vollwertigem Rueckfall.

"GUELTIGE LIVE-GEHEN-TAGE" WURDE BIS HEUTE WEGGEWORFEN. Datenbank,
Anzeigefeld und Importzeile waren da -- nur `spaltenRaten` hatte kein
Muster dafuer. Am 14.09. wurde das alte `/tag/` reparirt, das die
Spalte faelschlich zur Datumsspalte machte; die Reparatur hat den
falschen Empfaenger entfernt und keinen richtigen bestellt. Die
Pruefdatei SCHICKTE den Wert seit dem 14.09. und hat nie nachgesehen,
ob er ankommt. Jetzt steht er als Streifen da, in genau so viele
Kaestchen geteilt, wie der Zeitraum Tage hat.

ZWEI KLASSEN IM WAEHLER, mit Grund: `.spannen__schild` allein (0,1,0)
kam gegen `.inhalt .feldschild` aus start.css (0,2,0) nicht an -- im
Browser gemessen war weder `display: flex` noch die Farbe da.

UND EINE ZEITBOMBE ENTSCHAERFT: pruef-backstage-import rechnete
"morgen" mit `toISOString()` (UTC), der Server mit Ortszeit. Um 00:40
Berlin war das hier berechnete "morgen" in Wahrheit HEUTE -- die
Gegenprobe "ein Datum in der Zukunft wird abgelehnt" fiel taeglich
zwischen Mitternacht und zwei Uhr um. Alle drei Tage werden jetzt aus
einer Stelle abgeleitet.

Gemessen statt behauptet: 43 258 Bildpunkte hinter Ueberschrift und
Satz abgetastet, kein einziger rot. Gegenprobe mit weggenommenem
Innenglas: 2 857 rote -- die Messung kann Rot also sehen.

pruef-backstage-import 133 (war 127), pruef-xlsx 75 (war 67),
pruef-css-klassen, pruef-leistung-optik 59, pruef-leistung: alle gruen.

Co-Authored-By: Claude Opus 5 <[email protected]>
This commit is contained in:
2026-09-16 00:59:51 +02:00
co-authored by Claude Opus 5
parent 04f87603f6
commit 984f0dd7a9
35 changed files with 929 additions and 424 deletions
+39 -1
View File
@@ -692,6 +692,42 @@
karte.append(haupt);
}
/* ---- Wie viele Tage davon wirklich live waren (16.09.2026) -----
Backstage liefert "Gültige LIVE-Gehen-Tage" mit. Die Zahl stand
bisher als eine von fünf gleich aussehenden unten im Raster --
dabei ist sie die EINZIGE, die sagt, wie die Diamantenzahl
zustande kam: 13.210 an elf Tagen ist etwas anderes als
13.210 an dreien.
EIN STREIFEN STATT EINES BALKENS. Er zeigt einen Anteil, keinen
Fortschritt -- deshalb keine Bewegung, kein Füllen, kein Ziel.
GERECHNET WIRD NUR, WENN BEIDE ZAHLEN DA SIND. Ohne die Zahl
der Tage wäre der Anteil eine Division durch nichts, und ein
Streifen ohne Bezug zeigt eine Genauigkeit, die es nicht gibt. */
if (z.gueltige_tage !== null && z.gueltige_tage !== undefined && z.tage > 0) {
/* NICHT GERUNDET. 11 von 13 sind 84,615 %; auf 85 gerundet
ragte die Füllung vier Pixel in den zwölften Tag hinein --
auf einem in Tage geteilten Streifen sieht das aus wie ein
angefangener Tag, den es nicht gibt. */
const anteil = Math.max(0, Math.min(100, (z.gueltige_tage / z.tage) * 100));
const lauf = el('div', 'spanne__lauf');
const bahn = el('div', 'spanne__lauf-bahn');
const teil = el('div', 'spanne__lauf-teil');
teil.style.width = anteil + '%';
/* Die Zahl der Tage geht als Wert an den Stil -- er teilt den
Streifen daraufhin in genau so viele Kästchen. Ab 32 Tagen
wäre jede Zelle schmaler als ihre Fuge, dann bleibt es bei
der glatten Bahn. Die Grenze steht im Stil erklärt. */
bahn.style.setProperty('--tage', String(z.tage));
if (z.tage <= 31) bahn.dataset.teilen = 'ja';
bahn.append(teil);
lauf.append(bahn);
lauf.append(el('span', 'spanne__lauf-text',
`${z.gueltige_tage} von ${z.tage} Tagen live`));
karte.append(lauf);
}
/* ---- Die uebrigen Werte --------------------------------------- */
const werte = el('div', 'spanne__werte');
const zeig = (name, wert, form) => {
@@ -702,7 +738,9 @@
werte.append(w);
};
zeig('LIVE-Zeit', z.dauer_min, stunden);
zeig('Gültige Tage', z.gueltige_tage, (n) => `${n} von ${z.tage}`);
/* "Gültige Tage" steht NICHT mehr hier -- es steht als Streifen
darüber. Zweimal dieselbe Zahl wäre zweimal dieselbe Auskunft
mit zwei verschiedenen Rängen. */
zeig('Ø Zuschauer', z.zuschauer_avg, zahl);
zeig('Spitze', z.zuschauer_max, zahl);
zeig('Neue Follower', z.follower_neu, zahl);