@@ -262,6 +262,32 @@ const HeaderTR = styled.tr`
262
262
background-color: var(--vscode-sideBar-background);
263
263
` ;
264
264
265
+ interface HeaderRowProps {
266
+ hasBefore ?: boolean ;
267
+ hasAfter ?: boolean ;
268
+ comparison : boolean ;
269
+ title : React . ReactNode ;
270
+ }
271
+
272
+ function HeaderRow ( props : HeaderRowProps ) {
273
+ const { comparison, hasBefore, hasAfter, title } = props ;
274
+ return (
275
+ < HeaderTR >
276
+ < ChevronCell />
277
+ { comparison ? (
278
+ < >
279
+ < NumberHeader > { hasBefore ? "Before" : "" } </ NumberHeader >
280
+ < NumberHeader > { hasAfter ? "After" : "" } </ NumberHeader >
281
+ < NumberHeader > { hasBefore && hasAfter ? "Delta" : "" } </ NumberHeader >
282
+ </ >
283
+ ) : (
284
+ < NumberHeader > Value</ NumberHeader >
285
+ ) }
286
+ < NameHeader > { title } </ NameHeader >
287
+ </ HeaderTR >
288
+ ) ;
289
+ }
290
+
265
291
interface HighLevelStatsProps {
266
292
before : Optional < PredicateInfo > ;
267
293
after : Optional < PredicateInfo > ;
@@ -277,15 +303,12 @@ function HighLevelStats(props: HighLevelStatsProps) {
277
303
( hasAfter && after . evaluationCount > 1 ) ;
278
304
return (
279
305
< >
280
- < HeaderTR >
281
- < ChevronCell > </ ChevronCell >
282
- { comparison && < NumberHeader > { hasBefore ? "Before" : "" } </ NumberHeader > }
283
- < NumberHeader > { hasAfter ? "After" : "" } </ NumberHeader >
284
- { comparison && (
285
- < NumberHeader > { hasBefore && hasAfter ? "Delta" : "" } </ NumberHeader >
286
- ) }
287
- < NameHeader > Stats</ NameHeader >
288
- </ HeaderTR >
306
+ < HeaderRow
307
+ hasBefore = { hasBefore }
308
+ hasAfter = { hasAfter }
309
+ title = "Stats"
310
+ comparison = { comparison }
311
+ />
289
312
{ showEvaluationCount && (
290
313
< PipelineStep
291
314
before = { hasBefore ? before . evaluationCount : undefined }
@@ -607,13 +630,7 @@ function ComparePerformanceWithData(props: {
607
630
) }
608
631
< Table >
609
632
< thead >
610
- < HeaderTR >
611
- < ChevronCell />
612
- { comparison && < NumberHeader > Before</ NumberHeader > }
613
- < NumberHeader > { comparison ? "After" : "Value" } </ NumberHeader >
614
- { comparison && < NumberHeader > Delta</ NumberHeader > }
615
- < NameHeader > Predicate</ NameHeader >
616
- </ HeaderTR >
633
+ < HeaderRow comparison = { comparison } title = "Predicate" />
617
634
</ thead >
618
635
< tbody >
619
636
< tr key = "total" >
@@ -765,27 +782,22 @@ function PredicateRow(props: PredicateRowProps) {
765
782
isPresent ( row . after ) ? row . after . pipelines : { } ,
766
783
) . map ( ( { name, first, second } , pipelineIndex ) => (
767
784
< Fragment key = { pipelineIndex } >
768
- < HeaderTR >
769
- < td > </ td >
770
- { comparison && (
771
- < NumberHeader > { first != null && "Before" } </ NumberHeader >
772
- ) }
773
- < NumberHeader > { second != null && "After" } </ NumberHeader >
774
- { comparison && (
775
- < NumberHeader >
776
- { first != null && second != null && "Delta" }
777
- </ NumberHeader >
778
- ) }
779
- < NameHeader >
780
- Tuple counts for '{ name } ' pipeline
781
- { comparison &&
782
- ( first == null
783
- ? " (after)"
784
- : second == null
785
- ? " (before)"
786
- : "" ) }
787
- </ NameHeader >
788
- </ HeaderTR >
785
+ < HeaderRow
786
+ hasBefore = { first != null }
787
+ hasAfter = { second != null }
788
+ comparison = { comparison }
789
+ title = {
790
+ < >
791
+ Tuple counts for '{ name } ' pipeline
792
+ { comparison &&
793
+ ( first == null
794
+ ? " (after)"
795
+ : second == null
796
+ ? " (before)"
797
+ : "" ) }
798
+ </ >
799
+ }
800
+ />
789
801
{ abbreviateRASteps ( first ?. steps ?? second ! . steps ) . map (
790
802
( step , index ) => (
791
803
< PipelineStep
0 commit comments