import type { RouteNode } from '../design-system/composites/RouteFlow/RouteFlow' export function formatDuration(ms: number): string { if (ms >= 60_000) return `${(ms / 1000).toFixed(0)}s` if (ms >= 1000) return `${(ms / 1000).toFixed(2)}s` return `${ms}ms` } export function statusToVariant(status: string): 'success' | 'error' | 'running' | 'warning' { switch (status) { case 'completed': return 'success' case 'failed': return 'error' case 'running': return 'running' case 'warning': return 'warning' default: return 'warning' } } export function statusLabel(s: string): string { switch (s) { case 'completed': return 'OK' case 'failed': return 'ERR' case 'running': return 'RUN' case 'warning': return 'WARN' default: return s } } export function formatTimestamp(date: Date): string { return date.toLocaleTimeString('en-GB', { hour: '2-digit', minute: '2-digit', second: '2-digit' }) } export function toRouteNodeType(procType: string): RouteNode['type'] { switch (procType) { case 'consumer': return 'from' case 'transform': return 'process' case 'enrich': return 'process' default: return procType as RouteNode['type'] } } interface DurationStyles { durBreach: string durFast: string durNormal: string durSlow: string } export function durationClass(ms: number, status: string, styles: DurationStyles): string { if (status === 'failed') return styles.durBreach if (ms < 100) return styles.durFast if (ms < 200) return styles.durNormal if (ms < 300) return styles.durSlow return styles.durBreach }