-
Notifications
You must be signed in to change notification settings - Fork 0
/
Copy pathGraphVisualizer.js
91 lines (78 loc) · 2.47 KB
/
GraphVisualizer.js
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
/* global Traversal, GraphPkg */
var vert_key_writer = 0;
var edge_key_writer = 0;
var new_graph = {
'vertices': {},
'edges': {}
};
var visualizer_graph = {
'vertices': {},
'edges': {}
};
Visualizer = {};
Visualizer.getGraph = function() {
return new_graph;
}
Visualizer.markEdge = function(edge) {
console.log(edge.getKey());
var ek = edge.getKey();
visualizer_graph.edges[ek.toString()].strokeColor = 'red';
view.update();
}
selected_vertices = [];
function onMouseDown(event) {
var vert_key = 'vert' + vert_key_writer;
vert_key_writer++;
curr_center = event.point;
var myCircle = new Path.Circle({
center: event.point,
radius: 10
});
myCircle.center = event.point;
myCircle.vert_key = vert_key;
console.log(myCircle.position);
var vert_text = new PointText(myCircle.position._x, myCircle.position._y-12);
vert_text.justification = 'center';
vert_text.fillColor = 'black';
vert_text.content = vert_key.toString();
//make a new vertex in the graph
var newVert = new GraphPkg.jsVertex(vert_key, myCircle);
new_graph.vertices[vert_key] = newVert;
visualizer_graph.vertices[vert_key] = myCircle;
myCircle.strokeColor = 'black';
myCircle.fillColor = 'white';
myCircle.onMouseEnter = function(event) {
if (Key.isDown('shift')) {
myCircle.fillColor = 'red';
if (selected_vertices.length < 1) {
selected_vertices.push(myCircle);
} else {
if (myCircle.vert_key === selected_vertices[0].vert_key) {
console.error('cannot connect a vertex to itself.');
} else {
selected_vertices.push(myCircle);
var vert1 = selected_vertices[0];
var vert2 = selected_vertices[1];
newEdgePath = new Path();
var edge_key = 'edge' + edge_key_writer;
edge_key_writer++;
newEdgePath.strokeColor = 'black';
newEdgePath.add(new Point(vert1.center), new Point(vert2.center));
visualizer_graph.edges[edge_key] = newEdgePath;
var randWeight = Math.floor(Math.random() * 100);
newEdge = new GraphPkg.jsEdge(edge_key, randWeight);
newEdge.setOrigin(new_graph.vertices[vert1.vert_key]);
newEdge.setDestination(new_graph.vertices[vert2.vert_key]);
new_graph.edges[edge_key] = newEdge;
var edge_text = new PointText(newEdgePath.position._x, newEdgePath.position._y-12);
edge_text.justification = 'center';
edge_text.fillColor = 'black';
edge_text.content = edge_key.toString() + ': ' + randWeight;
vert1.fillColor = 'white';
vert2.fillColor = 'white';
selected_vertices = [];
}
}
}
}
}