Dashboard als Widget-Flaeche bauen, Platzhalter ersetzen
Das Dashboard ist ein eigenes Feature neben Analytics: der Begruessungsbildschirm, nicht ein zweiter Analysebereich. Es zeigt heute nur Auswertungen, ist aber so gebaut, dass die spaeteren Bereiche als weitere Kacheln dazukommen und nicht als Umbau. Aufbau: Begruessung, vier Kennzahlen (je ein Link in die Analyse), Handlungsbedarf, vier Diagramme, drei reservierte Plaetze. Drei Entscheidungen, die dabei getroffen wurden: - Kein seitenweiter Filter. Jede Kachel traegt ihren eigenen Zeitraum und schreibt ihn in den Kopf. Das ist das Bedienmodell der Software (P11) und war die unbequemere Variante; eine Filterleiste haette beim Einbau alle Kacheln wieder auseinandergenommen. - Das Raster ist aus DashboardPage.tsx der Software uebernommen, nicht erfunden: dieselben Klassen, dieselbe Ableitung aus size.w und position.x. Der Software fehlt dafuer eine Zeile (position.x === 9); vermerkt in WidgetRaster.tsx. - Die reservierten Plaetze zeigen keine erfundenen Zahlen. "2 neue Antraege" aus dem Nichts liest sich in einer Abnahme wie eine fertige Funktion. Absichtliche Doppelung: Der Handlungsbedarf steht jetzt auf dem Dashboard und weiterhin auf der Analytics-Uebersicht. Ihn dort zu entfernen haette die offene Frage 5.1 mitentschieden. Dokumentiert in Abschnitt 3a des Scope-Papiers, aufzuloesen vor dem Port. Nebenbei zwei Fehler behoben, die auch Analytics betrafen: - Die Beschriftungen der Zeitachse liefen in schmalen Karten ineinander (fuenf Kalenderwochen brauchen 200px, eine halbe Kachel bei 768px hat 150). Recharts duennt sie jetzt selbst aus und haelt Anfang und Ende. - Das Zeitraum-Etikett im Kachelkopf schaltete per Viewport-Breakpoint, die Kachelbreite haengt aber am Raster. Bei 1024px blieben dem Untertitel 77px, und er lief ins Diagramm. Jetzt Container-Query. Die Wurzel leitet auf /dashboard statt /analytics — wie in der Software, wo nach der Anmeldung der Begruessungsbildschirm steht. tsc, lint, build, verify:carbon und verify:layout (7 Seiten x 9 Breiten) laufen sauber. Co-Authored-By: Claude Opus 5 (1M context) <noreply@anthropic.com> Claude-Session: https://claude.ai/code/session_01QPeZNwSeU7qG3RRCwaxEZX
This commit is contained in:
1 parent
4cb0b5c799
commit
831a6ec9ad
19 files changed
+1085
-125
No files matched your search
+6
-5
@@ -9,7 +9,7 @@ was dazukommt, nicht was schon da ist.
|
||||
|
||||
```
|
||||
HIVEGRID
|
||||
├── Dashboard Platzhalterseite — eigenes Feature, hier nicht gestaltet
|
||||
├── Dashboard Begrüßungsbildschirm — Widget-Fläche /dashboard
|
||||
└── Analytics ◄── der Prototyp lebt hier /analytics
|
||||
├─────────────────────
|
||||
└── Komponenten Bausteingalerie des Prototyps /komponenten
|
||||
@@ -69,10 +69,11 @@ Leads mit seinen acht. Drei Gründe geben den Ausschlag:
|
||||
Ein weiterer Vorteil: Die Leiste wächst. Käme eine sechste Analyse-Seite dazu,
|
||||
ist das eine Zeile mehr — ein Reiterband würde eng.
|
||||
|
||||
„Dashboard" führt auf eine **Platzhalterseite** unter `/dashboard`: ein
|
||||
Leerzustand, der erklärt, warum hier nichts steht und was später hinkommt. Ein
|
||||
Menüpunkt, der nur einen Hinweis auslöst, lässt offen, ob etwas fehlt oder
|
||||
etwas kaputt ist. Siehe
|
||||
„Dashboard" führt auf den **Begrüßungsbildschirm** unter `/dashboard`. Er hat
|
||||
bewusst **keine innere Leiste und keine Filterleiste**: Er ist eine einzelne
|
||||
Seite aus Kacheln, und jede Kachel trägt ihren eigenen Zeitraum. Das ist der
|
||||
sichtbarste Unterschied zwischen den beiden Menüpunkten — Analytics ist ein
|
||||
Bereich, das Dashboard eine Seite. Siehe
|
||||
[SCOPE-ANALYTICS-DASHBOARD.md](SCOPE-ANALYTICS-DASHBOARD.md).
|
||||
|
||||
### Schmale Fenster
|
||||
|
||||
@@ -1,8 +1,9 @@
|
||||
# Scope: Analytics und Dashboard sind zwei Features
|
||||
|
||||
**Stand: 29.08.2026.** Von den offenen Punkten in Abschnitt 5 ist bisher genau
|
||||
einer entschieden und gebaut: die Navigation (5.5). Alles andere ist mit den
|
||||
Kollegen zu klären, bevor jemand Code anfasst.
|
||||
**Stand: 31.08.2026.** Entschieden und gebaut sind die Navigation (5.5) und
|
||||
der erste Aufschlag des Dashboards (Abschnitt 3a). Offen und mit den Kollegen
|
||||
zu klären bleiben 5.1, 5.3 und 5.6 — sie betreffen eine **Doppelung, die
|
||||
gerade absichtlich im Repo steht** und in Abschnitt 3a benannt ist.
|
||||
|
||||
---
|
||||
|
||||
@@ -92,6 +93,76 @@ wie sie sind.
|
||||
|
||||
---
|
||||
|
||||
## 3a. Was am 31.08.2026 gebaut wurde
|
||||
|
||||
Das Dashboard existiert unter `/dashboard` — als **erster Aufschlag mit
|
||||
Analytics-Inhalten**, aber als Widget-Fläche gebaut, nicht als Analytics-Seite
|
||||
mit anderem Titel.
|
||||
|
||||
### Aufbau
|
||||
|
||||
| Reihe | Kacheln | Herkunft |
|
||||
|---|---|---|
|
||||
| Begrüßung | Anrede, Datum, Rolle, ein Satz zur Lage | neu (`hero`-Widget) |
|
||||
| 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** |
|
||||
|
||||
### Drei Entscheidungen, die dabei getroffen wurden
|
||||
|
||||
**Kein seitenweiter Filter.** Jede Kachel trägt ihren eigenen Zeitraum und
|
||||
schreibt ihn in den Kopf („letzte 30 Tage", „zum Stichtag"). Das ist das
|
||||
Bedienmodell der Software (5.4) und war die unbequemere Variante: Eine
|
||||
Filterleiste über der Seite wäre schneller gebaut gewesen und hätte beim
|
||||
Einbau alle Kacheln wieder auseinandergenommen.
|
||||
|
||||
**Das Raster ist aus der Software übernommen, nicht erfunden.** Es ist
|
||||
zeichengleich das Raster aus `DashboardPage.tsx`; jede Kachel steht in
|
||||
`<Widget breite={…} start={…}>`, und diese beiden Zahlen sind dort
|
||||
`widget.size.w` und `widget.position.x`. Der Unterschied ist die Herkunft: Im
|
||||
Prototyp sind sie geschrieben, in der Software gespeichert und vom Benutzer
|
||||
bearbeitbar.
|
||||
|
||||
*Eine Zeile fehlt der Software dafür:* `dashboardWidgetGridClass` kennt keinen
|
||||
Fall `position.x === 9`, weil bisher keine Rolle vier Kacheln nebeneinander
|
||||
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"
|
||||
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.
|
||||
|
||||
### Die Doppelung, die jetzt im Repo steht
|
||||
|
||||
**Der Handlungsbedarf steht ab sofort an zwei Stellen:** auf dem Dashboard und
|
||||
weiterhin auf der Analytics-Übersicht. Das ist Absicht und vorläufig.
|
||||
|
||||
Nach Abschnitt 3.2 gehört er ins Dashboard. Ihn gleichzeitig aus der Übersicht
|
||||
zu entfernen, hätte aber 5.1 mitentschieden — die Frage, ob es die
|
||||
Übersichtsseite überhaupt weiter gibt —, und das ist keine Entscheidung, die
|
||||
beim Bauen nebenbei fällt. Solange 5.1 offen ist, steht er doppelt.
|
||||
|
||||
**Beim Einbau ist das zu bereinigen, nicht zu übernehmen.** Zwei
|
||||
Einstiegsseiten mit derselben Arbeitsliste sind kein Entwurf, sondern ein
|
||||
Versehen, das sich als Entwurf tarnt.
|
||||
|
||||
### Was das Dashboard noch nicht hat
|
||||
|
||||
- **Keine Rollenumschaltung.** Gestaltet ist die Sicht der Geschäftsführung.
|
||||
Büro und Monteur entstehen aus denselben Kacheln in anderer Zusammenstellung
|
||||
(P11) — das ist eine Produktentscheidung, keine Gestaltungsfrage.
|
||||
- **Keinen Bearbeitungsmodus.** Die Software hat ihn (`DashboardEditPanel`,
|
||||
Widget-Katalog, gespeichertes Layout). Der Prototyp bildet ihn nicht nach;
|
||||
er zeigt das Ergebnis, nicht das Werkzeug.
|
||||
- **Keine Live-Aktualisierung.** Ebenfalls vorhanden in der Software
|
||||
(`liveUpdatesEnabled`) und hier ohne Gegenstück.
|
||||
|
||||
---
|
||||
|
||||
## 4. Wie die beiden zusammenhängen
|
||||
|
||||
```
|
||||
@@ -122,13 +193,17 @@ Nicht entschieden. Reihenfolge nach Tragweite:
|
||||
Begrüßungscharakter und wird zur reinen Kennzahlen-Zusammenfassung.
|
||||
- *C:* Sie entfällt; Analytics besteht aus vier fachlichen Seiten.
|
||||
|
||||
**5.2 Welche Analytics-Charts werden Dashboard-Widgets?**
|
||||
Der Katalog braucht eine Auswahl. Nicht jedes Chart taugt als Kachel — der
|
||||
Vertriebstrichter etwa lebt von der Übergangsquote und wird klein unlesbar.
|
||||
**5.2 Welche Analytics-Charts werden Dashboard-Widgets? — Vorschlag steht.**
|
||||
Gebaut sind vier: Zahlungseingang, Umsatz nach Gewerk, Vertriebstrichter,
|
||||
Auslastung. Der Trichter war der Zweifelsfall (er lebt von der Übergangsquote
|
||||
und wird klein unlesbar); er steht deshalb auf sechs von zwölf Spalten und
|
||||
nicht auf vier. Die Auswahl ist ein Vorschlag zur Abnahme, keine Festlegung.
|
||||
|
||||
**5.3 Wo lebt der Handlungsbedarf?**
|
||||
Vermutlich Dashboard. Dann fehlt Analytics die Handlungsebene — bewusst
|
||||
akzeptieren oder anders lösen.
|
||||
**5.3 Wo lebt der Handlungsbedarf? — jetzt an beiden Orten.**
|
||||
Er steht seit dem 31.08. auf dem Dashboard und weiterhin auf der
|
||||
Analytics-Übersicht, weil das Entfernen 5.1 mitentschieden hätte. Siehe
|
||||
Abschnitt 3a. Das ist der dringlichste der offenen Punkte, weil er als
|
||||
einziger sichtbar doppelt im Repo steht.
|
||||
|
||||
**5.4 Zeitraum-Modell im Dashboard.**
|
||||
Globaler Filter wie in Analytics oder pro Widget wie in P11? Die Software hat
|
||||
@@ -151,8 +226,15 @@ Unabhängig davon offen, weil Zeiterfassung im v2-Backlog steht — siehe
|
||||
|
||||
## 6. Bis zur Klärung
|
||||
|
||||
Am Code ändert sich nichts. Der Prototyp bleibt in seinem jetzigen Zuschnitt
|
||||
brauchbar: Die Diagrammbausteine, Kennzahl-Definitionen und Regeln gelten
|
||||
unabhängig davon, wie die beiden Features später geschnitten werden. Die
|
||||
Übersichtsseite ist im Zweifel der Entwurf für das Dashboard — dann wäre sie
|
||||
nicht falsch, sondern nur am falschen Ort.
|
||||
Die Diagrammbausteine, Kennzahl-Definitionen und Regeln gelten unabhängig
|
||||
davon, wie die beiden Features später geschnitten werden — sie sind von der
|
||||
Frage nicht betroffen.
|
||||
|
||||
Betroffen ist genau eine Stelle: die Übersichtsseite. Fällt 5.1 auf „sie wird
|
||||
das Dashboard", dann ist die Arbeit größtenteils getan — der Handlungsbedarf
|
||||
steht schon dort, die Kennzahlen auch —, und die Übersichtsseite entfällt.
|
||||
Fällt sie anders, verliert das Dashboard nichts; die Übersicht behält den
|
||||
Handlungsbedarf und das Dashboard gibt ihn ab.
|
||||
|
||||
In beiden Fällen ist die Doppelung aus Abschnitt 3a aufzulösen, bevor der Port
|
||||
beginnt.
|
||||
+13
-6
@@ -53,13 +53,20 @@ Nur das Fachliche und das Analytics-Eigene:
|
||||
### Was aus diesem Repo Gerüst ist und wegfällt
|
||||
|
||||
`components/layout/AppShell.tsx`, unsere Kopie der Seitenleiste, `PageHeader`,
|
||||
die Kopfzeile mit Suche und Glocke, die Routen unter `app/` und die
|
||||
Platzhalterseite für das Dashboard. All das existiert, damit der Prototyp
|
||||
alleine lauffähig und beurteilbar ist. Beim Einbau übernehmen
|
||||
`SubframeAppShell`, `AppSidebar`, `PageShell` und die Loader der Software.
|
||||
die Kopfzeile mit Suche und Glocke, die Routen unter `app/` und die Attrappe
|
||||
des angemeldeten Benutzers (`data/nutzer.ts`). All das existiert, damit der
|
||||
Prototyp alleine lauffähig und beurteilbar ist. Beim Einbau übernehmen
|
||||
`SubframeAppShell`, `AppSidebar`, `PageShell`, `requireMember` und die Loader
|
||||
der Software.
|
||||
|
||||
**Kurz:** Aus diesem Repo kommt der Inhalt des Analytics-Bereichs und die
|
||||
Verabredung, wo er in der Navigation sitzt. Alles andere kommt aus HiveGrid.
|
||||
Das **Kachelraster des Dashboards** ist die Ausnahme in dieser Liste: Es ist
|
||||
kein Gerüst, sondern aus `DashboardPage.tsx` der Software übernommen —
|
||||
dieselben Klassen, dieselbe Ableitung aus `size.w` und `position.x`. Es fällt
|
||||
nicht weg, es trifft dort auf sein Original.
|
||||
|
||||
**Kurz:** Aus diesem Repo kommt der Inhalt des Analytics-Bereichs, der Aufbau
|
||||
des Dashboards und die Verabredung, wo beide in der Navigation sitzen. Alles
|
||||
andere kommt aus HiveGrid.
|
||||
|
||||
---
|
||||
|
||||
|
||||
Reference in new issue
Block a user