db-vendo-client/parse/departure.js

39 lines
1.2 KiB
JavaScript
Raw Normal View History

2017-11-11 22:35:41 +01:00
'use strict'
// todos from derhuerst/hafas-client#2
// - stdStop.dCncl
// - stdStop.dPlatfS, stdStop.dPlatfR
// todo: what is d.jny.dirFlg?
// todo: d.stbStop.dProgType
// todo: d.freq, d.freq.jnyL, see https://github.com/derhuerst/hafas-client/blob/9203ed1481f08baacca41ac5e3c19bf022f01b0b/parse.js#L115
2017-11-11 22:35:41 +01:00
2017-11-12 01:23:34 +01:00
const createParseDeparture = (profile, stations, lines, remarks) => {
const tz = profile.timezone
const findRemark = rm => remarks[parseInt(rm.remX)] || null
2017-11-11 22:35:41 +01:00
const parseDeparture = (d) => {
2017-11-12 01:23:34 +01:00
const when = profile.parseDateTime(tz, d.date, d.stbStop.dTimeR || d.stbStop.dTimeS)
const res = {
ref: d.jid,
2017-11-12 00:36:13 +01:00
station: stations[parseInt(d.stbStop.locX)] || null,
when: when.format(),
direction: d.dirTxt,
2017-11-12 00:36:13 +01:00
line: lines[parseInt(d.prodX)] || null,
remarks: d.remL ? d.remL.map(findRemark) : [],
trip: +d.jid.split('|')[1] // todo: this seems brittle
2017-11-11 22:35:41 +01:00
}
if (d.stbStop.dTimeR && d.stbStop.dTimeS) {
2017-11-12 01:23:34 +01:00
const realtime = profile.parseDateTime(tz, d.date, d.stbStop.dTimeR)
const planned = profile.parseDateTime(tz, d.date, d.stbStop.dTimeS)
res.delay = Math.round((realtime - planned) / 1000)
} else res.delay = null
2017-11-11 22:35:41 +01:00
return res
2017-11-11 22:35:41 +01:00
}
return parseDeparture
}
module.exports = createParseDeparture