From cc3e49d7c03f5873adc1a834344d2d74f33f4f41 Mon Sep 17 00:00:00 2001 From: WasiqB Date: Wed, 20 Nov 2024 18:56:00 +0300 Subject: [PATCH] fix: :bug: fixed the sorting issue on duration column --- packages/ui/src/data-table/table/columns.tsx | 6 ++++++ packages/utils/src/functions/formatting.ts | 9 +++++---- 2 files changed, 11 insertions(+), 4 deletions(-) diff --git a/packages/ui/src/data-table/table/columns.tsx b/packages/ui/src/data-table/table/columns.tsx index 4579860..82e18bd 100644 --- a/packages/ui/src/data-table/table/columns.tsx +++ b/packages/ui/src/data-table/table/columns.tsx @@ -1,6 +1,7 @@ import { GearIcon } from '@radix-ui/react-icons'; import { ColumnDef } from '@tanstack/react-table'; import { cn } from '@ultra-reporter/utils/cn'; +import { toDuration } from '@ultra-reporter/utils/formatting'; import { TestException, TestLog } from '@ultra-reporter/utils/types'; import { CircleAlert, @@ -112,6 +113,11 @@ export const columns: ColumnDef[] = [ const duration: string = row.getValue('duration_ms'); return ; }, + sortingFn: (rowA, rowB, columnId) => { + const a = toDuration(rowA.getValue(columnId) as string); + const b = toDuration(rowB.getValue(columnId) as string); + return a < b ? -1 : a > b ? 1 : 0; + }, }, { accessorKey: 'is_config', diff --git a/packages/utils/src/functions/formatting.ts b/packages/utils/src/functions/formatting.ts index 51a5d40..5ae081d 100644 --- a/packages/utils/src/functions/formatting.ts +++ b/packages/utils/src/functions/formatting.ts @@ -5,23 +5,24 @@ export const toDuration = (duration: string): number => { const splitTime = duration.split(' '); const time = parseFloat(splitTime[0] || '0'); const type = splitTime[1]; - const SECOND = 1000; + const SECOND = 1; const MINUTE = 60 * SECOND; const HOUR = 60 * MINUTE; let result = time; switch (type) { case 'm': - result = (result * MINUTE) / SECOND; + result *= MINUTE; break; case 'h': - result = (result * HOUR) / SECOND; + result *= HOUR; break; case 'ms': - result /= SECOND; + result = result / 1000; break; case 's': default: + result *= SECOND; break; }