mirror of
https://github.com/smartyellow/status.git
synced 2025-06-28 04:35:11 +00:00
Dashboard: server-side data processing
Signed-off-by: Romein van Buren <romein@vburen.nl>
This commit is contained in:
@ -5,6 +5,13 @@ const { makeId } = require('core/makeid');
|
||||
const decoder = new TextDecoder('utf-8');
|
||||
let uws;
|
||||
|
||||
const mapService = (s, beat) => ({
|
||||
id: s.id,
|
||||
name: s.name,
|
||||
cluster: s.cluster,
|
||||
lastBeat: beat,
|
||||
});
|
||||
|
||||
async function createDashboardSocket(server) {
|
||||
uws = server.ws({
|
||||
route: '/statusdashboard/socket',
|
||||
@ -34,21 +41,33 @@ async function createDashboardSocket(server) {
|
||||
.find({ webservice: { $in: services.map(s => s.id) } })
|
||||
.sort({ date: -1 })
|
||||
.toArray();
|
||||
const mappedServices = {};
|
||||
|
||||
for (const s of services) {
|
||||
const lastBeat = heartbeats.find(h => h.webservice === s.id);
|
||||
mappedServices[s.id] = {
|
||||
name: s.name,
|
||||
lastBeat: lastBeat || {},
|
||||
cluster: s.cluster,
|
||||
};
|
||||
const servicesUp = [];
|
||||
const servicesDown = [];
|
||||
const servicesUnknown = [];
|
||||
console.log(heartbeats);
|
||||
|
||||
for (let service of services) {
|
||||
const beat = heartbeats.find(b => b.webservice === service.id);
|
||||
service = mapService(service, beat);
|
||||
|
||||
if (!beat) {
|
||||
servicesUnknown.push(service);
|
||||
}
|
||||
else if (beat.down) {
|
||||
servicesDown.push(service);
|
||||
}
|
||||
else {
|
||||
servicesUp.push(service);
|
||||
}
|
||||
}
|
||||
|
||||
try {
|
||||
ws.send(JSON.stringify({
|
||||
cmd: 'data',
|
||||
data: mappedServices,
|
||||
servicesUp,
|
||||
servicesDown,
|
||||
servicesUnknown,
|
||||
}));
|
||||
}
|
||||
catch {
|
||||
|
Reference in New Issue
Block a user