Chromium Code Reviews
chromiumcodereview-hr@appspot.gserviceaccount.com (chromiumcodereview-hr) | Please choose your nickname with Settings | Help | Chromium Project | Gerrit Changes | Sign out
(257)

Side by Side Diff: tools/turbolizer/turbo-visualizer.js

Issue 2171543004: [turbolizer] Remember the last phase, search query, and pane expansions. (Closed) Base URL: https://chromium.googlesource.com/v8/v8.git@t-p6
Patch Set: Fix bug in remembering pane state. Created 4 years, 4 months ago
Use n/p to move between diff chunks; N/P to move between comments. Draft comments are only viewable by you.
Jump to:
View unified diff | Download patch
« no previous file with comments | « tools/turbolizer/graph-view.js ('k') | no next file » | no next file with comments »
Toggle Intra-line Diffs ('i') | Expand Comments ('e') | Collapse Comments ('c') | Show Comments Hide Comments ('s')
OLDNEW
1 // Copyright 2014 the V8 project authors. All rights reserved. 1 // Copyright 2014 the V8 project authors. All rights reserved.
2 // Use of this source code is governed by a BSD-style license that can be 2 // Use of this source code is governed by a BSD-style license that can be
3 // found in the LICENSE file. 3 // found in the LICENSE file.
4 4
5 document.onload = (function(d3){ 5 document.onload = (function(d3){
6 "use strict"; 6 "use strict";
7 var jsonObj; 7 var jsonObj;
8 var sourceExpandClassList = document.getElementById(SOURCE_EXPAND_ID).classLis t; 8 var sourceExpandClassList = document.getElementById(SOURCE_EXPAND_ID).classLis t;
9 var sourceCollapseClassList = document.getElementById(SOURCE_COLLAPSE_ID).clas sList; 9 var sourceCollapseClassList = document.getElementById(SOURCE_COLLAPSE_ID).clas sList;
10 var sourceExpanded = sourceCollapseClassList.contains(COLLAPSE_PANE_BUTTON_VIS IBLE); 10 var sourceExpanded = sourceCollapseClassList.contains(COLLAPSE_PANE_BUTTON_VIS IBLE);
(...skipping 26 matching lines...) Expand all
37 d3.select("#" + INTERMEDIATE_PANE_ID).style(WIDTH, "50%"); 37 d3.select("#" + INTERMEDIATE_PANE_ID).style(WIDTH, "50%");
38 d3.select("#" + GENERATED_PANE_ID).style(WIDTH, "50%"); 38 d3.select("#" + GENERATED_PANE_ID).style(WIDTH, "50%");
39 } else { 39 } else {
40 d3.select("#" + SOURCE_PANE_ID).style(WIDTH, "0%"); 40 d3.select("#" + SOURCE_PANE_ID).style(WIDTH, "0%");
41 d3.select("#" + INTERMEDIATE_PANE_ID).style(WIDTH, "100%"); 41 d3.select("#" + INTERMEDIATE_PANE_ID).style(WIDTH, "100%");
42 d3.select("#" + GENERATED_PANE_ID).style(WIDTH, "0%"); 42 d3.select("#" + GENERATED_PANE_ID).style(WIDTH, "0%");
43 } 43 }
44 } 44 }
45 } 45 }
46 46
47 function getLastExpandedState(type, default_state) {
48 var state = window.sessionStorage.getItem("expandedState-"+type);
49 if (state === null) return default_state;
50 return state === 'true';
51 }
52
53 function setLastExpandedState(type, state) {
54 window.sessionStorage.setItem("expandedState-"+type, state);
55 }
56
47 function toggleSourceExpanded() { 57 function toggleSourceExpanded() {
48 setSourceExpanded(!sourceExpanded); 58 setSourceExpanded(!sourceExpanded);
49 } 59 }
50 60
51 function setSourceExpanded(newState) { 61 function setSourceExpanded(newState) {
52 sourceExpanded = newState; 62 sourceExpanded = newState;
63 setLastExpandedState("source", newState);
53 updatePanes(); 64 updatePanes();
54 if (newState) { 65 if (newState) {
55 sourceCollapseClassList.add(COLLAPSE_PANE_BUTTON_VISIBLE); 66 sourceCollapseClassList.add(COLLAPSE_PANE_BUTTON_VISIBLE);
56 sourceCollapseClassList.remove(COLLAPSE_PANE_BUTTON_INVISIBLE); 67 sourceCollapseClassList.remove(COLLAPSE_PANE_BUTTON_INVISIBLE);
57 sourceExpandClassList.add(COLLAPSE_PANE_BUTTON_INVISIBLE); 68 sourceExpandClassList.add(COLLAPSE_PANE_BUTTON_INVISIBLE);
58 sourceExpandClassList.remove(COLLAPSE_PANE_BUTTON_VISIBLE); 69 sourceExpandClassList.remove(COLLAPSE_PANE_BUTTON_VISIBLE);
59 } else { 70 } else {
60 sourceCollapseClassList.add(COLLAPSE_PANE_BUTTON_INVISIBLE); 71 sourceCollapseClassList.add(COLLAPSE_PANE_BUTTON_INVISIBLE);
61 sourceCollapseClassList.remove(COLLAPSE_PANE_BUTTON_VISIBLE); 72 sourceCollapseClassList.remove(COLLAPSE_PANE_BUTTON_VISIBLE);
62 sourceExpandClassList.add(COLLAPSE_PANE_BUTTON_VISIBLE); 73 sourceExpandClassList.add(COLLAPSE_PANE_BUTTON_VISIBLE);
63 sourceExpandClassList.remove(COLLAPSE_PANE_BUTTON_INVISIBLE); 74 sourceExpandClassList.remove(COLLAPSE_PANE_BUTTON_INVISIBLE);
64 } 75 }
65 } 76 }
66 77
67 function toggleDisassemblyExpanded() { 78 function toggleDisassemblyExpanded() {
68 setDisassemblyExpanded(!disassemblyExpanded); 79 setDisassemblyExpanded(!disassemblyExpanded);
69 } 80 }
70 81
71 function setDisassemblyExpanded(newState) { 82 function setDisassemblyExpanded(newState) {
72 disassemblyExpanded = newState; 83 disassemblyExpanded = newState;
84 setLastExpandedState("disassembly", newState);
73 updatePanes(); 85 updatePanes();
74 if (newState) { 86 if (newState) {
75 disassemblyCollapseClassList.add(COLLAPSE_PANE_BUTTON_VISIBLE); 87 disassemblyCollapseClassList.add(COLLAPSE_PANE_BUTTON_VISIBLE);
76 disassemblyCollapseClassList.remove(COLLAPSE_PANE_BUTTON_INVISIBLE); 88 disassemblyCollapseClassList.remove(COLLAPSE_PANE_BUTTON_INVISIBLE);
77 disassemblyExpandClassList.add(COLLAPSE_PANE_BUTTON_INVISIBLE); 89 disassemblyExpandClassList.add(COLLAPSE_PANE_BUTTON_INVISIBLE);
78 disassemblyExpandClassList.remove(COLLAPSE_PANE_BUTTON_VISIBLE); 90 disassemblyExpandClassList.remove(COLLAPSE_PANE_BUTTON_VISIBLE);
79 } else { 91 } else {
80 disassemblyCollapseClassList.add(COLLAPSE_PANE_BUTTON_INVISIBLE); 92 disassemblyCollapseClassList.add(COLLAPSE_PANE_BUTTON_INVISIBLE);
81 disassemblyCollapseClassList.remove(COLLAPSE_PANE_BUTTON_VISIBLE); 93 disassemblyCollapseClassList.remove(COLLAPSE_PANE_BUTTON_VISIBLE);
82 disassemblyExpandClassList.add(COLLAPSE_PANE_BUTTON_VISIBLE); 94 disassemblyExpandClassList.add(COLLAPSE_PANE_BUTTON_VISIBLE);
(...skipping 85 matching lines...) Expand 10 before | Expand all | Expand 10 after
168 optionElement.text = jsonObj.phases[i].name; 180 optionElement.text = jsonObj.phases[i].name;
169 if (optionElement.text == 'disassembly') { 181 if (optionElement.text == 'disassembly') {
170 disassemblyPhase = jsonObj.phases[i]; 182 disassemblyPhase = jsonObj.phases[i];
171 } else { 183 } else {
172 selectMenu.add(optionElement, null); 184 selectMenu.add(optionElement, null);
173 } 185 }
174 } 186 }
175 disassemblyView.setNodePositionMap(jsonObj.nodePositions); 187 disassemblyView.setNodePositionMap(jsonObj.nodePositions);
176 disassemblyView.show(disassemblyPhase.data, null); 188 disassemblyView.show(disassemblyPhase.data, null);
177 189
190 var initialPhaseIndex = +window.sessionStorage.getItem("lastSelected Phase");
191 if (!(initialPhaseIndex in jsonObj.phases)) {
192 initialPhaseIndex = 0;
193 }
194
195 // We wish to show the remembered phase {lastSelectedPhase}, but
196 // this will crash if the first view we switch to is a
197 // ScheduleView. So we first switch to the first phase, which
198 // should never be a ScheduleView.
178 displayPhase(jsonObj.phases[0]); 199 displayPhase(jsonObj.phases[0]);
200 displayPhase(jsonObj.phases[initialPhaseIndex]);
201 selectMenu.selectedIndex = initialPhaseIndex;
179 202
180 selectMenu.onchange = function(item) { 203 selectMenu.onchange = function(item) {
204 window.sessionStorage.setItem("lastSelectedPhase", selectMenu.sele ctedIndex);
181 displayPhase(jsonObj.phases[selectMenu.selectedIndex]); 205 displayPhase(jsonObj.phases[selectMenu.selectedIndex]);
182 } 206 }
183 207
184 fitPanesToParents(); 208 fitPanesToParents();
209
210 d3.select("#search-input").attr("value", window.sessionStorage.getIt em("lastSearch") || "");
211
185 } 212 }
186 catch(err) { 213 catch(err) {
214 window.console.log("caught exception, clearing session storage just in case");
215 window.sessionStorage.clear(); // just in case
216 window.console.log("showing error");
187 window.alert("Invalid TurboFan JSON file\n" + 217 window.alert("Invalid TurboFan JSON file\n" +
188 "error: " + err.message); 218 "error: " + err.message);
189 return; 219 return;
190 } 220 }
191 }; 221 };
192 filereader.readAsText(uploadFile); 222 filereader.readAsText(uploadFile);
193 } else { 223 } else {
194 alert("Can't load graph"); 224 alert("Can't load graph");
195 } 225 }
196 }); 226 });
197 } 227 }
198 228
199 sourceView = new CodeView(SOURCE_PANE_ID, PR, "", 0, selectionBroker); 229 sourceView = new CodeView(SOURCE_PANE_ID, PR, "", 0, selectionBroker);
200 disassemblyView = new DisassemblyView(DISASSEMBLY_PANE_ID, selectionBroker); 230 disassemblyView = new DisassemblyView(DISASSEMBLY_PANE_ID, selectionBroker);
201 graph = new GraphView(d3, GRAPH_PANE_ID, [], [], selectionBroker); 231 graph = new GraphView(d3, GRAPH_PANE_ID, [], [], selectionBroker);
202 schedule = new ScheduleView(SCHEDULE_PANE_ID, selectionBroker); 232 schedule = new ScheduleView(SCHEDULE_PANE_ID, selectionBroker);
203 empty = new EmptyView(EMPTY_PANE_ID, selectionBroker); 233 empty = new EmptyView(EMPTY_PANE_ID, selectionBroker);
204 234
205 initializeHandlers(graph); 235 initializeHandlers(graph);
206 236
207 setSourceExpanded(true); 237 setSourceExpanded(getLastExpandedState("source", true));
208 setDisassemblyExpanded(false); 238 setDisassemblyExpanded(getLastExpandedState("disassembly", false));
209 239
210 displayPhaseView(empty, null); 240 displayPhaseView(empty, null);
211 fitPanesToParents(); 241 fitPanesToParents();
212 })(window.d3); 242 })(window.d3);
OLDNEW
« no previous file with comments | « tools/turbolizer/graph-view.js ('k') | no next file » | no next file with comments »

Powered by Google App Engine
This is Rietveld 408576698