From 2b3e797fb50741a5980e96174c60c1a5fa33ba41 Mon Sep 17 00:00:00 2001 From: Daniel Bloxham Date: Fri, 18 Feb 2022 11:40:31 +0000 Subject: [PATCH 1/2] HEEDLS-500 - fix learning log JS datetime sorting --- .../Scripts/searchSortFilterAndPaginate/sort.ts | 7 ++++++- 1 file changed, 6 insertions(+), 1 deletion(-) diff --git a/DigitalLearningSolutions.Web/Scripts/searchSortFilterAndPaginate/sort.ts b/DigitalLearningSolutions.Web/Scripts/searchSortFilterAndPaginate/sort.ts index 242c1df871..5f07324a5b 100644 --- a/DigitalLearningSolutions.Web/Scripts/searchSortFilterAndPaginate/sort.ts +++ b/DigitalLearningSolutions.Web/Scripts/searchSortFilterAndPaginate/sort.ts @@ -75,7 +75,7 @@ export function getSortValue( case 'CandidateNumber': return getElementText(searchableElement, 'delegate-id').toLocaleLowerCase(); case 'When': - return parseDate(getElementText(searchableElement, 'when')); + return parseDateAndTime(getElementText(searchableElement, 'when')); case 'LearningTime': return parseNonNegativeIntOrNotApplicable(getElementText(searchableElement, 'learning-time')); case 'AssessmentScore': @@ -96,6 +96,11 @@ function parseDate(dateString: string): Date { return date.toString() === 'Invalid Date' ? new Date(0) : date; } +function parseDateAndTime(dateString: string): Date { + const dateAndTime = moment(dateString, 'DD/MM/YYYY hh:mm:ss').toDate(); + return dateAndTime.toString() === 'Invalid Date' ? new Date(0) : dateAndTime; +} + function parseNonNegativeIntOrNotApplicable(value: string): number { return value === 'N/A' ? -1 : parseInt(value, 10); } From 605308d7fb93c93fa70b823825359bcc925a5ce9 Mon Sep 17 00:00:00 2001 From: Daniel Bloxham Date: Fri, 18 Feb 2022 11:48:03 +0000 Subject: [PATCH 2/2] HEEDLS-500 - replace old JS date parsing method as it is now redundant --- .../searchSortFilterAndPaginate/sort.ts | 19 +++++++------------ 1 file changed, 7 insertions(+), 12 deletions(-) diff --git a/DigitalLearningSolutions.Web/Scripts/searchSortFilterAndPaginate/sort.ts b/DigitalLearningSolutions.Web/Scripts/searchSortFilterAndPaginate/sort.ts index 5f07324a5b..27bceac0a7 100644 --- a/DigitalLearningSolutions.Web/Scripts/searchSortFilterAndPaginate/sort.ts +++ b/DigitalLearningSolutions.Web/Scripts/searchSortFilterAndPaginate/sort.ts @@ -35,19 +35,19 @@ export function getSortValue( case 'Name': return getElementText(searchableElement, 'name').toLocaleLowerCase(); case 'DateRegistered': - return parseDate(getElementText(searchableElement, 'registration-date')); + return parseDateAndTime(getElementText(searchableElement, 'registration-date')); case 'StartedDate': - return parseDate(getElementText(searchableElement, 'started-date')); + return parseDateAndTime(getElementText(searchableElement, 'started-date')); case 'Enrolled': - return parseDate(getElementText(searchableElement, 'enrolled-date')); + return parseDateAndTime(getElementText(searchableElement, 'enrolled-date')); case 'LastAccessed': - return parseDate(getElementText(searchableElement, 'accessed-date')); + return parseDateAndTime(getElementText(searchableElement, 'accessed-date')); case 'LastUpdated': - return parseDate(getElementText(searchableElement, 'last-updated-date')); + return parseDateAndTime(getElementText(searchableElement, 'last-updated-date')); case 'CompleteByDate': - return parseDate(getElementText(searchableElement, 'complete-by-date')); + return parseDateAndTime(getElementText(searchableElement, 'complete-by-date')); case 'Completed': - return parseDate(getElementText(searchableElement, 'completed-date')); + return parseDateAndTime(getElementText(searchableElement, 'completed-date')); case 'HasDiagnostic,DiagnosticScore': return parseInt(getElementText(searchableElement, 'diagnostic-score').split('/')[0] || '-1', 10); case 'IsAssessed,Passes': @@ -91,11 +91,6 @@ function getElementText(searchableElement: ISearchableElement, elementName: stri ?? ''; } -function parseDate(dateString: string): Date { - const date = moment(dateString, 'DD/MM/YYYY').toDate(); - return date.toString() === 'Invalid Date' ? new Date(0) : date; -} - function parseDateAndTime(dateString: string): Date { const dateAndTime = moment(dateString, 'DD/MM/YYYY hh:mm:ss').toDate(); return dateAndTime.toString() === 'Invalid Date' ? new Date(0) : dateAndTime;