diff --git a/assets/layers/entrance/entrance.json b/assets/layers/entrance/entrance.json index 05d576f5a5..3f95503155 100644 --- a/assets/layers/entrance/entrance.json +++ b/assets/layers/entrance/entrance.json @@ -629,7 +629,7 @@ "es": "Altura del bordillo de la puerta", "it": "Altezza del gradino della porta" }, - "type": "pnat" + "type": "pfloat" }, "mappings": [ { diff --git a/src/UI/InputElement/Validators/FloatValidator.ts b/src/UI/InputElement/Validators/FloatValidator.ts index 4ce5da81ea..2fb5bfcb4b 100644 --- a/src/UI/InputElement/Validators/FloatValidator.ts +++ b/src/UI/InputElement/Validators/FloatValidator.ts @@ -6,15 +6,28 @@ import { ValidatorType } from "../Validators" export default class FloatValidator extends Validator { inputmode: "decimal" = "decimal" as const + protected static readonly formattingHasComma = ("" + 1.42).indexOf(",") > 0 + constructor(name?: ValidatorType, explanation?: string) { super(name ?? "float", explanation ?? "A decimal number", "decimal") } - isValid(str) { + /** + * + * new FloatValidator().isValid("0,2") // => true + */ + isValid(str: string) { + console.log("Is valid?", str, FloatValidator.formattingHasComma) + if (!FloatValidator.formattingHasComma) { + str = str.replace(",", ".") + } return !isNaN(Number(str)) && !str.endsWith(".") && !str.endsWith(",") } - reformat(str): string { + reformat(str: string): string { + if (!FloatValidator.formattingHasComma) { + str = str.replace(",", ".") + } return "" + Number(str) } diff --git a/src/UI/InputElement/Validators/PFloatValidator.ts b/src/UI/InputElement/Validators/PFloatValidator.ts index cc5d108a9b..7b3c2aa713 100644 --- a/src/UI/InputElement/Validators/PFloatValidator.ts +++ b/src/UI/InputElement/Validators/PFloatValidator.ts @@ -1,14 +1,22 @@ import { Translation } from "../../i18n/Translation" import Translations from "../../i18n/Translations" -import { Validator } from "../Validator" +import FloatValidator from "./FloatValidator" -export default class PFloatValidator extends Validator { +export default class PFloatValidator extends FloatValidator { constructor() { super("pfloat", "A positive decimal number or zero") } - isValid = (str) => - !isNaN(Number(str)) && Number(str) >= 0 && !str.endsWith(".") && !str.endsWith(",") + isValid(str: string) { + if (!super.isValid(str)) { + return false + } + if (!FloatValidator.formattingHasComma) { + str = str.replace(",", ".") + } + const n = Number(str) + return n >= 0 + } getFeedback(s: string): Translation { const spr = super.getFeedback(s)