/** * 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 (

Calcul en cours...

); } if (!simulationResults && !analyticalResults) { return (

Aucun résultat disponible

Lancez une simulation pour voir les résultats

); } 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 */}

Coordinateur

{/* 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 */}

Coordinateur

{/* 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

)}
)}
); }