From 2886bd49432b2e472df20486f65db0de45ed62f6 Mon Sep 17 00:00:00 2001 From: "D. Berge" Date: Mon, 28 Sep 2020 21:43:24 +0200 Subject: [PATCH] Do not react to events until we have at least two of them. This is to avoid false positives when restarting the API mid-line. --- lib/www/server/events/index.js | 61 +++++++++++++++++----------------- 1 file changed, 31 insertions(+), 30 deletions(-) diff --git a/lib/www/server/events/index.js b/lib/www/server/events/index.js index af31251..ada5c53 100644 --- a/lib/www/server/events/index.js +++ b/lib/www/server/events/index.js @@ -3,7 +3,7 @@ const { listen } = require('../ws/db'); const { event } = require('../lib/db'); function start () { - let prevPos = {}; + let prevPos = null; listen(["realtime"], function (data) { if (!(data.payload && data.payload.new && data.payload.new.meta)) { @@ -12,37 +12,38 @@ function start () { } 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" ] + + 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); } - 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" ] + } 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); } - schema2pid(prevPos._schema).then(projectId => event.post(projectId, payload)); -// console.log("post lsp", prevPos._schema); } }