From 53f77fb852a46a1863a0b0b753adcaeb14bce73b Mon Sep 17 00:00:00 2001 From: Martin Raifer Date: Fri, 26 May 2023 19:34:32 +0200 Subject: [PATCH] accept raw number input also for roadspeed/roadheight fields --- modules/ui/fields/input.js | 5 +++-- modules/ui/fields/roadheight.js | 9 +++++++-- modules/ui/fields/roadspeed.js | 5 ++++- 3 files changed, 14 insertions(+), 5 deletions(-) diff --git a/modules/ui/fields/input.js b/modules/ui/fields/input.js index 427265461..aa8d55225 100644 --- a/modules/ui/fields/input.js +++ b/modules/ui/fields/input.js @@ -19,9 +19,11 @@ export { uiFieldText as uiFieldIdentifier, uiFieldText as uiFieldNumber, uiFieldText as uiFieldTel, - uiFieldText as uiFieldUrl + uiFieldText as uiFieldUrl, + likelyRawNumberFormat }; +const likelyRawNumberFormat = /^-?(0\.\d*|\d*\.\d{0,2}(\d{4,})?|\d{4,}\.\d{3})$/; export function uiFieldText(field, context) { var dispatch = d3_dispatch('change'); @@ -36,7 +38,6 @@ export function uiFieldText(field, context) { const formatFloat = localizer.floatFormatter(localizer.languageCode()); const parseLocaleFloat = localizer.floatParser(localizer.languageCode()); const countDecimalPlaces = localizer.decimalPlaceCounter(localizer.languageCode()); - const likelyRawNumberFormat = /^-?(0\.\d*|\d*\.\d{0,2}(\d{4,})?|\d{4,}\.\d{3})$/; if (field.type === 'tel') { fileFetcher.get('phone_formats') diff --git a/modules/ui/fields/roadheight.js b/modules/ui/fields/roadheight.js index edadaf2ea..612193073 100644 --- a/modules/ui/fields/roadheight.js +++ b/modules/ui/fields/roadheight.js @@ -5,6 +5,7 @@ import * as countryCoder from '@rapideditor/country-coder'; import { uiCombobox } from '../combobox'; import { t, localizer } from '../../core/localizer'; import { utilGetSetValue, utilNoAuto, utilRebind, utilTotalExtent } from '../../util'; +import { likelyRawNumberFormat } from './input'; export function uiFieldRoadheight(field, context) { @@ -132,9 +133,13 @@ export function uiFieldRoadheight(field, context) { if (!primaryValue && !secondaryValue) { tag[field.key] = undefined; } else { - var rawPrimaryValue = parseLocaleFloat(primaryValue); + var rawPrimaryValue = likelyRawNumberFormat.test(primaryValue) + ? parseFloat(primaryValue) + : parseLocaleFloat(primaryValue); if (isNaN(rawPrimaryValue)) rawPrimaryValue = primaryValue; - var rawSecondaryValue = parseLocaleFloat(secondaryValue); + var rawSecondaryValue = likelyRawNumberFormat.test(secondaryValue) + ? parseFloat(secondaryValue) + : parseLocaleFloat(secondaryValue); if (isNaN(rawSecondaryValue)) rawSecondaryValue = secondaryValue; if (isNaN(rawPrimaryValue) || isNaN(rawSecondaryValue) || !_isImperial) { diff --git a/modules/ui/fields/roadspeed.js b/modules/ui/fields/roadspeed.js index 9f7f90a78..2b0ecc59c 100644 --- a/modules/ui/fields/roadspeed.js +++ b/modules/ui/fields/roadspeed.js @@ -5,6 +5,7 @@ import * as countryCoder from '@rapideditor/country-coder'; import { uiCombobox } from '../combobox'; import { t, localizer } from '../../core/localizer'; import { utilGetSetValue, utilNoAuto, utilRebind, utilTotalExtent } from '../../util'; +import { likelyRawNumberFormat } from './input'; export function uiFieldRoadspeed(field, context) { @@ -109,7 +110,9 @@ export function uiFieldRoadspeed(field, context) { if (!value) { tag[field.key] = undefined; } else { - var rawValue = parseLocaleFloat(value); + var rawValue = likelyRawNumberFormat.test(value) + ? parseFloat(value) + : parseLocaleFloat(value); if (isNaN(rawValue)) rawValue = value; if (isNaN(rawValue) || !_isImperial) { tag[field.key] = context.cleanTagValue(rawValue);