Drei Wege, die über ein Neuladen führten

**In „Fortsetzen" startet ein Tipp.** Dort steht ein Titel, *weil* man ihn
angefangen hat, und die Stelle steht daneben — der Umweg über die
Detailseite stellte eine Frage, die schon beantwortet war. Überall sonst
bleibt es beim Weg auf die Seite: wer nachsehen will, wie viele Staffeln
eine Serie hat, soll nicht den Film bekommen.

**Ein Haken nimmt die Kachel mit.** In „Fortsetzen" und „Als Nächstes"
steht, was offen ist. Eine abgehakte Folge ist nicht mehr offen — sie mit
einem Haken stehen zu lassen sah aus, als hätte das Abhaken nicht
gewirkt. Dasselbe für „Aus Fortsetzen entfernen": in der Reihe selbst
heisst entfernen genau das.

**Und ein getauschtes Bild erreicht den Aufmacher.** Wer auf der
Startseite ein Plakat wechselt, sieht denselben Titel gleich darüber in
voller Breite — dort stand bis zum nächsten Neuladen das alte. Die
Kachel frischt sich selbst auf; der Aufmacher steht ganz woanders und
erfuhr nichts davon. Jetzt meldet der Bilderdialog es der ganzen Seite,
und wer es angeht, hört zu.

Co-Authored-By: Claude Opus 5 <noreply@anthropic.com>
This commit is contained in:
Scarriffle
2026-10-12 21:54:50 +02:00
co-authored by Claude Opus 5
parent adca700c4a
commit 2c535e6f47
3 changed files with 67 additions and 11 deletions
+18 -9
View File
@@ -22,7 +22,14 @@ export type Kachel = {
*
* **Bisher nur für „Als Nächstes".** Dort heisst Weglegen etwas anderes
* als in „Fortsetzen": nicht diese Folge, sondern diese Serie. */
reihe?: 'naechste';
reihe?: 'naechste' | 'fortsetzen';
/** Was ein Tipp auslöst, wenn es nicht die Detailseite sein soll.
*
* **Nur in „Fortsetzen".** Dort ist die Absicht eindeutig: der Titel steht
* in der Reihe, *weil* man ihn angefangen hat, und die Stelle steht
* daneben. Überall sonst führt der Tipp auf die Seite — wer nur nachsehen
* will, wie viele Staffeln eine Serie hat, soll nicht den Film bekommen. */
starten?: () => void;
art: 'filme' | 'serien';
/** Die obere, fette Zeile. Bei einer Folge die Serie. */
titel: string;
@@ -107,7 +114,7 @@ export function kachel(k: Kachel, oeffnen: (art: 'filme' | 'serien', id: string)
// muss — sie liest sie vom angeklickten Element ab.
knopf.dataset.id = k.id;
knopf.dataset.art = k.art;
knopf.onclick = () => oeffnen(k.art, k.id);
knopf.onclick = () => (k.starten ? k.starten() : oeffnen(k.art, k.id));
// **Das Kontextmenü an jeder Kachel, überall.** Gesehen, Favorit und
// Weglegen gab es nur auf der Detailseite — in einer Übersicht mit zwanzig
@@ -297,14 +304,14 @@ function kachelpunkte(
// weiss nur der Server.
k.stand = await gesehen(k.standId ?? k.id, !istGesehen);
// **In „Als Nächstes" ist ein Haken ein Abschied.**
// **In „Fortsetzen" und „Als Nächstes" ist ein Haken ein Abschied.**
//
// Die Reihe zeigt, was dran ist. Eine abgehakte Folge ist nicht mehr
// dran — sie mit einem Haken stehen zu lassen sah aus, als hätte das
// Abhaken nicht gewirkt. Gemessen: der Server lieferte beim nächsten
// Laden längst die richtige Folge, nur sah man das nie, weil die
// Reihe nicht neu geladen wurde.
if (k.reihe === 'naechste' && !istGesehen) {
// Beide Reihen zeigen, was offen ist. Eine abgehakte Folge ist nicht
// mehr offen — sie mit einem Haken stehen zu lassen sah aus, als
// hätte das Abhaken nicht gewirkt. Der Server lieferte beim nächsten
// Laden längst das Richtige; nur sah man das nie, weil die Reihe
// nicht neu geladen wurde.
if (k.reihe && !istGesehen) {
knopf.remove();
return;
}
@@ -335,6 +342,8 @@ function kachelpunkte(
text: 'Aus Fortsetzen entfernen',
tun: async () => {
await weglegen(k.standId ?? k.id);
// In der Reihe selbst heisst „entfernen" genau das.
if (k.reihe === 'fortsetzen') { knopf.remove(); return; }
if (k.stand) k.stand.dismissed = true;
knopf.querySelector('.fortschritt')?.remove();
},