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

@ -3,6 +3,7 @@ import * as R from 'ramda'
import * as Yup from 'yup'
import Autocomplete from 'src/components/inputs/formik/Autocomplete.js'
import { getTzLabels } from 'src/utils/timezones'
const getFields = (getData, names, onChange, auxElements = []) => {
return R.filter(
@ -39,53 +40,7 @@ const allFields = (getData, onChange, auxElements = []) => {
const cryptoData = getData(['cryptoCurrencies'])
const timezonesData = R.values(ct.getAllTimezones())
const possibleUTCDSTPairs = 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],
timezonesData
)
)
const finalTimezones = 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 => ite.name,
R.filter(
itx =>
R.eqProps('utcOffset', it, itx) &&
R.eqProps('dstOffset', it, itx),
timezonesData
)
)
}),
possibleUTCDSTPairs
)
)
const buildLabel = tz => {
return `UTC ${tz.utcOffsetStr}${
tz.utcOffset !== tz.dstOffset ? ' (Daylight Saving Time)' : ''
}`
}
const tzLabels = R.map(
it => ({ label: buildLabel(it), code: it }),
finalTimezones
)
console.log(tzLabels)
const tzLabels = getTzLabels(timezonesData)
const findSuggestion = it => {
const machine = R.find(R.propEq('deviceId', it.machine))(machineData)

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 }