From 51d2046c7de85ea6a5283174f4447975ae59e997 Mon Sep 17 00:00:00 2001 From: Benjamin Lu Date: Sat, 13 Dec 2025 18:18:54 -0800 Subject: [PATCH] Ensure don't round to 0 hours --- src/components/queue/job/JobDetailsPopover.vue | 13 +++++++++---- 1 file changed, 9 insertions(+), 4 deletions(-) diff --git a/src/components/queue/job/JobDetailsPopover.vue b/src/components/queue/job/JobDetailsPopover.vue index 73024f59b5..44efb77c7b 100644 --- a/src/components/queue/job/JobDetailsPopover.vue +++ b/src/components/queue/job/JobDetailsPopover.vue @@ -260,6 +260,13 @@ const estimatedFinishInValue = computed(() => { type DetailRow = { label: string; value: string; canCopy?: boolean } +const formatComputeHours = (execMs: number | undefined) => { + if (execMs === undefined) return '' + const hours = Math.max(0, execMs) / 3600000 + if (hours > 0 && hours < 0.001) return '<0.001 hours' + return `${hours.toFixed(3)} hours` +} + const baseRows = computed(() => [ { label: t('queue.jobDetails.workflow'), value: workflowValue.value }, { label: t('queue.jobDetails.jobId'), value: jobIdValue.value, canCopy: true } @@ -310,8 +317,7 @@ const extraRows = computed(() => { const generatedOnValue = endTs ? formatClockTime(endTs, locale.value) : '' const totalGenTimeValue = execMs !== undefined ? formatElapsedTime(execMs) : '' - const computeHoursValue = - execMs !== undefined ? (execMs / 3600000).toFixed(3) + ' hours' : '' + const computeHoursValue = formatComputeHours(execMs) const rows: DetailRow[] = [ { label: t('queue.jobDetails.generatedOn'), value: generatedOnValue }, @@ -333,8 +339,7 @@ const extraRows = computed(() => { const execMs: number | undefined = task?.executionTime const failedAfterValue = execMs !== undefined ? formatElapsedTime(execMs) : '' - const computeHoursValue = - execMs !== undefined ? (execMs / 3600000).toFixed(3) + ' hours' : '' + const computeHoursValue = formatComputeHours(execMs) const rows: DetailRow[] = [ { label: t('queue.jobDetails.queuedAt'), value: queuedAtValue.value }, { label: t('queue.jobDetails.failedAfter'), value: failedAfterValue }