mirror of
https://github.com/openmhz/trunk-server.git
synced 2026-11-13 17:27:37 -05:00
First Commit
This commit is contained in:
95
backend/controllers/stats.js
Normal file
95
backend/controllers/stats.js
Normal file
@@ -0,0 +1,95 @@
|
||||
|
||||
var db = require('../db');
|
||||
var schedule = require('node-schedule');
|
||||
var sysStats = require("../sys_stats");
|
||||
|
||||
exports.init_stats = function() {
|
||||
sysStats.initStats();
|
||||
}
|
||||
|
||||
exports.get_errors = function(req, res) {
|
||||
var short_name = req.params.shortName.toLowerCase();
|
||||
|
||||
var start = new Date();
|
||||
start.setHours(start.getHours() - 1);
|
||||
var collection = db.get().collection("calls");
|
||||
collection.aggregate([{
|
||||
$match: {
|
||||
time: {
|
||||
$gte: start
|
||||
},
|
||||
shortName: short_name
|
||||
}
|
||||
},
|
||||
|
||||
{
|
||||
"$unwind": "$freqList"
|
||||
},
|
||||
{
|
||||
"$project": {
|
||||
"freqList": 1,
|
||||
"errorRatio": {
|
||||
$cond: [{
|
||||
$eq: ["$freqList.len", 0]
|
||||
}, 0, {
|
||||
"$multiply": [{
|
||||
"$divide": ["$freqList.error", "$freqList.len"]
|
||||
}, 100]
|
||||
}]
|
||||
},
|
||||
"time": "$time"
|
||||
}
|
||||
},
|
||||
{
|
||||
"$group": {
|
||||
"_id": "$freqList.freq",
|
||||
"values": {
|
||||
"$push": {
|
||||
"time": "$time",
|
||||
"errors": "$errorRatio",
|
||||
"spikes": "$freqList.spikes"
|
||||
}
|
||||
}
|
||||
}
|
||||
},
|
||||
{
|
||||
$sort: {
|
||||
_id: -1
|
||||
}
|
||||
}
|
||||
], function(err, results) {
|
||||
if (err) {
|
||||
console.warn("Error with error stats: " + util.inspect(req.params) + " err: " + err);
|
||||
res.status(500);
|
||||
res.send("Error with error stats: " + util.inspect(req.params) + " err: " + err);
|
||||
} else {
|
||||
res.contentType('json');
|
||||
res.send(JSON.stringify(results));
|
||||
}
|
||||
});
|
||||
}
|
||||
|
||||
exports.get_stats = function(req, res) {
|
||||
var short_name = req.params.shortName.toLowerCase();
|
||||
|
||||
var callHistory = sysStats.callHistory(short_name);
|
||||
var tgHistory = sysStats.tgHistory(short_name);
|
||||
var errorTotals = sysStats.errorTotals(short_name);
|
||||
if (callHistory && tgHistory) {
|
||||
res.contentType('json');
|
||||
res.send(JSON.stringify({
|
||||
callHistory: callHistory,
|
||||
tgHistory: tgHistory,
|
||||
errorTotals: errorTotals
|
||||
}));
|
||||
} else {
|
||||
console.log("ShortName didn't exist for stats: " + util.inspect(req.params));
|
||||
res.status(500);
|
||||
res.send("ShortName didn't exist for stats");
|
||||
}
|
||||
}
|
||||
|
||||
|
||||
var statSched = schedule.scheduleJob('*/15 * * * *', function() {
|
||||
sysStats.shiftStats();
|
||||
});
|
||||
Reference in New Issue
Block a user