refactor: move timezone functions to util file

This commit is contained in:
Sérgio Salgado 2021-04-29 16:15:35 +01:00 committed by Josh Harvey
parent 94af408d8e
commit b1fa5619a7
2 changed files with 55 additions and 47 deletions

View file

@ -0,0 +1,53 @@
import * as R from 'ramda'
const getPossibleUTCDSTPairs = timezones =>
R.map(
it => ({
utcOffset: it.utcOffset,
dstOffset: it.dstOffset,
utcOffsetStr: it.utcOffsetStr,
dstOffsetStr: it.dstOffsetStr
}),
R.uniqBy(
it => [it.utcOffset, it.dstOffset, it.utcOffsetStr, it.dstOffsetStr],
timezones
)
)
const finalTimezones = timezones =>
R.sort(
R.ascend(R.prop('utcOffset')),
R.map(
it => ({
utcOffset: it.utcOffset,
dstOffset: it.dstOffset,
utcOffsetStr: it.utcOffsetStr,
dstOffsetStr: it.dstOffsetStr,
cities: R.map(
ite => {
const regionCityPair = R.split('/', ite.name)
return { region: regionCityPair[0], city: regionCityPair[1] }
},
R.filter(
itx =>
R.eqProps('utcOffset', it, itx) &&
R.eqProps('dstOffset', it, itx) &&
R.includes('/', itx.name),
timezones
)
)
}),
getPossibleUTCDSTPairs(timezones)
)
)
const buildLabel = tz => {
return `UTC${tz.utcOffsetStr}${
tz.utcOffset !== tz.dstOffset ? ' (Daylight Saving Time)' : ''
}`
}
const getTzLabels = timezones =>
R.map(it => ({ label: buildLabel(it), code: it }), finalTimezones(timezones))
export { getTzLabels }