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

@ -42,6 +42,8 @@ const allFields = (getData, onChange, auxElements = []) => {
const tzLabels = getTzLabels(timezonesData)
console.log(tzLabels)
const findSuggestion = it => {
const machine = R.find(R.propEq('deviceId', it.machine))(machineData)
return machine ? [machine] : []
@ -100,7 +102,7 @@ const allFields = (getData, onChange, auxElements = []) => {
},
{
name: 'cryptoCurrencies',
width: 220,
width: 170,
size: 'sm',
view: displayCodeArray(cryptoData),
input: Autocomplete,
@ -115,7 +117,7 @@ const allFields = (getData, onChange, auxElements = []) => {
},
{
name: 'timezone',
width: 220,
width: 320,
size: 'sm',
view: getView(tzLabels, 'label'),
input: Autocomplete,

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 }