Skip to content

Commit 9b43cb8

Browse files
authored
fix: some ais info is not sent when deltas do not contain all needed values (#101)
1 parent 7e38320 commit 9b43cb8

File tree

1 file changed

+28
-28
lines changed

1 file changed

+28
-28
lines changed

conversions/ais.js

Lines changed: 28 additions & 28 deletions
Original file line numberDiff line numberDiff line change
@@ -66,7 +66,7 @@ module.exports = (app, plugin) => {
6666
}
6767

6868
var vessel = app.getPath(delta.context)
69-
var mmsi = _.get(vessel, 'mmsi') || findDeltaValue(delta, 'mmsi');
69+
var mmsi = findDeltaValue(vessel, delta, 'mmsi');
7070

7171
if ( !mmsi ) {
7272
return null;
@@ -83,7 +83,7 @@ module.exports = (app, plugin) => {
8383
return res
8484
} else if ( delta.context.startsWith('atons.') ) {
8585
var vessel = app.getPath(delta.context)
86-
var mmsi = _.get(vessel, 'mmsi') || findDeltaValue(delta, 'mmsi');
86+
var mmsi = findDeltaValue(vessel, delta, 'mmsi');
8787

8888
if ( !mmsi ) {
8989
return
@@ -217,17 +217,16 @@ module.exports = (app, plugin) => {
217217
}
218218

219219
function generateStatic(vessel, mmsi, delta) {
220-
var name = _.get(vessel, "name") || findDeltaValue(delta, 'name');
221-
222-
var type = _.get(findDeltaValue(delta, "design.aisShipType"), "id")
223-
var callsign = findDeltaValue(delta, "communication.callsignVhf")
224-
var length = _.get(findDeltaValue(delta, 'design.length'), 'overall')
225-
var beam = findDeltaValue(delta, 'design.beam')
226-
var fromCenter = findDeltaValue(delta, 'sensors.ais.fromCenter')
227-
var fromBow = findDeltaValue(delta, 'sensors.ais.fromBow')
228-
var draft = _.get(findDeltaValue(delta, 'design.draft'), 'maximum')
229-
var imo = findDeltaValue(delta, 'registrations.imo')
230-
var dest = findDeltaValue(delta, 'navigation.destination.commonName')
220+
var name = findDeltaValue(vessel, delta, 'name');
221+
var type = _.get(findDeltaValue(vessel, delta, "design.aisShipType"), "id")
222+
var callsign = findDeltaValue(vessel, delta, "communication.callsignVhf")
223+
var length = _.get(findDeltaValue(vessel, delta, 'design.length'), 'overall')
224+
var beam = findDeltaValue(vessel, delta, 'design.beam')
225+
var fromCenter = findDeltaValue(vessel, delta, 'sensors.ais.fromCenter')
226+
var fromBow = findDeltaValue(vessel, delta, 'sensors.ais.fromBow')
227+
var draft = _.get(findDeltaValue(vessel, delta, 'design.draft'), 'maximum')
228+
var imo = findDeltaValue(vessel, delta, 'registrations.imo')
229+
var dest = findDeltaValue(vessel, delta, 'navigation.destination.commonName')
231230
/*
232231
type = _.isUndefined(type) ? 0 : type
233232
callsign = fillASCII(callsign ? callsign : '0', 7)
@@ -296,14 +295,14 @@ function generateStatic(vessel, mmsi, delta) {
296295
}
297296

298297
function generatePosition(vessel, mmsi, delta) {
299-
var position = findDeltaValue(delta, 'navigation.position')
298+
var position = findDeltaValue(vessel, delta, 'navigation.position')
300299

301300
if ( position && position.latitude && position.longitude ) {
302-
var cog = findDeltaValue(delta, 'navigation.courseOverGroundTrue')
303-
var sog = findDeltaValue(delta, 'navigation.speedOverGround')
304-
var heading = findDeltaValue(delta, 'navigation.headingTrue');
305-
var rot = findDeltaValue(delta, 'navigation.rateOfTurn')
306-
var status = findDeltaValue(delta, 'navigation.state')
301+
var cog = findDeltaValue(vessel, delta, 'navigation.courseOverGroundTrue')
302+
var sog = findDeltaValue(vessel, delta, 'navigation.speedOverGround')
303+
var heading = findDeltaValue(vessel, delta, 'navigation.headingTrue');
304+
var rot = findDeltaValue(vessel, delta, 'navigation.rateOfTurn')
305+
var status = findDeltaValue(vessel, delta, 'navigation.state')
307306

308307
if ( !_.isUndefined(status) ) {
309308
status = navStatusMapping[status]
@@ -395,15 +394,15 @@ function generatePosition(vessel, mmsi, delta) {
395394
}
396395

397396
function generateAtoN(vessel, mmsi, delta) {
398-
var position = findDeltaValue(delta, 'navigation.position')
397+
var position = findDeltaValue(vessel, delta, 'navigation.position')
399398

400399
if ( position && position.latitude && position.longitude ) {
401-
var name = _.get(vessel, "name") || findDeltaValue(delta, 'name');
402-
var type = _.get(findDeltaValue(delta, "atonType"), "id")
403-
var length = _.get(findDeltaValue(delta, 'design.length'), 'overall')
404-
var beam = findDeltaValue(delta, 'design.beam')
405-
var fromCenter = findDeltaValue(delta, 'sensors.ais.fromCenter')
406-
var fromBow = findDeltaValue(delta, 'sensors.ais.fromBow')
400+
var name = _.get(vessel, "name") || findDeltaValue(vessel, delta, 'name');
401+
var type = _.get(findDeltaValue(vessel, delta, "atonType"), "id")
402+
var length = _.get(findDeltaValue(vessel, delta, 'design.length'), 'overall')
403+
var beam = findDeltaValue(vessel, delta, 'design.beam')
404+
var fromCenter = findDeltaValue(vessel, delta, 'sensors.ais.fromCenter')
405+
var fromBow = findDeltaValue(vessel, delta, 'sensors.ais.fromBow')
407406
var latitude = position.latitude * 10000000;
408407
var longitude = position.longitude * 10000000;
409408

@@ -516,7 +515,7 @@ function hasAnyKeys(delta, keys) {
516515
return false
517516
}
518517

519-
function findDeltaValue(delta, path) {
518+
function findDeltaValue(vessel, delta, path) {
520519
if ( delta.updates ) {
521520
for ( var i = 0; i < delta.updates.length; i++ ) {
522521
for ( var j = 0; j < delta.updates[i].values.length; j++ ) {
@@ -533,7 +532,8 @@ function findDeltaValue(delta, path) {
533532
}
534533
}
535534
}
536-
return undefined
535+
let val = _.get(vessel, path)
536+
return val ? val.value: undefined
537537
}
538538

539539
function fillASCII(theString, len)

0 commit comments

Comments
 (0)