From b1319e3124e7286984912e58bf18d9ed7e66155b Mon Sep 17 00:00:00 2001 From: Dogfather Date: Wed, 23 Sep 2026 16:25:06 +0200 Subject: [PATCH] Aufgabenbrett: eine Karte ist ein Stueck Arbeit, keine Tabellenzeile Filipe: "so wie alles gerade ist ist es zu wenig und zu viel zu gleich". Die Zahl dahinter, an der echten Datenbank gemessen: 115 offene Aufgaben -- aber nur 17 verschiedene. Jede stand acht Mal da. URSACHE, nicht Symptom: Am 22.09.2026 wurde dieselbe Vorlage zweimal verteilt, nachgemessen zwischen 16:05:24 und 16:05:53. Zweimal gedrueckt, weil beim ersten Mal scheinbar nichts passierte. 56 der 115 Karten sind exakte Doppelte. WAS SICH AENDERT Aufgaben mit gleichem Titel, gleicher Frist und gleicher Kategorie stehen jetzt als EINE Karte da: "0 von 8", ein Balken, und die Leute als Pillen in ihrer Statusfarbe. Wer sie doppelt hat, traegt x2. Der Hinweis auf die Doppelten steht EINMAL ueber dem Brett, mit Zahl -- nicht siebzehnmal an den Karten. Eine Warnung, die auf jeder Karte steht, ist Tapete (Lehre vom 03.09.2026). Die Spalten wachsen nach dem, was sie tragen: "Offen" mit 17 Karten bekam vorher genauso viel Platz wie "Erledigt" mit einer -- beide 369 px, gemessen. Innerhalb der Spalte legen sich die Karten nebeneinander, sobald Platz da ist (auto-fill, keine feste Spaltenzahl). Das Vorlagenbrett steht oben, solange das Brett leer ist, und wandert darunter, sobald etwas daliegt. Die urspruengliche Begruendung ("wer ein leeres Brett hat, soll nicht daran vorbeiscrollen") gilt nur fuer den leeren Fall. Am Handy wird aus "Wer hat gerade was" eine wischbare Reihe statt gestapelter Pillen, mit Randschattierung als Hinweis, dass es weitergeht. GEMESSEN (echte Datenlage: 17 Vorlagen, vier Leute, doppelt verteilt) Computer 46 077 px -> 2 445 px (18,8-fach kuerzer) Handy 44 216 px -> 5 763 px ( 7,7-fach kuerzer) Brett beginnt am Handy bei 798 statt 901 px -- die erste Aufgabe ist damit ohne Scrollen sichtbar. DREI BEFUNDE NEBENBEI, ALLE VON MIR 1. team.css: Der Schreiben-Knopf auf der Team-Lage stand bei 42 px. Am 22.09. habe ich beim Kartenumbau das Polster von 10 auf 9 px gesenkt und ihn damit unter die Hausregel gedrueckt. Jetzt min-height statt Polsterrechnung -- die Hoehe haengt nicht mehr daran, ob jemand spaeter an der Schriftgroesse dreht. 2. chat.css: Die Knoepfe der Aufnahmeleiste standen bei 40 px, der Weg-Knopf der GIF-Kiste bei 28. Beide in der Nacht zum 23.09. gebaut. Die Leiste bekommt volle 44 px; der GIF-Knopf bleibt klein sichtbar und waechst nur in der TREFFERFLAECHE (28 + 2x8 = 44), und das nur am Finger -- mit der Maus zielt man genau, eine unsichtbar vergroesserte Flaeche waere dort eine Falle. 3. pruef-chat-anhaenge meldete "aus der Kiste genommen (1 uebrig)". Kein Codefehler: Die Pruefung setzte `window.confirm = () => true`, und heute frueh ist dort der Hausdialog an die Stelle getreten. Sie klickte, die Seite fragte, niemand antwortete. Genau der Fall, vor dem der Kopf von helfer-nachfrage.mjs seit dem 19.09. warnt -- zum zweiten Mal, an einer neuen Stelle. Jetzt ueber `bestaetige`, und damit prueft die Zeile ab sofort mit, DASS gefragt wird. PRUEFUNGEN pruef-modi-katalog zaehlte Karten und erwartete +1. Seit der Gruppierung ist das die alte Anordnung, nicht die Sache: Sie zaehlt jetzt AUFGABEN ueber data-id/data-ids und meldet "2 -> 3 Aufgaben in 2 Karten" -- damit ist beides belegt, das Anlegen und das Zusammenfassen. Alles gruen: aufgabenbrett 49, zuteilung 75, bewerbung-aufgaben 101, modi-katalog 125, chat-anhaenge 109, chat-optik 56, tippziele 11, teamlage-karten 39, sprung 43, textform 50, formulare 23, css-klassen 33, zeichen 7, ueberlappung (20 Paare). Handy-Rundgang: 220 Seitenaufrufe, 112 776 Elemente, 0 Befunde. Co-Authored-By: Claude Opus 5 --- server/pruef-chat-anhaenge.mjs | 17 +- server/pruef-modi-katalog.mjs | 22 +- workspace/anruf-probe.html | 10 +- workspace/app.webmanifest | 8 +- workspace/assets/css/aufgaben.css | 319 +++++++++++++++++++++++- workspace/assets/css/chat.css | 23 ++ workspace/assets/css/team.css | 15 +- workspace/assets/js/aufgaben.js | 386 ++++++++++++++++++++++++++++-- workspace/assets/js/zuteilung.js | 7 +- workspace/aufgaben.html | 64 +++-- workspace/automation.html | 32 +-- workspace/befinden.html | 32 +-- workspace/bereich.html | 44 ++-- workspace/bewerben.html | 36 +-- workspace/bewerbungen.html | 34 +-- workspace/calls.html | 34 +-- workspace/chat.html | 38 +-- workspace/content.html | 34 +-- workspace/crew-index.html | 12 +- workspace/crew.webmanifest | 8 +- workspace/dateien.html | 34 +-- workspace/entwicklung.html | 32 +-- workspace/hilfe.html | 28 +-- workspace/index.html | 10 +- workspace/kalender.html | 34 +-- workspace/leistung.html | 32 +-- workspace/material.html | 32 +-- workspace/personen.html | 32 +-- workspace/profil.html | 36 +-- workspace/rechte.html | 32 +-- workspace/report.html | 36 +-- workspace/scouting.html | 32 +-- workspace/start.html | 32 +-- workspace/startcheck.html | 34 +-- workspace/steckbrief.html | 36 +-- workspace/talente.html | 34 +-- workspace/team.html | 32 +-- workspace/teamlage.html | 32 +-- workspace/teilen.html | 28 +-- workspace/treff-moderation.html | 30 +-- workspace/treff-regeln.html | 30 +-- workspace/uebersicht.html | 32 +-- workspace/unsere-seiten.html | 28 +-- workspace/werdegang.html | 30 +-- workspace/willkommen.html | 30 +-- workspace/wissen.html | 34 +-- 46 files changed, 1363 insertions(+), 624 deletions(-) diff --git a/server/pruef-chat-anhaenge.mjs b/server/pruef-chat-anhaenge.mjs index c52bdee7..ca5beb7f 100644 --- a/server/pruef-chat-anhaenge.mjs +++ b/server/pruef-chat-anhaenge.mjs @@ -935,10 +935,23 @@ const GIF_B64 = "R0lGODlhAQABAIAAAAAAAP///yH5BAEAAAAALAAAAAABAAEAAAIBRAA7"; " sie liegt bei den Anhängen"); /* ---- Aus der Kiste nehmen: das Verschickte bleibt ---------------- */ - await dogi.seite.evaluate(() => { window.confirm = () => true; }); + /* DIE RUECKFRAGE WIRD BEANTWORTET, NICHT UMGANGEN. + + Hier stand `window.confirm = () => true` -- und das war richtig, + solange die Kiste einen nativen confirm() benutzte. Am 23.09.2026 + ist er durch den Hausdialog ersetzt worden; seither klickte die + Pruefung den Knopf, die Seite fragte, und niemand antwortete. + Ergebnis: zwei rote Zeilen an einer Stelle, an der nichts kaputt + war -- genau der Fall, vor dem der Kopf von helfer-nachfrage.mjs + seit dem 19.09.2026 warnt. Zum zweiten Mal, an einer neuen Stelle. + + `bestaetige` kennt beide Wege und beantwortet den, der wirklich + kommt. Damit prueft diese Zeile ab jetzt auch mit, DASS ueberhaupt + gefragt wird: Verschwindet die Rueckfrage eines Tages, laeuft der + Helfer in seine Frist und die Zeile wird rot. */ await dogi.seite.click("#gif-auf"); await dogi.seite.waitForTimeout(600); - await dogi.seite.click(".gif-kachel__weg"); + await bestaetige(dogi.seite, () => dogi.seite.click(".gif-kachel__weg")); await dogi.seite.waitForTimeout(1500); const restKacheln = await dogi.seite.locator(".gif-kachel").count(); ok(restKacheln === 0, `aus der Kiste genommen (${restKacheln} übrig)`); diff --git a/server/pruef-modi-katalog.mjs b/server/pruef-modi-katalog.mjs index 5c546526..a8537794 100644 --- a/server/pruef-modi-katalog.mjs +++ b/server/pruef-modi-katalog.mjs @@ -761,19 +761,35 @@ console.log(""); .map((z) => z.textContent.trim()).find((t) => t.includes("gehen an")) || ""); ok(nachWahl.includes("Marina"), "nach dem Klick steht es da: " + nachWahl); - const vorher = await seite.evaluate(() => document.querySelectorAll(".karte").length); + /* GEZAEHLT WERDEN AUFGABEN, NICHT KARTEN. + Seit dem 23.09.2026 fasst das Brett gleiche Aufgaben zu EINER + Karte zusammen ("0 von 8"). Eine neue Aufgabe erhoeht die + Kartenzahl also nur dann, wenn es noch keine gleichnamige gibt -- + sonst wandert sie in eine bestehende Karte hinein. Genau das + war die Absicht des Umbaus; eine Pruefung, die trotzdem Karten + zaehlt, misst ab da die alte Anordnung und nicht die Sache. + Jede Karte weist ihre Aufgaben aus: data-id (eine) oder + data-ids (mehrere). */ + const zaehleAufgaben = () => [...document.querySelectorAll(".karte")] + .reduce((n, k) => n + (k.dataset.ids || k.dataset.id || "") + .split(",").filter(Boolean).length, 0); + const vorher = await seite.evaluate(zaehleAufgaben); await seite.evaluate(() => { [...document.querySelectorAll(".vorlagenbrett__karte")][0] ?.querySelector("button")?.click(); }); await seite.waitForTimeout(1800); const danach = await seite.evaluate(() => ({ + aufgaben: [...document.querySelectorAll(".karte")] + .reduce((n, k) => n + (k.dataset.ids || k.dataset.id || "") + .split(",").filter(Boolean).length, 0), karten: document.querySelectorAll(".karte").length, fuerMarina: [...document.querySelectorAll(".karte")] .filter((k) => k.textContent.includes("Marina")).length, })); - ok(danach.karten === vorher + 1, - "die Aufgabe liegt auf dem Brett (" + vorher + " -> " + danach.karten + ")"); + ok(danach.aufgaben === vorher + 1, + "die Aufgabe liegt auf dem Brett (" + vorher + " -> " + danach.aufgaben + + " Aufgaben in " + danach.karten + " Karten)"); ok(danach.fuerMarina > 0, "und zwar bei Marina (" + danach.fuerMarina + ")"); /* ==== DIE BEWERBUNG AM BILDSCHIRM ENTSCHEIDEN (23.09.2026) ====== diff --git a/workspace/anruf-probe.html b/workspace/anruf-probe.html index 9e6fa05d..3e309773 100644 --- a/workspace/anruf-probe.html +++ b/workspace/anruf-probe.html @@ -16,15 +16,15 @@ verdeckt. Gefunden hat es pruef-struktur. Richtig sind `gate.css` (die Farbwerte des Hauses) und `haus.css`. --> - - + + - +