/** * CanvasHeader - Workflow controls (Neu, Speichern, laden, Ausführen), version selector, and execute result. */ import React from 'react'; import { FaCog, FaPlay, FaSpinner, FaCloudUploadAlt, FaCloudDownloadAlt, FaArchive } from 'react-icons/fa'; import type { Automation2Workflow, ExecuteGraphResponse, AutoVersion } from '../../../api/workflowApi'; import styles from './Automation2FlowEditor.module.css'; interface CanvasHeaderProps { workflows: Automation2Workflow[]; currentWorkflowId: string | null; onWorkflowSelect: (workflowId: string | null) => void; onNew: () => void; onSave: () => void; onExecute: () => void; onWorkflowSettings?: () => void; onToggleChat?: () => void; saving: boolean; executing: boolean; hasNodes: boolean; executeResult: ExecuteGraphResponse | null; versions?: AutoVersion[]; currentVersionId?: string | null; onVersionSelect?: (versionId: string | null) => void; onPublishVersion?: (versionId: string) => void; onUnpublishVersion?: (versionId: string) => void; onArchiveVersion?: (versionId: string) => void; onCreateDraft?: () => void; versionLoading?: boolean; } const STATUS_BADGE: Record = { draft: { label: 'Entwurf', color: 'var(--warning-color, #ffc107)' }, published: { label: 'Veröffentlicht', color: 'var(--success-color, #28a745)' }, archived: { label: 'Archiviert', color: 'var(--text-secondary, #666)' }, }; export const CanvasHeader: React.FC = ({ workflows, currentWorkflowId, onWorkflowSelect, onNew, onSave, onExecute, onWorkflowSettings, onToggleChat, saving, executing, hasNodes, executeResult, versions, currentVersionId, onVersionSelect, onPublishVersion, onUnpublishVersion, onArchiveVersion, onCreateDraft, versionLoading, }) => { const currentVersion = versions?.find((v) => v.id === currentVersionId); const currentStatus = currentVersion?.status || 'draft'; const badge = STATUS_BADGE[currentStatus] || STATUS_BADGE.draft; return (

Workflow-Editor

{onWorkflowSettings && ( )} {onToggleChat && ( )}
{/* Version Selector */} {currentWorkflowId && versions && versions.length > 0 && (
Version: {badge.label} {currentVersion && currentStatus === 'draft' && onPublishVersion && ( )} {currentVersion && currentStatus === 'published' && onUnpublishVersion && ( )} {currentVersion && currentStatus !== 'archived' && onArchiveVersion && ( )} {onCreateDraft && ( )} {versionLoading && }
)} {executeResult && (
{executeResult.success ? ( <>✓ Ausführung abgeschlossen. ) : (executeResult as { paused?: boolean }).paused ? ( <> ⏸ Workflow pausiert. Öffne Workflows & Tasks in der Sidebar, um den Task zu bearbeiten. ) : ( <>✗ {executeResult.error ?? 'Unbekannter Fehler'} )}
)}
); };