/**
* Results display component - shows simulation results, analytical results, and comparison.
*/
import { useState } from 'react';
import { useSimulationStore } from '../../store/simulationStore';
import MetricsCard from './MetricsCard';
import ComparisonTable from './ComparisonTable';
import NetworkDiagram from '../visualization/NetworkDiagram';
import UtilizationChart from '../visualization/UtilizationChart';
import MetricsComparisonChart from '../visualization/MetricsComparisonChart';
export default function ResultsDisplay() {
const {
config,
simulationResults,
analyticalResults,
comparisonResults,
isLoading,
} = useSimulationStore();
const [activeTab, setActiveTab] = useState<'metrics' | 'visualizations' | 'comparison'>('metrics');
if (isLoading) {
return (
{/* Tabs */}
{/* Stability indicator */}
{(simulationResults || analyticalResults) && (
{(simulationResults?.is_stable ?? analyticalResults?.is_stable)
? 'Système stable'
: 'Système instable'}
{!simulationResults?.is_stable && simulationResults?.stability_notes && (
{simulationResults.stability_notes}
)}
{!analyticalResults?.is_stable && analyticalResults?.instability_reason && (
{analyticalResults.instability_reason}
)}
)}
{/* Metrics Tab */}
{activeTab === 'metrics' && (
{/* Simulation results */}
{simulationResults && (
Résultats de simulation
{/* Coordinator stats */}
{/* Server stats */}
{Object.entries(simulationResults.server_stats).map(([serverId, stats]) => (
{serverId.replace('_', ' ').charAt(0).toUpperCase() +
serverId.replace('_', ' ').slice(1)}
))}
)}
{/* Analytical results */}
{analyticalResults && (
Résultats analytiques (Théorème de Jackson)
{/* Coordinator analytics */}
{/* Server analytics */}
{Object.entries(analyticalResults.servers).map(([serverId, analytics]) => (
{serverId.replace('_', ' ').charAt(0).toUpperCase() +
serverId.replace('_', ' ').slice(1)}
))}
)}
)}
{/* Visualizations Tab */}
{activeTab === 'visualizations' && (
{/* Network diagram */}
{config && (
)}
{/* Utilization chart */}
{(simulationResults || analyticalResults) && (
)}
{/* Metrics charts */}
{analyticalResults && (
)}
{(simulationResults || analyticalResults) && (
)}
)}
{/* Comparison Tab */}
{activeTab === 'comparison' && (
{comparisonResults ? (
<>
Comparaison Analytique vs Simulation
{/* Visualization of comparison */}
>
) : (
Lancez une simulation pour voir la comparaison avec les résultats analytiques
)}
)}
);
}