diff --git a/docs/SCOPE-ANALYTICS-DASHBOARD.md b/docs/SCOPE-ANALYTICS-DASHBOARD.md index cfcb16e..d4ae06e 100644 --- a/docs/SCOPE-ANALYTICS-DASHBOARD.md +++ b/docs/SCOPE-ANALYTICS-DASHBOARD.md @@ -107,7 +107,9 @@ mit anderem Titel. | Kennzahlen | Umsatz · Offene Forderungen · Aktive Aufträge · Ø Auslastung | Analytics, je ein Link in die Analyse | | Handlungsbedarf | die Liste über volle Breite | Analytics-Übersicht | | Diagramme | Zahlungseingang · Umsatz nach Gewerk · Vertriebstrichter · Auslastung | Analytics | -| Kommt noch | Meine Aufgaben · Termine heute · HR-Anträge | reservierte Plätze, **keine Daten** | + +Was **nicht** auf der Seite steht: die Bereiche, die später dazukommen. Siehe +„Wo die späteren Bereiche stehen" weiter unten. ### Drei Entscheidungen, die dabei getroffen wurden @@ -130,11 +132,30 @@ stellt. Unsere Kennzahlenreihe tut das. Ohne die Zeile fließt die vierte Kachel dank `grid-flow-row-dense` trotzdem an die richtige Stelle — nur ohne festen Anfang. Vermerkt in `components/dashboard/WidgetRaster.tsx`. -**Die reservierten Plätze zeigen keine erfundenen Zahlen.** „2 neue Anträge" +**Die späteren Bereiche stehen nicht auf dem Dashboard.** Ein +Begrüßungsbildschirm ist kein Ort für Ankündigungen — wer sich morgens +anmeldet, will seine Lage sehen und nicht lesen, was später einmal kommt. + +### Wo die späteren Bereiche stehen + +Meine Aufgaben, Termine heute und HR-Anträge sind an drei Stellen festgehalten, +alle drei für den Einbau gedacht und keine davon auf dem Begrüßungsbildschirm: + +1. **`RESERVIERTE_BEREICHE`** in `view-models/dashboard.vm.ts` — die Kacheln als + Datensatz, mit Titel, Beschreibung, Widget-Domäne und Quell-Feature. +2. **Ein markierter Kommentarblock in `pages/DashboardSeite.tsx`** an genau der + Stelle im Raster, an die sie gehören — mit den konkreten Werten + (`` mit `start={0}`, `{4}`, `{8}`). +3. **Die Bausteingalerie unter `/komponenten`**, Abschnitt „Reservierte + Kacheln" — dort sind sie gestaltet zu sehen. + +Alle drei sind im Designer-Brief P11 benannt und haben in HiveGrid bereits ihre +Widget-Domäne (`tasks`, `schedule`, `hr`). Sie brauchen kein neues Raster, nur +Daten. + +Gestaltet sind die Kacheln bewusst **ohne erfundene Zahlen**. „2 neue Anträge" aus dem Nichts liest sich in einer Abnahme wie eine fertige Funktion, und -irgendwann fragt jemand, warum die Zahl nie hochzählt. Die drei Kacheln stehen -gestrichelt und leer da und nennen, aus welchem Feature sie ihre Daten -bekommen werden. +irgendwann fragt jemand, warum die Zahl nie hochzählt. ### Die Doppelung, die jetzt im Repo steht diff --git a/features/dashboard/components/dashboard/ReservierteKachel.tsx b/features/dashboard/components/dashboard/ReservierteKachel.tsx index 630fd38..66a7aba 100644 --- a/features/dashboard/components/dashboard/ReservierteKachel.tsx +++ b/features/dashboard/components/dashboard/ReservierteKachel.tsx @@ -8,7 +8,13 @@ import type { ReservierterBereich } from "../../view-models/dashboard.vm"; * Das Dashboard zeigt heute nur Analytics, wird aber mehr: eigene Aufgaben, * Termine des Tages, offene HR-Anträge — alle drei stehen im Designer-Brief * P11 und haben in der Software bereits ihre Widget-Domäne (`tasks`, - * `schedule`, `hr`). Diese Kacheln halten ihnen den Platz frei. + * `schedule`, `hr`). + * + * **Diese Kacheln stehen nicht auf dem Dashboard**, sondern in der + * Bausteingalerie unter `/komponenten`. Ein Begrüßungsbildschirm ist kein Ort + * für Ankündigungen: Wer sich morgens anmeldet, will seine Lage sehen und + * nicht lesen, was später einmal kommt. Für den Einbau ist die Stelle im + * Raster als Kommentarblock in `pages/DashboardSeite.tsx` markiert. * * Sie zeigen ausdrücklich **keine erfundenen Zahlen**. Eine Kachel mit * „2 neue Anträge" aus dem Nichts liest sich in einer Abnahme wie eine diff --git a/features/dashboard/pages/DashboardSeite.tsx b/features/dashboard/pages/DashboardSeite.tsx index d9278b5..0bfe03e 100644 --- a/features/dashboard/pages/DashboardSeite.tsx +++ b/features/dashboard/pages/DashboardSeite.tsx @@ -3,7 +3,6 @@ import React from "react"; import Link from "next/link"; import { Begruessung } from "../components/dashboard/Begruessung"; -import { ReservierteKachel } from "../components/dashboard/ReservierteKachel"; import { Widget, WidgetRaster } from "../components/dashboard/WidgetRaster"; import { WidgetKachel } from "../components/dashboard/WidgetKachel"; import { KPICard } from "../components/cards/KPICard"; @@ -181,27 +180,30 @@ export function DashboardSeite({ vm }: { vm: VMState }) { - {/* Trennung vor den leeren Plätzen: Ohne sie stehen drei Kacheln - ohne Inhalt neben sechs mit Inhalt, und der Leser sucht den - Ladefehler. Die Überschrift beantwortet die Frage vorher. */} - -
-

- Kommt noch -

-

- Das Dashboard zeigt heute nur Auswertungen. Diese drei Bereiche sind dafür - vorgesehen und haben in HiveGrid bereits ihre Widget-Domäne — sie brauchen kein - neues Raster, nur Daten. -

-
-
+ {/* ──────────────────────────────────────────────────────────────── + HIER GEHT ES WEITER — an dieser Stelle, nicht woanders. - {d.reserviert.map((bereich, index) => ( - - - - ))} + Das Dashboard zeigt heute nur Auswertungen. Es wird mehr: eigene + Aufgaben, Termine des Tages, offene HR-Anträge. Alle drei stehen + im Designer-Brief P11 und haben in HiveGrid bereits ihre + Widget-Domäne (`tasks`, `schedule`, `hr`) — sie brauchen kein + neues Raster, nur Daten. + + Konkret kommen sie als drei weitere `` mit + `start={0}`, `{4}` und `{8}` unter diese Zeile. Das Raster darüber + bleibt dabei unangetastet; genau dafür ist es aus + `DashboardPage.tsx` übernommen. + + Die Kacheln sind beschrieben in `RESERVIERTE_BEREICHE` + (view-models/dashboard.vm.ts) und zu sehen unter „/komponenten", + Abschnitt „Dashboard-Kacheln". Der Zuschnitt steht in + docs/SCOPE-ANALYTICS-DASHBOARD.md, Abschnitt 3a. + + Warum sie hier nicht als Platzhalter stehen: Der + Begrüßungsbildschirm ist kein Ort für Ankündigungen. Wer sich + morgens anmeldet, will seine Lage sehen und nicht lesen, was + später einmal kommt. + ──────────────────────────────────────────────────────────────── */} diff --git a/features/dashboard/pages/KomponentenSeite.tsx b/features/dashboard/pages/KomponentenSeite.tsx index 8ad7be0..dcb80b0 100644 --- a/features/dashboard/pages/KomponentenSeite.tsx +++ b/features/dashboard/pages/KomponentenSeite.tsx @@ -19,6 +19,7 @@ import { AuftragBadge, RechnungBadge } from "../components/tables/StatusBadge"; import { SeitenZustand } from "../components/layout/SeitenZustand"; import { WidgetKachel } from "../components/dashboard/WidgetKachel"; import { ReservierteKachel } from "../components/dashboard/ReservierteKachel"; +import { RESERVIERTE_BEREICHE } from "../view-models/dashboard.vm"; import { Begruessung } from "../components/dashboard/Begruessung"; import type { VMState } from "../view-models"; import { @@ -346,18 +347,20 @@ export function KomponentenSeite() { /> - + - + + +
+ {RESERVIERTE_BEREICHE.map((bereich) => ( + + ))} +
+ +