@@ -50,18 +50,22 @@ const getPerfMetrics = (snapshots, snapshotsIds) => {
50
50
} , [ ] )
51
51
}
52
52
53
- // traverse the snapshot for all components and their rendering time
54
- const traverse = ( snapshot , perfSnapshot ) => {
53
+ // traverse can either return all component rendering times or type of state component depending if 2nd argument is passed
54
+ const traverse = ( snapshot , data = { } ) => {
55
55
if ( ! snapshot . children [ 0 ] ) return
56
56
for ( let i = 0 ; i < snapshot . children . length ; i ++ ) {
57
- // perfSnapshot.state = snapshot.children[i].state
58
- if ( snapshot . children [ i ] . componentData . actualDuration ) {
59
- const renderTime = Number ( Number . parseFloat ( snapshot . children [ i ] . componentData . actualDuration ) . toPrecision ( 5 ) )
60
- perfSnapshot [ snapshot . children [ i ] . name + - [ i + 1 ] ] = renderTime
57
+ const componentName = snapshot . children [ i ] . name + - [ i + 1 ]
58
+ if ( ! data . snapshotId ) {
59
+ if ( snapshot . children [ i ] . state !== 'stateless' ) data [ componentName ] = 'STATEFUL'
60
+ else data [ componentName ] = snapshot . children [ i ] . state ;
61
+ }
62
+ else if ( snapshot . children [ i ] . componentData . actualDuration ) {
63
+ const renderTime = Number ( Number . parseFloat ( snapshot . children [ i ] . componentData . actualDuration ) . toPrecision ( 5 ) ) ;
64
+ data [ componentName ] = renderTime ;
61
65
}
62
- traverse ( snapshot . children [ i ] , perfSnapshot )
66
+ traverse ( snapshot . children [ i ] , data )
63
67
}
64
- return perfSnapshot
68
+ return data
65
69
}
66
70
67
71
const getSnapshotIds = ( obj , snapshotIds = [ ] ) => {
@@ -92,7 +96,7 @@ export default function PerformanceVisx({
92
96
tooltipLeft,
93
97
tooltipTop,
94
98
tooltipData,
95
- hideTooltip,
99
+ hideTooltip, ƒ
96
100
showTooltip
97
101
} = useTooltip < TooltipData > ( ) ;
98
102
@@ -101,8 +105,12 @@ let tooltipTimeout: number;
101
105
// filter and structure incoming data for VISX
102
106
const data = getPerfMetrics ( snapshots , getSnapshotIds ( hierarchy ) )
103
107
const keys = Object . keys ( data [ 0 ] ) . filter ( ( d ) => d !== "snapshotId" ) as CityName [ ] ;
108
+ const allComponentStates = traverse ( snapshots [ 0 ] )
109
+
110
+ console . log ( keys )
104
111
console . log ( 'data' , data )
105
112
console . log ( 'snapshots' , snapshots )
113
+ console . log ( allComponentStates )
106
114
107
115
// create array of total render times for each snapshot
108
116
const totalRenderArr = data . reduce ( ( totalRender , curSnapshot ) => {
@@ -280,6 +288,9 @@ console.log('height', height)
280
288
< div style = { { color : colorScale ( tooltipData . key ) } } >
281
289
< strong > { tooltipData . key } </ strong >
282
290
</ div >
291
+
292
+ < div > { allComponentStates [ tooltipData . key ] } </ div >
293
+
283
294
< div >
284
295
{ formatRenderTime ( tooltipData . bar . data [ tooltipData . key ] ) }
285
296
</ div >
0 commit comments