-
Notifications
You must be signed in to change notification settings - Fork 0
Expand file tree
/
Copy pathBorderChartModule.js
More file actions
executable file
·95 lines (86 loc) · 2.67 KB
/
BorderChartModule.js
File metadata and controls
executable file
·95 lines (86 loc) · 2.67 KB
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
92
93
94
95
var ChartModule = function(series, canvas_width, canvas_height) {
// Create the tag:
var canvas_tag = "<canvas width='" + canvas_width + "' height='" + canvas_height + "' ";
canvas_tag += "style='border:1px dotted; display: inline-block;'></canvas>";
// Append it to #elements
var canvas = $(canvas_tag)[0];
$("#elements").append(canvas);
// Create the context and the drawing controller:
var context = canvas.getContext("2d");
var convertColorOpacity = function(hex) {
if (hex.indexOf('#') != 0) {
return 'rgba(0,0,0,0.1)';
}
hex = hex.replace('#', '');
r = parseInt(hex.substring(0, 2), 16);
g = parseInt(hex.substring(2, 4), 16);
b = parseInt(hex.substring(4, 6), 16);
return 'rgba(' + r + ',' + g + ',' + b + ',0.1)';
};
// Prep the chart properties and series:
var datasets = []
for (var i in series) {
var s = series[i];
var new_series = {
label: s.Label,
borderColor: s.Color,
backgroundColor: convertColorOpacity(s.Color),
data: []
};
datasets.push(new_series);
}
var chartData = {
labels: [],
datasets: datasets
};
var chartOptions = {
responsive: false,
tooltips: {
mode: 'index',
intersect: false
},
hover: {
mode: 'nearest',
intersect: true
},
scales: {
xAxes: [{
display: true,
scaleLabel: {
display: true
},
ticks: {
maxTicksLimit: 11
}
}],
yAxes: [{
display: true,
scaleLabel: {
display: true
}
}]
}
};
var chart = new Chart(context, {
type: 'line',
data: chartData,
options: chartOptions
});
this.render = function(data) {
chart.data.labels.push(control.tick);
for (i = 0; i < data.length; i++) {
chart.data.datasets[i].data.push(data[i]);
/* Limit to last 100 data points in order to optimise performance */
chart.data.datasets[i].data = chart.data.datasets[i].data.slice(-100);
}
chart.data.labels = chart.data.labels.slice(-100);
chart.update();
};
this.reset = function() {
while (chart.data.labels.length) { chart.data.labels.pop(); }
chart.data.datasets.forEach(function(dataset) {
while (dataset.data.length) { dataset.data.pop(); }
});
chart.update();
};
};