From 29750d433f22b92284057148fe4e54e80a012a4e Mon Sep 17 00:00:00 2001 From: alesan99 Date: Mon, 27 Apr 2026 10:06:22 -0500 Subject: [PATCH 1/3] Check if frontend table format is numeric before trimming zeros --- .../frontend/js_src/lib/components/Formatters/formatters.ts | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/specifyweb/frontend/js_src/lib/components/Formatters/formatters.ts b/specifyweb/frontend/js_src/lib/components/Formatters/formatters.ts index 6bac7a53769..63bac0d9567 100644 --- a/specifyweb/frontend/js_src/lib/components/Formatters/formatters.ts +++ b/specifyweb/frontend/js_src/lib/components/Formatters/formatters.ts @@ -196,8 +196,8 @@ async function formatField( ? naiveFormatter(parentResource.specifyTable.name, parentResource.id) : userText.noPermission(); - if (trimZeros) - formatted = Number.isNaN(Number(formatted)) + if (trimZeros) + formatted = Number.isNaN(Number(formatted)) && /\d/.test(formatted ?? '') ? formatted : Number(formatted).toString(); From a744beb3f4838efcbf1539527088770f43e3b683 Mon Sep 17 00:00:00 2001 From: alesan99 Date: Mon, 27 Apr 2026 15:26:56 -0500 Subject: [PATCH 2/3] Don't convert whitespaces --- .../frontend/js_src/lib/components/Formatters/formatters.ts | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/specifyweb/frontend/js_src/lib/components/Formatters/formatters.ts b/specifyweb/frontend/js_src/lib/components/Formatters/formatters.ts index 63bac0d9567..51854af7888 100644 --- a/specifyweb/frontend/js_src/lib/components/Formatters/formatters.ts +++ b/specifyweb/frontend/js_src/lib/components/Formatters/formatters.ts @@ -196,8 +196,8 @@ async function formatField( ? naiveFormatter(parentResource.specifyTable.name, parentResource.id) : userText.noPermission(); - if (trimZeros) - formatted = Number.isNaN(Number(formatted)) && /\d/.test(formatted ?? '') + if (trimZeros) + formatted = Number.isNaN(Number(formatted)) || (formatted ?? '').trim() === '' ? formatted : Number(formatted).toString(); From a397f715de0ab787f316da4840625fcc76730e0f Mon Sep 17 00:00:00 2001 From: alesan99 Date: Fri, 1 May 2026 14:21:08 -0500 Subject: [PATCH 3/3] Don't trim when precision loss is likely --- .../js_src/lib/components/Formatters/formatters.ts | 8 +++++--- 1 file changed, 5 insertions(+), 3 deletions(-) diff --git a/specifyweb/frontend/js_src/lib/components/Formatters/formatters.ts b/specifyweb/frontend/js_src/lib/components/Formatters/formatters.ts index 51854af7888..73acc8afab4 100644 --- a/specifyweb/frontend/js_src/lib/components/Formatters/formatters.ts +++ b/specifyweb/frontend/js_src/lib/components/Formatters/formatters.ts @@ -196,10 +196,12 @@ async function formatField( ? naiveFormatter(parentResource.specifyTable.name, parentResource.id) : userText.noPermission(); - if (trimZeros) - formatted = Number.isNaN(Number(formatted)) || (formatted ?? '').trim() === '' + if (trimZeros) { + const num = Number(formatted); + formatted = Number.isNaN(num) || (formatted ?? '').trim() === '' || !Number.isSafeInteger(num) ? formatted - : Number(formatted).toString(); + : num.toString(); + } return { formatted: formatted?.toString() ?? '',