@@ -71,16 +71,17 @@ const tooltipStyles = {
71
71
} ;
72
72
73
73
/* DATA HANDLING HELPER FUNCTIONS */
74
- const traverse = ( snapshot , data ) => {
74
+ const traverse = ( snapshot , data , currMaxTotalRender = 0 ) => {
75
75
if ( ! snapshot . children [ 0 ] ) return ;
76
-
76
+ // data.maxTotalRender
77
77
// loop through snapshots
78
78
snapshot . children . forEach ( ( child , idx ) => {
79
79
const componentName = child . name + - [ idx + 1 ] ;
80
80
81
81
// Get component Rendering Time
82
82
const renderTime = Number ( Number . parseFloat ( child . componentData . actualDuration ) . toPrecision ( 5 ) ) ;
83
-
83
+ // sums render time for all children
84
+ currMaxTotalRender += renderTime ;
84
85
// components as keys and set the value to their rendering time
85
86
data [ 'barStack' ] [ data . barStack . length - 1 ] [ componentName ] = renderTime ;
86
87
@@ -103,8 +104,10 @@ const traverse = (snapshot, data) => {
103
104
data . componentData [ componentName ] . totalRenderTime += renderTime ;
104
105
// Get rtid for the hovering feature
105
106
data . componentData [ componentName ] . rtid = child . rtid ;
106
- traverse ( snapshot . children [ idx ] , data ) ;
107
+ traverse ( snapshot . children [ idx ] , data , currMaxTotalRender ) ;
107
108
} )
109
+ // reassigns total render time to max render time
110
+ data . maxTotalRender = Math . max ( currMaxTotalRender , data . maxTotalRender ) ;
108
111
return data ;
109
112
} ;
110
113
@@ -123,6 +126,7 @@ const getPerfMetrics = (snapshots, snapshotsIds): any[] => {
123
126
const perfData = {
124
127
barStack : [ ] ,
125
128
componentData : { } ,
129
+ maxTotalRender : 0
126
130
} ;
127
131
snapshots . forEach ( ( snapshot , i ) => {
128
132
perfData . barStack . push ( { snapshotId : snapshotsIds [ i ] } ) ;
@@ -147,16 +151,6 @@ const PerformanceVisx = (props: BarStackProps) => {
147
151
const data = getPerfMetrics ( snapshots , getSnapshotIds ( hierarchy ) ) ;
148
152
const keys = Object . keys ( data . componentData ) ;
149
153
150
- // create array of total render times for each snapshot
151
- const totalRenderArr = data . barStack . reduce ( ( totalRender , curSnapshot ) => {
152
- const curRenderTotal = keys . reduce ( ( acc , cur ) => {
153
- acc += Number ( curSnapshot [ cur ] ) ;
154
- return acc ;
155
- } , 0 ) ;
156
- totalRender . push ( curRenderTotal ) ;
157
- return totalRender ;
158
- } , [ ] as number [ ] ) ;
159
-
160
154
// data accessor (used to generate scales) and formatter (add units for on hover box)
161
155
const getSnapshotId = ( d : snapshot ) => d . snapshotId ;
162
156
const formatSnapshotId = ( id ) => `Snapshot ID: ${ id } ` ;
@@ -169,11 +163,10 @@ const PerformanceVisx = (props: BarStackProps) => {
169
163
} ) ;
170
164
171
165
const renderingScale = scaleLinear < number > ( {
172
- domain : [ 0 , Math . max ( ... totalRenderArr ) ] ,
166
+ domain : [ 0 , data . maxTotalRender ] ,
173
167
nice : true ,
174
168
} ) ;
175
169
176
-
177
170
const colorScale = scaleOrdinal < string > ( {
178
171
domain : keys ,
179
172
range : schemeSet3 ,
@@ -220,7 +213,13 @@ const PerformanceVisx = (props: BarStackProps) => {
220
213
>
221
214
{ barStacks =>
222
215
barStacks . map ( barStack =>
223
- barStack . bars . map ( ( ( bar , idx ) => (
216
+ barStack . bars . map ( ( ( bar , idx ) => {
217
+ // hides new components if components don't exist in previous snapshots
218
+ if ( Number . isNaN ( bar . bar [ 1 ] ) ) {
219
+ console . log ( 'bar is NaN: ' , bar . bar ) ;
220
+ bar . height = 0 ;
221
+ }
222
+ return (
224
223
< rect
225
224
key = { `bar-stack-${ barStack . index } -${ bar . index } ` }
226
225
x = { bar . x }
@@ -231,6 +230,7 @@ const PerformanceVisx = (props: BarStackProps) => {
231
230
/* TIP TOOL EVENT HANDLERS */
232
231
// Hides tool tip once cursor moves off the current rect
233
232
onMouseLeave = { ( ) => {
233
+ console . log ( 'bar: ' , bar )
234
234
dispatch ( onHoverExit ( data . componentData [ bar . key ] . rtid ) ,
235
235
tooltipTimeout = window . setTimeout ( ( ) => {
236
236
hideTooltip ( )
@@ -249,7 +249,7 @@ const PerformanceVisx = (props: BarStackProps) => {
249
249
} ) ;
250
250
} }
251
251
/>
252
- ) ) )
252
+ ) } ) )
253
253
)
254
254
}
255
255
</ BarStack >
0 commit comments