import { useState, useEffect } from 'react'; import { useNavigate } from 'react-router-dom'; import { Tabs, TabsList, TabsTrigger, TabsContent } from '@/components/ui/tabs'; import { Button } from '@/components/ui/button'; import PipelineFormComponent from '@/app/home/pipelines/components/pipeline-form/PipelineFormComponent'; import DebugDialog from '@/app/home/pipelines/components/debug-dialog/DebugDialog'; import PipelineMonitoringTab from '@/app/home/pipelines/components/monitoring-tab/PipelineMonitoringTab'; import { useSidebarData } from '@/app/home/components/home-sidebar/SidebarDataContext'; import { useTranslation } from 'react-i18next'; import { Settings, Bug, BarChart3 } from 'lucide-react'; import { useCurrentWorkspace } from '@/app/infra/http'; export default function PipelineDetailContent({ id }: { id: string }) { const isCreateMode = id === 'new'; const navigate = useNavigate(); const { t } = useTranslation(); const currentWorkspace = useCurrentWorkspace(); const canManage = currentWorkspace?.permissions.includes('resource.manage') ?? false; const canOperate = currentWorkspace?.permissions.includes('runtime.operate') ?? false; const canViewAudit = currentWorkspace?.permissions.includes('audit.view') ?? false; const { refreshPipelines, pipelines, setDetailEntityName } = useSidebarData(); // Set breadcrumb entity name useEffect(() => { if (isCreateMode) { setDetailEntityName(t('pipelines.createPipeline')); } else { const pipeline = pipelines.find((p) => p.id === id); setDetailEntityName(pipeline?.name ?? id); } return () => setDetailEntityName(null); }, [id, isCreateMode, pipelines, setDetailEntityName, t]); const [activeTab, setActiveTab] = useState('config'); const [isWebSocketConnected, setIsWebSocketConnected] = useState(false); const [formDirty, setFormDirty] = useState(false); function handleFinish() { refreshPipelines(); } function handleNewPipelineCreated(newPipelineId: string) { refreshPipelines(); navigate(`/home/pipelines?id=${encodeURIComponent(newPipelineId)}`); } // ==================== Create Mode ==================== if (isCreateMode) { return (

{t('pipelines.createPipeline')}

{canManage && ( )}
{}} />
); } function handleDeletePipeline() { refreshPipelines(); navigate('/home/pipelines'); } // ==================== Edit Mode ==================== return (
{/* Sticky Header: title + save button */}

{t('pipelines.editPipeline')}

{canManage && ( )}
{/* Horizontal Tabs */} {t('pipelines.configuration')} {canOperate && ( {t('pipelines.debugChat')} {activeTab === 'debug' && ( )} )} {canViewAudit && ( {t('pipelines.monitoring.title')} )} {/* Tab: Configuration */}
navigate('/home/pipelines')} onDirtyChange={setFormDirty} />
{/* Tab: Debug */} {canOperate && ( )} {/* Tab: Monitoring */} {canViewAudit && ( { navigate('/home/monitoring'); }} /> )}
); }