'use client'; import { useState, useEffect } from 'react'; import { useParams } from 'next/navigation'; import Link from 'next/link'; import { ArrowLeft, PlayCircle, AlertCircle } from 'lucide-react'; import type { ExecutionStatus, PipelineDetail } from '@/lib/pipeline-types'; import { getPipeline, listExecutions } from '@/lib/pipeline-api'; import ExecutionsView from '@/components/ExecutionsView'; /** * Execution history page for a pipeline. * Uses TanStack Table for filtering, sorting, and pagination. */ export default function ExecutionsPage() { const params = useParams(); const pipelineId = params.pipelineId as string; const [pipeline, setPipeline] = useState(null); const [executions, setExecutions] = useState([]); const [loading, setLoading] = useState(true); const [error, setError] = useState(null); const fetchData = async () => { setLoading(true); setError(null); try { const [pipelineData, executionsData] = await Promise.all([ getPipeline(pipelineId), listExecutions(pipelineId, { limit: 100 }), ]); setPipeline(pipelineData); setExecutions(executionsData); } catch (e) { setError(e instanceof Error ? e.message : 'Failed to load data'); } finally { setLoading(false); } }; useEffect(() => { if (pipelineId) { fetchData(); } }, [pipelineId]); return (
{/* Navigation */}
Back to Pipeline Run Pipeline
{/* Header */}

Execution History

{pipeline?.name || pipelineId} - View and analyze pipeline executions

{/* Content */} {error ? (

{error}

) : loading ? (
) : ( )}
); }