@@ -410,28 +410,26 @@ export default function ChartContainer({
410410 ) ;
411411 }
412412
413- const stats = [ ] ;
414-
415413 const metricElements = metrics . map ( ( metric , idx ) => {
416414 const key = metric . name || metric . keyword || `metric${ idx + 1 } ` ;
417415 const dataArray = metricDataArrays [ key ] || [ ] ;
418416 const showComparison = dataArray . length === 2 ;
419417
418+ let stats = null ;
420419 if ( showComparison ) {
421420 const normalDiff = getComparisonData ( dataArray [ 0 ] . data , dataArray [ 1 ] . data , 'normal' ) ;
422421 const absDiff = getComparisonData ( dataArray [ 0 ] . data , dataArray [ 1 ] . data , 'absolute' ) ;
423422 const relDiff = getComparisonData ( dataArray [ 0 ] . data , dataArray [ 1 ] . data , 'relative' ) ;
424423 const mean = arr => ( arr . reduce ( ( s , p ) => s + p . y , 0 ) / arr . length ) || 0 ;
425- stats . push ( {
426- label : key ,
424+ stats = {
427425 meanNormal : mean ( normalDiff ) ,
428426 meanAbsolute : mean ( absDiff ) ,
429427 meanRelative : mean ( relDiff )
430- } ) ;
428+ } ;
431429 }
432430
433431 return (
434- < div key = { key } className = "min-w-[600px] flex flex-col gap-3" >
432+ < div key = { key } className = "flex flex-col gap-3" >
435433 < ResizablePanel title = { key } initialHeight = { 440 } >
436434 < ChartWrapper
437435 chartId = { `metric-${ idx } ` }
@@ -452,32 +450,23 @@ export default function ChartContainer({
452450 />
453451 </ ResizablePanel >
454452 ) }
453+ { stats && (
454+ < div className = "bg-white rounded-lg shadow-md p-3" >
455+ < h4 className = "text-sm font-medium text-gray-700 mb-1" > { key } 差值统计</ h4 >
456+ < div className = "space-y-1 text-xs" >
457+ < p > Mean Difference: { stats . meanNormal . toFixed ( 6 ) } </ p >
458+ < p > Mean Absolute Error: { stats . meanAbsolute . toFixed ( 6 ) } </ p >
459+ < p > Mean Relative Error: { stats . meanRelative . toFixed ( 6 ) } </ p >
460+ </ div >
461+ </ div >
462+ ) }
455463 </ div >
456464 ) ;
457465 } ) ;
458466
459467 return (
460- < div className = "overflow-x-auto" >
461- < div className = "flex gap-3 w-max" >
462- { metricElements }
463- </ div >
464- { stats . length > 0 && (
465- < div className = "bg-white rounded-lg shadow-md p-3 mt-3" >
466- < h3 className = "text-base font-semibold text-gray-800 mb-2" > 差值分析统计</ h3 >
467- < div className = "grid grid-cols-1 md:grid-cols-2 gap-4" >
468- { stats . map ( s => (
469- < div key = { s . label } >
470- < h4 className = "text-sm font-medium text-gray-700 mb-1" > { s . label } 差值统计</ h4 >
471- < div className = "space-y-1 text-xs" >
472- < p > Mean Difference: { s . meanNormal . toFixed ( 6 ) } </ p >
473- < p > Mean Absolute Error: { s . meanAbsolute . toFixed ( 6 ) } </ p >
474- < p > Mean Relative Error: { s . meanRelative . toFixed ( 6 ) } </ p >
475- </ div >
476- </ div >
477- ) ) }
478- </ div >
479- </ div >
480- ) }
468+ < div className = "grid grid-cols-2 gap-3" >
469+ { metricElements }
481470 </ div >
482471 ) ;
483472}
0 commit comments