diff --git a/frontend/src/pages/WorkflowEditorPage.jsx b/frontend/src/pages/WorkflowEditorPage.jsx index 5a0bf97..d7f3726 100644 --- a/frontend/src/pages/WorkflowEditorPage.jsx +++ b/frontend/src/pages/WorkflowEditorPage.jsx @@ -62,8 +62,11 @@ export default function WorkflowEditorPage() { // Load workflow wenn ID vorhanden useEffect(() => { - if (id && id !== 'new') { + if (id && id !== 'new' && !isNaN(parseInt(id))) { + console.log('πŸ” useEffect: Loading workflow with ID:', id) loadWorkflow(parseInt(id)) + } else if (id && id !== 'new') { + console.error('❌ useEffect: Invalid ID (NaN):', id) } }, [id]) @@ -99,9 +102,12 @@ export default function WorkflowEditorPage() { } const handleNodeUpdate = (nodeId, updates) => { - setNodes((nds) => - nds.map((n) => (n.id === nodeId ? { ...n, data: { ...n.data, ...updates } } : n)) - ) + console.log('πŸ”§ handleNodeUpdate:', { nodeId, updates }) + setNodes((nds) => { + const updated = nds.map((n) => (n.id === nodeId ? { ...n, data: { ...n.data, ...updates } } : n)) + console.log('πŸ“ Nodes after update:', updated.find(n => n.id === nodeId)) + return updated + }) } const handleDeleteNode = () => { @@ -113,6 +119,7 @@ export default function WorkflowEditorPage() { } const handleSave = async () => { + console.log('πŸ’Ύ handleSave called') try { setLoading(true) setError(null) @@ -129,9 +136,11 @@ export default function WorkflowEditorPage() { created_at: currentPrompt?.created_at, version: '1.0' }) + console.log('πŸ“Š Serialized graph_data:', graph_data) if (currentPrompt) { // Update existing + console.log('πŸ“ Updating existing workflow:', currentPrompt.id) await api.updateUnifiedPrompt(currentPrompt.id, { type: 'workflow', name: workflowName, @@ -141,17 +150,21 @@ export default function WorkflowEditorPage() { alert('Workflow gespeichert!') } else { // Create new + console.log('✨ Creating new workflow') const result = await api.createUnifiedPrompt({ type: 'workflow', name: workflowName, description: workflowDescription, graph_data }) + console.log('βœ… Workflow created:', result) setCurrentPrompt({ id: result.id, name: workflowName }) alert('Workflow erstellt!') + console.log('πŸš€ Navigating to:', `/workflow-editor/${result.id}`) navigate(`/workflow-editor/${result.id}`) } } catch (e) { + console.error('❌ handleSave error:', e) setError(e.message) } finally { setLoading(false) @@ -159,11 +172,14 @@ export default function WorkflowEditorPage() { } const loadWorkflow = async (promptId) => { + console.log('πŸ“¦ loadWorkflow called with:', promptId) try { setLoading(true) setError(null) const prompt = await api.getPrompt(promptId) + console.log('βœ… Prompt loaded:', prompt) + console.log('πŸ“Š graph_data:', prompt.graph_data) if (prompt.type !== 'workflow') { throw new Error('Nicht ein Workflow') @@ -171,6 +187,7 @@ export default function WorkflowEditorPage() { // Deserialisieren const { nodes: loadedNodes, edges: loadedEdges } = deserializeFromWorkflowGraph(prompt.graph_data) + console.log('🎯 Deserialized:', { nodes: loadedNodes, edges: loadedEdges }) setNodes(loadedNodes) setEdges(loadedEdges) @@ -184,7 +201,9 @@ export default function WorkflowEditorPage() { 0 ) nodeIdCounter = maxId + 1 + console.log('βœ… Workflow loaded successfully, nodes:', loadedNodes.length, 'edges:', loadedEdges.length) } catch (e) { + console.error('❌ loadWorkflow error:', e) setError(e.message) } finally { setLoading(false) @@ -393,10 +412,12 @@ export default function WorkflowEditorPage() {
- {selectedNode.data.prompt_name && ( + {selectedNode.data.prompt_id && (
- GewΓ€hlt: {selectedNode.data.prompt_name} + Prompt ID: {selectedNode.data.prompt_id} ({selectedNode.data.prompt_name || 'unbekannt'})
)}