You can not select more than 25 topics
Topics must start with a letter or number, can include dashes ('-') and can be up to 35 characters long.
39 lines
1.2 KiB
39 lines
1.2 KiB
6 months ago
|
const { checkLogin } = require("../util-server");
|
||
|
const { UptimeCalculator } = require("../uptime-calculator");
|
||
|
const { log } = require("../../src/util");
|
||
|
|
||
|
module.exports.chartSocketHandler = (socket) => {
|
||
|
socket.on("getMonitorChartData", async (monitorID, period, callback) => {
|
||
|
try {
|
||
|
checkLogin(socket);
|
||
|
|
||
|
log.debug("monitor", `Get Monitor Chart Data: ${monitorID} User ID: ${socket.userID}`);
|
||
|
|
||
|
if (period == null) {
|
||
|
throw new Error("Invalid period.");
|
||
|
}
|
||
|
|
||
|
let uptimeCalculator = await UptimeCalculator.getUptimeCalculator(monitorID);
|
||
|
|
||
|
let data;
|
||
|
if (period <= 24) {
|
||
|
data = uptimeCalculator.getDataArray(period * 60, "minute");
|
||
|
} else if (period <= 720) {
|
||
|
data = uptimeCalculator.getDataArray(period, "hour");
|
||
|
} else {
|
||
|
data = uptimeCalculator.getDataArray(period / 24, "day");
|
||
|
}
|
||
|
|
||
|
callback({
|
||
|
ok: true,
|
||
|
data,
|
||
|
});
|
||
|
} catch (e) {
|
||
|
callback({
|
||
|
ok: false,
|
||
|
msg: e.message,
|
||
|
});
|
||
|
}
|
||
|
});
|
||
|
};
|