2017-11-11 22:35:41 +01:00
|
|
|
'use strict'
|
|
|
|
|
2018-06-30 18:04:44 +02:00
|
|
|
const codesByIcon = Object.assign(Object.create(null), {
|
|
|
|
cancel: 'cancelled'
|
|
|
|
})
|
|
|
|
|
2019-06-21 18:43:10 +02:00
|
|
|
// 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
|
|
|
|
// ]
|
2019-09-03 15:33:30 +02:00
|
|
|
// todo: https://github.com/public-transport/hafas-client/issues/5
|
2019-10-20 00:19:11 +02:00
|
|
|
const parseHint = (ctx, h) => {
|
2018-06-01 11:12:54 +02:00
|
|
|
// todo: C
|
2018-06-11 18:41:53 +02:00
|
|
|
|
|
|
|
const text = h.txtN && h.txtN.trim() || ''
|
2019-08-23 16:02:34 +02:00
|
|
|
const icon = h.icon || null
|
2018-10-27 14:50:45 +02:00
|
|
|
const code = h.code || (icon && icon.type && codesByIcon[icon.type]) || null
|
2018-06-07 15:41:00 +02:00
|
|
|
|
2018-06-11 19:50:44 +02:00
|
|
|
if (h.type === 'M') {
|
|
|
|
return {
|
|
|
|
type: 'status',
|
|
|
|
summary: h.txtS && h.txtS.trim() || '',
|
2018-06-30 18:04:44 +02:00
|
|
|
code,
|
2018-06-11 19:50:44 +02:00
|
|
|
text
|
|
|
|
}
|
|
|
|
}
|
|
|
|
|
2018-06-07 16:00:28 +02:00
|
|
|
if (h.type === 'L') {
|
2018-06-01 11:12:54 +02:00
|
|
|
return {
|
|
|
|
type: 'status',
|
|
|
|
code: 'alternative-trip',
|
2018-06-11 18:41:53 +02:00
|
|
|
text,
|
2018-06-26 14:57:02 +02:00
|
|
|
tripId: h.jid
|
2018-06-01 11:12:54 +02:00
|
|
|
}
|
|
|
|
}
|
2018-10-28 16:37:19 +01:00
|
|
|
if (h.type === 'A' || h.type === 'I') {
|
2018-07-09 19:26:15 +02:00
|
|
|
return {
|
|
|
|
type: 'hint',
|
2019-09-03 15:33:30 +02:00
|
|
|
code,
|
|
|
|
text
|
2018-06-30 18:04:44 +02:00
|
|
|
}
|
2018-06-07 15:41:00 +02:00
|
|
|
}
|
2018-06-30 18:04:44 +02:00
|
|
|
|
2019-11-24 16:59:50 +01:00
|
|
|
if (
|
|
|
|
h.type === 'D' || h.type === 'U' || h.type === 'R' || h.type === 'N' ||
|
|
|
|
h.type === 'Y' || h.type === 'Q'
|
|
|
|
) {
|
2018-06-01 11:12:54 +02:00
|
|
|
// todo: how can we identify the individual types?
|
2018-07-02 18:48:23 +02:00
|
|
|
// todo: does `D` mean "disturbance"?
|
2018-06-01 11:12:54 +02:00
|
|
|
return {
|
|
|
|
type: 'status',
|
2018-06-30 18:04:44 +02:00
|
|
|
code,
|
2018-06-11 18:41:53 +02:00
|
|
|
text
|
2018-06-01 11:12:54 +02:00
|
|
|
}
|
|
|
|
}
|
2018-07-02 18:48:23 +02:00
|
|
|
|
2018-06-01 11:12:54 +02:00
|
|
|
return null
|
2017-11-11 22:35:41 +01:00
|
|
|
}
|
|
|
|
|
2018-06-07 16:00:28 +02:00
|
|
|
module.exports = parseHint
|