import { useTranslation } from "react-i18next"; import { RotateCcw, Zap } from "lucide-react"; import { useRestore, useStatus, useLogs } from "@/lib/queries"; import { useToast } from "@/components/toast"; import { Badge } from "@/components/ui/badge"; import { Button } from "@/components/ui/button"; import { Card, CardContent, CardHeader, CardTitle } from "@/components/ui/card"; import { Table, TBody, TD, TH, THead, TR } from "@/components/ui/table"; function formatUptime(seconds: number): string { if (seconds < 60) return `${seconds}s`; if (seconds < 3600) return `${Math.floor(seconds / 60)}m ${seconds % 60}s`; return `${Math.floor(seconds / 3600)}h ${Math.floor((seconds % 3600) / 60)}m`; } function formatTime(iso: string): string { const date = new Date(iso); return date.toLocaleTimeString(); } export default function Dashboard() { const { t } = useTranslation(); const status = useStatus(); const logs = useLogs(); const restore = useRestore(); const { show } = useToast(); if (status.isPending) { return
| {t("dashboard.tableTime")} | {t("dashboard.tableModel")} | {t("dashboard.tableStatus")} | {t("dashboard.tableDuration")} | {t("dashboard.tableTokens")} |
|---|---|---|---|---|
| {formatTime(entry.time)} | {entry.model ?? entry.path} |
|
{entry.duration_ms} ms | {entry.input_tokens ?? 0} / {entry.output_tokens ?? 0} |