Skip to content

Dashboard: Diagramme aus dem Assistenten anpinnen

Kurzfassung

Jedes Diagramm im Web-Assistenten (/assistent) hat neben CSV/PNG einen Pin-Knopf. Ein Klick pinnt es dauerhaft ans Dashboard (Abschnitt „Angepinnte Diagramme“). Dort ist die Ansicht ruhig: Diagramm, Tabelle, Export. Die Einstellungen (Typ, Zeitraum, Gruppierung, Aufteilung, Kennzahl) öffnen sich erst hinter dem Stift; jede Umstellung wird gespeichert. Ein zweiter Pin-Klick (Chat) oder das Pin-aus-Symbol (Dashboard) entfernt den Pin.

Verhalten

  • Anpinnen speichert die Spec so, wie sie im Chat gerade eingestellt ist (nicht den Ursprungszustand).
  • Live-Daten: Trägt die Spec eine Herkunfts-Abfrage (query aus analytics.query), lädt das Dashboard die Zahlen beim Öffnen einmal neu und speichert den aktuellen Schnappschuss. Diagramme aus chart.render ohne Abfrage bleiben statisch.
  • Zeitraum ist fest: „Letzte 3 Monate“ wird als konkretes von/bis gespeichert und wandert nicht mit. Wer ein rollendes Fenster will, stellt es hinter dem Stift um (Preset) — der Zeitraum steht als Untertitel am Diagramm.
  • Je Nutzer und Mandant, höchstens 12 Pins, Reihenfolge = Reihenfolge des Anpinnens.
  • Pins werden mit dem Nutzer gelöscht (ON DELETE CASCADE).

Bausteine

EbeneDateiZweck
DBdatabase/migrations/110_dashboard_pinned_charts.sqlTabelle dashboard_pinned_charts (company_id, user_id, spec JSONB, position)
Validierungapps/app/src/lib/dashboard/pinned-charts.tsparsePinnedChartSpec = Zod-Schema chartSpecSchema + validateChartSpec, Größenlimit; Test pinned-charts.test.ts (npm run test:dashboard-pins)
APIapps/app/src/app/api/dashboard/charts/route.tsGET Liste, POST { spec } anpinnen (Limit 12)
APIapps/app/src/app/api/dashboard/charts/[id]/route.tsPATCH { spec } nach Umstellung, DELETE Pin entfernen — immer auf Session-Nutzer begrenzt
UI Chatapps/app/src/components/assistant/PinnableChartCard.tsxChart-Karte + Pin-Knopf, Rückmeldung „Am Dashboard angepinnt“
UI Dashboardapps/app/src/components/dashboard/PinnedCharts.tsxAbschnitt mit Stift (Einstellungen auf/zu), Pin-aus, Auto-Speichern (600 ms gesammelt)
Chart-Karteapps/app/src/components/charts/ChartCard.tsxneue Props toolbarExtra, onSpecChange, refreshOnMount; compact blendet die Einstellungen aus

Abnahme (Test)

  1. /assistent: „Umsatz pro Monat dieses Jahr“ → Diagramm → Pin klicken → Hinweis „Am Dashboard angepinnt“.
  2. /dashboard: Abschnitt „Angepinnte Diagramme“ zeigt es ohne Bedienelemente; Stift → Typ auf „Torte“, Zeitraum „Letzte 3 Monate“; Seite neu laden → Einstellungen bleiben.
  3. Pin-aus am Dashboard → Abschnitt verschwindet, wenn kein Pin mehr da ist.
  4. Chat: Pin-Knopf ein zweites Mal → „Vom Dashboard entfernt“.

Offen / Ideen

  • Reihenfolge per Drag & Drop, Pins für die ganze Firma (Rolle ≤ 2) statt nur je Nutzer.
  • Rollender Zeitraum (Preset statt fester von/bis) als eigene Option in der Spec.

Work7 · Software für Handwerksbetriebe