"use client"; import { memo } from "react"; import { Handle, Position } from "@xyflow/react"; import { JobStatusBadge, type JobStatus, getStatusColor, } from "@bullstudio/ui/shared"; export interface FlowJobNodeData { name: string; status: JobStatus; queueName: string; duration?: number; [key: string]: unknown; } interface FlowJobNodeProps { data: FlowJobNodeData; } function FlowJobNodeComponent({ data }: FlowJobNodeProps) { const nodeData = data; const statusColor = getStatusColor(nodeData.status); const formatDuration = (ms: number) => { if (ms < 1000) return `${ms}ms`; if (ms < 60000) return `${(ms / 1000).toFixed(1)}s`; return `${(ms / 60000).toFixed(1)}m`; }; return ( <>
{nodeData.name}
{nodeData.queueName}
{nodeData.duration !== undefined && (
{formatDuration(nodeData.duration)}
)}
); } export const FlowJobNode = memo(FlowJobNodeComponent);