Entwicklung: „Deine Karte" laesst sich einklappen

VanVan im Support: „Deine Karte im Bereich eure Aufgaben kann man
noch nicht einklappen, was die Seite unnötig lang zieht und
unübersichtlich macht."

GEMESSEN (mess-vanvan-karte, Abschnitt 5). Es ist IHRE eigene Karte,
nicht die eines Modi -- im Bildschirmfoto steht an jedem Punkt „1 ×
Läuft", also eine einzige Antwort. Ueber die rechte Hand urteilt nur
DogFather; bei ihr ist deshalb alles durch und die Karte entsprechend
lang, waehrend ein Modi zwei Stimmen braucht.

                       vorher     nachher
  Seite gesamt         7245 px    2945 px
  davon „Deine Karte"  6186 px    1886 px   (zugeklappt 636 px)
  Schalter                   0    6 + „Alle"-Knopf

6186 von 7245 px waren eine einzige Karte -- 85 Prozent der Seite,
68 Zeilen am Stueck, kein einziger Schalter.

DERSELBE MECHANISMUS WIE NEBENAN, NICHT EIN ZWEITER. Die Karte der
Leitung klappt seit Langem auf und zu. Die Klassen, der Pfeil, die
Zahl im Kopf und der Knopf „Alle auf-/zuklappen" sind dieselben --
ein zweiter Mechanismus daneben waere der, der beim naechsten Umbau
vergessen wird, und er saehe anders aus, obwohl er dasselbe tut.
Herausgeloest als `klappAbschnitt()`.

WELCHER STEHT OFFEN: Was ich TUN soll („Deine Aufgaben"), und von den
Beobachtungen die erste Kategorie. Alle zu hiesse „jedes Mal erst
suchen", alle auf waere der Zustand von vorher.

DIE ZAHL STEHT IM KOPF (14, 12, 12, 11, 10, 9). Eine zugeklappte
Kategorie, die nicht sagt, wie viel in ihr steckt, klappt man einmal
auf und danach nie wieder zu.

GEPRUEFT
Die Messung ist jetzt selbst die Wache: Sie schlaegt an, wenn es
keine Schalter gibt (so ist der Befund entstanden), wenn Zuklappen
weniger als die Haelfte spart, und wenn es Schalter ohne
„Alle"-Knopf gibt. Alle drei nachgestellt. Ein ANTEIL und keine feste
Pixelzahl -- 68 Punkte heute, vielleicht 90 naechstes Jahr.

pruef-entwicklung 79/0, pruef-werdegang 103/0,
pruef-entwicklung-kacheln 34/0, pruef-css-klassen,
pruef-zwischenspeicher 34/0.

Co-Authored-By: Claude Opus 5 <[email protected]>
This commit is contained in:
2026-09-30 17:33:37 +02:00
co-authored by Claude Opus 5
parent 51c47e1c07
commit 721ad262df
48 changed files with 912 additions and 691 deletions
+102 -2
View File
@@ -211,7 +211,15 @@ console.log("=== 3. Was der Modi auf der Seite Eure Aufgaben WIRKLICH sieht ==="
ueberschriften: [...document.querySelectorAll("h1, h2")]
.map((x) => x.textContent.trim()).filter(Boolean).slice(0, 12),
karteDa: !!karte && !karte.hidden,
auftragsblock: auf ? auf.querySelector(".e-block__titel")?.textContent.trim() : null,
/* SEIT DEM 30.09.2026 IST DER KOPF EIN SCHALTER. Der Name steht
in `.e-block__name`, die Zahl daneben in `.e-block__stand` --
`.e-block__titel` gibt es hier nicht mehr. Die Zeile meldete
`undefined` und haette das stillschweigend weiter getan. */
auftragsblock: auf
? [auf.querySelector(".e-block__name")?.textContent.trim(),
auf.querySelector(".e-block__stand")?.textContent.trim()].join(" ")
: null,
auftragKlappbar: !!auf?.querySelector(".e-block__schalter"),
aufgabenTitel: auf
? [...auf.querySelectorAll(".e-punkt__titel")].map((x) => x.textContent.trim())
: [],
@@ -224,7 +232,8 @@ console.log("=== 3. Was der Modi auf der Seite Eure Aufgaben WIRKLICH sieht ==="
});
console.log(` Ueberschriften: ${w.ueberschriften.join(" | ")}`);
console.log(` Karte sichtbar: ${w.karteDa}, Punktzeilen darin: ${w.punkte}`);
console.log(` Abschnitt: ${JSON.stringify(w.auftragsblock)}`);
console.log(` Abschnitt: ${JSON.stringify(w.auftragsblock)} `
+ `(einklappbar=${w.auftragKlappbar})`);
console.log(` Seine Aufgaben: ${JSON.stringify(w.aufgabenTitel)}`);
console.log(` Lage dazu: ${JSON.stringify(w.aufgabenLage)}`);
console.log(` Satz: ${w.satz}`);
@@ -327,6 +336,97 @@ console.log("=== 4. Was VanVan an einem Punkt sieht ===");
await kontext.close();
}
/* =====================================================================
5. VANVANS ZWEITE MELDUNG: „Deine Karte kann man nicht einklappen"
„was die Seite unnötig lang zieht und unübersichtlich macht."
IHRE EIGENE KARTE, nicht die eines Modi. Im Bildschirmfoto steht an
jedem Punkt „1 × Läuft" -- eine einzige Antwort. Ueber die rechte
Hand urteilt nur DogFather, also ist bei ihr alles „fertig" und die
Karte entsprechend lang. Ein Modi braucht zwei Stimmen und sieht
deshalb meist gar nichts.
GEMESSEN WIRD DIE HOEHE. „Unnötig lang" ist eine Zahl, keine
Meinung -- und ohne sie laesst sich nachher nicht sagen, ob es
besser geworden ist.
===================================================================== */
console.log("");
console.log("=== 5. VanVans eigene Karte: wie lang wird die Seite? ===");
{
/* Filipe bewertet VanVan durch -- alle Punkte, wie im echten Haus
ueber Monate gewachsen. */
let gesetzt = 0;
for (const pt of ENTWICKLUNG_FREMD) {
const a = await ruf(kDogi, `/workspace/api/entwicklung/person/${idVan}/${pt.schluessel}`,
{ stufe: "laeuft", anlass: "" }, "PUT");
if (a.status === 200) gesetzt++;
}
console.log(` Filipe hat ${gesetzt} von ${ENTWICKLUNG_FREMD.length} Punkten gesetzt.`);
const { kontext, seite, konsole } = await alsWer(kVan, 1280, 1000);
await seite.goto(`${BASIS}/workspace/entwicklung.html`, { waitUntil: "networkidle" });
await seite.waitForTimeout(1800);
const m = await seite.evaluate(() => {
const karte = document.getElementById("karte-block");
const r = karte?.getBoundingClientRect();
return {
seitenhoehe: document.documentElement.scrollHeight,
kartenhoehe: r ? Math.round(r.height) : 0,
bloecke: karte ? karte.querySelectorAll(".e-block").length : 0,
zeilen: karte ? karte.querySelectorAll(".e-punkt").length : 0,
/* Gibt es ueberhaupt einen Schalter zum Zuklappen? */
schalter: karte ? karte.querySelectorAll(".e-block__schalter").length : 0,
alleKnopf: karte ? karte.querySelectorAll(".e-bloecke__alle").length : 0,
};
});
console.log(` Seite gesamt: ${m.seitenhoehe} px`);
console.log(` Davon „Deine Karte": ${m.kartenhoehe} px `
+ `(${m.bloecke} Abschnitte, ${m.zeilen} Zeilen)`);
console.log(` Schalter zum Zuklappen: ${m.schalter}, „Alle"-Knopf: ${m.alleKnopf}`);
if (!m.schalter) {
console.log(" ACHTUNG: Kein einziger Abschnitt laesst sich zuklappen -- "
+ "genau VanVans Meldung.");
} else {
/* ZUKLAPPEN UND NACHMESSEN. Ohne diesen Griff hiesse „es gibt
Schalter" nur, dass es Schalter gibt. */
const nach = await seite.evaluate(() => {
const k = document.querySelector("#karte-block .e-bloecke__alle");
if (k && k.textContent.includes("zuklappen")) k.click();
else document.querySelectorAll("#karte-block .e-block__schalter")
.forEach((s) => { if (s.getAttribute("aria-expanded") === "true") s.click(); });
const r = document.getElementById("karte-block")?.getBoundingClientRect();
return {
kartenhoehe: r ? Math.round(r.height) : 0,
sichtbar: [...document.querySelectorAll("#karte-block .e-punkt")]
.filter((z) => z.getBoundingClientRect().height > 0).length,
};
});
console.log(` Zugeklappt: ${nach.kartenhoehe} px `
+ `(${nach.sichtbar} Zeilen noch sichtbar)`);
const gespart = m.kartenhoehe - nach.kartenhoehe;
const anteil = Math.round(gespart / Math.max(1, m.kartenhoehe) * 100);
console.log(` Gespart: ${gespart} px (${anteil} %)`);
/* EIN ANTEIL UND KEINE FESTE PIXELZAHL. Wie hoch die Karte ist,
haengt am Bestand -- 68 Punkte heute, vielleicht 90 im
naechsten Jahr. Eine feste Grenze waere die Rechnung von
gestern; „mehr als die Haelfte weg" gilt auch dann noch. */
if (anteil < 50 || nach.sichtbar > 0) {
console.log(" ACHTUNG: Zuklappen bringt kaum etwas "
+ `(${anteil} %, ${nach.sichtbar} Zeilen bleiben stehen).`);
}
}
if (m.schalter && !m.alleKnopf) {
console.log(" ACHTUNG: Es gibt Schalter, aber keinen Knopf, der alle "
+ "auf einmal zuklappt -- bei sechs Abschnitten ist das sechsmal tippen.");
}
await seite.screenshot({ path: "server/mess-vanvan-karte-eigene.png", fullPage: true });
console.log(" Bild: server/mess-vanvan-karte-eigene.png");
if (konsole.length) console.log(" KONSOLE:", konsole.slice(0, 3).join(" | "));
await kontext.close();
}
await browser.close();
try { rmSync(ordner, { recursive: true, force: true }); } catch { /* Rest im Temp */ }
console.log("");