db-vendo-client/parse/movement.js

59 lines
1.3 KiB
JavaScript
Raw Permalink Normal View History

// todo: what is m.dirGeo? maybe the speed?
// todo: what is m.stopL?
// todo: what is m.proc? wut?
// todo: what is m.pos?
// todo: what is m.ani.dirGeo[n]? maybe the speed?
// todo: what is m.ani.proc[n]? wut?
const parseMovement = (ctx, m) => { // m = raw movement
const {profile, opt} = ctx;
const res = {
direction: m.dirTxt
? profile.parseStationName(ctx, m.dirTxt)
: null,
tripId: m.jid || null,
line: m.line || null,
location: m.pos
? {
type: 'location',
latitude: m.pos.y / 1000000,
longitude: m.pos.x / 1000000,
}
: null,
// todo: stopL[0] is the first of the trip! -> filter out
nextStopovers:
m.stopL
.filter(s => Boolean(s.location))
.map(s => profile.parseStopover(ctx, s, m.date)),
frames: [],
};
2017-11-11 22:35:41 +01:00
if (m.ani) {
// todo: ani.dirGeo, ani.fLocX, ani.proc, ani.procAbs, ani.state, ani.stcOutputX
if (Array.isArray(m.ani.mSec)) {
for (let i = 0; i < m.ani.mSec.length; i++) {
res.frames.push({
origin: m.ani.fromLocations[i] || null,
destination: m.ani.toLocations[i] || null,
t: m.ani.mSec[i],
});
}
}
if (opt.polylines) {
if (m.ani.poly) {
res.polyline = profile.parsePolyline(ctx, m.ani.poly);
} else if (m.ani.polyline) {
res.polyline = m.ani.polyline;
2017-11-11 22:35:41 +01:00
}
}
}
return res;
};
2017-11-11 22:35:41 +01:00
2022-05-07 16:17:37 +02:00
export {
parseMovement,
};