@@ -78,6 +78,36 @@ function resolveStringIndices(node, table) {
7878 return resolved ;
7979}
8080
81+ function selectFlamegraphData ( ) {
82+ const baseData = isShowingElided ? elidedFlamegraphData : normalData ;
83+
84+ if ( ! isInverted ) {
85+ return baseData ;
86+ }
87+
88+ if ( isShowingElided ) {
89+ if ( ! invertedElidedData ) {
90+ invertedElidedData = generateInvertedFlamegraph ( baseData ) ;
91+ }
92+ return invertedElidedData ;
93+ }
94+
95+ if ( ! invertedData ) {
96+ invertedData = generateInvertedFlamegraph ( baseData ) ;
97+ }
98+ return invertedData ;
99+ }
100+
101+ function updateFlamegraphView ( ) {
102+ const selectedData = selectFlamegraphData ( ) ;
103+ const selectedThreadId = currentThreadFilter !== 'all' ? parseInt ( currentThreadFilter , 10 ) : null ;
104+ const filteredData = selectedThreadId !== null ? filterDataByThread ( selectedData , selectedThreadId ) : selectedData ;
105+ const tooltip = createPythonTooltip ( filteredData ) ;
106+ const chart = createFlamegraph ( tooltip , filteredData . value , filteredData ) ;
107+ renderFlamegraph ( chart , filteredData ) ;
108+ populateThreadStats ( selectedData , selectedThreadId ) ;
109+ }
110+
81111// ============================================================================
82112// Theme & UI Controls
83113// ============================================================================
@@ -87,10 +117,7 @@ function toggleTheme() {
87117
88118 // Re-render flamegraph with new theme colors
89119 if ( window . flamegraphData && normalData ) {
90- const currentData = isInverted ? invertedData : normalData ;
91- const tooltip = createPythonTooltip ( currentData ) ;
92- const chart = createFlamegraph ( tooltip , currentData . value , currentData ) ;
93- renderFlamegraph ( chart , window . flamegraphData ) ;
120+ updateFlamegraphView ( ) ;
94121 }
95122}
96123
@@ -958,7 +985,7 @@ function setupElidedToggle(data) {
958985 if ( ! elidedCount || ! elidedFlamegraph ) {
959986 return ;
960987 }
961-
988+
962989 elidedFlamegraphData = resolveStringIndices ( elidedFlamegraph , elidedFlamegraph . baseline_strings ) ;
963990
964991 const toggleElided = document . getElementById ( 'toggle-elided' ) ;
@@ -968,24 +995,7 @@ function setupElidedToggle(data) {
968995 toggleElided . onclick = function ( ) {
969996 isShowingElided = ! isShowingElided ;
970997 updateToggleUI ( 'toggle-elided' , isShowingElided ) ;
971-
972- let dataToRender ;
973- if ( isShowingElided ) {
974- if ( isInverted ) {
975- if ( ! invertedElidedData ) {
976- invertedElidedData = generateInvertedFlamegraph ( elidedFlamegraphData ) ;
977- }
978- dataToRender = invertedElidedData ;
979- } else {
980- dataToRender = elidedFlamegraphData ;
981- }
982- } else {
983- dataToRender = isInverted ? invertedData : normalData ;
984- }
985-
986- const tooltip = createPythonTooltip ( dataToRender ) ;
987- const chart = createFlamegraph ( tooltip , dataToRender . value , dataToRender ) ;
988- renderFlamegraph ( chart , dataToRender ) ;
998+ updateFlamegraphView ( ) ;
989999 } ;
9901000 }
9911001}
@@ -1176,28 +1186,8 @@ function filterByThread() {
11761186
11771187 const selectedThread = threadFilter . value ;
11781188 currentThreadFilter = selectedThread ;
1179- const baseData = isInverted ? invertedData : normalData ;
1180-
1181- let filteredData ;
1182- let selectedThreadId = null ;
11831189
1184- if ( selectedThread === 'all' ) {
1185- filteredData = baseData ;
1186- } else {
1187- selectedThreadId = parseInt ( selectedThread , 10 ) ;
1188- filteredData = filterDataByThread ( baseData , selectedThreadId ) ;
1189-
1190- if ( filteredData . strings ) {
1191- stringTable = filteredData . strings ;
1192- filteredData = resolveStringIndices ( filteredData , filteredData . strings ) ;
1193- }
1194- }
1195-
1196- const tooltip = createPythonTooltip ( filteredData ) ;
1197- const chart = createFlamegraph ( tooltip , filteredData . value , filteredData ) ;
1198- renderFlamegraph ( chart , filteredData ) ;
1199-
1200- populateThreadStats ( baseData , selectedThreadId ) ;
1190+ updateFlamegraphView ( ) ;
12011191}
12021192
12031193function filterDataByThread ( data , threadId ) {
@@ -1388,32 +1378,7 @@ function generateInvertedFlamegraph(data) {
13881378function toggleInvert ( ) {
13891379 isInverted = ! isInverted ;
13901380 updateToggleUI ( 'toggle-invert' , isInverted ) ;
1391-
1392- let dataToRender ;
1393-
1394- if ( isShowingElided ) {
1395- if ( isInverted ) {
1396- if ( ! invertedElidedData ) {
1397- invertedElidedData = generateInvertedFlamegraph ( elidedFlamegraphData ) ;
1398- }
1399- dataToRender = invertedElidedData ;
1400- } else {
1401- dataToRender = elidedFlamegraphData ;
1402- }
1403- } else {
1404- if ( isInverted && ! invertedData ) {
1405- invertedData = generateInvertedFlamegraph ( normalData ) ;
1406- }
1407- dataToRender = isInverted ? invertedData : normalData ;
1408-
1409- if ( currentThreadFilter !== 'all' ) {
1410- dataToRender = filterDataByThread ( dataToRender , parseInt ( currentThreadFilter ) ) ;
1411- }
1412- }
1413-
1414- const tooltip = createPythonTooltip ( dataToRender ) ;
1415- const chart = createFlamegraph ( tooltip , dataToRender . value , dataToRender ) ;
1416- renderFlamegraph ( chart , dataToRender ) ;
1381+ updateFlamegraphView ( ) ;
14171382}
14181383
14191384// ============================================================================
0 commit comments