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