Wunsch Filipe: "die hintergrund bilder sollen alle so strahlen und
schoen sein wie dieses. dieses ist wirklich mega und perfekt."
(Massstab ist die Scouting-Seite, Szene "wald".)
DER FUND: `chat.html` hat weder `.kopf-zeile` noch `.k-kopf` -- sie
traegt ihren Titel im eigenen `.chat__kopf`. In kopf.js stand ganz
oben:
const kopf = document.querySelector('.kopf-zeile, .k-kopf');
if (!B || !kopf) return;
Damit hing ALLES an der Frage, ob es eine Kopfzeile gibt, an die man
eine Plakette haengen kann -- auch der Farbton der Seite und ihr
Hintergrundbild, die damit nichts zu tun haben. Der Chat ist an dieser
Zeile ausgestiegen und hat WEDER Ton NOCH Buehne bekommen, obwohl in
bereiche.js seit jeher `szene: 'lounge'` fuer ihn steht. Eine
Zuordnung, die es gibt und die nie ankam.
Jetzt stehen Ton und Buehne VOR der Plakette: Sie brauchen nur den
Bereich. Die Plakette braucht zusaetzlich einen Kopf -- gibt es den
nicht, faellt eben nur sie aus.
WARUM DAS KEINE PRUEFUNG GEFUNDEN HAT, gleich zweimal:
1. `chat.html` stand nicht in der Seitenliste von
pruef-workspace-seiten. Eine Pruefung, die eine Seite nicht kennt,
kann auf ihr nichts finden. Jetzt drin, zusammen mit
leistung.html -- 18 Seiten statt 16.
2. Die Buehnenregel lautete `r.buehne ? r.buehneBild === r.buehne :
!!r.buehneBild` -- fehlt das Merkmal, reichte IRGENDEIN Bild.
Gedacht war die Ausnahme fuer die Startseite, geschrieben war sie
fuer jede Seite. Der Chat verlor sein `data-buehne`, fiel auf die
Grundszene zurueck, und die Pruefung sagte "ein Motiv ist da,
alles gut". Eine Bedingung, die bei fehlender Angabe MILDER wird
statt strenger, kann den Verlust dieser Angabe nicht melden --
sie belohnt ihn. Die Ausnahme haengt jetzt an der Startseite, nicht
am Fehlen des Merkmals.
Die Regel ist dafuer aus der Schleife herausgeloest (`buehneRichtig`)
und hat sieben Gegenproben bekommen -- darunter genau den Chat-Fall.
Ohne sie waere "alles in Ordnung" nur die Aussage, dass die Regel
nichts gemeldet hat, nicht dass sie etwas melden koennte.
DIE AUSNAHME DES CHATS STEHT JETZT MIT NAMEN in der Pruefung, statt
dass die Seite aus der Liste faellt: Plakette und Wasserzeichen
entfallen dort, weil es den Ort dafuer nicht gibt -- Ton und Buehne
gelten. Ob der Chat eine Plakette bekommen soll, ist eine
Gestaltungsfrage fuer Filipe, keine Fehlerfrage.
ZWEI FALSCHE AUSSAGEN in tools/gate-bauen.mjs richtiggestellt:
"halle: dieselbe Sammlung, GESPIEGELT" -- nachgemessen haben beide
Dateien dieselbe Pruefsumme, es gibt in diesem Werkzeug keine
Spiegelung. Und "0,42 ist gemessen" ueber `const DUNKEL = 0.26`; der
Wert wurde gesenkt, die Zeile ist nicht mitgegangen. Ein Kommentar, der
mehr behauptet als der Code tut, ist schlimmer als keiner.
ZUM EIGENTLICHEN WUNSCH, ehrlich: Ich habe die Hintergrundhelligkeit
aller 18 Seiten nachgemessen. Die Scouting-Seite ist tatsaechlich die
hellste (0,0263), alle anderen liegen 19 bis 65 Prozent darunter --
aber der Grund ist NICHT die Bildbehandlung. Schleier und Abdunklung
sind fuer alle Seiten gleich und mehrfach nachgemessen. Der Unterschied
ist, WIE VIEL vom Bild noch zu sehen ist: Die Scouting-Seite traegt
eine schmale Karte, die anderen dichte Tabellen und Kachelraster. Das
liesse sich aendern, aber es ist eine Entscheidung ueber die
Inhaltsdichte von 17 Seiten -- die gehoert Filipe, nicht mir um zwei
Uhr nachts.
(Meine erste Messung sagte das Gegenteil. Sie nahm einen Streifen bei
x 0..150 -- ausgerechnet die dunkelste Spalte jedes Motivs. Danach
schien die Scouting-Seite fast schwarz, waehrend das Bildschirmfoto
derselben Seite hell und farbig ist. Ein Messfeld, das nicht
repraesentativ ist, misst zuverlaessig das Falsche.)
Geprueft: pruef-workspace-seiten (18 Seiten, alles in Ordnung),
pruef-buehne, pruef-css-klassen -- alle in Ordnung.
Co-Authored-By: Claude Opus 5 <[email protected]>
163 lines
7.4 KiB
HTML
163 lines
7.4 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>Bereich · 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" />
|
||
<link rel="apple-touch-icon" href="/assets/img/app-symbole/workspace-180.png" />
|
||
<link rel="stylesheet" href="assets/css/gate.css?v=202609090014" />
|
||
<link rel="stylesheet" href="assets/css/start.css?v=202609090014" />
|
||
<link rel="stylesheet" href="assets/css/aufgaben.css?v=202609090014" />
|
||
<link rel="stylesheet" href="assets/css/bereich.css?v=202609090014" />
|
||
<link rel="stylesheet" href="assets/css/module.css?v=202609090014" />
|
||
</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>
|
||
<!-- Der innere span.marke__text fehlte hier als einziger Seite. Damit
|
||
griffen weder die Überlauf-Kürzung noch der Rang im Schriftzug --
|
||
aufgefallen erst, als die Seitenprüfung die Marke auf allen
|
||
dreizehn Seiten nachgesehen hat. -->
|
||
<p class="marke"><span class="marke__text"><a class="zurueck" href="start.html">Creator Workspace</a> ·
|
||
<span id="marke-bereich">…</span></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" id="ober">Betreuung</p>
|
||
<h1 class="titel" id="titel">…</h1>
|
||
<p class="unterzeile" id="unterzeile"></p>
|
||
</div>
|
||
<button type="button" class="knopf knopf--klein" id="neu-oeffnen">Neuer Eintrag</button>
|
||
</section>
|
||
|
||
<form class="neu" id="neu" hidden>
|
||
<div class="neu__raster">
|
||
<div>
|
||
<label class="feld-schild" for="f-art">Art</label>
|
||
<select id="f-art"></select>
|
||
</div>
|
||
<div>
|
||
<label class="feld-schild" for="f-datum" id="schild-datum">Datum</label>
|
||
<input id="f-datum" type="date" />
|
||
</div>
|
||
<!-- Nur bei Agentur-Events: das Ende des Zeitraums. Der Beginn ist
|
||
das Feld darueber -- ein zweites Datumsfeld daneben liest sich
|
||
als Spanne, ein Feld "Zeitraum" mit Text darin nicht. -->
|
||
<div id="feld-ende" hidden>
|
||
<label class="feld-schild" for="f-ende">Bis</label>
|
||
<input id="f-ende" type="date" />
|
||
</div>
|
||
<div id="feld-dringlich" hidden>
|
||
<label class="feld-schild" for="f-dringlich">Dringlichkeit</label>
|
||
<select id="f-dringlich">
|
||
<option value="hoch">hoch</option>
|
||
<option value="mittel" selected>mittel</option>
|
||
<option value="niedrig">niedrig</option>
|
||
</select>
|
||
</div>
|
||
<div id="feld-bewertung" hidden>
|
||
<label class="feld-schild" for="f-bewertung">Bewertung (1–5)</label>
|
||
<select id="f-bewertung">
|
||
<option value="">—</option>
|
||
<option value="1">1 – schwach</option>
|
||
<option value="2">2</option>
|
||
<option value="3">3 – solide</option>
|
||
<option value="4">4</option>
|
||
<option value="5">5 – stark</option>
|
||
</select>
|
||
</div>
|
||
<div id="feld-creator" hidden>
|
||
<label class="feld-schild" for="f-creator" id="schild-creator">Creator</label>
|
||
<select id="f-creator"><option value="">—</option></select>
|
||
<p class="feld-hinweis" id="hinweis-creator" hidden></p>
|
||
</div>
|
||
</div>
|
||
<div class="neu__zeile">
|
||
<label class="feld-schild" for="f-titel" id="schild-titel">Überschrift</label>
|
||
<input id="f-titel" maxlength="160" required />
|
||
</div>
|
||
<div class="neu__zeile">
|
||
<label class="feld-schild" for="f-text" id="schild-text">Text <span class="leise">(optional)</span></label>
|
||
<textarea id="f-text" rows="4" maxlength="6000"></textarea>
|
||
</div>
|
||
<!-- ==== Nur bei Agentur-Events ====================================
|
||
Zwei Felder, die den Unterschied zwischen einem Aufruf und einer
|
||
Aktion ausmachen, an der jemand teilnehmen kann: WAS ist zu tun
|
||
(und was springt dabei heraus) und WAS GILT dabei. Beides stand
|
||
bisher irgendwo im Fliesstext oder gar nicht -- und jede
|
||
Rueckfrage dazu kostet eine Nachricht. -->
|
||
<div class="neu__zeile" id="feld-aufgaben" hidden>
|
||
<label class="feld-schild" for="f-aufgaben">Aufgaben
|
||
<span class="leise">– womit sammelt man Punkte, was gibt es zu gewinnen</span></label>
|
||
<textarea id="f-aufgaben" rows="5" maxlength="6000"
|
||
placeholder="z. B. · 1 Punkt je Live-Stunde · 3 Punkte je neuem Abo · Platz 1 gewinnt …"></textarea>
|
||
</div>
|
||
<div class="neu__zeile" id="feld-regeln" hidden>
|
||
<label class="feld-schild" for="f-regeln">Regeln
|
||
<span class="leise">– was zählt, was nicht, bis wann</span></label>
|
||
<textarea id="f-regeln" rows="5" maxlength="6000"
|
||
placeholder="z. B. · Nur Streams auf dem eigenen Konto · Punkte zählen bis 23:59 am letzten Tag"></textarea>
|
||
</div>
|
||
<p class="fehler" id="neu-fehler" role="alert" aria-live="polite"></p>
|
||
<div class="neu__knoepfe">
|
||
<button type="submit" class="knopf knopf--klein" id="neu-speichern">Eintragen</button>
|
||
<button type="button" class="abmelden" id="neu-abbrechen">Abbrechen</button>
|
||
</div>
|
||
</form>
|
||
|
||
<p class="fehler" id="fehler" role="alert" aria-live="polite"></p>
|
||
|
||
<div class="filter" id="filter"></div>
|
||
|
||
<!-- Fertige Punkte zum Uebernehmen -- nur in Bereichen, fuer die es
|
||
welche gibt (derzeit LIVE-Analyse). -->
|
||
<!-- Unterweisungen mit beidseitiger Bestaetigung. Nur im Bereich
|
||
"Schutz & Regeln" -- dort gehoeren Richtlinien hin. -->
|
||
<div id="schulung" hidden></div>
|
||
|
||
<div id="vorlagen" hidden></div>
|
||
|
||
<div id="liste" aria-busy="true"><p class="leise">Einträge werden geladen …</p></div>
|
||
|
||
</main>
|
||
|
||
<script src="assets/js/wahl.js?v=202609090014" defer></script>
|
||
<script src="assets/js/bereiche.js?v=202609090014" defer></script>
|
||
<script src="assets/js/kopf.js?v=202609090014" defer></script>
|
||
<script src="assets/js/glocke.js?v=202609090014" defer></script>
|
||
<script src="assets/js/checkliste.js?v=202609090014" defer></script>
|
||
<script src="assets/js/ampel.js?v=202609090014" defer></script>
|
||
<script src="assets/js/schulung.js?v=202609090014" defer></script>
|
||
<script src="assets/js/vorlagen.js?v=202609090014" defer></script>
|
||
<script src="assets/js/bereich.js?v=202609090014" defer></script>
|
||
</body>
|
||
</html>
|