parseWarning: parse more fields

closes #178
This commit is contained in:
Jannis R 2020-03-09 20:54:59 +01:00 committed by Jannis Redmann
parent 731d9b8b81
commit 40ca838258

View file

@ -32,11 +32,12 @@ const parseMsgEvent = (ctx) => (e) => {
} }
const parseWarning = (ctx, w) => { const parseWarning = (ctx, w) => {
const {profile, res: resp} = ctx const {profile, res: resp, common} = ctx
// todo: act, pub, lead, tckr, prod, comp, // todo: https://github.com/marudor/BahnhofsAbfahrten/blob/46a74957d68edc15713112df44e1a25150f5a178/src/types/HAFAS/HimSearch.ts#L31-L53
// todo: cat (1, 2), pubChL, rRefL, impactL // todo: act, pub, lead, tckr
// pubChL: // todo: cat (1, 2), pubChL, rRefL/hints, impactL
// todo: pubChL
// [ { name: 'timetable', // [ { name: 'timetable',
// fDate: '20180606', // fDate: '20180606',
// fTime: '073000', // fTime: '073000',
@ -52,6 +53,7 @@ const parseWarning = (ctx, w) => {
// fTime: '000000', // fTime: '000000',
// tDate: '20190225', // tDate: '20190225',
// tTime: '120000' } // tTime: '120000' }
// todo: w.regionRefL & res.common.himMsgRegionL
const icon = w.icon || null const icon = w.icon || null
const type = icon && icon.type && typesByIcon[icon.type] || 'warning' const type = icon && icon.type && typesByIcon[icon.type] || 'warning'
@ -63,9 +65,18 @@ const parseWarning = (ctx, w) => {
text: w.text ? brToNewline(w.text) : null, // todo: decode HTML entities? text: w.text ? brToNewline(w.text) : null, // todo: decode HTML entities?
icon, // todo: parse icon icon, // todo: parse icon
priority: w.prio, priority: w.prio,
category: w.cat || null // todo: parse to sth meaningful
} }
if ('prod' in w) res.products = profile.parseProductsBitmask(ctx, w.prod) if ('prod' in w) res.products = profile.parseProductsBitmask(ctx, w.prod)
if ('comp' in w) res.company = w.comp || null
// todo: parse to sth meaningful
if ('cat' in w) res.category = w.cat
if (w.catRefL && resp.common && resp.common.himMsgCatL) {
res.categories = w.catRefL
.map(i => resp.common.himMsgCatL[i])
.filter(e => !!e)
.map(cat => cat.id)
}
if (w.edgeRefL && resp.common && resp.common.himMsgEdgeL) { if (w.edgeRefL && resp.common && resp.common.himMsgEdgeL) {
res.edges = w.edgeRefL res.edges = w.edgeRefL
@ -80,6 +91,14 @@ const parseWarning = (ctx, w) => {
.map(parseMsgEvent(ctx)) .map(parseMsgEvent(ctx))
} }
if (w.affProdRefL) {
res.affectedLines = w.affProdRefL
.map(i => common.lines[i])
.filter(l => !!l)
}
if (w.fromLocations) res.fromStops = w.fromLocations
if (w.toLocations) res.toStops = w.toLocations
if (w.sDate && w.sTime) res.validFrom = profile.parseDateTime(ctx, w.sDate, w.sTime, null) if (w.sDate && w.sTime) res.validFrom = profile.parseDateTime(ctx, w.sDate, w.sTime, null)
if (w.eDate && w.eTime) res.validUntil = profile.parseDateTime(ctx, w.eDate, w.eTime, null) if (w.eDate && w.eTime) res.validUntil = profile.parseDateTime(ctx, w.eDate, w.eTime, null)
if (w.lModDate && w.lModTime) res.modified = profile.parseDateTime(ctx, w.lModDate, w.lModTime, null) if (w.lModDate && w.lModTime) res.modified = profile.parseDateTime(ctx, w.lModDate, w.lModTime, null)