mirror of
https://github.com/public-transport/db-vendo-client.git
synced 2025-02-23 07:09:35 +02:00
67 lines
1.4 KiB
JavaScript
67 lines
1.4 KiB
JavaScript
'use strict'
|
|
|
|
const codesByIcon = Object.assign(Object.create(null), {
|
|
cancel: 'cancelled'
|
|
})
|
|
|
|
// todo: is passing in profile necessary?
|
|
// todo: pass in tag list from hint reference, e.g.:
|
|
// "tagL": [
|
|
// "RES_JNY_H3" // H3 = level 3 heading? shown on overview
|
|
// ]
|
|
// "tagL": [
|
|
// "RES_JNY_DTL" // only shown in journey detail
|
|
// ]
|
|
const parseHint = (profile, h, icons) => {
|
|
// todo: C
|
|
// todo:
|
|
// { type: 'Q',
|
|
// code: '',
|
|
// icoX: 11,
|
|
// txtN:
|
|
// 'RE 3132: Berlin Zoologischer Garten - Brandenburg Hbf: Information. A railway carriage is missing',
|
|
// sIdx: 4 }
|
|
|
|
const text = h.txtN && h.txtN.trim() || ''
|
|
const icon = 'number' === typeof h.icoX && icons[h.icoX] || null
|
|
const code = h.code || (icon && icon.res && codesByIcon[icon.res]) || null
|
|
|
|
if (h.type === 'M') {
|
|
return {
|
|
type: 'status',
|
|
summary: h.txtS && h.txtS.trim() || '',
|
|
code,
|
|
text
|
|
}
|
|
}
|
|
|
|
if (h.type === 'L') {
|
|
return {
|
|
type: 'status',
|
|
code: 'alternative-trip',
|
|
text,
|
|
tripId: h.jid
|
|
}
|
|
}
|
|
if (h.type === 'A') {
|
|
return {
|
|
type: 'hint',
|
|
code: h.code || null,
|
|
text: h.txtN || null
|
|
}
|
|
}
|
|
|
|
if (h.type === 'D' || h.type === 'U' || h.type === 'R' || h.type === 'N' || h.type === 'Y') {
|
|
// todo: how can we identify the individual types?
|
|
// todo: does `D` mean "disturbance"?
|
|
return {
|
|
type: 'status',
|
|
code,
|
|
text
|
|
}
|
|
}
|
|
|
|
return null
|
|
}
|
|
|
|
module.exports = parseHint
|