@@ -77,20 +77,16 @@ class FlameGraphRenderer extends React.Component {
7777 "Reset Flamegraph View"
7878 ) ;
7979 }
80-
81- this . fetchFlameBearerData ( this . props . renderURL )
80+ this . updateFlameBearerData ( )
8281 }
8382
8483 componentDidUpdate ( prevProps , prevState ) {
85- if ( this . getParamsFromRenderURL ( this . props . renderURL ) . name != this . getParamsFromRenderURL ( prevProps . renderURL ) . name ||
86- prevProps . from != this . props . from ||
87- prevProps . until != this . props . until ||
88- prevProps . maxNodes != this . props . maxNodes ||
89- prevProps . refreshToken != this . props . refreshToken ||
90- prevProps [ `${ this . props . viewSide } From` ] != this . props [ `${ this . props . viewSide } From` ] ||
91- prevProps [ `${ this . props . viewSide } Until` ] != this . props [ `${ this . props . viewSide } Until` ]
92- ) {
93- this . fetchFlameBearerData ( this . props . renderURL )
84+ const from = this . props . data ?. timeRange ?. raw . from . valueOf ( ) ;
85+ const until = this . props . data ?. timeRange ?. raw . to . valueOf ( ) ;
86+ const prevFrom = prevProps . data ?. timeRange ?. raw . from . valueOf ( ) ;
87+ const prevUntil = prevProps . data ?. timeRange ?. raw . to . valueOf ( ) ;
88+ if ( from !== prevFrom || until !== prevUntil ) {
89+ this . updateFlameBearerData ( )
9490 }
9591
9692 if (
@@ -101,7 +97,7 @@ class FlameGraphRenderer extends React.Component {
10197 }
10298 }
10399
104- fetchFlameBearerData ( ) {
100+ updateFlameBearerData ( ) {
105101 const flamebearer = this . props . data . series [ this . props . data . series . length - 1 ] . fields [ 0 ] . values . buffer [ 0 ] ;
106102 deltaDiff ( flamebearer . levels ) ;
107103 this . setState ( { ...this . state , flamebearer } ,
@@ -110,15 +106,6 @@ class FlameGraphRenderer extends React.Component {
110106 } )
111107 }
112108
113- getParamsFromRenderURL ( inputURL ) {
114- let urlParamsRegexp = / ( .* r e n d e r \? ) (?< urlParams > ( .* ) ) /
115- let paramsString = inputURL . match ( urlParamsRegexp ) ;
116- let params = new URLSearchParams ( paramsString . groups . urlParams ) ;
117- let paramsObj = this . paramsToObject ( params ) ;
118-
119- return paramsObj
120- }
121-
122109 paramsToObject ( entries ) {
123110 const result = { }
124111 for ( const [ key , value ] of entries ) { // each 'entry' is a [key, value] tupple
@@ -240,7 +227,8 @@ class FlameGraphRenderer extends React.Component {
240227 // this is here to debounce resize events (see: https://css-tricks.com/debouncing-throttling-explained-examples/)
241228 // because rendering is expensive
242229 clearTimeout ( this . resizeFinish ) ;
243- this . pxPerLevel = ( el [ 0 ] . contentRect . height - 60 ) / this . state . flamebearer . levels . length ;
230+ const responsiveHeight = ( el [ 0 ] . contentRect . height - 60 ) / this . state . flamebearer . levels . length ;
231+ this . pxPerLevel = responsiveHeight > 20 ? 20 : responsiveHeight ;
244232 this . resizeFinish = setTimeout ( this . renderCanvas , 50 ) ;
245233 } ;
246234
@@ -464,64 +452,25 @@ class FlameGraphRenderer extends React.Component {
464452 } ;
465453
466454 render = ( ) => {
467-
468- let flameGraphPane = (
469- < div
470- key = { 'flamegraph-pane' }
471- className = { this . styles . flamegraphPane }
472- >
473- < div className = 'flamegraph-header' >
474- < span > </ span >
475- < span > Frame width represents { unitsToFlamegraphTitle [ this . state . units ] } </ span >
476- </ div >
477- < canvas
478- height = "0"
479- ref = { this . canvasRef }
480- onClick = { this . clickHandler }
481- onMouseMove = { this . mouseMoveHandler }
482- onMouseOut = { this . mouseOutHandler }
483- />
484- </ div >
485- )
486-
487- let panes = [ flameGraphPane ] ;
488-
489- let instructionsText = this . props . viewType === "double" ? `Select ${ this . props . viewSide } time range` : null ;
490- let instructionsClassName = this . props . viewType === "double" ? `${ this . props . viewSide } -instructions` : null ;
491-
492455 return (
493456 < div >
494-
495- < div >
496- { /* <ProfilerHeader
497- view={this.state.view}
498- handleSearchChange={this.handleSearchChange}
499- reset={this.reset}
500- updateView={this.updateView}
501- resetStyle={this.state.resetStyle}
502- /> */ }
503- < div className = { `${ instructionsClassName } -wrapper` } >
504- < span className = { `${ instructionsClassName } -text` } > { instructionsText } </ span >
505- </ div >
506- < div className = { clsx ( "flamegraph-container panes-wrapper" , { "vertical-orientation" : this . props . viewType === "double" } ) } >
507- {
508- panes . map ( ( pane ) => (
509- pane
510- ) )
511- }
512- { /* { tablePane }
513- { flameGraphPane } */ }
514- </ div >
515- { /* <div
516- className={clsx("no-data-message", {
517- visible:
518- this.state.flamebearer && this.state.flamebearer.numTicks === 0,
519- })}
457+ < div className = { clsx ( "flamegraph-container panes-wrapper" ) } >
458+ < div
459+ key = { 'flamegraph-pane' }
460+ className = { this . styles . flamegraphPane }
520461 >
521- <span>
522- No profiling data available for this application / time range.
523- </span>
524- </div> */ }
462+ < div className = 'flamegraph-header' >
463+ < span > </ span >
464+ < span > Frame width represents { unitsToFlamegraphTitle [ this . state . units ] } </ span >
465+ </ div >
466+ < canvas
467+ height = "0"
468+ ref = { this . canvasRef }
469+ onClick = { this . clickHandler }
470+ onMouseMove = { this . mouseMoveHandler }
471+ onMouseOut = { this . mouseOutHandler }
472+ />
473+ </ div >
525474 </ div >
526475 < div className = "flamegraph-highlight" style = { this . state . highlightStyle } />
527476 < div
0 commit comments