Die Wochenzahlen erklaeren sich -- und die Zeitraum-Karte bekommt eine Rangfolge
Zwei Bildschirmfotos, zwei Sachen. 1) "wieso werden die zahlen oben nicht ausgefuellt von der excel datei?" Weil kein einziger Tag erfasst ist -- die Backstage-Ausgabe enthielt einen Zeitraum, und aus einer Summe ueber dreizehn Tage laesst sich nicht ablesen, wie ein einzelner Tag lief. Das stand nirgends. Stattdessen standen dort sieben Karten mit "0" und "wie in der Vorwoche": Das sieht aus wie ein Fehler, und die Frage entsteht genau an dieser Stelle. Also steht die Antwort jetzt auch dort -- nicht in einer Notiz, nicht in einem Hilfetext. UND SIE NENNT DEN WEG, nicht nur den Grund: "In Backstage den Zeitraum auf EINEN Tag stellen, herunterladen, hier einlesen -- je Tag einmal." Ein Hinweis ohne Ausweg ist eine Sackgasse mit Erklaerung. Sobald EIN Tag da ist, verschwindet der Kasten und die Karten kommen zurueck. Genau das ist die Gegenprobe; ohne sie hiesse alles andere nur, dass die Karten jetzt immer weg sind. 2) "das muss viel geiler aussehen und viel klarer." Er hatte recht: Die erste Fassung war eine Liste ohne Rangfolge -- Spanne, Diamanten, LIVE, Follower, alles gleich gross, nichts sprang heraus. Wer draufschaut, will ZWEI Dinge in einer halben Sekunde wissen: WELCHER Zeitraum und WIE VIELE Diamanten. Jetzt: die Spanne als Ueberschrift, die Zahl der Tage als Marke daneben, die Diamanten gross mit dem Schnitt direkt darunter, alles Uebrige unter einem Strich. Links eine Kante in der Hausfarbe -- sie sagt "andere Sorte Zahl", ohne dass ein Wort dafuer noetig waere. Das ist wichtig: Wer einen Zeitraum fuer einen Tageswert haelt, rechnet mit ihm weiter. GEMESSEN IN PIXELN, NICHT NACH GEFUEHL: Die Hauptzahl muss mindestens 1,6-mal so gross sein wie ein Nebenwert (gemessen: 30 px zu 15 px), sonst ist es wieder eine Liste. Eine Pruefung, die "sieht gut aus" sagt, sagt nichts. pruef-backstage-import 118 -> 127. Der leere Zustand wird HERGESTELLT und nicht abgewartet -- eine Pruefung, die auf einen Zustand hofft, prueft irgendwann gar nichts mehr. Co-Authored-By: Claude Opus 5 <[email protected]>
This commit is contained in:
@@ -742,7 +742,7 @@ console.log("\n=== Die Seite ===");
|
||||
const spannenBild = await seite.evaluate(() => ({
|
||||
sichtbar: document.getElementById("spannen-block")?.hidden === false,
|
||||
karten: document.querySelectorAll(".spanne").length,
|
||||
zeit: document.querySelector(".spanne__zeit")?.textContent || "",
|
||||
zeit: document.querySelector(".spanne__spanne")?.textContent || "",
|
||||
tage: document.querySelector(".spanne__tage")?.textContent || "",
|
||||
schnitt: document.querySelector(".spanne__schnitt")?.textContent || "",
|
||||
satz: document.querySelector(".spannen__satz")?.textContent || "",
|
||||
@@ -758,6 +758,99 @@ console.log("\n=== Die Seite ===");
|
||||
ok(/nicht für einen Tag/.test(spannenBild.satz),
|
||||
"und darueber steht, dass es kein Tageswert ist");
|
||||
|
||||
/* ---- DIE HAUPTZAHL IST GROSS (14.09.2026) -----------------------
|
||||
Filipe zur ersten Fassung: "das muss viel geiler aussehen und viel
|
||||
klarer." Sie war eine Liste ohne Rangfolge -- alles gleich gross,
|
||||
nichts sprang heraus.
|
||||
|
||||
GEMESSEN IN PIXELN, NICHT NACH GEFUEHL: Die Diamantenzahl muss
|
||||
deutlich groesser sein als die Nebenwerte, sonst ist es wieder
|
||||
eine Liste. */
|
||||
const groessen = await seite.evaluate(() => {
|
||||
const g = (s) => {
|
||||
const e = document.querySelector(s);
|
||||
return e ? Math.round(parseFloat(getComputedStyle(e).fontSize)) : 0;
|
||||
};
|
||||
return { haupt: g(".spanne__haupt-zahl"), neben: g(".spanne__zahl"),
|
||||
spanne: g(".spanne__spanne"),
|
||||
text: document.querySelector(".spanne__haupt-zahl")?.textContent || "" };
|
||||
});
|
||||
ok(groessen.haupt >= groessen.neben * 1.6,
|
||||
`die Hauptzahl ist deutlich groesser als die Nebenwerte `
|
||||
+ `(${groessen.haupt} px zu ${groessen.neben} px)`);
|
||||
ok(groessen.spanne > groessen.neben,
|
||||
`und die Spanne groesser als ein Nebenwert (${groessen.spanne} px)`);
|
||||
ok(/\d/.test(groessen.text), `die Hauptzahl traegt Diamanten ("${groessen.text}")`);
|
||||
|
||||
/* ---- EINE WOCHE OHNE EINEN EINZIGEN TAG (14.09.2026) ------------
|
||||
Filipe: "wieso werden die zahlen oben nicht ausgefuellt von der
|
||||
excel datei?"
|
||||
|
||||
Genau sein Fall: ein Zeitraum ist da, Tageszahlen gibt es keine.
|
||||
Vorher standen dort sieben Karten mit "0" und "wie in der
|
||||
Vorwoche" -- das sieht aus wie ein Fehler und beantwortet die
|
||||
Frage nicht.
|
||||
|
||||
HERGESTELLT WIRD DER FALL, nicht abgewartet: Kiros Tageszeilen
|
||||
fallen weg, ein Zeitraum kommt hin. Eine Pruefung, die auf einen
|
||||
Zustand hofft, prueft irgendwann gar nichts mehr. */
|
||||
{
|
||||
const d4 = new DatabaseSync(DB);
|
||||
d4.prepare("DELETE FROM leistung WHERE creator_id = ?").run(idKiro);
|
||||
d4.prepare(`INSERT OR REPLACE INTO leistung_zeitraum
|
||||
(creator_id, von, bis, tage, diamanten, dauer_min, follower_neu, erfasst, erfasst_von)
|
||||
VALUES (?,?,?,?,?,?,?,?,?)`)
|
||||
.run(idKiro, "2026-09-01", "2026-09-13", 13, 13210, 384, 97,
|
||||
new Date().toISOString(), 1);
|
||||
d4.close();
|
||||
}
|
||||
await seite.goto(BASIS + `/workspace/leistung.html?creator=${idKiro}`,
|
||||
{ waitUntil: "networkidle" });
|
||||
await seite.waitForTimeout(1800);
|
||||
|
||||
const ohneTage = await seite.evaluate(() => ({
|
||||
leerDa: document.getElementById("woche-leer")?.hidden === false,
|
||||
kartenWeg: document.getElementById("zahlkarten")?.hidden === true,
|
||||
nullen: [...document.querySelectorAll(".zahlkarte__wert")]
|
||||
.filter((e) => e.offsetParent !== null && e.textContent.trim() === "0").length,
|
||||
satz: document.getElementById("woche-leer")?.textContent || "",
|
||||
}));
|
||||
ok(ohneTage.leerDa, "statt der Nullen steht die Erklaerung da");
|
||||
ok(ohneTage.kartenWeg && ohneTage.nullen === 0,
|
||||
`keine einzige sichtbare Null mehr (${ohneTage.nullen})`);
|
||||
ok(/kein einziger Tag erfasst/.test(ohneTage.satz),
|
||||
`sie sagt, WAS los ist ("${ohneTage.satz.slice(0, 46)}…")`);
|
||||
ok(/01\.09\./.test(ohneTage.satz) && /13 Tage/.test(ohneTage.satz),
|
||||
"und nennt den Zeitraum, der stattdessen da ist");
|
||||
ok(/EINEN Tag/.test(ohneTage.satz),
|
||||
"und den Weg, wie man die Wochenzahlen doch fuellt");
|
||||
|
||||
if (process.env.SCHIRM) {
|
||||
await seite.locator("#woche").screenshot(
|
||||
{ path: join(HIER, "pruef-woche-leer.png") });
|
||||
}
|
||||
|
||||
/* GEGENPROBE: Sobald EIN Tag da ist, verschwindet die Erklaerung und
|
||||
die Karten kommen zurueck. Ohne sie hiesse alles oben nur, dass
|
||||
die Karten jetzt immer weg sind. */
|
||||
{
|
||||
const d5 = new DatabaseSync(DB);
|
||||
d5.prepare(`INSERT OR REPLACE INTO leistung
|
||||
(creator_id, tag, diamanten, gueltiger_tag, erfasst, erfasst_von, quelle)
|
||||
VALUES (?,?,?,1,?,?, 'hand')`)
|
||||
.run(idKiro, gestern, 500, new Date().toISOString(), 1);
|
||||
d5.close();
|
||||
}
|
||||
await seite.reload({ waitUntil: "networkidle" });
|
||||
await seite.waitForTimeout(1600);
|
||||
const mitTag = await seite.evaluate(() => ({
|
||||
leerDa: document.getElementById("woche-leer")?.hidden === false,
|
||||
kartenDa: document.getElementById("zahlkarten")?.hidden === false,
|
||||
}));
|
||||
ok(!mitTag.leerDa && mitTag.kartenDa,
|
||||
"mit einem einzigen Tag sind die Karten wieder da");
|
||||
|
||||
|
||||
if (process.env.SCHIRM) {
|
||||
await seite.locator("#spannen-block").screenshot(
|
||||
{ path: join(HIER, "pruef-spannen.png") });
|
||||
|
||||
Reference in New Issue
Block a user