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:
@@ -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);
|
||||
|
||||
Reference in New Issue
Block a user