Merge pull request #188 from nadr0/more-colors · boro741/AlgorithmVisualizer@bfb9c3d · GitHub
Skip to content

Commit bfb9c3d

Browse files
authored
Merge pull request algorithm-visualizer#188 from nadr0/more-colors
added color customization
2 parents aba5538 + ac6f03b commit bfb9c3d

6 files changed

Lines changed: 57 additions & 32 deletions

File tree

js/module/tracer/array2d.js

Lines changed: 12 additions & 9 deletions

js/module/tracer/chart.js

Lines changed: 6 additions & 8 deletions
Original file line numberDiff line numberDiff line change
@@ -10,11 +10,9 @@ class ChartTracer extends Tracer {
1010
constructor(name) {
1111
super(name);
1212

13-
this.color = {
14-
selected: '#2962ff',
15-
notified: '#c51162',
16-
default: 'rgb(136, 136, 136)'
17-
};
13+
this.selectColor = '#2962ff';
14+
this.notifyColor = '#c51162';
15+
this.defaultColor = 'rgb(136, 136, 136)';
1816

1917
if (this.isNew) initView(this);
2018
}
@@ -27,7 +25,7 @@ class ChartTracer extends Tracer {
2725
}
2826

2927
var color = [];
30-
for (var i = 0; i < C.length; i++) color.push(this.color.default);
28+
for (var i = 0; i < C.length; i++) color.push(this.defaultColor);
3129
this.chart.config.data = {
3230
labels: C.map(String),
3331
datasets: [{
@@ -83,7 +81,7 @@ class ChartTracer extends Tracer {
8381
case 'denotify':
8482
case 'select':
8583
case 'deselect':
86-
let color = step.type == 'notify' ? this.color.notified : step.type == 'select' ? this.color.selected : this.color.default;
84+
let color = step.type == 'notify' ? this.notifyColor : step.type == 'select' ? this.selectColor : this.defaultColor;
8785
if (step.e !== undefined)
8886
for (var i = step.s; i <= step.e; i++)
8987
this.chart.config.data.datasets[0].backgroundColor[i] = color;
@@ -109,7 +107,7 @@ class ChartTracer extends Tracer {
109107
if (data.datasets.length) {
110108
const backgroundColor = data.datasets[0].backgroundColor;
111109
for (let i = 0; i < backgroundColor.length; i++) {
112-
backgroundColor[i] = this.color.default;
110+
backgroundColor[i] = this.defaultColor;
113111
}
114112
this.chart.update();
115113
}

js/module/tracer/coordinate_system.js

Lines changed: 2 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -26,7 +26,7 @@ class CoordinateSystemTracer extends DirectedGraphTracer {
2626
y: C[i][1],
2727
label: '' + i,
2828
size: 1,
29-
color: this.color.default
29+
color: this.defaultColor
3030
});
3131
this.graph.read({
3232
nodes: nodes,
@@ -49,7 +49,7 @@ class CoordinateSystemTracer extends DirectedGraphTracer {
4949
case 'leave':
5050
var visit = step.type == 'visit';
5151
var targetNode = this.graph.nodes(this.n(step.target));
52-
var color = visit ? this.color.visited : this.color.left;
52+
var color = visit ? this.visitedColor : this.leftColor;
5353
targetNode.color = color;
5454
if (step.source !== undefined) {
5555
var edgeId = this.e(step.source, step.target);

js/module/tracer/directed_graph.js

Lines changed: 10 additions & 12 deletions
Original file line numberDiff line numberDiff line change
@@ -14,12 +14,10 @@ class DirectedGraphTracer extends Tracer {
1414
constructor(name) {
1515
super(name);
1616

17-
this.color = {
18-
selected: '#2962ff',
19-
visited: '#f50057',
20-
left: '#616161',
21-
default: '#bdbdbd'
22-
};
17+
this.selectColor = '#2962ff';
18+
this.visitedColor = '#f50057';
19+
this.leftColor = '#616161';
20+
this.defaultColor = '#bdbdbd';
2321

2422
if (this.isNew) initView(this);
2523
}
@@ -59,7 +57,7 @@ class DirectedGraphTracer extends Tracer {
5957
case 'leave':
6058
var visit = step.type == 'visit';
6159
var targetNode = this.graph.nodes(this.n(step.target));
62-
var color = visit ? this.color.visited : this.color.left;
60+
var color = visit ? this.visitedColor : this.leftColor;
6361
targetNode.color = color;
6462
if (step.source !== undefined) {
6563
var edgeId = this.e(step.source, step.target);
@@ -137,7 +135,7 @@ class DirectedGraphTracer extends Tracer {
137135
x: .5 + Math.sin(currentAngle) / 2,
138136
y: .5 + Math.cos(currentAngle) / 2,
139137
size: 1,
140-
color: this.color.default,
138+
color: this.defaultColor,
141139
weight: 0
142140
});
143141

@@ -149,7 +147,7 @@ class DirectedGraphTracer extends Tracer {
149147
id: this.e(i, j),
150148
source: this.n(i),
151149
target: this.n(j),
152-
color: this.color.default,
150+
color: this.defaultColor,
153151
size: 1,
154152
weight: refineByType(value)
155153
});
@@ -162,7 +160,7 @@ class DirectedGraphTracer extends Tracer {
162160
id: this.e(i, j),
163161
source: this.n(i),
164162
target: this.n(j),
165-
color: this.color.default,
163+
color: this.defaultColor,
166164
size: 1,
167165
weight: refineByType(G[i][j])
168166
});
@@ -210,10 +208,10 @@ class DirectedGraphTracer extends Tracer {
210208
var tracer = this;
211209

212210
this.graph.nodes().forEach(function (node) {
213-
node.color = tracer.color.default;
211+
node.color = tracer.defaultColor;
214212
});
215213
this.graph.edges().forEach(function (edge) {
216-
edge.color = tracer.color.default;
214+
edge.color = tracer.defaultColor;
217215
});
218216
}
219217

js/module/tracer/tracer.js

Lines changed: 26 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -15,6 +15,12 @@ class Tracer {
1515
constructor(name) {
1616
this.module = this.constructor;
1717

18+
this.selectColor;
19+
this.notifyColor;
20+
this.defaultColor;
21+
this.leftColor;
22+
this.visitedColor;
23+
1824
this.manager = app.getTracerManager();
1925
this.capsule = this.manager.allocate(this);
2026
$.extend(this, this.capsule);
@@ -42,6 +48,26 @@ class Tracer {
4248
return this;
4349
}
4450

51+
_setSelectFillColor(c) {
52+
this.selectColor = c;
53+
}
54+
55+
_setNotifyFillColor(c) {
56+
this.notifyColor = c;
57+
}
58+
59+
_setDefaultFillColor(c){
60+
this.defaultColor = c;
61+
}
62+
63+
_setLeftFillColor(c){
64+
this.leftColor = c;
65+
}
66+
67+
_setVisitedFillColor(c){
68+
this.visitedColor = c;
69+
}
70+
4571
processStep(step, options) {
4672
const {
4773
type,

js/module/tracer/weighted_directed_graph.js

Lines changed: 1 addition & 1 deletion

0 commit comments

Comments
 (0)