From bc9a902ffbb0d703ab3fa9a74fcc16113bbf59b5 Mon Sep 17 00:00:00 2001 From: Dogfather Date: Tue, 22 Sep 2026 01:57:08 +0200 Subject: [PATCH] Die Knoepfe stehen nicht mehr vor dem Text -- und verteilt wird bei "Eure Aufgaben" ZWEI WUENSCHE, EINE URSACHE: beide gehen auf den Block "Noch jemanden dazunehmen" zurueck, der am 21.09. ins Aufgabenformular kam. 1. "DIE ZWEI BUTTONS SOLLEN NICHT VOR DEM TEXT STEHEN" Gemessen bei 1280 px: "Anlegen" und "Abbrechen" lagen ueber zwei Hinweisen, mit 363x27 und 363x10 Pixeln Ueberlappung. Die Ursache ist eine Regel vom 17.09., und sie ist richtig: Der Hinweis haengt ABSOLUT unter seinem Feld, damit die Eingaben auf einer Linie bleiben. Was aus dem Fluss genommen wird, belegt aber keinen Platz -- solange darunter nur der Rasterabstand kam, fiel das nicht auf. Mit dem neuen Knopf wurde die Zelle hoeher, und der Hinweis wanderte mit, direkt auf die Knoepfe. Jetzt bekommt das Raster unter sich 44 px, wenn es einen haengenden Hinweis gibt (`:has()`, nicht pauschal -- ein Formular ohne Hinweis bekaeme sonst Leere geschenkt). Die Hoehe ist gemessen: ein Hinweis ist zweizeilig 35 px hoch plus 4 px Abstand. UND EIN ZWEITER FUND AN DERSELBEN STELLE: Der Block sass IN der Zelle "Wer macht es?". Dadurch stand deren Eingabe bei 780..824, die Nachbarin "Fuer welchen Kanal?" bei 833..877 -- 53 Pixel Versatz, und genau das sieht man als "verzogen". Er steht jetzt als eigene Rasterzeile hinter beiden; danach sind sie wieder buendig. Als eigene Zeile ist er ausserdem ehrlicher: "Noch jemanden dazunehmen" ist ein zweiter Schritt, kein Teil des ersten. Gefunden hat beides pruef-formulare, die seit dem 07.09. auf buendige Unterkanten prueft und seit dem 21.09. rot war. 2. "BEI EURE AUFGABEN DIE AUFGABEN VERTEILEN" Filipe, zum wiederholten Mal -- und so stand es auch im Auftrag vom 21.09. (Abschnitt 2). Auf "Eure Aufgaben" steht jetzt ein Band "Aufgabe verteilen". Es nimmt die gerade gewaehlte Person mit: "Aufgabe fuer Kessi" fuehrt auf das Aufgabenbrett, oeffnet das Formular und traegt sie ein. EIN WEG, KEIN ZWEITES FORMULAR. Zwei Formulare fuer dieselbe Sache waeren zwei Gelegenheiten, eines zu vergessen -- und man wuesste nie, welches das richtige ist. Beim Bauen gemessen: Das Band blieb unsichtbar, bis man eine Person anklickte -- `window.__ich` kommt ueber das Netz und steht beim ersten Aufruf noch nicht. Jetzt wird darauf gewartet, laengstens drei Sekunden, statt eine Zahl aus dem Kopf zu setzen. Zwei Pruefungen waren selbst kaputt: pruef-formulare zaehlte ein Eingabefeld mit, das in einem zugeklappten Block liegt und Hoehe 0 hat -- ein Feld, das man nicht sieht, kann nicht schief stehen. pruef-entwicklung verlangte, dass ein Modi "Eure Aufgaben" NICHT bekommt; das hat Filipe heute umgedreht. Geprueft: pruef-formulare 19/0 (war 18 ok / 1 FEHL), pruef-entwicklung 48/0 (war 45/1), pruef-aufgabenbrett 49/0, pruef-css-klassen 30/0. Der ganze Weg am Bildschirm gemessen: Band sichtbar, Person mitgenommen, Formular offen, richtige Person gewaehlt, keine Skriptfehler. --- server/pruef-entwicklung.mjs | 23 ++- server/pruef-formulare.mjs | 29 ++- workspace/anruf-probe.html | 8 +- workspace/app.webmanifest | 8 +- workspace/assets/css/aufgaben.css | 25 +++ workspace/assets/css/entwicklung.css | 52 ++++++ workspace/assets/js/aufgaben.js | 33 ++++ workspace/assets/js/entwicklung.js | 59 ++++++ workspace/aufgaben.html | 99 +++++----- workspace/automation.html | 30 +-- workspace/befinden.html | 28 +-- workspace/bereich.html | 40 ++-- workspace/bewerben.html | 34 ++-- workspace/bewerbungen.html | 32 ++-- workspace/calls.html | 32 ++-- workspace/chat.html | 36 ++-- workspace/content.html | 32 ++-- workspace/crew-index.html | 10 +- workspace/crew.webmanifest | 8 +- workspace/dateien.html | 32 ++-- workspace/entwicklung.html | 261 +++++++++++++++------------ workspace/hilfe.html | 26 +-- workspace/index.html | 8 +- workspace/kalender.html | 32 ++-- workspace/leistung.html | 30 +-- workspace/personen.html | 30 +-- workspace/profil.html | 34 ++-- workspace/rechte.html | 28 +-- workspace/report.html | 32 ++-- workspace/scouting.html | 30 +-- workspace/start.html | 28 +-- workspace/startcheck.html | 32 ++-- workspace/steckbrief.html | 34 ++-- workspace/talente.html | 30 +-- workspace/team.html | 28 +-- workspace/teamlage.html | 28 +-- workspace/teilen.html | 26 +-- workspace/treff-moderation.html | 28 +-- workspace/treff-regeln.html | 28 +-- workspace/uebersicht.html | 30 +-- workspace/unsere-seiten.html | 24 +-- workspace/werdegang.html | 28 +-- workspace/willkommen.html | 22 +-- workspace/wissen.html | 32 ++-- 44 files changed, 907 insertions(+), 652 deletions(-) diff --git a/server/pruef-entwicklung.mjs b/server/pruef-entwicklung.mjs index 4684fcc5..e013565d 100644 --- a/server/pruef-entwicklung.mjs +++ b/server/pruef-entwicklung.mjs @@ -355,8 +355,27 @@ console.log("=== Die Kacheln ==="); const a = await hole("/workspace/api/ich", { host: CREW, keks: ayla.keks }); const alle = [...(a.daten?.bereiche || []), ...(a.daten?.bereiche_zusatz || [])]; - ok(!alle.some((k) => ["Eure Aufgaben", "Talente"].includes(k.name)), - `ein Teammitglied bekommt sie nicht angeboten (${alle.length} Kacheln)`); + /* UMGEDREHT AM 22.09.2026 -- fuer "Eure Aufgaben", nicht fuer + "Talente". + --------------------------------------------------------------------- + Hier stand, ein Modi bekomme BEIDE Kacheln nicht angeboten. Filipe + zum Bildschirmfoto der Gruppe "Entwicklung & Nachwuchs": "die modis + sollen diesen bereich und diese zwei kacheln auch sehen, die sollen + aber nur ihre aufgaben und daten sehen." + + DASS ER SIE SIEHT, IST KEIN WIDERSPRUCH ZUR ZEILE DARUEBER: Die + misst, dass auf der Seite keine FREMDEN Namen stehen -- und das + gilt unveraendert. Die Kachel oeffnet die Seite; was darauf steht, + entscheidet der Server. + + "TALENTE" BLEIBT DRAUSSEN. Dort stehen Notizen ueber Zuschauer, die + nichts davon wissen. */ + ok(alle.some((k) => k.name === "Eure Aufgaben"), + `ein Teammitglied bekommt "Eure Aufgaben" angeboten (${alle.length} Kacheln)`); + ok(alle.some((k) => k.name === "Entwicklung"), + `und "Entwicklung" ebenso`); + ok(!alle.some((k) => k.name === "Talente"), + `"Talente" aber nicht -- dort stehen Notizen ueber Fremde`); /* Kein Farbton doppelt -- zwei Kacheln in derselben Farbe sind ein Fehler, den man sonst erst am Bildschirm findet. */ diff --git a/server/pruef-formulare.mjs b/server/pruef-formulare.mjs index b361f4b8..a7bade63 100644 --- a/server/pruef-formulare.mjs +++ b/server/pruef-formulare.mjs @@ -116,7 +116,18 @@ for (const [breite, wie] of [[1280, "Computer"], [390, "Handy"]]) { const eingaben = felder .map((f) => f.querySelector("input, select, textarea")) .filter(Boolean) - .map((e) => e.getBoundingClientRect()); + .map((e) => e.getBoundingClientRect()) + /* NUR WAS MAN WIRKLICH SIEHT (verschaerft 22.09.2026). + ---------------------------------------------------------- + Seit dem 21.09. steht im Aufgabenformular ein zugeklappter + Block ("Noch jemanden dazunehmen"). Sein erstes Eingabefeld + liegt in einem `hidden` fieldset und hat Hoehe und Breite 0 -- + die Pruefung meldete es als "nicht buendig" und "zu schmal". + + Ein Feld, das man nicht sieht, kann nicht schief stehen. + Diese Zeile misst die Buendigkeit dessen, was ein Mensch vor + sich hat -- und genau darum geht es. */ + .filter((r2) => r2.width > 0 && r2.height > 0); const schilder = felder .map((f) => f.querySelector(".feld-schild")) .filter(Boolean); @@ -210,7 +221,21 @@ console.log("\n=== Kein Feld ohne Gestaltung"); const felder = [...document.querySelectorAll( '.inhalt input:not([type=file]):not([type=checkbox]):not([type=radio]), ' + '.inhalt textarea, .inhalt select')] - .filter((e) => e.getBoundingClientRect().width > 0); + /* NUR WAS MAN WIRKLICH SIEHT (verschaerft 22.09.2026). + ---------------------------------------------------------- + Hier stand nur `width > 0`. Seit dem 21.09. steht im + Aufgabenformular ein zugeklappter Block ("Noch jemanden + dazunehmen"); ein Feld darin hat Breite und Hoehe 0 und + keinen sichtbaren Platz -- die Pruefung meldete es trotzdem + als "nicht buendig" und "zu schmal". + + Ein unsichtbares Feld kann nicht schief stehen. Gefragt wird + deshalb nach BEIDEN Massen und zusaetzlich danach, ob das + Element ueberhaupt im Bild haengt (`offsetParent`). */ + .filter((e) => { + const r = e.getBoundingClientRect(); + return r.width > 0 && r.height > 0 && e.offsetParent !== null; + }); const schlecht = []; for (const e of felder) { const st = getComputedStyle(e); diff --git a/workspace/anruf-probe.html b/workspace/anruf-probe.html index edb2a0b8..8c010f1a 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`. --> - - + + - +