import { useEffect, useState } from "react"; import { History, RefreshCw, CheckCircle, AlertTriangle, Trash2, Trash } from "lucide-react"; import { getHistory, deleteHistoryRecord, clearAllHistory } from "../services/api"; import { formatConfidence, formatDateTime } from "../utils/formatters"; export default function HistoryTable() { const [history, setHistory] = useState([]); const [loading, setLoading] = useState(false); const [error, setError] = useState(""); const [deletingIndex, setDeletingIndex] = useState(null); const [confirmClear, setConfirmClear] = useState(false); async function fetchHistory() { setLoading(true); setError(""); try { const res = await getHistory(); if (res.success) { setHistory(res.data || []); } else { setError(res.message || "Gagal memuat riwayat"); } } catch { setError("Riwayat belum tersedia."); } finally { setLoading(false); } } useEffect(() => { fetchHistory(); }, []); async function handleDelete(index) { try { const res = await deleteHistoryRecord(index); if (res.success) { setDeletingIndex(null); fetchHistory(); } else { setError(res.message); } } catch { setError("Gagal menghapus riwayat"); } } async function handleClearAll() { try { const res = await clearAllHistory(); if (res.success) { setConfirmClear(false); fetchHistory(); } else { setError(res.message); } } catch { setError("Gagal menghapus semua riwayat"); } } return (

Riwayat Deteksi

{history.length > 0 && ( confirmClear ? (
) : ( ) )}
{error && (
{error}
)} {loading ? (
Memuat riwayat...
) : history.length === 0 ? (
Belum ada riwayat deteksi.
) : (
{history.map((h, i) => ( ))}
Waktu File Plat Status Pemilik Confidence Aksi
{formatDateTime(h.waktu || h.time)} {h.nama_file || h.file_name || "-"} {h.plate || "-"} {h.status === "Terdaftar" ? ( Terdaftar ) : ( Tidak Terdaftar )} {h.owner_name || h.owner || "-"} {formatConfidence(h.confidence_yolo)}
{deletingIndex === i ? (
) : ( )}
)}
); }