mirror of
https://gitlab.com/wgp/dougal/software.git
synced 2025-12-06 10:27:09 +00:00
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:
55
lib/www/server/events/index.js
Normal file
55
lib/www/server/events/index.js
Normal 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 }
|
||||
Reference in New Issue
Block a user