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

View file

@ -14,7 +14,7 @@ const getPossibleUTCDSTPairs = timezones =>
) )
) )
const finalTimezones = timezones => const getFormattedTimezones = timezones =>
R.sort( R.sort(
R.ascend(R.prop('utcOffset')), R.ascend(R.prop('utcOffset')),
R.map( R.map(
@ -26,12 +26,18 @@ const finalTimezones = timezones =>
cities: R.map( cities: R.map(
ite => { ite => {
const regionCityPair = R.split('/', ite.name) 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( R.filter(
itx => itx =>
R.eqProps('utcOffset', it, itx) && R.eqProps('utcOffset', it, itx) &&
R.eqProps('dstOffset', it, itx) && R.eqProps('dstOffset', it, itx) &&
!R.isNil(itx.country) &&
!R.includes('Etc', itx.name) &&
R.includes('/', itx.name), R.includes('/', itx.name),
timezones 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 => { const buildLabel = tz => {
return `UTC${tz.utcOffsetStr}${ return `(UTC${tz.utcOffsetStr}) ${R.map(it => it.city, tz.cities).join(', ')}`
tz.utcOffset !== tz.dstOffset ? ' (Daylight Saving Time)' : ''
}`
} }
const getTzLabels = timezones => 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 } export { getTzLabels }