/
graph.js
70 lines (67 loc) · 2.12 KB
/
graph.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
'use strict';
var database = require('./database'),
util = require('./utility'),
config = require('./config.json');
var graphPeriod = (config.graphPeriod || 60 * 60),
formatRow = util.formattedRowGenerator(),
checks = {};
database.getChecks(graphPeriod, function (_, data) {
util.parseData(data, formatRow, function (__, result) {
checks = result;
});
database.registerListener(function (newdata) {
var cutoff = Date.now() - (config.graphPeriod * 1000);
formatRow(newdata, function (__, rows) {
rows.forEach(function (r) {
var check = checks[r.checkName] || [];
check.unshift(r);
check = util.truncateData(check, function (d) {
return d.checkedAt >= cutoff;
}, 0);
checks[r.checkName] = check;
});
});
});
});
exports.getTimeChart = function getTimeChart() {
var keys = Object.keys(checks);
keys.sort();
return JSON.stringify(keys.map(function (key) {
var name = key.replace('what.thedailywtf.com', '');
return {
type: 'line',
xValueType: 'dateTime',
showInLegend: true,
legendText: name,
name: key,
dataPeriod: config.graphPeriod * 1000,
dataPoints: checks[key].map(function (r) {
return {
y: r.responseTime,
x: r.checkedAt
};
})
};
}));
};
exports.getScoreChart = function getTimeChart() {
var keys = Object.keys(checks);
keys.sort();
return JSON.stringify(keys.map(function (key) {
var name = key.replace('what.thedailywtf.com', '');
return {
type: 'line',
xValueType: 'dateTime',
showInLegend: true,
legendText: name,
name: key,
dataPeriod: config.graphPeriod * 1000,
dataPoints: checks[key].map(function (r) {
return {
y: r.score,
x: r.checkedAt
};
})
};
}));
};