import React, { useState, useEffect, useCallback, useMemo } from "react"; import { useDashboardData } from "@/hooks/useDashboardData"; import { DashboardVisualization } from "../dashboard/DashboardVisualization"; import { EntityRelationAnalysisModal } from "../dashboard/modals/EntityRelationAnalysisModal"; import { TinyTrendChart } from "@/components/shared/TinyTrendChart"; import { EntityRelationTreeChart } from "@/components/shared/EntityRelationTreeChart"; import { generateTrendData, calculateFailureCount, } from "@/lib/trend-data-generator"; import { useAgentGraph } from "@/context/AgentGraphContext"; import { api } from "@/lib/api"; import { Card, CardContent, CardDescription, CardHeader, CardTitle, } from "@/components/ui/card"; import { Badge } from "@/components/ui/badge"; import { Button } from "@/components/ui/button"; import { Skeleton } from "@/components/ui/skeleton"; import { FileText, AlertCircle, Clock, Users, AlertTriangle, } from "lucide-react"; export function DashboardView() { const { state, actions } = useAgentGraph(); const { stats, recentActivity, isLoading, error, refresh } = useDashboardData(); // Modal states const [isEntityModalOpen, setIsEntityModalOpen] = useState(false); // Generate realistic trend data based on current traces const trendData = useMemo( () => generateTrendData(state.traces), [state.traces] ); // Load traces data when dashboard mounts (if not already loaded) const loadTracesData = useCallback(async () => { if (state.traces.length === 0 && !state.isLoading) { actions.setLoading(true); try { const tracesData = await api.traces.list(); actions.setTraces(Array.isArray(tracesData) ? tracesData : []); } catch (error) { actions.setError( error instanceof Error ? error.message : "Failed to load traces" ); actions.setTraces([]); } finally { actions.setLoading(false); } } }, [state.traces.length, state.isLoading, actions]); useEffect(() => { loadTracesData(); }, [loadTracesData]); const handleUploadTrace = () => { actions.setActiveView("upload"); }; return (
Traces ready •{" "} Graphs generated
) : ( )}Entities extracted •{" "} Relations connected
Processing errors tracked
{activity.action}
{activity.trace}
{activity.timestamp}
No recent activity