From c13489e23238f9147222bdf6004102e056357181 Mon Sep 17 00:00:00 2001 From: Ida Date: Wed, 13 May 2026 15:03:37 +0200 Subject: [PATCH] fix: removed legacy code --- .../editor/Automation2FlowEditor.module.css | 100 +++++++------- .../FlowEditor/editor/CanvasHeader.tsx | 126 +++++++++--------- 2 files changed, 112 insertions(+), 114 deletions(-) diff --git a/src/components/FlowEditor/editor/Automation2FlowEditor.module.css b/src/components/FlowEditor/editor/Automation2FlowEditor.module.css index 02e13e9..f6e91fa 100644 --- a/src/components/FlowEditor/editor/Automation2FlowEditor.module.css +++ b/src/components/FlowEditor/editor/Automation2FlowEditor.module.css @@ -256,11 +256,6 @@ background: var(--bg-primary, #fff); } -/* Single toolbar row (all controls in one flex wrap). */ -.canvasHeaderRow { - width: 100%; -} - .canvasHeaderToolbar { display: flex; flex-wrap: wrap; @@ -295,48 +290,6 @@ color: var(--text-primary, #333); } -.canvasHeaderTitleBlock { - flex: 1 1 auto; - min-width: 0; - display: flex; - align-items: center; - gap: 0.25rem; -} - -.canvasHeaderTitle, -.canvasHeaderTitle input { - margin: 0; - min-width: 0; - font-size: 0.95rem; - font-weight: 600; - color: var(--text-primary, #1a1a1a); -} - -.canvasHeaderTitle { - line-height: 1.2; - overflow: hidden; - text-overflow: ellipsis; - white-space: nowrap; -} - -.canvasHeaderTitleMuted { - font-style: italic; - font-weight: 500; - opacity: 0.65; - color: var(--text-secondary, #666); -} - -.canvasHeaderTitle input { - width: 100%; - max-width: 100%; - padding: 0.25rem 0.4rem; - border: 1px solid var(--primary-color, #007bff); - border-radius: 4px; - outline: none; - background: var(--bg-primary, #fff); - box-sizing: border-box; -} - .canvasHeaderIconBtn { padding: 6px !important; min-width: 30px !important; @@ -375,7 +328,7 @@ width: 100%; } -.canvasHeaderVersionRow button { +.canvasHeaderVersionRow :global(.button) { margin-top: 0; } @@ -386,6 +339,57 @@ flex: 0 0 auto; } +.canvasHeaderVersionBadge { + padding: 2px 8px; + border-radius: 10px; + font-size: 0.75rem; + font-weight: 600; + background: var(--canvasHeaderBadgeBg, transparent); + color: var(--canvasHeaderBadgeFg, inherit); + flex: 0 0 auto; +} + +.canvasHeaderVersionAction { + font-size: 0.8rem !important; + padding: 0.25rem 0.6rem !important; + min-height: auto !important; +} + +.canvasHeaderVersionSpinner { + font-size: 0.85rem; +} + +.canvasHeaderExecuteBanner { + margin-top: 0.5rem; + padding: 0.5rem; + border-radius: 6px; + font-size: 0.875rem; +} + +.canvasHeaderExecuteBannerSuccess { + background: rgba(40, 167, 69, 0.15); + color: var(--success-color, #28a745); +} + +.canvasHeaderExecuteBannerWarning { + background: rgba(255, 193, 7, 0.15); + color: var(--warning-color, #ffc107); +} + +.canvasHeaderExecuteBannerPaused { + background: rgba(0, 123, 255, 0.15); + color: var(--primary-color, #007bff); +} + +.canvasHeaderExecuteBannerError { + background: rgba(220, 53, 69, 0.15); + color: var(--danger-color, #dc3545); +} + +.canvasHeaderSysadminInput { + margin: 0; +} + .canvasHeaderVersionSelect { width: 11rem; max-width: 100%; diff --git a/src/components/FlowEditor/editor/CanvasHeader.tsx b/src/components/FlowEditor/editor/CanvasHeader.tsx index bfc51ce..fe5598e 100644 --- a/src/components/FlowEditor/editor/CanvasHeader.tsx +++ b/src/components/FlowEditor/editor/CanvasHeader.tsx @@ -35,9 +35,9 @@ interface CanvasHeaderProps { saving: boolean; executing: boolean; hasNodes: boolean; - /** Phase-4 Schicht-4: when set, the Run button is disabled and the message - * is shown as a tooltip. Click triggers `onExecuteBlockedClick` so the - * parent can navigate the user to the first offending node. */ + /** When set, required-field graph errors block a normal run; message is the + * run button tooltip. Click still fires `onExecuteBlockedClick` to focus + * the first offending node. */ executeBlockedReason?: string | null; onExecuteBlockedClick?: () => void; executeResult: ExecuteGraphResponse | null; @@ -138,14 +138,23 @@ export const CanvasHeader: React.FC = ({ : t('Ausführen'); const _runTitle = executeBlockedReason ?? (hasNodes ? t('Ausführen') : t('Keine Nodes zum Ausführen.')); + const _executeBannerSegmentClass = !executeResult + ? '' + : executeResult.success + ? executeResult.warning + ? styles.canvasHeaderExecuteBannerWarning + : styles.canvasHeaderExecuteBannerSuccess + : executeResult.paused + ? styles.canvasHeaderExecuteBannerPaused + : styles.canvasHeaderExecuteBannerError; + return (
-
-
+
{onToggleWorkspacePanel && (
{currentWorkflowId && versions && versions.length > 0 && ( @@ -321,108 +329,94 @@ export const CanvasHeader: React.FC = ({ ))} {badge.label} {currentVersion && currentStatus === 'draft' && onPublishVersion && ( - + )} {currentVersion && currentStatus === 'published' && onUnpublishVersion && ( - + )} {currentVersion && currentStatus !== 'archived' && onArchiveVersion && ( - + {t('Archiv')} + )} {onCreateDraft && ( - + {t('+ Entwurf')} + )} - {versionLoading && } + {versionLoading && }
)} {executeResult && (
{executeResult.success ? ( executeResult.warning ? ( - <>⚠ {executeResult.warning} + <>{executeResult.warning} ) : ( <>{t('Ausführung abgeschlossen')} ) - ) : (executeResult as { paused?: boolean }).paused ? ( + ) : executeResult.paused ? ( <> - ⏸ Workflow pausiert. Öffne {t('Workflows/Tasks')} in der Sidebar, um den Task zu - bearbeiten. + {t('Workflow pausiert. Öffne ')} + {t('Workflows/Tasks')} + {t(' in der Sidebar, um den Task zu bearbeiten.')} ) : ( - <>✗ {executeResult.error ?? t('Unbekannter Fehler')} + <>{executeResult.error ?? t('Unbekannter Fehler')} )}
)}