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
+32 -2
View File
@@ -1,6 +1,6 @@
import {
inhalt, weiterschauen, naechsteFolgen, empfehlungen, saisonal,
type Bibliothek,
type Bibliothek, type Angefangen,
} from '../api';
import { leer, fehlerzeile, meldung } from '../util';
import { kachel, alsKachel, angefangenAlsKachel, reihe } from '../card';
@@ -77,6 +77,21 @@ export function startseite(
});
vorschlag.items.forEach(e => dazu(alsHero(e, 'filme')));
/** Was ein Tipp in „Fortsetzen" tut. */
function fortsetzenStarten(e: Angefangen): void {
// Ohne Datei gibt es nichts zu starten — dann führt der Tipp
// dorthin, wo man wählen kann. Dieselbe Regel wie im Aufmacher.
if (!e.fileId) { oeffnen(e.seriesId ? 'serien' : 'filme', e.seriesId ?? e.id); return; }
spieler({
dateiId: e.fileId,
titelId: e.id,
name: e.subTitle ?? e.title,
ab: e.state.positionSeconds,
laenge: e.durationSeconds ?? null,
danach: () => void aufbauen(),
});
}
const aufmacher = hero(heroTitel,
(art, id) => oeffnen(art, id),
e => {
@@ -95,9 +110,24 @@ export function startseite(
signal);
if (aufmacher) wurzel.appendChild(aufmacher);
// **Ein getauschtes Bild gehört sofort in den Aufmacher.**
//
// Wer auf dieser Seite das Plakat oder den Hintergrund eines Titels
// wechselt, sieht ihn gleich darüber in voller Breite — und dort stand
// bis zum nächsten Neuladen das alte. Die Kachel frischt sich selbst
// auf; der Aufmacher hat davon nichts erfahren, weil er ganz woanders
// steht. Siehe `bildgeaendertMelden`.
document.addEventListener('flaro:bildgeaendert', () => void aufbauen(), { signal });
if (weiter.items.length) {
// **Hier startet ein Tipp.** In „Fortsetzen" steht ein Titel, *weil*
// man ihn angefangen hat, und die Stelle steht daneben — den Umweg
// über die Detailseite zu nehmen hiesse, eine Frage zu stellen, die
// schon beantwortet ist.
wurzel.appendChild(reihe('Fortsetzen',
weiter.items.map(e => kachel(angefangenAlsKachel(e), oeffnen))));
weiter.items.map(e => kachel(
{ ...angefangenAlsKachel(e, 'fortsetzen'), starten: () => fortsetzenStarten(e) },
oeffnen))));
}
if (naechste.items.length) {
wurzel.appendChild(reihe('Nächste Folge',