Files
dougal-software/lib/www/server/events/index.js

57 lines
1.8 KiB
JavaScript
Raw Normal View History

const { schema2pid } = require('../lib/db/connection');
const { listen } = require('../ws/db');
const { event } = require('../lib/db');
function start () {
let prevPos = null;
listen(["realtime"], function (data) {
if (!(data.payload && data.payload.new && data.payload.new.meta)) {
console.log("Wrong event", data);
return;
}
const pos = data.payload.new.meta;
if (prevPos) {
if (pos.lineStatus == "online") {
if (prevPos.lineStatus != "online") {
// FIXME TODO Check if there are already FSP, FGSP events for this sequence
// Tag this as FSP/FGSP
const remarks = `SEQ ${pos._sequence}, SOL ${pos.lineName}, BSP: ${(pos.speed*3.6/1.852).toFixed(1)} kt, Water depth: ${Number(pos.waterDepth).toFixed(0)} m.`;
const payload = {
type: "sequence",
sequence: pos._sequence,
point: pos._point,
remarks,
labels: [ "FSP", "FGSP" ]
}
schema2pid(pos._schema).then(projectId => event.post(projectId, payload));
// console.log("post fsp", pos._schema);
}
} else {
if (prevPos.lineStatus == "online") {
// FIXME TODO Check if there are already LSP, LGSP events for this sequence
// Tag this as LSP/LGSP
const remarks = `SEQ ${prevPos._sequence}, EOL ${prevPos.lineName}, BSP: ${(prevPos.speed*3.6/1.852).toFixed(1)} kt, Water depth: ${Number(prevPos.waterDepth).toFixed(0)} m.`;
const payload = {
type: "sequence",
sequence: prevPos._sequence,
point: prevPos._point,
remarks,
labels: [ "LSP", "LGSP" ]
}
schema2pid(prevPos._schema).then(projectId => event.post(projectId, payload));
// console.log("post lsp", prevPos._schema);
}
}
}
prevPos = JSON.parse(JSON.stringify(pos));
});
console.log("Events manager started");
}
module.exports = { start }