fix: timezone labels
This commit is contained in:
parent
b1fa5619a7
commit
ea1aafa3e9
2 changed files with 33 additions and 8 deletions
|
|
@ -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,
|
||||||
|
|
|
||||||
|
|
@ -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 }
|
||||||
|
|
|
||||||
Loading…
Add table
Add a link
Reference in a new issue