"use client"; import { useEffect, useMemo, useState } from "react"; import Link from "next/link"; import { useParams } from "next/navigation"; import { Download } from "lucide-react"; import DetailSection from "@/components/common/DetailSection"; import DocumentTypeBadge from "@/components/knowledge/DocumentTypeBadge"; import TagList from "@/components/knowledge/TagList"; import { buttonVariants } from "@/components/ui/button"; import { api } from "@/lib/api"; import type { KnowledgeDevice, KnowledgeDocument, KnowledgeNote } from "@/types/knowledge"; export default function KnowledgeDeviceDetailPage() { const params = useParams<{ id: string }>(); const [device, setDevice] = useState(null); const [documents, setDocuments] = useState([]); const [notes, setNotes] = useState([]); const [error, setError] = useState(""); useEffect(() => { Promise.all([ api.get(`/knowledge/devices/${params.id}`), api.get(`/knowledge/documents?device_id=${params.id}&limit=100`), api.get(`/knowledge/notes?device_id=${params.id}&limit=100`), ]).then(([deviceResponse, documentResponse, noteResponse]) => { setDevice(deviceResponse.data); setDocuments(documentResponse.data); setNotes(noteResponse.data); }).catch(() => setError("Gerät konnte nicht geladen werden")); }, [params.id]); const yearRange = useMemo(() => { if (!device) return "-"; if (!device.production_year_from && !device.production_year_to) return "-"; return `${device.production_year_from ?? "?"} - ${device.production_year_to ?? "?"}`; }, [device]); if (error) return

{error}

; if (!device) return

Gerät wird geladen...

; return (

{device.name}

{device.manufacturer.name}{device.model_number ? ` · ${device.model_number}` : ""}

Gerätetyp
{device.device_type || "-"}
Frequenzbereich
{device.frequency_range || "-"}
Baujahre
{yearRange}
Slug
{device.slug}
{device.notes &&

{device.notes}

}
{documents.map((document) => (
{document.title}
{document.file_name && }
))} {documents.length === 0 &&

Keine verknüpften Dokumente.

}
{notes.map((note) => (

{note.title}

{note.content}

))} {notes.length === 0 &&

Keine verknüpften Notizen.

}
); }