diff --git a/workspace/assets/css/calls.css b/workspace/assets/css/calls.css index 32529f2e..568a7445 100644 --- a/workspace/assets/css/calls.css +++ b/workspace/assets/css/calls.css @@ -399,11 +399,65 @@ Kaestchen mit eigenem Balken eine Falle, keine Hilfe. ===================================================================== */ .call-brett { - display: grid; - grid-template-columns: repeat(auto-fit, minmax(min(340px, 100%), 1fr)); - gap: 16px; + /* EINE REIHE, VIER TAFELN (07.09.2026). + + Filipe: "die sollen alle in einer reihe sein und nicht 3 und dann + eins drunter." + + Vorher stand hier `auto-fit` mit 340 px Mindestbreite. Das rechnet + sich selbst aus, wie viele nebeneinanderpassen -- und bei vier + Tafeln in einer 1240 px breiten Spalte reichte es fuer drei. Die + vierte rutschte in eine zweite Zeile, und das Brett sah aus wie + ein Versehen. `auto-fit` ist bequem, solange die Anzahl offen ist; + sobald sie feststeht, ist es eine Rechnung, die man nicht + kontrolliert. + + Vier sind es, vier stehen nebeneinander -- und zwar mit `flex` + statt `grid`, weil damit die OFFENE Tafel breiter sein kann als + die drei geschlossenen. Es ist immer genau eine offen (siehe + calls.js), und die bekommt doppelten Anteil: Dort wird gearbeitet, + die anderen sind Reiter. Das ist der Unterschied zwischen vier + gleich grossen Kaesten und einem Brett. */ + display: flex; + flex-wrap: nowrap; + gap: 14px; align-items: stretch; } +.call-brett .gruppe { flex: 1 1 0; min-width: 0; } +.call-brett .gruppe:not([data-zu="ja"]) { flex: 1.5 1 0; } + +/* DER TITEL MUSS GANZ HINEINPASSEN, nicht abgeschnitten werden. + + Im ersten Anlauf standen dort "LAEUFT AUTO..." und "FESTGEHALT..." -- + gemessen bei 222 px je zugeklappter Tafel. Ein abgeschnittener Name + auf einem Reiter ist das Gegenteil von uebersichtlich: Man muss ihn + aufklappen, um zu wissen, was drin ist. + + Zwei Stellschrauben statt einer: Die offene Tafel nimmt 1,5 Anteile + statt 2,2 (die geschlossenen wachsen dadurch von 222 auf 266 px), und + die Sperrung der Grossbuchstaben faellt von 0,08 auf 0,035 em. Beides + zusammen bringt "LAEUFT AUTOMATISCH" unter -- Punkte bleiben als + letzte Rueckfallebene stehen, falls jemand eine laengere Gruppe + erfindet. */ +.call-brett .stufe__titel { + min-width: 0; overflow: hidden; text-overflow: ellipsis; white-space: nowrap; + letter-spacing: .035em; + font-size: .74rem; +} +.call-brett .stufe__kopf { gap: 8px; padding-left: 13px; padding-right: 11px; } +.call-brett .stufe__zahl, .call-brett .gruppe__pfeil { flex: none; } + +@media (max-width: 1100px) { + /* Vier nebeneinander unter 1100 px waeren vier Streifen von 250 px -- + lesbar, aber nicht mehr benutzbar. Ab hier zwei Reihen zu zwei. */ + .call-brett { flex-wrap: wrap; } + .call-brett .gruppe, + .call-brett .gruppe:not([data-zu="ja"]) { flex: 1 1 calc(50% - 7px); } +} +@media (max-width: 700px) { + .call-brett .gruppe, + .call-brett .gruppe:not([data-zu="ja"]) { flex: 1 1 100%; } +} .call-brett .gruppe { display: flex; flex-direction: column; min-height: 0; diff --git a/workspace/assets/js/calls.js b/workspace/assets/js/calls.js index 2ad4ef0e..d9774e12 100644 --- a/workspace/assets/js/calls.js +++ b/workspace/assets/js/calls.js @@ -403,8 +403,17 @@ { schluessel: 'offen', titel: 'Protokoll fehlt', frage: 'Diese Gespräche sind vorbei, aber noch nicht festgehalten.' }, { schluessel: 'anstehend', titel: 'Steht an', frage: null }, - { schluessel: 'serien', titel: 'Läuft automatisch', - frage: 'Wiederholungen dieses Monats. Was danach kommt, steht im Kalender.' }, + /* "Wiederholungen" und nicht "Laeuft automatisch": Der Kopf ist ein + REITER, und ein Reiter braucht ein Wort. Bei vier Tafeln in einer + Reihe bleiben je 252 Pixel -- gemessen, und "LAEUFT AUTOMATISCH" + passte dort nicht hinein, es stand "LAEUFT AUTO...". Ein + abgeschnittener Name auf einem Reiter ist das Gegenteil von + uebersichtlich: Man muss aufklappen, um zu wissen, was drin ist. + Was es genau bedeutet, steht im Satz darunter -- und den liest + man ohnehin erst, wenn die Tafel offen ist. */ + { schluessel: 'serien', titel: 'Wiederholungen', + frage: 'Läuft automatisch – die Wiederholungen dieses Monats. ' + + 'Was danach kommt, steht im Kalender.' }, { schluessel: 'erledigt', titel: 'Festgehalten', frage: null }, ]; @@ -495,6 +504,21 @@ beim naechsten Fenster falsch ist. */ ziel.className = 'call-brett'; + /* AUCH BEIM LADEN IST NUR EINE OFFEN (07.09.2026). + + Das Akkordeon griff bisher nur beim KLICK. Beim ersten Aufbau + kamen die gemerkten Staende aus der Ablage, und die konnten drei + offene Tafeln ergeben -- im Bildschirmfoto standen genau so drei + nebeneinander offen. Ein Versprechen, das erst nach dem ersten + Klick gilt, ist keines. + + Offen bleibt die ERSTE Tafel, die etwas enthaelt und nicht + ausdruecklich zugeklappt wurde. "Die erste mit Inhalt" ist + dieselbe Regel, nach der auch die Zeitbloecke aufgehen -- alles + zuzuklappen hiesse, dass man nach dem Laden erst klicken muss, + um ueberhaupt etwas zu sehen. */ + let schonOffen = false; + for (const g of GRUPPEN) { /* `|| []` fuer den Fall, dass ein Server ohne die neue Gruppe antwortet -- etwa wenn die Seite noch aus dem Zwischenspeicher @@ -534,6 +558,13 @@ const gemerkt = localStorage.getItem(schluessel); if (gemerkt) zu = gemerkt === 'zu'; } catch { /* ohne Ablage bleibt die Vorgabe */ } + /* Die zweite und jede weitere offene Tafel wird zugeklappt -- + ohne den gemerkten Stand zu ueberschreiben: Wer sie aufklappt, + soll beim naechsten Mal wieder DIESE bekommen und nicht die + erste. */ + if (!zu && !liste.length) zu = true; + if (!zu && schonOffen) zu = true; + if (!zu) schonOffen = true; const stand = (istZu) => { s.dataset.zu = istZu ? 'ja' : 'nein'; kopf.setAttribute('aria-expanded', istZu ? 'false' : 'true'); diff --git a/workspace/aufgaben.html b/workspace/aufgaben.html index 639ce41d..48efea5e 100644 --- a/workspace/aufgaben.html +++ b/workspace/aufgaben.html @@ -9,10 +9,10 @@ - - - - + + + +
@@ -212,10 +212,10 @@ - - - - - + + + + +