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
+49 -2
View File
@@ -1641,13 +1641,32 @@
Fertige Texte, die jemand aus dem Team uebernimmt. Nicht
automatisch: Ein Text, den niemand gelesen hat, stuende sonst als
Ansage des Teams auf einer oeffentlichen Seite. */
/* WO IM VORRAT WIR GERADE STEHEN (20.09.2026).
Filipe: "fertige vorschlaege ... 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."
Bisher kamen ALLE auf einmal -- damit gab es nichts zu wechseln.
Jetzt zeigt der Server ein Fenster, und dieser Merker sagt ihm, wo
es anfangen soll. Er steht ausserhalb der Funktion, weil `laden()`
sie neu aufruft: Waere er drin, spraenge die Liste nach jedem
Uebernehmen zurueck an den Anfang.
KEINE EIGENE FENSTERGROESSE HIER. Weitergezaehlt wird um das, was
tatsaechlich kam (`vorschlaege.length`) -- eine zweite 4 an dieser
Stelle waere eine Zahl, die beim naechsten Anfassen auseinanderlaeuft. */
let katalogAb = 0;
async function startkatalogZeigen() {
const ziel = $('startkatalog');
if (!ziel) return;
if (!darfEintragen()) { ziel.hidden = true; return; }
let daten = null;
try {
const a = await fetch(`/workspace/api/bereich/${bereich}/start`,
const a = await fetch(
`/workspace/api/bereich/${bereich}/start?ab=${katalogAb}`,
{ credentials: 'same-origin' });
if (!a.ok) { ziel.hidden = true; return; }
daten = await a.json();
@@ -1660,7 +1679,9 @@
kopf.append(el('h2', 'startkatalog__titel', 'Fertige Vorschläge'));
kopf.append(el('p', 'startkatalog__unter',
`${daten.offen} ${daten.offen === 1 ? 'Vorschlag ist' : 'Vorschläge sind'} `
+ 'vorbereitet. Übernehmen, was passt – ändern kannst du danach alles.'));
+ (daten.mehr_da
? 'vorbereitet. Hier stehen die nächsten – übernimm, was passt.'
: 'vorbereitet. Übernehmen, was passt – ändern kannst du danach alles.')));
const alle = el('button', 'schritt startkatalog__alle',
`Alle ${daten.offen} übernehmen`);
alle.type = 'button';
@@ -1673,6 +1694,32 @@
await laden();
});
kopf.append(alle);
/* ---- ANDERE ZEIGEN ------------------------------------------------
Nur wenn es ueberhaupt andere GIBT. Ein Knopf, der dieselben vier
noch einmal bringt, ist ein Knopf, der nichts tut -- und der
Verdacht, dass die Seite haengt, ist schlimmer als ein fehlender
Knopf. Deshalb entscheidet der Server (`mehr_da`) und nicht eine
Rechnung hier.
DER VORRAT ENDET NICHT: Der Server rechnet `ab` mit Rest, nach dem
letzten kommt wieder der erste. Es gibt also keinen Zustand
"durchgeklickt, jetzt ist leer". */
if (daten.mehr_da) {
const andere = el('button', 'schritt startkatalog__andere',
'Andere Vorschläge zeigen');
andere.type = 'button';
andere.setAttribute('aria-label',
'Andere Vorschläge zeigen – die nächsten aus dem Vorrat');
andere.addEventListener('click', () => {
/* Um das weiterzaehlen, was wirklich kam. Bei drei gezeigten
Karten um drei -- sonst uebersprungen wir eine. */
katalogAb += Math.max(1, daten.vorschlaege.length);
startkatalogZeigen();
});
kopf.append(andere);
}
ziel.append(kopf);
const liste = el('div', 'startkatalog__liste');