"use client"; import Link from "next/link"; import { useState } from "react"; import { AenderungsTabelle } from "@/components/ui/AenderungsTabelle"; import { SlideOver } from "@/components/ui/SlideOver"; import { actionBadgeStyle } from "@/lib/colors"; import type { AuditChange } from "@/lib/types"; // Eine Protokollzeile zum Aufklappen. // // Die Liste zeigt, *dass* etwas geändert wurde; hier steht, *was*. Beides in // der Tabelle unterzubringen ginge nicht — bei sieben geänderten Feldern // wäre die Zeile höher als der Bildschirm. export type AuditEintrag = { id: string; occurred_at: string; actor_name: string; action: string; target_label: string; target_employee_id: string | null; details: string | null; changes: AuditChange[] | null; }; const zeitFormat = new Intl.DateTimeFormat("de-AT", { day: "2-digit", month: "2-digit", year: "numeric", hour: "2-digit", minute: "2-digit", second: "2-digit", timeZone: "Europe/Vienna", }); export function AuditDetail({ eintrag }: { eintrag: AuditEintrag }) { const [offen, setOffen] = useState(false); const anzahl = eintrag.changes?.length ?? 0; return ( <> setOffen(false)} title={eintrag.target_label} subtitle={`${eintrag.action} · ${zeitFormat.format(new Date(eintrag.occurred_at))}`} >
Aktion
{eintrag.action}
Benutzer:in
{eintrag.actor_name}
Zeitpunkt
{zeitFormat.format(new Date(eintrag.occurred_at))}
{eintrag.target_employee_id && ( <>
Objekt
{eintrag.target_label}
)}
{eintrag.details && (

{eintrag.details}

)}

Geänderte Felder

{anzahl > 0 ? (
) : ( // Kein Aufzählungszeichen für „nichts da“: der Grund ist wichtig, // damit niemand einen Fehler vermutet.

Für diesen Eintrag liegen keine Feldwerte vor. Vorgänge wie Eintritt, Austritt oder Import erfassen keine Einzelfelder — und Einträge von vor der Erweiterung des Protokolls haben nur die Feldnamen behalten, nicht die Werte. Nachliefern lässt sich das nicht.

)}
); }