@@ -15,6 +15,7 @@ import DownloadButton from "@/components/DownloadButton";
1515import { useAvailableModels } from "@/contexts/ModelContext" ;
1616import { buildModelSections , phaseLabel } from "@/utils/modelUtils" ;
1717import ModelAccordionLayout , { AccordionItem } from "@/components/ModelAccordionLayout" ;
18+ import { getCurrentModelId } from "@/dto/SimulationResults" ;
1819
1920interface GridResultsProps {
2021 result : GridSimulationResult ;
@@ -94,7 +95,7 @@ const GridPhaseChart: React.FC<GridPhaseChartProps> = ({ result, modelIndex, pha
9495 ) ) }
9596 { selectedSubstances . map ( ( substance ) => (
9697 < Table . Cell key = { substance } >
97- { sim . status === "done"
98+ { sim . results [ modelIndex ]
9899 ? formatConcentration ( pointOutput ( sim , substance , modelIndex , phaseKind ) ?? 0 )
99100 : sim . status === "error"
100101 ? "error"
@@ -145,7 +146,21 @@ const GridResults: React.FC<GridResultsProps> = ({ result }) => {
145146 const sections = buildModelSections ( inputModels , models ) ;
146147
147148 const erroredSimulations = simulations . filter ( ( sim ) => sim . status === "error" ) ;
148- const pendingSimulations = simulations . filter ( ( sim ) => sim . status === "pending" ) ;
149+ const pendingSims = simulations . filter ( ( sim ) => sim . status === "pending" ) ;
150+ const processingSims = simulations . filter ( ( sim ) => sim . status === "processing" ) ;
151+ const remainingCount = pendingSims . length + processingSims . length ;
152+
153+ const countByModel = ( sims : typeof simulations ) : Map < string , number > => {
154+ const counts = new Map < string , number > ( ) ;
155+ for ( const sim of sims ) {
156+ const id = getCurrentModelId ( sim ) ?? "unknown" ;
157+ counts . set ( id , ( counts . get ( id ) ?? 0 ) + 1 ) ;
158+ }
159+ return counts ;
160+ } ;
161+
162+ const formatModelCounts = ( byModel : Map < string , number > ) : string =>
163+ [ ...byModel . entries ( ) ] . map ( ( [ id , count ] ) => `${ count } ${ id } ` ) . join ( ", " ) ;
149164
150165 const xAxisSubstance = axes [ 0 ] ?. substance ?? "Unknown" ;
151166 const modelLabel = inputModels . map ( ( model ) => model . modelId ) . join ( " → " ) || "Unknown model" ;
@@ -165,13 +180,14 @@ const GridResults: React.FC<GridResultsProps> = ({ result }) => {
165180 < strong > { modelLabel } </ strong > .
166181 </ Typography >
167182
168- { pendingSimulations . length > 0 && (
183+ { remainingCount > 0 && (
169184 < Banner style = { { marginBottom : "1rem" } } >
170185 < Banner . Icon variant = "info" > ⏳</ Banner . Icon >
171186 < Banner . Message >
172- Showing partial results. { simulations . length - pendingSimulations . length } of{ " " }
173- { simulations . length } runs have finished; the remaining { pendingSimulations . length } appear as
174- they complete.
187+ Showing partial results. { simulations . length - remainingCount - erroredSimulations . length } of{ " " }
188+ { simulations . length } runs have finished.
189+ { processingSims . length > 0 && < > Processing: { formatModelCounts ( countByModel ( processingSims ) ) } .</ > }
190+ { pendingSims . length > 0 && < > Pending: { formatModelCounts ( countByModel ( pendingSims ) ) } .</ > }
175191 </ Banner . Message >
176192 </ Banner >
177193 ) }
0 commit comments