'use client'; import React from 'react'; import { useInterpolationStore } from '@/store/interpolation-store'; import { WorkflowStepper, Step } from '@/components/common/workflow-stepper'; import { WorkflowNavigation } from '@/components/common/workflow-navigation'; import { UploadDropzone } from '@/features/upload/components/UploadDropzone'; import { MetadataOverview } from '@/features/metadata/components/metadata-overview'; import { InterpolationConfigPanel } from './interpolation-config-panel'; import { InterpolationTimeline } from './interpolation-timeline'; import { InterpolationStatus } from './interpolation-status'; import { InterpolationResultPreview } from './interpolation-result-preview'; import { Button } from '@/components/ui/button'; import { useMetadata } from '@/features/metadata/hooks/use-metadata'; import { MetadataResponse } from '@/features/metadata/types'; import { MetadataSummary } from '@/features/metadata/components/metadata-summary'; import { MetadataVariableList } from '@/features/metadata/components/metadata-variable-list'; import { Loader2 } from 'lucide-react'; import { useInterpolation } from '../hooks/use-interpolation'; export function InterpolationWorkflowWrapper() { const store = useInterpolationStore(); const { startInterpolation } = useInterpolation(); const { fetchInterpolationMetadata } = useMetadata(); // React.useEffect(() => { // if (store.status === 'completed' && store.currentStep === 5) { // store.nextStep(); // } // }, [store.status, store.currentStep, store]); const handleT0Upload = async (fileId: string, filename: string) => { console.log("T0 Upload:", fileId, filename); store.setUploadState({ t0FileId: fileId, t0Filename: filename, }); await fetchInterpolationMetadata(fileId, 't0'); store.nextStep(); }; const handleT1Upload = async (fileId: string, filename: string) => { store.setUploadState({ t1FileId: fileId, t1Filename: filename, }); await fetchInterpolationMetadata(fileId, 't1'); store.nextStep(); }; const renderMetadata = (metadata: MetadataResponse | null, type: 'T0' | 'T1') => { if (store.metadataLoading) { return (

Extracting metadata...

); } if (store.metadataError) { return (

Error extracting metadata: {store.metadataError}

); } if (!metadata) return null; return (
); }; const steps: Step[] = [ { id: 1, label: 'Upload T0', description: 'First observation frame', component: (
), }, { id: 2, label: 'Review T0', description: 'Review T0 Metadata', component: renderMetadata(store.t0Metadata, 'T0'), }, { id: 3, label: 'Upload T1', description: 'Second observation frame', component: (
), }, { id: 4, label: 'Review T1', description: 'Review T1 Metadata', component: renderMetadata(store.t1Metadata, 'T1'), }, { id: 5, label: 'Process', description: 'Run Interpolation', component: (() => { const availableVars = store.t1Metadata?.variables?.map(v => v.name) || ["C13"]; if (!store.config.variable) { // Initialize with first available var setTimeout(() => store.updateConfig({ variable: availableVars[0] }), 0); } return (
{store.status === 'completed' && (
)}
); })(), }, { id: 6, label: 'Result', description: 'Generated T0.5', component: (
), }, { id: 7, label: 'Export', description: 'Export Result', component: (

Export Options

Download the generated T0.5 frame or start over.

), }, ]; return (
); }