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

Side by Side Diff: tools/turbolizer/graph-view.js

Issue 2169043002: [turbolizer] Factor out some user actions into methods of GraphView. (Closed) Base URL: https://chromium.googlesource.com/v8/v8.git@t-p6-base
Patch Set: Created 4 years, 5 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 | « no previous file | tools/turbolizer/util.js » ('j') | no next file with comments »
Toggle Intra-line Diffs ('i') | Expand Comments ('e') | Collapse Comments ('c') | Show Comments Hide Comments ('s')
OLDNEW
1 // Copyright 2015 the V8 project authors. All rights reserved. 1 // Copyright 2015 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 "use strict"; 5 "use strict";
6 6
7 class GraphView extends View { 7 class GraphView extends View {
8 constructor (d3, id, nodes, edges, broker) { 8 constructor (d3, id, nodes, edges, broker) {
9 super(id, broker); 9 super(id, broker);
10 var graph = this; 10 var graph = this;
(...skipping 104 matching lines...) Expand 10 before | Expand all | Expand 10 after
115 115
116 graph.drag = d3.behavior.drag() 116 graph.drag = d3.behavior.drag()
117 .origin(function(d){ 117 .origin(function(d){
118 return {x: d.x, y: d.y}; 118 return {x: d.x, y: d.y};
119 }) 119 })
120 .on("drag", function(args){ 120 .on("drag", function(args){
121 graph.state.justDragged = true; 121 graph.state.justDragged = true;
122 graph.dragmove.call(graph, args); 122 graph.dragmove.call(graph, args);
123 }) 123 })
124 124
125 d3.select("#upload").on("click", function(){ 125 d3.select("#upload").on("click", partial(this.uploadAction, graph));
126 document.getElementById("hidden-file-upload").click(); 126 d3.select("#layout").on("click", partial(this.layoutAction, graph));
127 }); 127 d3.select("#show-all").on("click", partial(this.showAllAction, graph));
128 128 d3.select("#hide-unselected").on("click", partial(this.hideUnselectedAction, graph));
129 d3.select("#layout").on("click", function(){ 129 d3.select("#hide-selected").on("click", partial(this.hideSelectedAction, gra ph));
130 graph.updateGraphVisibility(); 130 d3.select("#zoom-selection").on("click", partial(this.zoomSelectionAction, g raph));
131 graph.layoutGraph(); 131 d3.select("#toggle-types").on("click", partial(this.toggleTypesAction, graph ));
132 graph.updateGraphVisibility(); 132 d3.select("#search-input").on("keydown", partial(this.searchInputAction, gra ph));
133 graph.viewWholeGraph();
134 });
135
136 d3.select("#show-all").on("click", function(){
137 graph.nodes.filter(function(n) { n.visible = true; })
138 graph.edges.filter(function(e) { e.visible = true; })
139 graph.updateGraphVisibility();
140 graph.viewWholeGraph();
141 });
142
143 d3.select("#hide-unselected").on("click", function() {
144 var unselected = graph.visibleNodes.filter(function(n) {
145 return !this.classList.contains("selected");
146 });
147 unselected.each(function(n) {
148 n.visible = false;
149 });
150 graph.updateGraphVisibility();
151 });
152
153 d3.select("#hide-selected").on("click", function() {
154 var selected = graph.visibleNodes.filter(function(n) {
155 return this.classList.contains("selected");
156 });
157 selected.each(function(n) {
158 n.visible = false;
159 });
160 graph.state.selection.clear();
161 graph.updateGraphVisibility();
162 });
163
164 d3.select("#zoom-selection").on("click", function() {
165 graph.viewSelection();
166 });
167
168 d3.select("#toggle-types").on("click", function() {
169 graph.toggleTypes();
170 });
171
172 d3.select("#search-input").on("keydown", function() {
173 if (d3.event.keyCode == 13) {
174 graph.state.selection.clear();
175 var reg = new RegExp(this.value);
176 var filterFunction = function(n) {
177 return (reg.exec(n.getDisplayLabel()) != null ||
178 (graph.state.showTypes && reg.exec(n.getDisplayType())) ||
179 reg.exec(n.opcode) != null);
180 };
181 if (d3.event.ctrlKey) {
182 graph.nodes.forEach(function(n, i) {
183 if (filterFunction(n)) {
184 n.visible = true;
185 }
186 });
187 graph.updateGraphVisibility();
188 }
189 var selected = graph.visibleNodes.each(function(n) {
190 if (filterFunction(n)) {
191 graph.state.selection.select(this, true);
192 }
193 });
194 graph.connectVisibleSelectedNodes();
195 graph.updateGraphVisibility();
196 this.blur();
197 graph.viewSelection();
198 }
199 d3.event.stopPropagation();
200 });
201 133
202 // listen for key events 134 // listen for key events
203 d3.select(window).on("keydown", function(e){ 135 d3.select(window).on("keydown", function(e){
204 graph.svgKeyDown.call(graph); 136 graph.svgKeyDown.call(graph);
205 }) 137 })
206 .on("keyup", function(){ 138 .on("keyup", function(){
207 graph.svgKeyUp.call(graph); 139 graph.svgKeyUp.call(graph);
208 }); 140 });
209 svg.on("mousedown", function(d){graph.svgMouseDown.call(graph, d);}); 141 svg.on("mousedown", function(d){graph.svgMouseDown.call(graph, d);});
210 svg.on("mouseup", function(d){graph.svgMouseUp.call(graph, d);}); 142 svg.on("mouseup", function(d){graph.svgMouseUp.call(graph, d);});
(...skipping 310 matching lines...) Expand 10 before | Expand all | Expand 10 after
521 453
522 selectAllNodes(inEdges, filter) { 454 selectAllNodes(inEdges, filter) {
523 var graph = this; 455 var graph = this;
524 if (!d3.event.shiftKey) { 456 if (!d3.event.shiftKey) {
525 graph.state.selection.clear(); 457 graph.state.selection.clear();
526 } 458 }
527 graph.state.selection.select(graph.visibleNodes[0], true); 459 graph.state.selection.select(graph.visibleNodes[0], true);
528 graph.updateGraphVisibility(); 460 graph.updateGraphVisibility();
529 } 461 }
530 462
463 uploadAction(graph) {
464 document.getElementById("hidden-file-upload").click();
465 }
466
467 layoutAction(graph) {
468 graph.updateGraphVisibility();
469 graph.layoutGraph();
470 graph.updateGraphVisibility();
471 graph.viewWholeGraph();
472 }
473
474 showAllAction(graph) {
475 graph.nodes.filter(function(n) { n.visible = true; })
476 graph.edges.filter(function(e) { e.visible = true; })
477 graph.updateGraphVisibility();
478 graph.viewWholeGraph();
479 }
480
481 hideUnselectedAction(graph) {
482 var unselected = graph.visibleNodes.filter(function(n) {
483 return !this.classList.contains("selected");
484 });
485 unselected.each(function(n) {
486 n.visible = false;
487 });
488 graph.updateGraphVisibility();
489 }
490
491 hideSelectedAction(graph) {
492 var selected = graph.visibleNodes.filter(function(n) {
493 return this.classList.contains("selected");
494 });
495 selected.each(function(n) {
496 n.visible = false;
497 });
498 graph.state.selection.clear();
499 graph.updateGraphVisibility();
500 }
501
502 zoomSelectionAction(graph) {
503 graph.viewSelection();
504 }
505
506 toggleTypesAction(graph) {
507 graph.toggleTypes();
508 }
509
510 searchInputAction(graph) {
511 if (d3.event.keyCode == 13) {
512 graph.state.selection.clear();
513 var reg = new RegExp(this.value);
514 var filterFunction = function(n) {
515 return (reg.exec(n.getDisplayLabel()) != null ||
516 (graph.state.showTypes && reg.exec(n.getDisplayType())) ||
517 reg.exec(n.opcode) != null);
518 };
519 if (d3.event.ctrlKey) {
520 graph.nodes.forEach(function(n, i) {
521 if (filterFunction(n)) {
522 n.visible = true;
523 }
524 });
525 graph.updateGraphVisibility();
526 }
527 var selected = graph.visibleNodes.each(function(n) {
528 if (filterFunction(n)) {
529 graph.state.selection.select(this, true);
530 }
531 });
532 graph.connectVisibleSelectedNodes();
533 graph.updateGraphVisibility();
534 this.blur();
535 graph.viewSelection();
536 }
537 d3.event.stopPropagation();
538 }
539
531 svgMouseDown() { 540 svgMouseDown() {
532 this.state.graphMouseDown = true; 541 this.state.graphMouseDown = true;
533 } 542 }
534 543
535 svgMouseUp() { 544 svgMouseUp() {
536 var graph = this, 545 var graph = this,
537 state = graph.state; 546 state = graph.state;
538 if (state.justScaleTransGraph) { 547 if (state.justScaleTransGraph) {
539 // Dragged 548 // Dragged
540 state.justScaleTransGraph = false; 549 state.justScaleTransGraph = false;
(...skipping 437 matching lines...) Expand 10 before | Expand all | Expand 10 after
978 } 987 }
979 988
980 viewWholeGraph() { 989 viewWholeGraph() {
981 var graph = this; 990 var graph = this;
982 var minScale = graph.minScale(); 991 var minScale = graph.minScale();
983 var translation = [0, 0]; 992 var translation = [0, 0];
984 translation = graph.getVisibleTranslation(translation, minScale); 993 translation = graph.getVisibleTranslation(translation, minScale);
985 graph.translateClipped(translation, minScale); 994 graph.translateClipped(translation, minScale);
986 } 995 }
987 } 996 }
OLDNEW
« no previous file with comments | « no previous file | tools/turbolizer/util.js » ('j') | no next file with comments »

Powered by Google App Engine
This is Rietveld 408576698