Neues Design „Bauplan“, Dashboard, Notizen-Bereich, Seitenleiste
- Gestaltung „Bauplan“: ruhigere Farben, Schriftskala, Abstände im 4-px-Raster, Kalenderwochen und Nummern in Mono-Ziffern, Glas beruhigt - Dashboard „Meine Aufgaben“: Kopf mit Kalenderwoche, Band „Diese Woche“ (Mo–Fr), je Projekt Meine Rolle / Team / Notizen; offene Termine blau hervorgehoben; Monatskalender unverändert - Neuer Bereich „Notizen“ in der Seitenleiste: Notizen aller eigenen Projekte und eigene Notizen ohne Projekt, später einem Projekt zuordenbar - Seitenleiste neu gegliedert (Projekte, Team, Notizen, Studenten, Einstellungen/Admin unten), Admin-Punkte in Personen/Vorgaben/System - Reiter im Projektkopf wie die Seitenleiste hervorgehoben - Behoben: „&amp;…“ in Kommentaren wuchs bei jedem Speichern; bestehende Kommentare werden beim Start repariert - Behoben: Lösch-Rückfrage bei Notizen unlesbar bzw. blieb stehen, Cursor im Notiztitel verdeckt, Dropdown im Dunkelmodus gekachelt Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
This commit is contained in:
1 parent
e697057b86
commit
e291ca8438
18 files changed
+2185
-1250
No files matched your search
@@ -1837,6 +1837,58 @@ step into a project explicit. Everything lives in `public/js/auftrag.js`:
|
||||
`plan-gantt.js` both bail out unless `currentTab === 'plan'` — they now run
|
||||
while completely different tabs are on screen.
|
||||
|
||||
### Notizen in der Seitenleiste (Tab `notizen`, `js/notizen/notizen.js`)
|
||||
|
||||
Eriks Wunsch: ein eigener Bereich „Notizen“ (Seitenleiste, eigene Gruppe
|
||||
„Notizen“ unter „Team“, `/Notizen`), in dem jedes Konto die Notizen ALLER seiner
|
||||
Projekte sieht und **projektunabhängige Notizen** anlegt, die sich später
|
||||
einem Projekt zuordnen lassen. Gleicher Aufbau wie der Projekt-Reiter
|
||||
(Liste + Editor, Werkzeugleiste, automatisches Speichern, Anheften, Löschen
|
||||
zweistufig), dazu oben ein **Projektfilter** (Alle / Ohne Projekt / je
|
||||
Projekt mit Anzahl) und im Editor die Auswahl **„Projekt“** (Ohne Projekt,
|
||||
„Meine Projekte“, „Weitere Projekte“ der aktuellen Sitzung) plus „Im Projekt
|
||||
öffnen“. „+ Neu“ legt im gefilterten Projekt an, sonst ohne Projekt. Eigene
|
||||
Element-ids (`mn…`) und Funktionen (`mnNeu()`, `mnZuordnen()` …), weil der
|
||||
Projekt-Reiter gleichzeitig im DOM liegt; Stile aus `.notizen-*`
|
||||
(plan-styles.css) plus Block „NOTIZEN (Seitenleiste)“ am Ende von
|
||||
`styles.css`.
|
||||
- **Server:** Eine projektunabhängige Notiz ist eine Zeile in
|
||||
`projekt_notizen` mit `project_uid = ''`; sie sieht und ändert NUR ihr
|
||||
Verfasser (`notizDarf()`). `GET /meine-notizen` liefert die Notizen der
|
||||
eigenen Projekte (`meineProjektUids()`: jüngste echte Sitzung, zugeordnet
|
||||
oder mit eigener Aufgabe — Regel wie `dashDaten()`) plus die eigenen
|
||||
projektunabhängigen, dazu `meineProjekte`. `PUT /projekt-notizen/:id` nimmt
|
||||
`uid` zum Zuordnen (Ziel-Projekt braucht `proj.plan`, Lösen nur der
|
||||
Verfasser). `POST`/`PUT`/`DELETE`/`aus-mail` prüfen jetzt selbst
|
||||
(`notizDarf()`) statt pauschal `requireRecht('proj.plan')`: ohne Projekt
|
||||
genügt die Anmeldung. `GET /projekt-notizen/anzahl` zählt nur
|
||||
Projekt-Notizen.
|
||||
- **Live:** `{typ:'notizen'}` geht in `store.js` an `meineNotizenLive()` und
|
||||
`notizenLiveAenderung()`; das Echo der eigenen Speicherung (kommt auch im
|
||||
selben Tab an) wird 3 s lang ausgelassen, sonst verschwände die Anzeige
|
||||
„Gespeichert ✓“.
|
||||
|
||||
### Seitenleiste — Gliederung nach Arbeitsbereich (11/2026)
|
||||
|
||||
Eriks Wahl „A“ (unslop + Taste-Skill): Die Einträge stehen in Gruppen
|
||||
(`.sidebar-gruppe` in `App.html`): **Dashboard** · **Projekte**
|
||||
(Projekte, darunter eingezogen das geöffnete Projekt `#planNavItem` mit
|
||||
Projektnummer in Mono, Wochenbericht, Terminplan) · **Team** (Auslastung,
|
||||
Abwesenheiten) · **Notizen** (eigene Gruppe, Eriks Wunsch) · **Studenten** (Plan Checker, ganze Gruppe `nur-recht
|
||||
wz.checker`) · unten `.sidebar-unten` mit **Einstellungen** und **Admin**.
|
||||
Die Überschriften „Navigation“ und „Planung“ sind entfallen; der Menüpunkt
|
||||
heißt weiter „Dashboard“. Admin-Unterpunkte in drei Zwischengruppen
|
||||
(`.sidebar-subgruppe`: Personen, Vorgaben, System); `adminNavAbgleichen()`
|
||||
blendet eine Zwischengruppe aus, wenn keiner ihrer Punkte erlaubt ist.
|
||||
Maße: Einträge 32 px, Icon 18 px + 8 px, Rubrik 16 px über der Gruppe und
|
||||
4 px über ihren Einträgen. Stile: Block „SEITENLEISTE“ am Ende von
|
||||
`styles.css`.
|
||||
|
||||
**Falle in CSS-Kommentaren:** `*/` beendet einen Kommentar auch mitten im
|
||||
Text (z. B. „--dash-*/--wt-*“). Der Rest wird dann als Regel gelesen und
|
||||
verschluckt die nächste echte Regel. So fehlten zeitweise `--font-mono`
|
||||
(alle Mono-Ziffern) und `--accent` im automatischen Dunkelmodus.
|
||||
|
||||
### Termin aus Mail (`js/plan/plan-mail-eintrag.js`)
|
||||
|
||||
Eriks Wunsch: Mailtext per Drag & Drop (markierter Text oder ganze
|
||||
@@ -3604,6 +3656,26 @@ Stile: Block „Verlauf der Vorwochen im Wochenbericht“ (`.bv-*`,
|
||||
|
||||
### Dashboard ("Meine Aufgaben", now the default landing tab)
|
||||
|
||||
**Stand 11/2026 — Entwurf „Bauplan“ (Eriks Wahl, Vorlage im Artifact
|
||||
„Projektübersicht neu gestaltet“):** Kopf ohne Begrüßung und Uhr: Zeile
|
||||
„KW 45, Mo 2. bis Fr 6. November 2026“ (Mono) über dem Titel „Meine
|
||||
Aufgaben“, rechts die Sitzung (`renderDashboardKopf()`, `dashWochenMontag()`;
|
||||
`greetingForHour()`/`startDashboardClock()` sind entfallen). Band mit Satz und
|
||||
vier Zahlen: offene Aufgaben, überfällig (rot), diese Woche fällig (aus
|
||||
`dashDaten()`, heute bis Sonntag), Freigaben. Neu darunter **„Diese Woche“**
|
||||
(`renderDashWoche()`): Mo–Fr als Spalten mit den Terminen der eigenen
|
||||
Projekte, getönt nach eigene Aufgabe / Aufgabe im Projekt / Meilenstein /
|
||||
überfällig, je Tag höchstens `DASH_WOCHE_JE_TAG` (4). Jeder Projektblock hat
|
||||
die Zeile **„Meine Rolle | Team | Notizen“** (`renderDashProjektInfo()`, Eriks
|
||||
Wunsch): Team = übrige Beteiligte als Kürzel-Kreise in Rollenfarben
|
||||
(`beteiligteJePerson()`/`beteiligtenAvatarHtml()`, höchstens 5, Namen
|
||||
gekürzt), Notizen nur wenn vorhanden, mit Sprung in den Reiter „Notizen“.
|
||||
Die Anzahl liefert **`GET /projekt-notizen/anzahl`** (`{uid: {anzahl,
|
||||
zuletzt}}`, requireAuth), parallel zu `/my-dashboard` geladen
|
||||
(`dashNotizen`). Die Rollen-Chips im Projektkopf sind dafür entfallen. Der
|
||||
**Monatskalender bleibt unverändert** (Eriks Vorgabe). Stile: Block „MEINE
|
||||
AUFGABEN — Entwurf Bauplan“ am Ende von `styles.css`.
|
||||
|
||||
**Aktueller Aufbau (Entwurf „B — Monatsblatt“, Eriks Wahl aus drei Varianten):**
|
||||
Kopf und Band wie unten beschrieben; darunter **links „Meine Projekte“**, je
|
||||
Projekt ein Block (`renderDashProjekte()`): eigene Rollen als Chips (gestrichelt
|
||||
@@ -4433,6 +4505,39 @@ minütlich. Ein Klick markiert als gelesen und springt in die Aufgaben des
|
||||
Projekts — gesucht in der AKTUELLEN Sitzung über die Projektnummer (die
|
||||
Projekt-ID wechselt je Sitzung), Planung-Terminpläne über ihre ID.
|
||||
|
||||
## Gestaltung „Bauplan“ (unslop-Überarbeitung, 11/2026)
|
||||
|
||||
Eriks Wunsch: das gesamte Design mit dem Skill „unslop“ überarbeiten, Wahl
|
||||
„volle Überarbeitung“, Glas „beruhigen“. Inhalte, Aufbau und Funktionen sind
|
||||
unverändert; geändert sind nur Stylesheets, ein paar Texte und Inline-Größen.
|
||||
- **Richtung:** Planköpfe und Raster eines Bauplans — Flächen fast neutral
|
||||
(Graphit, leicht kühl), ein Akzent (Logo-Blau `#0f5a85`, dunkel
|
||||
`#86bfdf`), Farbe nur in Inhalten (Terminplan, Auslastung, Status).
|
||||
Löst die frühere Dunkel-Palette in Wandtafel-Blau ab.
|
||||
- **Regeln, die neue Stile einhalten sollten:** Schriftgrößen 11/12/13/15/19/24
|
||||
(keine halben Pixel), Gewichte 400/500, 600 nur selten; keine gesperrten
|
||||
Großbuchstaben-Labels; keine negative Laufweite unter 40px; Abstände im
|
||||
4px-Raster (2 und 6 nur in kleinen Bedienelementen); Rundungen 4–6
|
||||
(Schildchen/Chips), 8 (Knöpfe, Eingaben, Umschalter), 12–16 (Karten);
|
||||
Kapselform nur für dünne Balken, Schalter, Zählpunkte und Avatare; keine
|
||||
farbigen Schatten/Leuchten, keine Emoji, keine Ausrufezeichen in Texten.
|
||||
- **Kennzeichen:** Kalenderwochen, Projektnummern und Kennzahlen in
|
||||
Monospace-Ziffern (`--font-mono`, tabellarisch) — Block „BAUPLAN“ am Ende
|
||||
von `styles.css` (auch: ruhige aktive Navigation, Knopf-Übergänge).
|
||||
- **Dunkel:** Hauptknöpfe in `--knopf` (`#276f9c`, weiße Schrift 5,6:1), weil
|
||||
weiße Schrift auf dem hellen Akzent nur ~2:1 erreicht.
|
||||
- **Glas beruhigt** (`glas.css`): Flächen fast deckend, nur noch zwei
|
||||
schwache Lichtflächen in den Logo-Blautönen (Mint entfallen), Rundungen
|
||||
8/14/16, neutrale Schatten, kein `saturate()`, aktive Einträge mit Haarlinie
|
||||
statt farbigem Schatten.
|
||||
- **Ausgenommen:** die Wandtafel (eigenes Design, `--dash-*`/`--wt-*`) und
|
||||
die Login-Seite bei den Schriftgrößen.
|
||||
- Das Umbauskript arbeitete je CSS-Regel; geprüft: gleiche Regelzahl wie
|
||||
vorher (kein Parse-Verlust), keine Überläufe/Großbuchstaben auf Dashboard,
|
||||
Projekte, Wochenbericht, Auslastung, Abwesenheiten, Einstellungen und in
|
||||
den Projektbereichen. Methode nach „unslop“ von Damir Sokolovsky
|
||||
(@heydamir), CC BY 4.0.
|
||||
|
||||
## Glas-Darstellung (`public/glas.css`)
|
||||
|
||||
Eriks Wahl aus dem Gestaltungsvorschlag „Projektübersicht in Glas“ (Annäherung
|
||||
@@ -4751,6 +4856,21 @@ Abweichungen:
|
||||
Rendern des Wochenberichts mit. `esc()` wandelt jetzt über `String()` um
|
||||
(nur `null`/`undefined` werden zu `''`).
|
||||
|
||||
## Behobener Fehler: wachsende „&amp;…“ in Kommentaren (11/2026)
|
||||
|
||||
Eriks Meldung nach dem Sitzungswechsel KW 45: In Kommentaren stand
|
||||
„&amp;amp;amp;nbsp;“. Ursache: `sanitizeFormatHtml()` (server.js)
|
||||
maskierte den Text zwischen den Tags mit `htmlEscape()` — auch ein `&`, das
|
||||
schon eine fertige Entity begann. Weil `serializeProject()` die Kommentare
|
||||
bei JEDEM Speichern eines Projekts erneut bereinigt (auch wenn nur eine
|
||||
Aufgabe geändert wurde), kam pro Speichern eine Stufe dazu ( →
|
||||
&nbsp; → &amp;nbsp; …). Jetzt maskiert `textMaskieren()` ein `&` nur,
|
||||
wenn es keine Entity beginnt — beliebig oft wiederholbar (geprüft: alle
|
||||
Kommentare nach dreimaligem Bereinigen unverändert). `entitiesReparieren()`
|
||||
(beim Start und nach `/import`, idempotent) führt gestapelte Stufen in
|
||||
`project_kommentare.status` und `protokoll_punkte.text` aller Sitzungen über
|
||||
`entitiesEntstapeln()` zurück.
|
||||
|
||||
## Behobene Fehler (Testlauf 10/2026, fünf Test-Agents)
|
||||
|
||||
- **Gesperrte Sitzungen sind für Nicht-Admins auch inhaltlich unveränderlich**:
|
||||
|
||||
Reference in new issue
Block a user