OLD | NEW |
---|---|
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...) Loading... | |
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 === undefined) 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...) Loading... | |
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); |
danno
2016/07/25 14:00:49
Here and below, why still pass the second boolean?
bgeron
2016/07/25 17:29:50
Oops, I forgot that there was a bug there! Should
| |
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); |
OLD | NEW |