From 1f3bb8b968ad49939f2e69ab6c968bf8dcce45dd Mon Sep 17 00:00:00 2001 From: Matt Aitken Date: Thu, 18 Dec 2025 14:03:58 +0000 Subject: [PATCH] runStatus working --- .../app/components/code/TSQLResultsTable.tsx | 32 +++++++++++-------- .../app/components/runs/v3/TaskRunStatus.tsx | 22 +++++++++++-- 2 files changed, 37 insertions(+), 17 deletions(-) diff --git a/apps/webapp/app/components/code/TSQLResultsTable.tsx b/apps/webapp/app/components/code/TSQLResultsTable.tsx index 2d2c45e03..e12fdc400 100644 --- a/apps/webapp/app/components/code/TSQLResultsTable.tsx +++ b/apps/webapp/app/components/code/TSQLResultsTable.tsx @@ -1,5 +1,4 @@ import { formatDurationMilliseconds } from "@trigger.dev/core/v3"; -import type { TaskRunStatus } from "@trigger.dev/database"; import type { OutputColumnMetadata } from "@internal/clickhouse"; import { DateTime } from "~/components/primitives/DateTime"; import { @@ -11,14 +10,12 @@ import { TableRow, } from "~/components/primitives/Table"; import { formatCurrencyAccurate, formatNumber } from "~/utils/numberFormatter"; -import { allTaskRunStatuses, TaskRunStatusCombo } from "~/components/runs/v3/TaskRunStatus"; - -/** - * Check if a value is a valid TaskRunStatus - */ -function isTaskRunStatus(value: unknown): value is TaskRunStatus { - return typeof value === "string" && allTaskRunStatuses.includes(value as TaskRunStatus); -} +import { + isRunFriendlyStatus, + isTaskRunStatus, + runStatusFromFriendlyTitle, + TaskRunStatusCombo, +} from "~/components/runs/v3/TaskRunStatus"; /** * Check if a ClickHouse type is a DateTime type @@ -61,20 +58,27 @@ function isBooleanType(type: string): boolean { * Render a cell value based on its type and optional customRenderType */ function CellValue({ value, column }: { value: unknown; column: OutputColumnMetadata }) { - // Handle null/undefined values - if (value === null || value === undefined) { - return ; + if (value === null) { + return
NULL
; + } + + if (value === undefined) { + return
UNDEFINED
; } // First check customRenderType for special rendering if (column.customRenderType) { switch (column.customRenderType) { - case "runStatus": + case "runStatus": { + // We have mapped the status to a friendly status so we need to map back to render the normal component if (isTaskRunStatus(value)) { return ; } + if (isRunFriendlyStatus(value)) { + return ; + } return {String(value)}; - + } case "duration": if (typeof value === "number") { return ( diff --git a/apps/webapp/app/components/runs/v3/TaskRunStatus.tsx b/apps/webapp/app/components/runs/v3/TaskRunStatus.tsx index e29cfec8a..293eebb46 100644 --- a/apps/webapp/app/components/runs/v3/TaskRunStatus.tsx +++ b/apps/webapp/app/components/runs/v3/TaskRunStatus.tsx @@ -241,9 +241,11 @@ export function runStatusTitle(status: TaskRunStatus): RunFriendlyStatus { return runStatusTitleFromStatus[status]; } -export function runStatusFromFriendlyTitle(friendly: RunFriendlyStatus): TaskRunStatus | undefined { +export function runStatusFromFriendlyTitle(friendly: RunFriendlyStatus): TaskRunStatus { const result = titlesStatusesArray.find(([_, f]) => f === friendly); - if (!result) return; + if (!result) { + throw new Error(`Unknown friendly status: ${friendly}`); + } return result[0] as TaskRunStatus; } @@ -266,7 +268,21 @@ export const runFriendlyStatus = [ "Timed out", ] as const; -type RunFriendlyStatus = (typeof runFriendlyStatus)[number]; +export type RunFriendlyStatus = (typeof runFriendlyStatus)[number]; + +/** + * Check if a value is a valid TaskRunStatus + */ +export function isTaskRunStatus(value: unknown): value is TaskRunStatus { + return typeof value === "string" && allTaskRunStatuses.includes(value as TaskRunStatus); +} + +/** + * Check if a value is a valid RunFriendlyStatus + */ +export function isRunFriendlyStatus(value: unknown): value is RunFriendlyStatus { + return typeof value === "string" && runFriendlyStatus.includes(value as RunFriendlyStatus); +} export const runStatusTitleFromStatus: Record = { DELAYED: "Delayed",