Fertige Vorschlaege lassen sich wechseln

Bisher kamen ALLE auf einmal -- damit gab es nichts zu wechseln, die
Liste war entweder ganz da oder ganz weg. Bei 17 Vorschlaegen (Brett
"regeln") ist eine Wand aus Karten ausserdem das Gegenteil von
"uebernehmen, was passt".

Jetzt vier auf einmal, und ein Knopf holt die naechsten vier. Der
Server rechnet die Stelle mit Rest -- nach dem letzten kommt wieder
der erste. Es gibt also keinen Zustand "durchgeklickt, jetzt leer".

Bei hoechstens vier offenen Vorschlaegen erscheint der Knopf gar
nicht: Ein Knopf, der dieselben Karten noch einmal malt, ist ein
Knopf, der nichts tut.

Was es NICHT ist: Die Vorschlaege werden nicht erzeugt. Sie sind ein
geschriebener Vorrat von 113 Stueck auf 16 Brettern.

pruef-vorschlaege.mjs: 21 Pruefungen. Die entscheidende vergleicht
die Titel vorher und nachher -- ein Knopf, der nur gedrueckt werden
kann, besteht jede Pruefung, die nur nach dem Knopf sucht.

Co-Authored-By: Claude Opus 5 <[email protected]>
This commit is contained in:
2026-09-20 19:15:49 +02:00
co-authored by Claude Opus 5
parent c4e26409b9
commit 947ea7ff49
4 changed files with 298 additions and 4 deletions
+52 -2
View File
@@ -1846,9 +1846,59 @@ bereicheRouter.get("/workspace/api/bereich/:bereich/start", (req, res) => {
Wahrheit, und beim Umformulieren liefe sie auseinander. */
const da = new Set(db().prepare(
"SELECT titel FROM eintraege WHERE bereich = ?").all(bereich).map((z) => z.titel));
/* ==== EIN FENSTER STATT DER GANZEN LISTE (20.09.2026) ===========
Filipe: "fertige vorschlaege, ueberall auf der ganzen kompletten
website, will ich dass man auch immer wieder neuladen kann, so
dass wenn man alle benutzt hat man neue erstellen kann oder wenn
keiner uns gefaellt wir komplett neue erstellen koennen
automatisch ... dass es immer wieder moeglich ist die liste zu
wechseln wenn sie uns nicht gefaellt oder leer ist."
BISHER KAMEN ALLE AUF EINMAL. Damit gab es nichts zu wechseln --
die Liste war entweder ganz da oder ganz weg. Und bei 17
Vorschlaegen (Brett "regeln") ist eine Wand aus Karten das
Gegenteil von "uebernehmen, was passt".
JETZT: vier auf einmal, und ein Knopf holt die naechsten vier.
Ist der Vorrat durch, faengt er von vorn an -- `ab` wird mit
Rest gerechnet, es gibt also kein Ende und keine Sackgasse.
WAS ES NICHT IST: Die Vorschlaege werden nicht ERZEUGT. Sie sind
ein geschriebener Vorrat (113 Stueck auf 16 Brettern), und das
steht auch in der Antwort -- `vorrat` sagt, wie viele es
insgesamt sind. Der Oberflaeche zu erlauben, "neue" zu
versprechen, die es nicht gibt, waere eine Luege mit
Fortschrittsanzeige. */
const FENSTER = 4;
const offeneListe = liste.map((v, nr) => ({ nr, ...v, schon: da.has(v.titel) }))
.filter((v) => !v.schon);
const roh = Number(req.query?.ab);
/* MODULO STATT GRENZE: Wer oft genug weiterklickt, landet wieder am
Anfang -- statt vor einer leeren Liste zu stehen. */
const ab = offeneListe.length
? ((Number.isFinite(roh) ? Math.trunc(roh) : 0) % offeneListe.length
+ offeneListe.length) % offeneListe.length
: 0;
const fenster = [];
for (let i = 0; i < Math.min(FENSTER, offeneListe.length); i++) {
fenster.push(offeneListe[(ab + i) % offeneListe.length]);
}
res.json({
vorschlaege: liste.map((v, nr) => ({ nr, ...v, schon: da.has(v.titel) })),
offen: liste.filter((v) => !da.has(v.titel)).length,
vorschlaege: fenster,
/* `offen` bleibt, was es war: wie viele es NOCH gibt. Die
Oberflaeche zaehlt damit "Alle N uebernehmen" richtig. */
offen: offeneListe.length,
/* NEU: Gibt es ueberhaupt etwas zu wechseln? Ohne diese Angabe
muesste die Seite rechnen, und ein Knopf, der nichts anderes
zeigt, ist ein Knopf, der nichts tut. */
mehr_da: offeneListe.length > FENSTER,
ab,
vorrat: liste.length,
});
} catch (fehler) {
console.error("[workspace] Startkatalog:", fehler?.message);