From 018fc84bf5c08728ea1aa206972919682a50788c Mon Sep 17 00:00:00 2001 From: Jannis R Date: Fri, 23 Aug 2019 15:39:42 +0200 Subject: [PATCH] parseCommon: parse polylines --- parse/common.js | 12 +++++++++++- parse/journey-leg.js | 9 ++------- parse/movement.js | 10 ++-------- 3 files changed, 15 insertions(+), 16 deletions(-) diff --git a/parse/common.js b/parse/common.js index eefc0a58..eb224845 100644 --- a/parse/common.js +++ b/parse/common.js @@ -81,7 +81,17 @@ const parseCommonData = (profile, opt, res) => { } res.polylines = [] - if (opt.polylines && Array.isArray(c.polyL)) res.polylines = c.polyL + if (opt.polylines && Array.isArray(c.polyL)) { + const parse = profile.parsePolyline(profile, opt, res) + res.polylines = c.polyL.map(parse) + // todo: **.ani.poly -> parsePolyline() + + findIdxRefs(res, '**.polyG.polyXL', (idxs, _, path) => { + const idx = idxs.find(idx => !!res.polylines[idx]) // find any given polyline + const jny = get(res, path.slice(0, -2)) + jny.polyline = res.polylines[idx] + }) + } return res } diff --git a/parse/journey-leg.js b/parse/journey-leg.js index 819f664c..7b5312d9 100644 --- a/parse/journey-leg.js +++ b/parse/journey-leg.js @@ -37,7 +37,6 @@ const applyRemarks = (leg, refs) => { } const createParseJourneyLeg = (profile, opt, data) => { - const {polylines} = data // todo: pt.status, pt.isPartCncl // todo: pt.isRchbl, pt.chRatingRT, pt.chgDurR, pt.minChg // todo: pt.dep.dProgType, pt.arr.dProgType @@ -76,12 +75,8 @@ const createParseJourneyLeg = (profile, opt, data) => { res.arrivalDelay = Math.round((realtime - planned) / 1000) } - if (pt.jny && pt.jny.polyG) { - let p = pt.jny.polyG.polyXL - p = Array.isArray(p) && polylines[p[0]] - // todo: there can be >1 polyline - const parse = profile.parsePolyline(profile, opt, data) - res.polyline = p && parse(p) || null + if (pt.jny && pt.jny.polyline) { + res.polyline = pt.jny.polyline || null } if (pt.type === 'WALK' || pt.type === 'TRSF') { diff --git a/parse/movement.js b/parse/movement.js index 0b68efd7..fa61c48a 100644 --- a/parse/movement.js +++ b/parse/movement.js @@ -1,8 +1,6 @@ 'use strict' const createParseMovement = (profile, opt, data) => { - const {polylines} = data - // todo: what is m.dirGeo? maybe the speed? // todo: what is m.stopL? // todo: what is m.proc? wut? @@ -41,12 +39,8 @@ const createParseMovement = (profile, opt, data) => { if (m.ani.poly) { const parse = profile.parsePolyline(profile, opt, data) res.polyline = parse(m.ani.poly) - } else if (m.ani.polyG) { - let p = m.ani.polyG.polyXL - p = Array.isArray(p) && polylines[p[0]] - // todo: there can be >1 polyline - const parse = profile.parsePolyline(profile, opt, data) - res.polyline = p && parse(p) || null + } else if (m.ani.polyline) { + res.polyline = m.ani.polyline } } }