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:
co-authored by
Claude Opus 5
parent
adca700c4a
commit
2c535e6f47
@@ -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',
|
||||
|
||||
Reference in New Issue
Block a user