From 0207b05da64bfcec82959afad47707d8f45f8076 Mon Sep 17 00:00:00 2001 From: Dogfather Date: Mon, 14 Sep 2026 14:28:06 +0200 Subject: [PATCH] Die Rechte Hand steht ueber den Modis -- sortiert statt geschrieben Filipe, mit dem Bildschirmfoto: "rechte hand soll immer ueber modi stehen bitte." DIE REIHENFOLGE STAND AN ZWEI STELLEN, und die zweite war falsch herum: ROLLEN_REIHE hatte die Rechte Hand laengst vor den Modis (und die SQL-Sortierung leitet sich daraus ab) -- aber `zusatzrollen` in workspace-personen.js schrieb sie von Hand, und dort kam Modi zuerst. Genau diese Liste baut die Abschnitte auf der Personenseite und die zusaetzlichen Knoepfe im Anlegen-Formular. Das ist an diesem Tag das VIERTE Mal dieselbe Sache: eine Aussage, zwei Listen, und die zweite ist die, die abweicht. Vorher: der Zeitraum-Schutz (an einer von drei Stellen), die Dauer-Einheit (dieselbe), das Recht zum Aufloesen (Liste kannte es, Nachrichtenweg nicht). Deshalb wird jetzt SORTIERT und nicht geschrieben: Die Liste geht durch ROLLEN_REIHE. Wer die Reihenfolge aendern will, aendert sie dort -- und alles andere zieht nach, statt nachgezogen werden zu muessen. Was in ROLLEN_REIHE nicht vorkommt (heute "gast"/Community), wandert ans Ende statt stillschweigend nach vorn. pruef-haus-trennung 63 -> 66. GEPRUEFT WIRD DIE REIHENFOLGE, NICHT DIE ANWESENHEIT: "beide sind da" waere auch dann gruen gewesen, wenn sie vertauscht sind -- und genau das war der Fall. Dazu eine Zeile, die nachweist, dass die Reihenfolge wirklich aus ROLLEN_REIHE kommt und nicht nur zufaellig stimmt; sonst haette jemand sie auch von Hand andersherum schreiben koennen: richtig im Ergebnis, falsch im Aufbau, und beim naechsten Mal wieder auseinander. Co-Authored-By: Claude Opus 5 --- server/pruef-haus-trennung.mjs | 36 +++++++++++++++++++++++++++++++++ server/workspace-personen.js | 23 ++++++++++++++++++++- workspace/app.webmanifest | 8 ++++---- workspace/aufgaben.html | 24 +++++++++++----------- workspace/automation.html | 26 ++++++++++++------------ workspace/bereich.html | 34 +++++++++++++++---------------- workspace/calls.html | 28 ++++++++++++------------- workspace/chat.html | 26 ++++++++++++------------ workspace/content.html | 30 +++++++++++++-------------- workspace/crew-index.html | 10 ++++----- workspace/crew.webmanifest | 8 ++++---- workspace/dateien.html | 26 ++++++++++++------------ workspace/entwicklung.html | 24 +++++++++++----------- workspace/index.html | 8 ++++---- workspace/kalender.html | 28 ++++++++++++------------- workspace/leistung.html | 26 ++++++++++++------------ workspace/personen.html | 26 ++++++++++++------------ workspace/profil.html | 28 ++++++++++++------------- workspace/rechte.html | 24 +++++++++++----------- workspace/report.html | 28 ++++++++++++------------- workspace/scouting.html | 26 ++++++++++++------------ workspace/start.html | 24 +++++++++++----------- workspace/startcheck.html | 28 ++++++++++++------------- workspace/steckbrief.html | 26 ++++++++++++------------ workspace/talente.html | 24 +++++++++++----------- workspace/team.html | 26 ++++++++++++------------ workspace/teamlage.html | 24 +++++++++++----------- workspace/treff-moderation.html | 24 +++++++++++----------- workspace/treff-regeln.html | 24 +++++++++++----------- workspace/uebersicht.html | 26 ++++++++++++------------ workspace/wissen.html | 26 ++++++++++++------------ 31 files changed, 403 insertions(+), 346 deletions(-) diff --git a/server/pruef-haus-trennung.mjs b/server/pruef-haus-trennung.mjs index d84c2be0..b21e9988 100644 --- a/server/pruef-haus-trennung.mjs +++ b/server/pruef-haus-trennung.mjs @@ -430,6 +430,42 @@ console.log("=== Personen & Zugaenge ==="); ok(neuWs.status === 201, `auf workspace. geht es (${neuWs.status})`); } +/* ======================================================================= + 9b. DIE RECHTE HAND STEHT UEBER DEN MODIS (14.09.2026) + ======================================================================= + Filipe, mit dem Bildschirmfoto: "rechte hand soll immer ueber modi + stehen bitte." + + Die Reihenfolge stand an ZWEI Stellen: in ROLLEN_REIHE (richtig) und + von Hand in `zusatzrollen` (falsch herum). Dasselbe Muster wie heute + schon dreimal -- eine Aussage, zwei Listen, und die zweite ist die + unvollstaendige. Jetzt wird sortiert, nicht geschrieben. + + GEPRUEFT WIRD DIE REIHENFOLGE, NICHT DIE ANWESENHEIT: "beide sind + da" waere auch dann gruen, wenn sie vertauscht sind -- und genau das + war der Fall. */ +{ + const antwort = await hole("/workspace/api/verwaltung/personen", + { host: CREW, keks: dogi.keks }); + const zusatz = (antwort.daten?.zusatzrollen || []).map((z) => z.wert); + ok(zusatz.includes("hand") && zusatz.includes("modi"), + `beide Rollen stehen in der Liste (${zusatz.join(", ")})`); + ok(zusatz.indexOf("hand") < zusatz.indexOf("modi"), + `die Rechte Hand steht VOR den Modis (${zusatz.join(" -> ")})`); + + /* UND SIE FOLGT DER EINEN LISTE. Ohne diese Zeile haette jemand die + Reihenfolge auch von Hand andersherum schreiben koennen -- richtig + im Ergebnis, falsch im Aufbau, und beim naechsten Mal wieder + auseinander. */ + const { ROLLEN_REIHE } = await import("./workspace.js"); + const erwartet = [...zusatz].sort((a, b) => { + const p = (r) => (ROLLEN_REIHE.indexOf(r) < 0 ? ROLLEN_REIHE.length : ROLLEN_REIHE.indexOf(r)); + return p(a) - p(b); + }); + ok(JSON.stringify(zusatz) === JSON.stringify(erwartet), + `die Reihenfolge folgt ROLLEN_REIHE (${zusatz.join(", ")})`); +} + /* ======================================================================= 10. Eine Rolle aendern -- es gab die Funktion gar nicht ======================================================================= diff --git a/server/workspace-personen.js b/server/workspace-personen.js index 814f2aee..449655b0 100644 --- a/server/workspace-personen.js +++ b/server/workspace-personen.js @@ -309,6 +309,21 @@ personenRouter.get("/workspace/api/verwaltung/personen", (req, res) => { faellt er dadurch von selbst weg (darfAnlegen filtert dort auf die Team-Rollen), und genau das ist richtig: Wer dort jemanden anlegt, meint jemanden aus dem Team. */ + /* DIE REIHENFOLGE KOMMT AUS ROLLEN_REIHE, nicht aus dieser Liste + (14.09.2026). + + Filipe, mit dem Bildschirmfoto: "rechte hand soll immer ueber + modi stehen bitte." Hier stand Modi zuerst -- ROLLEN_REIHE + hatte die Rechte Hand dagegen laengst vor den Modis, und die + SQL-Sortierung ebenfalls. Eine Aussage, zwei Stellen, und die + zweite war die falsche: dasselbe Muster wie heute schon dreimal. + + Sortiert wird deshalb ABGELEITET. Wer die Reihenfolge aendern + will, aendert ROLLEN_REIHE -- und alles andere zieht nach, + statt nachgezogen werden zu muessen. + + Was dort NICHT steht (heute: "gast"), wandert ans Ende statt + stillschweigend nach vorn. */ zusatzrollen: [ ...(darfAnlegen(req.person).includes("gast") ? [{ @@ -364,7 +379,13 @@ personenRouter.get("/workspace/api/verwaltung/personen", (req, res) => { + "privaten Kalender und keine Einzelchats.", }] : []), - ], + ].sort((a, b) => { + const platz = (r) => { + const i = ROLLEN_REIHE.indexOf(r); + return i < 0 ? ROLLEN_REIHE.length : i; + }; + return platz(a.wert) - platz(b.wert); + }), }); } catch (fehler) { console.error("[workspace] Personen lesen:", fehler?.message); diff --git a/workspace/app.webmanifest b/workspace/app.webmanifest index f36d014c..26a7d9ec 100644 --- a/workspace/app.webmanifest +++ b/workspace/app.webmanifest @@ -13,25 +13,25 @@ "theme_color": "#06090f", "icons": [ { - "src": "/assets/img/app-symbole/workspace-192.png?v=202609141404", + "src": "/assets/img/app-symbole/workspace-192.png?v=202609141428", "sizes": "192x192", "type": "image/png", "purpose": "any" }, { - "src": "/assets/img/app-symbole/workspace-512.png?v=202609141404", + "src": "/assets/img/app-symbole/workspace-512.png?v=202609141428", "sizes": "512x512", "type": "image/png", "purpose": "any" }, { - "src": "/assets/img/app-symbole/workspace-192-maskable.png?v=202609141404", + "src": "/assets/img/app-symbole/workspace-192-maskable.png?v=202609141428", "sizes": "192x192", "type": "image/png", "purpose": "maskable" }, { - "src": "/assets/img/app-symbole/workspace-512-maskable.png?v=202609141404", + "src": "/assets/img/app-symbole/workspace-512-maskable.png?v=202609141428", "sizes": "512x512", "type": "image/png", "purpose": "maskable" diff --git a/workspace/aufgaben.html b/workspace/aufgaben.html index 6af2eb0d..831c07f3 100644 --- a/workspace/aufgaben.html +++ b/workspace/aufgaben.html @@ -12,19 +12,19 @@ Ton wie die Kopfleiste darunter (#06090f), damit Leiste und Seite eine Flaeche sind statt zweier. --> - - - - - - + + + + + + - + @@ -252,10 +252,10 @@ - - - - - + + + + + diff --git a/workspace/automation.html b/workspace/automation.html index fe459c81..e4ffc719 100644 --- a/workspace/automation.html +++ b/workspace/automation.html @@ -12,20 +12,20 @@ Ton wie die Kopfleiste darunter (#06090f), damit Leiste und Seite eine Flaeche sind statt zweier. --> - - - - - - - + + + + + + + - + @@ -147,10 +147,10 @@ - - - - - + + + + + diff --git a/workspace/bereich.html b/workspace/bereich.html index dd6c4829..9daafe50 100644 --- a/workspace/bereich.html +++ b/workspace/bereich.html @@ -12,20 +12,20 @@ Ton wie die Kopfleiste darunter (#06090f), damit Leiste und Seite eine Flaeche sind statt zweier. --> - - - - - - - + + + + + + + - + @@ -181,14 +181,14 @@ - - - - - - - - - + + + + + + + + + diff --git a/workspace/calls.html b/workspace/calls.html index 227a0379..d3b6e987 100644 --- a/workspace/calls.html +++ b/workspace/calls.html @@ -12,20 +12,20 @@ Ton wie die Kopfleiste darunter (#06090f), damit Leiste und Seite eine Flaeche sind statt zweier. --> - - - - - - - + + + + + + + - + @@ -89,11 +89,11 @@ - - - - - - + + + + + + diff --git a/workspace/chat.html b/workspace/chat.html index 046306f9..329258f7 100644 --- a/workspace/chat.html +++ b/workspace/chat.html @@ -12,26 +12,26 @@ Ton wie die Kopfleiste darunter (#06090f), damit Leiste und Seite eine Flaeche sind statt zweier. --> - - - - + + + + - - - + + + - + @@ -341,10 +341,10 @@ - - - - - + + + + + diff --git a/workspace/content.html b/workspace/content.html index c039aba7..52768600 100644 --- a/workspace/content.html +++ b/workspace/content.html @@ -12,20 +12,20 @@ Ton wie die Kopfleiste darunter (#06090f), damit Leiste und Seite eine Flaeche sind statt zweier. --> - - - - - - - + + + + + + + - + @@ -179,12 +179,12 @@ - - - - - - - + + + + + + + diff --git a/workspace/crew-index.html b/workspace/crew-index.html index 5c6f65cd..9aaac3e6 100644 --- a/workspace/crew-index.html +++ b/workspace/crew-index.html @@ -36,15 +36,15 @@ - - - + + + - + @@ -319,6 +319,6 @@ - + diff --git a/workspace/crew.webmanifest b/workspace/crew.webmanifest index eef9309e..a6ad0add 100644 --- a/workspace/crew.webmanifest +++ b/workspace/crew.webmanifest @@ -13,25 +13,25 @@ "theme_color": "#06090f", "icons": [ { - "src": "/assets/img/app-symbole/crew-192.png?v=202609141404", + "src": "/assets/img/app-symbole/crew-192.png?v=202609141428", "sizes": "192x192", "type": "image/png", "purpose": "any" }, { - "src": "/assets/img/app-symbole/crew-512.png?v=202609141404", + "src": "/assets/img/app-symbole/crew-512.png?v=202609141428", "sizes": "512x512", "type": "image/png", "purpose": "any" }, { - "src": "/assets/img/app-symbole/crew-192-maskable.png?v=202609141404", + "src": "/assets/img/app-symbole/crew-192-maskable.png?v=202609141428", "sizes": "192x192", "type": "image/png", "purpose": "maskable" }, { - "src": "/assets/img/app-symbole/crew-512-maskable.png?v=202609141404", + "src": "/assets/img/app-symbole/crew-512-maskable.png?v=202609141428", "sizes": "512x512", "type": "image/png", "purpose": "maskable" diff --git a/workspace/dateien.html b/workspace/dateien.html index 69eb29c9..7187c24d 100644 --- a/workspace/dateien.html +++ b/workspace/dateien.html @@ -12,20 +12,20 @@ Ton wie die Kopfleiste darunter (#06090f), damit Leiste und Seite eine Flaeche sind statt zweier. --> - - - - - - - + + + + + + + - + @@ -108,10 +108,10 @@ - - - - - + + + + + diff --git a/workspace/entwicklung.html b/workspace/entwicklung.html index 596b7d65..66eb4660 100644 --- a/workspace/entwicklung.html +++ b/workspace/entwicklung.html @@ -7,14 +7,14 @@ - - - - - - - - + + + + + + + + @@ -94,9 +94,9 @@ - - - - + + + + diff --git a/workspace/index.html b/workspace/index.html index a25732e1..db4b59a0 100644 --- a/workspace/index.html +++ b/workspace/index.html @@ -30,9 +30,9 @@ - - - + + + @@ -401,6 +401,6 @@ - + diff --git a/workspace/kalender.html b/workspace/kalender.html index 3fa97848..474ff8a4 100644 --- a/workspace/kalender.html +++ b/workspace/kalender.html @@ -12,20 +12,20 @@ Ton wie die Kopfleiste darunter (#06090f), damit Leiste und Seite eine Flaeche sind statt zweier. --> - - - - - - - + + + + + + + - + @@ -377,11 +377,11 @@ - - - - - - + + + + + + diff --git a/workspace/leistung.html b/workspace/leistung.html index feed27aa..d845465c 100644 --- a/workspace/leistung.html +++ b/workspace/leistung.html @@ -12,20 +12,20 @@ Ton wie die Kopfleiste darunter (#06090f), damit Leiste und Seite eine Flaeche sind statt zweier. --> - - - - - - - + + + + + + + - + @@ -393,10 +393,10 @@ - - - - - + + + + + diff --git a/workspace/personen.html b/workspace/personen.html index c07fc5b0..fa818773 100644 --- a/workspace/personen.html +++ b/workspace/personen.html @@ -12,20 +12,20 @@ Ton wie die Kopfleiste darunter (#06090f), damit Leiste und Seite eine Flaeche sind statt zweier. --> - - - - - - - + + + + + + + - + @@ -423,10 +423,10 @@ - - - - - + + + + + diff --git a/workspace/profil.html b/workspace/profil.html index ee8875ce..ba438612 100644 --- a/workspace/profil.html +++ b/workspace/profil.html @@ -12,20 +12,20 @@ Ton wie die Kopfleiste darunter (#06090f), damit Leiste und Seite eine Flaeche sind statt zweier. --> - - - - - - - + + + + + + + - + @@ -214,11 +214,11 @@ - - - - - - + + + + + + diff --git a/workspace/rechte.html b/workspace/rechte.html index 5fdb083d..083179b4 100644 --- a/workspace/rechte.html +++ b/workspace/rechte.html @@ -7,14 +7,14 @@ - - - - - - - - + + + + + + + + @@ -134,9 +134,9 @@ Beim ersten Anlauf fehlte die Zeile auf genau diesen beiden neuen Seiten. Gefunden hat das nicht das Auge, sondern pruef-css-klassen, die seit dem 07.09. jede Seite danach absucht. --> - - - - + + + + diff --git a/workspace/report.html b/workspace/report.html index 87e797c5..0ed90494 100644 --- a/workspace/report.html +++ b/workspace/report.html @@ -12,20 +12,20 @@ Ton wie die Kopfleiste darunter (#06090f), damit Leiste und Seite eine Flaeche sind statt zweier. --> - - - - - - - + + + + + + + - + @@ -106,11 +106,11 @@ - - - - - - + + + + + + diff --git a/workspace/scouting.html b/workspace/scouting.html index f87ae457..f830cdb3 100644 --- a/workspace/scouting.html +++ b/workspace/scouting.html @@ -12,20 +12,20 @@ Ton wie die Kopfleiste darunter (#06090f), damit Leiste und Seite eine Flaeche sind statt zweier. --> - - - - - - - + + + + + + + - + @@ -173,10 +173,10 @@ - - - - - + + + + + diff --git a/workspace/start.html b/workspace/start.html index c455a7d6..e4ab0bf7 100644 --- a/workspace/start.html +++ b/workspace/start.html @@ -12,21 +12,21 @@ Ton wie die Kopfleiste darunter (#06090f), damit Leiste und Seite eine Flaeche sind statt zweier. --> - - - - + + + + - - + + - + @@ -674,10 +674,10 @@

- - - - - + + + + + diff --git a/workspace/startcheck.html b/workspace/startcheck.html index e2c32c21..0bfc4cc7 100644 --- a/workspace/startcheck.html +++ b/workspace/startcheck.html @@ -12,20 +12,20 @@ Ton wie die Kopfleiste darunter (#06090f), damit Leiste und Seite eine Flaeche sind statt zweier. --> - - - - - - - + + + + + + + - + @@ -85,11 +85,11 @@ - - - - - - + + + + + + diff --git a/workspace/steckbrief.html b/workspace/steckbrief.html index aa71b8c7..e4e94943 100644 --- a/workspace/steckbrief.html +++ b/workspace/steckbrief.html @@ -12,20 +12,20 @@ Ton wie die Kopfleiste darunter (#06090f), damit Leiste und Seite eine Flaeche sind statt zweier. --> - - - - - - - + + + + + + + - + @@ -126,10 +126,10 @@ - - - - - + + + + + diff --git a/workspace/talente.html b/workspace/talente.html index c169f076..9f8a8377 100644 --- a/workspace/talente.html +++ b/workspace/talente.html @@ -7,14 +7,14 @@ - - - - - - - - + + + + + + + + @@ -94,9 +94,9 @@ - - - - + + + + diff --git a/workspace/team.html b/workspace/team.html index cba4a7f2..9ce131f2 100644 --- a/workspace/team.html +++ b/workspace/team.html @@ -7,20 +7,20 @@ - - - - - - - + + + + + + + - + @@ -110,10 +110,10 @@ - - - - - + + + + + diff --git a/workspace/teamlage.html b/workspace/teamlage.html index 4753795f..20743c73 100644 --- a/workspace/teamlage.html +++ b/workspace/teamlage.html @@ -7,20 +7,20 @@ - - - - - - - + + + + + + + - + - - - - + + + + diff --git a/workspace/treff-moderation.html b/workspace/treff-moderation.html index dc46ba90..d507693c 100644 --- a/workspace/treff-moderation.html +++ b/workspace/treff-moderation.html @@ -7,14 +7,14 @@ - - - - - - - - + + + + + + + + @@ -110,9 +110,9 @@ - - - - + + + + diff --git a/workspace/treff-regeln.html b/workspace/treff-regeln.html index 07b292ae..435e2db3 100644 --- a/workspace/treff-regeln.html +++ b/workspace/treff-regeln.html @@ -7,18 +7,18 @@ - - - - - - - + + + + + + + - + @@ -190,9 +190,9 @@ Beim ersten Anlauf fehlte die Zeile auf genau diesen beiden neuen Seiten. Gefunden hat das nicht das Auge, sondern pruef-css-klassen, die seit dem 07.09. jede Seite danach absucht. --> - - - - + + + + diff --git a/workspace/uebersicht.html b/workspace/uebersicht.html index 335e0c87..cf14f0e5 100644 --- a/workspace/uebersicht.html +++ b/workspace/uebersicht.html @@ -12,22 +12,22 @@ Ton wie die Kopfleiste darunter (#06090f), damit Leiste und Seite eine Flaeche sind statt zweier. --> - - - - + + + + - - - + + + - + @@ -149,11 +149,11 @@ - + - - - - + + + + diff --git a/workspace/wissen.html b/workspace/wissen.html index 9d8bd120..b8ce7410 100644 --- a/workspace/wissen.html +++ b/workspace/wissen.html @@ -12,20 +12,20 @@ Ton wie die Kopfleiste darunter (#06090f), damit Leiste und Seite eine Flaeche sind statt zweier. --> - - - - - - - + + + + + + + - + @@ -190,10 +190,10 @@ - - - - - + + + + +