From b3af1db702cfac34d7be99aff161f2571e9200fc Mon Sep 17 00:00:00 2001 From: Siddhu545 Date: Thu, 24 Apr 2025 23:24:05 +0100 Subject: [PATCH] Bug#3109 added validation for null date check --- .../component-utilities/src/dateParsing.js | 24 +++++++++++++++++-- .../lib/unsorted/viz/table/_DataTable.svelte | 6 ++--- 2 files changed, 25 insertions(+), 5 deletions(-) diff --git a/packages/lib/component-utilities/src/dateParsing.js b/packages/lib/component-utilities/src/dateParsing.js index 1edfddaf2c..52990c743d 100644 --- a/packages/lib/component-utilities/src/dateParsing.js +++ b/packages/lib/component-utilities/src/dateParsing.js @@ -35,7 +35,17 @@ export function convertColumnToDate(data, column) { data = tidy( data, - mutate({ [column]: (d) => (d[column] ? new Date(standardizeDateString(d[column])) : null) }) + mutate({ + [column]: (d) => { + + const raw = d[column] + if (raw === null | raw === '') return null + const standardized = standardizeDateString(raw) + const date = new Date(standardized) + + return isNan(date.getTime()) ? null : date + } + }) ); return data; @@ -45,7 +55,17 @@ export function standardizeDateColumn(data, column) { // Replaces a date column's string values with standardized date strings, using the standardizeDateString function // Used in Chart.svelte, where using Date objects leads to errors - data = tidy(data, mutate({ [column]: (d) => standardizeDateString(d[column]) })); + data = tidy(data, mutate({ + [column]: (d) => { + + const raw = d[column] + if (raw === null | raw === '') return null + const standardized = standardizeDateString(raw) + const date = new Date(standardized) + + return isNan(date.getTime()) ? null : date + } + })); return data; } diff --git a/packages/ui/core-components/src/lib/unsorted/viz/table/_DataTable.svelte b/packages/ui/core-components/src/lib/unsorted/viz/table/_DataTable.svelte index 9bd612f444..4beed7db40 100644 --- a/packages/ui/core-components/src/lib/unsorted/viz/table/_DataTable.svelte +++ b/packages/ui/core-components/src/lib/unsorted/viz/table/_DataTable.svelte @@ -216,9 +216,9 @@ .filter((d) => d.type === 'date' && !(data[0]?.[d.id] instanceof Date)) .map((d) => d.id); - for (let i = 0; i < dateCols.length; i++) { - data = convertColumnToDate(data, dateCols[i]); - } + dateCols.forEach((col) => { + data = convertColumnToDate(data, col); + }); // Hide link column if columns have not been explicitly selected: if (link) {