screen1: "Wie geht's dir?" ist EINE Flaeche -- und die Spalten waren der Fehler

Filipe, mit dem Bildschirmfoto der Seite: "ich will dass diese seite
viel uebersichtlicher aussieht, es soll eine riesssen kachel sein wo
alles viel besser und geiler aussieht. los"

WAS ANDERS IST
--------------
Vorher lagen Gruppenkoepfe und Fragen flach nebeneinander in derselben
Spalte: jede Frage eine eigene Kachel mit Rand, Schatten und Fase,
dazwischen ab und zu eine Ueberschrift. Zwoelf Kacheln, kein Zusammenhang.

Jetzt: eine Flaeche (`b-flaeche`), darin je Gruppe ein Abschnitt mit
ihrem Kopf und ihren Fragen. Getrennt wird durch eine Linie, nicht durch
eine Luecke. Die Frage ist darin kein eigener Kasten mehr, sondern ein
flaches Feld; beantwortet erkennt man an der linken Kante. Obendrauf ein
Band, das den eigenen Stand zeigt ("2 von 9 Fragen dieser Runde
beantwortet") -- auf einer Seite, die man ausfuellt, ist genau das die
Uebersicht, die gefehlt hat.

DER EIGENTLICHE FUND: DER SPALTENSATZ
-------------------------------------
Nach dem Umbau stand auf dem Bildschirmfoto rechts oben eine Reihe
Antwortknoepfe ohne Ueberschrift darueber, und die Ueberschrift
"Miteinander" links unten neben fremden Fragen. Eine Ueberschrift, die
neben fremdem Inhalt steht, ordnet den falschen zu -- das ist nicht
unschoen, das ist falsch.

Ursache war `columns: 2` auf `#fragen`, dem Behaelter um ALLES. Solange
darin nur flache Fragen lagen, ging es auf. Seit die Fragen in Gruppen
stecken, schneidet der Spaltenumbruch mitten durch eine Gruppe. Das
`break-inside: avoid` daneben konnte nichts halten: Es galt fuer
`#fragen > .e-punkt`, und ein `.e-punkt` ist seit dem Umbau kein direktes
Kind von `#fragen` mehr. Die Regel lief ins Leere.

Zwei Spalten gibt es weiterhin -- aber INNERHALB einer Gruppe, ueber ein
Raster (`.b-gruppe__fragen`). Ein Raster verteilt Kaesten und bricht
keinen Textfluss um; es kann per Bauart nichts zerschneiden. Damit ist
die Ursache weg und nicht der Schaden ueberklebt.

`.b-feld__liste` stand in derselben Regel und kommt in keiner Seite und
keinem Skript mehr vor -- nachgesehen, nicht vermutet. Faellt mit weg.

GEPRUEFT WIRD DIE LAGE DER KAESTEN, NICHT DIE VERSCHACHTELUNG
-------------------------------------------------------------
pruef-befinden bekommt fuenf Messungen dazu. Wichtig dabei, und der
Grund fuer die Form: Eine Pruefung auf "steht der Kopf im richtigen
Abschnitt?" waere die ganze Zeit gruen gewesen. Nachgemessen war sie es
auch (`kopfInGruppe: true`), waehrend das Bild falsch war. Das HTML war
nie das Problem.

Gemessen wird deshalb, WO die Kaesten liegen: jede Frage unterhalb des
Kopfes ihrer Gruppe, keine Gruppe ragt in die naechste. Gegenprobe
gefahren -- mit dem Spaltensatz zurueck faellt das erste auf 5 von 6 und
das zweite auf 3 von 5, bei 1280 px. Die Pruefung kann also auch "nicht
in Ordnung" sagen.

pruef-befinden: 121 Pruefungen, 0 Fehler (vorher 116).
Gemessen bei 1280 und 390 px, keine Browsermeldungen.

Nebenbei: eine deutsche Anfuehrung in einer Pruefmeldung war mit einem
ASCII-Anfuehrungszeichen geschlossen.

Co-Authored-By: Claude Opus 5 <[email protected]>
This commit is contained in:
2026-09-23 01:08:25 +02:00
co-authored by Claude Opus 5
parent 51562eb276
commit 19d709250d
42 changed files with 898 additions and 604 deletions
+75 -2
View File
@@ -183,7 +183,37 @@
const uebrig = daten.punkte.filter((pt) => !bekannt.has(pt.feld));
if (uebrig.length) gruppen.push({ feld: null, punkte: uebrig });
/* =================================================================
EINE FLAECHE, GRUPPEN DARIN (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."
VORHER lagen Gruppenkoepfe und Fragen FLACH nebeneinander in
derselben Spalte -- jede Frage eine eigene Kachel mit eigenem
Rand, dazwischen ab und zu eine Ueberschrift. Im zweispaltigen
Raster rutschte der Kopf einer Gruppe dadurch neben die Fragen
einer anderen; auf seinem Bildschirmfoto steht „Miteinander"
links unten neben den Fragen von „Klarheit & Rückhalt".
Das ist nicht nur unschoen, es ist FALSCH: Eine Ueberschrift,
die neben fremdem Inhalt steht, ordnet den falschen zu.
Jetzt gehoert jede Gruppe zusammen: ein `<section>` mit ihrem
Kopf und ihren Fragen darin, und das Ganze liegt in EINER
Flaeche (b-flaeche in befinden.html). Getrennt wird durch eine
Linie, nicht durch eine Luecke -- dieselbe Entscheidung wie bei
den Regeln am 22.09.
DIE GRUPPE TRAEGT IHRE NUMMER als CSS-Variable. Daraus faerbt
die Stilvorlage den Balken vor der Ueberschrift; eine Farbe je
Gruppe im Skript waere eine zweite Farbliste. */
let nr = 0;
for (const g of gruppen) {
const abschnitt = el('section', 'b-gruppe');
abschnitt.style.setProperty('--gruppe-nr', String(nr++));
if (g.feld) {
const kopf = el('div', 'e-feld');
const wort = el('h3', 'e-feld__wort');
@@ -195,10 +225,49 @@
wort.append(document.createTextNode(g.feld.name));
kopf.append(wort);
if (g.feld.text) kopf.append(el('p', 'e-feld__text', g.feld.text));
ziel.append(kopf);
abschnitt.append(kopf);
}
for (const pt of g.punkte) zeichneFrage(pt, ziel);
const raster = el('div', 'b-gruppe__fragen');
for (const pt of g.punkte) zeichneFrage(pt, raster);
abschnitt.append(raster);
ziel.append(abschnitt);
}
fortschrittZeigen();
}
/* =====================================================================
WIE WEIT BIN ICH? (23.09.2026)
„viel übersichtlicher" heisst bei einer Seite, auf der man etwas
AUSFUELLT, vor allem eines: zu wissen, wie viel noch kommt. Der
Kasten oben sagt „9 von 18 Fragen dran" -- das ist die Runde,
nicht der eigene Stand.
Gezaehlt werden die Fragen, die WIRKLICH auf dem Bildschirm
stehen, und davon die mit einer Antwort aus dieser Runde. Eine
Zahl aus den Daten waere eine zweite Rechnung neben dem, was man
sieht -- und zwei Rechnungen ueber dasselbe gehen irgendwann
auseinander.
`aria-live` steht im HTML: Wer nicht hinsieht, bekommt den neuen
Stand vorgelesen, sobald er eine Frage beantwortet. */
function fortschrittZeigen() {
const band = $('b-stand');
if (!band) return;
const fragen = [...document.querySelectorAll('#fragen .e-punkt')];
const fertig = fragen.filter((f) => f.dataset.stufe).length;
const gesamt = fragen.length;
if (!gesamt) { band.hidden = true; return; }
band.hidden = false;
const balken = $('b-stand-balken');
if (balken) balken.style.width = `${Math.round((fertig / gesamt) * 100)}%`;
const wort = $('b-stand-wort');
if (wort) {
wort.textContent = fertig === gesamt
? `Alle ${gesamt} Fragen dieser Runde beantwortet.`
: `${fertig} von ${gesamt} Fragen dieser Runde beantwortet.`;
}
band.dataset.fertig = fertig === gesamt ? 'ja' : 'nein';
}
/** Eine einzelne Frage. Ausgelagert, damit die Gliederung oben
@@ -237,6 +306,10 @@
b.setAttribute('aria-pressed', String(b === knopf));
}
z.dataset.stufe = stufe;
/* DER STAND OBEN ZIEHT SOFORT MIT. Wer eine Frage beantwortet
und die Zahl erst beim naechsten Laden steigen sieht, haelt
sie fuer kaputt. */
fortschrittZeigen();
const s = await hole(`/workspace/api/entwicklung/mich/${pt.schluessel}`, {
method: 'PUT',
headers: { 'Content-Type': 'application/json' },