From 4a1fbcbd31929908d5e192d36f68da8d59415aac Mon Sep 17 00:00:00 2001 From: Stela Augustinova Date: Wed, 3 Dec 2025 10:46:34 +0100 Subject: [PATCH 1/3] Added select field for thousands separator --- packages/web/src/settings/DataGridSettings.svelte | 11 +++++++++++ 1 file changed, 11 insertions(+) diff --git a/packages/web/src/settings/DataGridSettings.svelte b/packages/web/src/settings/DataGridSettings.svelte index eb47f76ca..08df7512c 100644 --- a/packages/web/src/settings/DataGridSettings.svelte +++ b/packages/web/src/settings/DataGridSettings.svelte @@ -34,6 +34,17 @@ label={_t('settings.dataGrid.thousandsSeparator', { })} /> + + Date: Wed, 3 Dec 2025 13:53:10 +0100 Subject: [PATCH 2/3] Deleted checkbox for thousands separator and updated select field options --- .../web/src/settings/DataGridSettings.svelte | 17 +++++++---------- 1 file changed, 7 insertions(+), 10 deletions(-) diff --git a/packages/web/src/settings/DataGridSettings.svelte b/packages/web/src/settings/DataGridSettings.svelte index 08df7512c..cfb57afe8 100644 --- a/packages/web/src/settings/DataGridSettings.svelte +++ b/packages/web/src/settings/DataGridSettings.svelte @@ -27,21 +27,18 @@ defaultValue="100" {/if} - - From 78e838f2f0c801fecb9ebd5ebae6af4953274c8a Mon Sep 17 00:00:00 2001 From: Stela Augustinova Date: Wed, 3 Dec 2025 13:53:47 +0100 Subject: [PATCH 3/3] Custom thousands separator formatting in grid cell values --- packages/tools/src/stringTools.ts | 24 ++++++++++++++-------- packages/web/src/datagrid/CellValue.svelte | 4 ++-- 2 files changed, 18 insertions(+), 10 deletions(-) diff --git a/packages/tools/src/stringTools.ts b/packages/tools/src/stringTools.ts index f44017b69..26ab837c4 100644 --- a/packages/tools/src/stringTools.ts +++ b/packages/tools/src/stringTools.ts @@ -200,6 +200,12 @@ function stringifyJsonToGrid(value): ReturnType { return { value: '(JSON)', gridStyle: 'nullCellStyle' }; } +function formatNumberCustomSeparator(value, thousandsSeparator) { + const [intPart, decPart] = value.split('.'); + const intPartWithSeparator = intPart.replace(/\B(?=(\d{3})+(?!\d))/g, thousandsSeparator); + return decPart ? `${intPartWithSeparator}.${decPart}` : intPartWithSeparator; +} + export function stringifyCellValue( value, intent: @@ -210,7 +216,7 @@ export function stringifyCellValue( | 'exportIntent' | 'clipboardIntent', editorTypes?: DataEditorTypesBehaviour, - gridFormattingOptions?: { useThousandsSeparator?: boolean }, + gridFormattingOptions?: { thousandsSeparator?: string}, jsonParsedValue?: any ): { value: string; @@ -351,13 +357,15 @@ export function stringifyCellValue( if (_isNumber(value)) { switch (intent) { case 'gridCellIntent': - return { - value: - gridFormattingOptions?.useThousandsSeparator && (value >= 10000 || value <= -10000) - ? value.toLocaleString() - : value.toString(), - gridStyle: 'valueCellStyle', - }; + const separator = gridFormattingOptions?.thousandsSeparator; + let formattedValue; + if (separator === 'none' || (value < 1000 && value > -1000)) formattedValue = value.toString(); + else if (separator === 'system') formattedValue = value.toLocaleString(); + else if (separator === 'space') formattedValue = formatNumberCustomSeparator(value.toString(), ' '); + else if (separator === 'nobreakspace') formattedValue = formatNumberCustomSeparator(value.toString(), '\u202F'); + else if (separator === 'comma') formattedValue = formatNumberCustomSeparator(value.toString(), ','); + else if (separator === 'dot') formattedValue = formatNumberCustomSeparator(value.toString(), '.'); + return { value: formattedValue, gridStyle: 'valueCellStyle' }; default: return { value: value.toString() }; } diff --git a/packages/web/src/datagrid/CellValue.svelte b/packages/web/src/datagrid/CellValue.svelte index 8d006962e..ed813727b 100644 --- a/packages/web/src/datagrid/CellValue.svelte +++ b/packages/web/src/datagrid/CellValue.svelte @@ -1,6 +1,6 @@