diff --git a/server/pruef-befinden.mjs b/server/pruef-befinden.mjs index 980a8b7f..582de6d3 100644 --- a/server/pruef-befinden.mjs +++ b/server/pruef-befinden.mjs @@ -908,7 +908,71 @@ melde("=== 8. Die Analyse im Browser ==="); ok(g.kopf.length > 30, `mit einem ganzen Satz („${g.kopf.slice(0, 52)}…")`); ok(g.schluss.length > 20, `und einem Schlusssatz („${g.schluss.slice(0, 46)}…")`); ok(/\d+ Fragen aus \d+ Feldern/.test(g.zahlen), - `die Belegzahlen stehen darunter („${g.zahlen}")`); + `die Belegzahlen stehen darunter („${g.zahlen}“)`); + + /* ---- EINE FLAECHE, UND JEDER KOPF UEBER SEINEN EIGENEN FRAGEN + (23.09.2026) ---------------------------------------------- + + Filipe: „ich will dass diese seite viel übersichtlicher aussieht, + es soll eine riesßen kachel sein wo alles viel besser und geiler + aussieht.“ + + Die Fragen liegen jetzt in EINER Flaeche, darin je Gruppe ein + Abschnitt mit Kopf und eigenem Raster. + + WARUM HIER GEMESSEN WIRD UND NICHT NACHGESEHEN, OB ES IM HTML + RICHTIG VERSCHACHTELT IST: Genau das war es die ganze Zeit. Der + Kopf stand im richtigen Abschnitt -- und trotzdem oben rechts + neben den Fragen der naechsten Gruppe, weil `columns: 2` auf dem + Behaelter den Abschnitt mitten durchgeschnitten hat. Eine Pruefung + auf die Verschachtelung waere dabei gruen geblieben; nachgemessen + war sie es auch (`kopfInGruppe: true`), waehrend das Bild falsch war. + + Gemessen wird deshalb, WO die Kaesten liegen: + 1. jede Frage unterhalb des Kopfes IHRER Gruppe, + 2. keine Gruppe ragt in die naechste hinein. + Gegenprobe gefahren: mit dem Spaltensatz zurueck faellt (1) auf + 5 von 6 und (2) auf 3 von 5. Die Pruefung kann also auch + „nicht in Ordnung“ sagen. */ + const lage = await seite.evaluate(() => { + const gruppen = [...document.querySelectorAll(".b-gruppe")]; + const kasten = gruppen.map((x) => x.getBoundingClientRect()); + let gestapelt = 0; + for (let i = 1; i < kasten.length; i++) { + if (kasten[i].top >= kasten[i - 1].bottom - 2) gestapelt++; + } + return { + flaechen: document.querySelectorAll(".b-flaeche").length, + gruppen: gruppen.length, + fragen: document.querySelectorAll("#fragen .e-punkt").length, + /* Keine Frage darf ausserhalb einer Gruppe haengen. */ + ausserhalb: [...document.querySelectorAll("#fragen .e-punkt")] + .filter((f) => !f.closest(".b-gruppe")).length, + kopfUeberFragen: gruppen.filter((gr) => { + const k = gr.querySelector(".e-feld"); + if (!k) return true; + const unten = k.getBoundingClientRect().bottom; + return [...gr.querySelectorAll(".e-punkt")] + .every((f) => f.getBoundingClientRect().top >= unten - 2); + }).length, + gestapelt, + paare: Math.max(0, kasten.length - 1), + /* Kein seitliches Wegrutschen -- eine Flaeche, die breiter ist + als das Fenster, schiebt die ganze Seite. */ + breiter: document.documentElement.scrollWidth > innerWidth + 1, + }; + }); + ok(lage.flaechen === 1, + `die Fragen liegen in EINER Flaeche (${lage.flaechen})`); + ok(lage.gruppen >= 3 && lage.fragen > 0 && lage.ausserhalb === 0, + `alle ${lage.fragen} Fragen stecken in ihren ${lage.gruppen} Gruppen (${lage.ausserhalb} lose)`); + /* DIE ZAHL GEHOERT IN DIE BEDINGUNG -- sonst waere das hier bei null + Gruppen gruen, ohne etwas gesehen zu haben. */ + ok(lage.gruppen > 0 && lage.kopfUeberFragen === lage.gruppen, + `jede Ueberschrift steht ueber IHREN Fragen (${lage.kopfUeberFragen} von ${lage.gruppen})`); + ok(lage.paare > 0 && lage.gestapelt === lage.paare, + `keine Gruppe ragt in die naechste (${lage.gestapelt} von ${lage.paare} Uebergaengen sauber)`); + ok(lage.breiter === false, "und nichts steht seitlich ueber den Rand"); /* ---- KEIN TEXT AUF TEXT, AUCH AM HANDY (20.09.2026) -------------- diff --git a/workspace/anruf-probe.html b/workspace/anruf-probe.html index 6ea7981d..948f0525 100644 --- a/workspace/anruf-probe.html +++ b/workspace/anruf-probe.html @@ -16,15 +16,15 @@ verdeckt. Gefunden hat es pruef-struktur. Richtig sind `gate.css` (die Farbwerte des Hauses) und `haus.css`. --> - - + + - +