"use client" import { useEffect, useState } from "react" import { BarChart, Bar, XAxis, YAxis, CartesianGrid, Tooltip, Legend, ResponsiveContainer } from "recharts" import { AlertCircle } from "lucide-react" import { Alert, AlertDescription, AlertTitle } from "@/components/ui/alert" import { Skeleton } from "@/components/ui/skeleton" import { Tabs, TabsList, TabsTrigger } from "@/components/ui/tabs" import { Card, CardContent, CardDescription, CardHeader, CardTitle } from "@/components/ui/card" import { getSimulationStats } from "@/lib/simulation-service" interface StatisticsSummaryProps { simulation: any } export function StatisticsSummary({ simulation }: StatisticsSummaryProps) { const [loading, setLoading] = useState(true) const [error, setError] = useState(null) const [stats, setStats] = useState(null) const [statType, setStatType] = useState("byNodes") useEffect(() => { const fetchStats = async () => { try { setLoading(true) setError(null) const data = await getSimulationStats(simulation.id) setStats(data) } catch (err) { console.error("Error loading statistics:", err) setError("Failed to load statistics. Please try again later.") } finally { setLoading(false) } } fetchStats() }, [simulation.id]) if (loading) { return (
) } if (error) { return ( Error {error} ) } if (!stats) { return ( No data available No statistics available for this simulation. ) } return (
By Nodes By Failure Rate By Chi
Missing Samples Average percentage of missing samples
Nodes Ready Average percentage of nodes ready
Data Sent Average amount of data sent
Performance Comparison Comparison of key metrics across different{" "} {statType === "byNodes" ? "node counts" : statType === "byFailureRate" ? "failure rates" : "chi values"}
) }