Filipe, zum vierten Mal: "muss ich jedes mal wenn ich von einer seite
zurück scrolle immer wieder runter scrollen um weiter zu schauen und
das nervt."
DIE WIEDERHERSTELLUNG GAB ES SEIT DEM 20.09. -- sorgfaeltig gebaut,
mit Warten auf die nachgeladene Hoehe, mit Aufgeben nach drei
Sekunden, mit "wer selbst scrollt, gewinnt".
SIE LIEF NUR FAST NIE. Denn sie lief ausschliesslich bei
`navigation.type === "back_forward"`, also beim Zurueck-Knopf des
Browsers. Im Haus geht man anders zurueck: ueber die Kopfzeile ("TEAM
DOGI › HIGHLIGHTS"), und dort steht ein ganz gewoehnliches
`<a href="start.html">`. Fuer den Browser ist das eine Fahrt
VORWAERTS. Die Bedingung war also falsch -- und der else-Zweig
loeschte die eben gemerkte Stelle noch dazu.
IM KOPF DERSELBEN DATEI STAND DIE LOESUNG ALS ABSICHT: "Ein eigener
Merker faengt den Fall ab, dass der Zurueck-Knopf der Kopfleiste
benutzt wurde." Gebaut wurde er nie.
UND DESHALB HAT ES IN JEDEM TEST FUNKTIONIERT: Wer mit `goBack()`
prueft, prueft den einen Weg, den niemand geht. Gemessen am 21.09.:
ueber goBack sauber wiederhergestellt, ueber den Link in der
Kopfzeile oben gelandet. Gefunden hat es Filipes Bildschirmvideo --
17 Sekunden, drei Bilder, und der Ablauf war eindeutig.
Der Merker gibt es jetzt wirklich: Beim Klick auf einen EIGENEN
Zurueck-Weg (`.zurueck`, `.zurueck-knopf`) wird das Ziel notiert; wer
dort binnen 30 Sekunden ankommt, bekommt seine Stelle zurueck. Er
gilt fuer genau eine Ankunft -- wer die Seite eine Minute spaeter
normal oeffnet, faengt wieder oben an. Und NUR fuer diese zwei
Klassen, nicht fuer jeden Link: Sonst landete man beim Oeffnen eines
Brettes mitten darin.
Dazu der Rueckwaerts-Speicher des Browsers: Holt er eine Seite aus dem
Speicher, laeuft keine Zeile mehr, und unser `manual` verbietet ihm
gleichzeitig, die Stelle selbst wiederherzustellen. Ein `pageshow`
faengt das ab. Dieser Fall ist NICHT gemessen -- in Playwright greift
der Speicher nicht -- sondern aus der Spezifikation begruendet. Das
steht auch so im Kommentar, damit niemand spaeter glaubt, er sei
nachgewiesen.
NEU: pruef-stelle.mjs, 9 Pruefungen. Sie geht beide Wege zurueck --
Kopfzeile UND Browser -- und haelt ausdruecklich fest, dass der erste
KEIN "back_forward" ist. Dazu die Gegenprobe, dass eine frisch
geoeffnete Seite oben anfaengt: Ohne sie waere alles auch dann gruen,
wenn die Seite IMMER zur alten Stelle springt, und das waere
schlimmer als das Problem.
Co-Authored-By: Claude Opus 5 <[email protected]>
163 lines
7.3 KiB
HTML
163 lines
7.3 KiB
HTML
<!doctype html>
|
||
<html lang="de">
|
||
<head>
|
||
<meta charset="utf-8" />
|
||
<meta name="viewport" content="width=device-width, initial-scale=1, viewport-fit=cover" />
|
||
<title>Dashboard · Spicy & Dogi</title>
|
||
<meta name="robots" content="noindex, nofollow" />
|
||
<link rel="manifest" href="/workspace/app.webmanifest" />
|
||
<!-- Die Farbe der Fensterleiste, wenn der Workspace als App laeuft.
|
||
Stand auf #0674b9 (kraeftiges Blau) und stach damit als einziger
|
||
heller Balken ueber einer durchweg dunklen Seite. Jetzt derselbe
|
||
Ton wie die Kopfleiste darunter (#06090f), damit Leiste und Seite
|
||
eine Flaeche sind statt zweier. -->
|
||
<meta name="theme-color" content="#06090f" />
|
||
<link rel="icon" type="image/png" href="/assets/img/app-symbole/workspace-32.png?v=202609211424" />
|
||
<link rel="apple-touch-icon" href="/assets/img/app-symbole/workspace-180.png?v=202609211424" />
|
||
<link rel="stylesheet" href="assets/css/gate.css?v=202609211424" />
|
||
<link rel="stylesheet" href="assets/css/start.css?v=202609211424" />
|
||
<!-- Formular- und Dialogstile: seit dem 07.09.2026 steht hier der
|
||
Dialog "Creator anlegen". -->
|
||
<link rel="stylesheet" href="assets/css/aufgaben.css?v=202609211424" />
|
||
<link rel="stylesheet" href="assets/css/uebersicht.css?v=202609211424" />
|
||
<link rel="stylesheet" href="assets/css/module.css?v=202609211424" />
|
||
<!-- haus.css MUSS die letzte Stilvorlage sein (10.09.2026).
|
||
Auf der Agenturadresse ist sie leer -- das Haus hier IST der
|
||
Grundzustand. Auf der Adresse von Team Dogi biegt der Server
|
||
genau diesen Dateinamen auf crew-haus.css um, und die Seite
|
||
kommt schon beim ERSTEN Abruf in Lila und Babyblau an --
|
||
ohne Umfaerben im Browser, ohne Flackern. -->
|
||
<link rel="stylesheet" href="assets/css/haus.css?v=202609211424" />
|
||
</head>
|
||
|
||
<body class="start">
|
||
|
||
<!-- Der Schleier ueber der Buehne (Casper und HasiDog in den unteren
|
||
Ecken, siehe start.css). Ein eigenes Element statt eines dritten
|
||
Pseudo-Elements -- body hat nur ::before und ::after. -->
|
||
<div class="schleier" aria-hidden="true"></div>
|
||
|
||
<header class="kopfleiste">
|
||
<button type="button" class="zurueck-knopf" id="zurueck" hidden>
|
||
<svg class="zurueck-knopf__pfeil" viewBox="0 0 24 24" aria-hidden="true">
|
||
<path d="M14.5 5.5 8 12l6.5 6.5" />
|
||
</svg>
|
||
<span class="zurueck-knopf__text">Zurück</span>
|
||
</button>
|
||
<p class="marke"><span class="marke__text"><a class="zurueck" href="start.html">Creator Workspace</a> · Dashboard</span></p>
|
||
<div class="kopfleiste__rechts">
|
||
<span class="wer" id="wer">…</span>
|
||
<button type="button" class="abmelden" id="abmelden">Abmelden</button>
|
||
</div>
|
||
</header>
|
||
|
||
<main class="inhalt inhalt--breit">
|
||
|
||
<section class="kopf-zeile">
|
||
<div>
|
||
<p class="marke">Alles zentral</p>
|
||
<h1 class="titel" id="titel">Dashboard</h1>
|
||
<p class="unterzeile" id="unterzeile">
|
||
Eine Karte je Creator – mit einem Blick sehen, wo es hakt und wo es läuft.
|
||
</p>
|
||
</div>
|
||
<!-- Der Knopf steht HIER und nicht in der Personenverwaltung
|
||
(07.09.2026). Ein Manager kommt dort gar nicht hinein, und er
|
||
soll es auch nicht -- dahinter liegen Rollen, Codes, Sperren und
|
||
das Protokoll. Hier dagegen sieht er ohnehin seine Creator; der
|
||
neue erscheint eine Zeile weiter unten. Das Skript blendet den
|
||
Knopf für Scouts und Creator aus, der Server lässt sie ohnehin
|
||
nicht durch. -->
|
||
<button type="button" class="knopf knopf--klein" id="creator-neu" hidden>Creator anlegen</button>
|
||
</section>
|
||
|
||
<p class="fehler" id="fehler" role="alert" aria-live="polite"></p>
|
||
|
||
<!-- Creator anlegen. Derselbe Dialog-Aufbau wie überall sonst. -->
|
||
<dialog class="dialog" id="creator-dialog">
|
||
<form method="dialog" class="neu neu--blank" id="creator-form">
|
||
<h2 class="dialog__titel">Creator anlegen</h2>
|
||
<p class="dialog__unter">
|
||
Der Zugangscode erscheint genau einmal – danach ist er weg und
|
||
kann nur neu gesetzt werden.
|
||
</p>
|
||
|
||
<div class="neu__zeile">
|
||
<label class="feld-schild" for="cn-name">Name</label>
|
||
<input id="cn-name" maxlength="60" required autocomplete="off" />
|
||
</div>
|
||
|
||
<div class="neu__zeile" id="cn-scout-zeile" hidden>
|
||
<label class="feld-schild" for="cn-scout">Betreuung</label>
|
||
<select id="cn-scout"></select>
|
||
<p class="feld-hinweis">
|
||
Ohne Auswahl betreust du ihn selbst. Zur Auswahl stehen nur
|
||
deine eigenen Scouts.
|
||
</p>
|
||
</div>
|
||
|
||
<!-- Der Code. Steht erst nach dem Anlegen da und wird nie
|
||
nachgeladen -- die Seite ist die einzige Stelle, an der er je
|
||
zu sehen ist. -->
|
||
<div class="neu__zeile" id="cn-code-zeile" hidden>
|
||
<p class="feld-schild">Zugangscode für <span id="cn-code-name"></span></p>
|
||
<p class="code-anzeige" id="cn-code"></p>
|
||
<p class="feld-hinweis">
|
||
Jetzt weitergeben. Nach dem Schließen ist er nicht mehr abrufbar.
|
||
</p>
|
||
</div>
|
||
|
||
<p class="fehler" id="cn-fehler" role="alert" aria-live="polite"></p>
|
||
|
||
<div class="dialog__knoepfe">
|
||
<button type="submit" class="knopf knopf--klein" id="cn-speichern">Anlegen</button>
|
||
<button type="button" class="abmelden" id="cn-zu">Schließen</button>
|
||
</div>
|
||
</form>
|
||
</dialog>
|
||
|
||
<!-- FRÜHWARNUNG (06.09.2026).
|
||
|
||
Steht GANZ OBEN, noch vor den Summen. Die Summen beantworten "wie
|
||
steht es insgesamt", die Karten "wie steht es bei jedem" – aber
|
||
die Frage, mit der ein Betreuer morgens ankommt, ist eine dritte:
|
||
"wo muss ich HEUTE hin?" Sie stand bis jetzt nirgends.
|
||
|
||
Bewusst OHNE Punktzahl. Ein Wert wie "Abwanderungsrisiko 73"
|
||
klingt nach Wissenschaft und ist eine Behauptung: Man kann ihn
|
||
nicht prüfen, nicht widersprechen und nicht erklären. Hier stehen
|
||
stattdessen die einzelnen Beobachtungen im Klartext, jede mit
|
||
ihrem Beleg – dann entscheidet ein Mensch.
|
||
|
||
Ein Creator sieht diesen Block nie (der Server liefert ihm gar
|
||
keine Daten). Zu lesen, dass ein System einen für gefährdet hält,
|
||
ist keine Mitteilung an die betroffene Person. -->
|
||
<section class="warnblock" id="fruehwarnung" hidden aria-labelledby="warn-titel">
|
||
<div class="klapp-kopf">
|
||
<h2 class="feldschild" id="warn-titel">Wo ich diese Woche nachfassen würde</h2>
|
||
</div>
|
||
<div class="warnliste" id="warnliste"></div>
|
||
</section>
|
||
|
||
<!-- Summen über alle sichtbaren Creator. Steht oben, weil die Frage
|
||
"wie steht es insgesamt" vor der Frage "bei wem" kommt. -->
|
||
<section class="summen" id="summen" hidden></section>
|
||
|
||
<div id="liste" aria-busy="true"><p class="leise">Übersicht wird geladen …</p></div>
|
||
|
||
<p class="stand" id="stand" hidden></p>
|
||
|
||
</main>
|
||
|
||
<script src="assets/js/meldung.js?v=202609211424" defer></script>
|
||
<script src="assets/js/nachfrage.js?v=202609211424" defer></script>
|
||
|
||
|
||
<script src="assets/js/bereiche.js?v=202609211424" defer></script>
|
||
|
||
<script src="assets/js/wahl.js?v=202609211424" defer></script>
|
||
<script src="assets/js/kopf.js?v=202609211424" defer></script>
|
||
<script src="assets/js/glocke.js?v=202609211424" defer></script>
|
||
<script src="assets/js/uebersicht.js?v=202609211424" defer></script>
|
||
</body>
|
||
</html>
|