CI / pruefen (pull_request) Canceled after 0s
Eine Seite, die aus dem vorhandenen Aktivitaetsverlauf zusammenfasst, was in
einer Woche ueber alle Projekte hinweg passiert ist: Kennzahlen oben, darunter
die Vorgaenge nach Kalendertagen gebuendelt, neuester Tag zuerst. Blaettern in
frueher Wochen ueber ?woche=-n.
Der Verlauf kennt keinen Besitzer - die Trennung laeuft ueber das Projekt,
"project: { ownerId }" steht als erste Bedingung.
Zwei Dinge, die sonst still falsch werden:
- **Wochengrenzen** stehen als pruefbare Funktion in lib/review, nicht in der
Seite. Gerechnet wird ueber Berliner Kalendertage, nicht ueber "sieben mal
24 Stunden": liegt eine Zeitumstellung in der Woche, hat sie 167 oder 169
Stunden. Und im Container laeuft die Anwendung nach UTC, ein Eintrag von
Sonntagabend fiele sonst in die falsche Woche.
- **"Aufgaben erledigt"** wird am meta-Feld abgelesen (to: "DONE") und nicht
am Anzeigetext. Der Text ist zum Lesen da und aendert sich mit der
Formulierung; eine Zaehlung daran wuerde beim naechsten umformulierten
Einzeiler unbemerkt kippen. Eintraege ohne meta zaehlen nicht mit - lieber
untertreiben als raten.
Damit completeTaskFromIssue dieselbe Grundlage liefert, schreibt es jetzt
ebenfalls from/to ins meta, wie es das Verschieben von Hand schon tut.
Die Zuordnung Symbol/Farbe je Eintragsart lag bisher in ActivityFeed und wird
jetzt von zwei Stellen gebraucht - herausgezogen nach components/activityKinds,
sonst laufen die Kopien beim naechsten neuen Eintragstyp auseinander.
Erreichbar ueber die Schnellsuche und einen Verweis vom Dashboard. Bewusst
kein vierter Punkt in der Kopfleiste - die ist auf dem Telefon schon eng.
Geprueft: 20 neue Unit-Tests (Wochengrenzen inklusive beider Zeitumstellungen,
Jahreswechsel, Zaehlung), ein E2E-Test ueber Aufruf und Blaettern, axe-core auf
375px und 1280px ueber drei Zustaende - auch die leere Woche - ohne
Beanstandung, kein seitlicher Ueberlauf.
Refs #2
44 lines
1.9 KiB
TypeScript
44 lines
1.9 KiB
TypeScript
import {
|
||
AlertTriangle,
|
||
ArrowRight,
|
||
Download,
|
||
GitCommitHorizontal,
|
||
Link2,
|
||
NotebookPen,
|
||
Pencil,
|
||
Plus,
|
||
Signpost,
|
||
Sparkles,
|
||
Trash2,
|
||
} from "lucide-react";
|
||
import type { ActivityKind } from "@prisma/client";
|
||
|
||
/**
|
||
* Symbol und Farbe je Art eines Verlaufseintrags.
|
||
*
|
||
* Ausgelagert, weil sie inzwischen an zwei Stellen gebraucht werden: im
|
||
* Verlauf eines Projekts und im Wochenrueckblick ueber alle Projekte. Zwei
|
||
* Kopien liefen beim naechsten neuen Eintragstyp auseinander.
|
||
*
|
||
* Bewusst ohne "use client" und ohne Prisma-Zugriff – nur Typen und
|
||
* Symbole, damit beide Seiten es importieren koennen.
|
||
*/
|
||
export const ACTIVITY_KINDS: Record<
|
||
ActivityKind,
|
||
{ icon: typeof Sparkles; color: string; label: string }
|
||
> = {
|
||
PROJECT_CREATED: { icon: Sparkles, color: "text-violet-300", label: "Projekt angelegt" },
|
||
PROJECT_UPDATED: { icon: Pencil, color: "text-slate-400", label: "Projekt bearbeitet" },
|
||
STATUS_CHANGED: { icon: Signpost, color: "text-cyan-300", label: "Status geändert" },
|
||
NOTE_ADDED: { icon: NotebookPen, color: "text-blue-300", label: "Notiz" },
|
||
NOTE_UPDATED: { icon: Pencil, color: "text-blue-300", label: "Notiz bearbeitet" },
|
||
NOTE_DELETED: { icon: Trash2, color: "text-rose-300", label: "Notiz gelöscht" },
|
||
TASK_ADDED: { icon: Plus, color: "text-emerald-300", label: "Aufgabe angelegt" },
|
||
TASK_MOVED: { icon: ArrowRight, color: "text-violet-300", label: "Aufgabe verschoben" },
|
||
TASK_DELETED: { icon: Trash2, color: "text-rose-300", label: "Aufgabe gelöscht" },
|
||
TASKS_IMPORTED: { icon: Download, color: "text-amber-300", label: "Aufgaben übernommen" },
|
||
REPO_LINKED: { icon: Link2, color: "text-cyan-300", label: "Repository verknüpft" },
|
||
REPO_COMMITS: { icon: GitCommitHorizontal, color: "text-emerald-300", label: "Commits" },
|
||
SYNC_FAILED: { icon: AlertTriangle, color: "text-rose-300", label: "Abgleich fehlgeschlagen" },
|
||
};
|