db-vendo-client/parse/warning.js

50 lines
1.4 KiB
JavaScript
Raw Normal View History

2018-06-07 18:46:24 +02:00
'use strict'
2019-03-27 18:31:56 +01:00
const brToNewline = require('@derhuerst/br2nl')
2018-06-07 18:46:24 +02:00
const parseDateTime = require('./date-time')
const typesByIcon = Object.assign(Object.create(null), {
HimWarn: 'status'
})
2018-06-07 18:46:24 +02:00
// todo: is passing in profile necessary?
const parseWarning = (profile, w, icons) => {
2019-05-27 16:08:09 +02:00
// todo: pass `d`/`d.common` in, parse `w.fLocX`/`w.tLocX`/`w.icoX`
// todo: hid, act, pub, lead, tckr, comp,
2018-06-07 18:46:24 +02:00
// todo: cat (1, 2), pubChL
// pubChL:
// [ { name: 'timetable',
// fDate: '20180606',
// fTime: '073000',
// tDate: '20180713',
// tTime: '030000' },
// { name: 'export',
// fDate: '20180606',
// fTime: '073000',
// tDate: '20180713',
// tTime: '030000' } ]
2018-07-02 16:59:38 +02:00
const icon = 'number' === typeof w.icoX && icons[w.icoX] || null
const type = icon && icon.res && typesByIcon[icon.res] || 'warning'
const res = {
2019-03-27 18:58:34 +01:00
id: w.hid || null,
type,
2019-03-27 18:58:34 +01:00
summary: brToNewline(w.head), // todo: decode HTML entities
text: brToNewline(w.text), // todo: decode HTML entities
2018-06-07 18:46:24 +02:00
priority: w.prio,
category: w.cat || null // todo: parse to sth meaningful
2018-06-07 18:46:24 +02:00
}
2019-05-27 16:32:42 +02:00
if ('prod' in w) res.products = profile.parseProducts(61442)
// todo: pass tzOffset to `parseDateTime`
if (w.sDate && w.sTime) res.validFrom = parseDateTime(profile, w.sDate, w.sTime, null)
if (w.eDate && w.eTime) res.validUntil = parseDateTime(profile, w.eDate, w.eTime, null)
if (w.lModDate && w.lModTime) res.modified = parseDateTime(profile, w.lModDate, w.lModTime, null)
return res
2018-06-07 18:46:24 +02:00
}
module.exports = parseWarning