fix: timezone labels

This commit is contained in:
Sérgio Salgado 2021-04-29 17:37:35 +01:00 committed by Josh Harvey
parent b1fa5619a7
commit ea1aafa3e9
2 changed files with 33 additions and 8 deletions

View file

@ -14,7 +14,7 @@ const getPossibleUTCDSTPairs = timezones =>
)
)
const finalTimezones = timezones =>
const getFormattedTimezones = timezones =>
R.sort(
R.ascend(R.prop('utcOffset')),
R.map(
@ -26,12 +26,18 @@ const finalTimezones = timezones =>
cities: R.map(
ite => {
const regionCityPair = R.split('/', ite.name)
return { region: regionCityPair[0], city: regionCityPair[1] }
return {
region: regionCityPair[0],
city: R.replace(/_/g, ' ', regionCityPair[1]),
country: ite.country
}
},
R.filter(
itx =>
R.eqProps('utcOffset', it, itx) &&
R.eqProps('dstOffset', it, itx) &&
!R.isNil(itx.country) &&
!R.includes('Etc', itx.name) &&
R.includes('/', itx.name),
timezones
)
@ -41,13 +47,30 @@ const finalTimezones = timezones =>
)
)
const getFinalTimezones = timezones => {
const formattedTimezones = getFormattedTimezones(timezones)
const nonEmptyTimezones = R.filter(
it => !R.isEmpty(it.cities),
formattedTimezones
)
const nonDuplicateCities = R.map(
it => ({
...it,
cities: R.uniqBy(R.prop('country'), R.uniqBy(R.prop('city'), it.cities))
}),
nonEmptyTimezones
)
return nonDuplicateCities
}
const buildLabel = tz => {
return `UTC${tz.utcOffsetStr}${
tz.utcOffset !== tz.dstOffset ? ' (Daylight Saving Time)' : ''
}`
return `(UTC${tz.utcOffsetStr}) ${R.map(it => it.city, tz.cities).join(', ')}`
}
const getTzLabels = timezones =>
R.map(it => ({ label: buildLabel(it), code: it }), finalTimezones(timezones))
R.map(
it => ({ label: buildLabel(it), code: it }),
getFinalTimezones(timezones)
)
export { getTzLabels }