diff --git a/lib/www/server/events/index.js b/lib/www/server/events/index.js new file mode 100644 index 0000000..af31251 --- /dev/null +++ b/lib/www/server/events/index.js @@ -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 } diff --git a/lib/www/server/index.js b/lib/www/server/index.js index 1dce8d3..ad4b4d2 100755 --- a/lib/www/server/index.js +++ b/lib/www/server/index.js @@ -2,6 +2,8 @@ const api = require('./api'); const ws = require('./ws'); +const em = require('./events'); const server = api.start(process.env.HTTP_PORT || 3000, process.env.HTTP_PATH); ws.start(server); +em.start();