Auto-create FSP/LSP events from nav header.

If the nav header is being received, this will
try to detect the start and end of line and create
an entry in the log.

It doesn't check whether FSP/FGSP LSP/LGSP entries
already do exist for that sequence.

Closes # 28.
This commit is contained in:
D. Berge
2020-09-28 21:36:32 +02:00
parent 7758f08a79
commit 03563bdaf2
2 changed files with 57 additions and 0 deletions

View File

@@ -0,0 +1,55 @@
const { schema2pid } = require('../lib/db/connection');
const { listen } = require('../ws/db');
const { event } = require('../lib/db');
function start () {
let prevPos = {};
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;
// console.log("POS", pos);
// console.log("status (C, P)", pos._sequence, pos._point, pos.lineStatus, prevPos._point, prevPos.lineStatus, pos.tstamp, prevPos.tstamp);
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 }