- Frontend v4 accessible sur réseau local (192.168.1.40) - Ports ouverts: 3002 (frontend), 5001 (backend), 5004 (dashboard) - Ollama GPU fonctionnel - Self-healing interactif - Dashboard confiance Co-Authored-By: Claude Opus 4.5 <noreply@anthropic.com>
4.0 KiB
🔧 Corrections Drag-and-Drop
Problèmes identifiés et corrigés
1. ⚠️ Warning React Flow - nodeTypes/edgeTypes
Problème :
[React Flow]: It looks like you have created a new nodeTypes or edgeTypes object.
Les objets nodeTypes et edgeTypes étaient définis à l'intérieur du composant Canvas, donc recréés à chaque render, causant des re-renders inutiles.
Solution : Déplacé les définitions en dehors du composant :
// AVANT (dans le composant)
const Canvas: React.FC<CanvasProps> = ({...}) => {
const nodeTypes: NodeTypes = {
custom: CustomNode,
};
// ...
}
// APRÈS (en dehors du composant)
const nodeTypes: NodeTypes = {
custom: CustomNode,
};
const edgeTypes = {
custom: CustomEdge,
};
const Canvas: React.FC<CanvasProps> = ({...}) => {
// ...
}
2. 🖱️ Clic non fonctionnel dans la Palette
Problème :
Le ListItem à l'intérieur du Paper interceptait les événements de clic, empêchant le handler onClick du Paper de se déclencher.
Solution :
- Ajout de
e.stopPropagation()dans le handler onClick - Ajout de
disableGutterssur le ListItem pour éviter les conflits
// AVANT
<Paper onClick={() => handleNodeClick(node.id)}>
<ListItem>
{/* contenu */}
</ListItem>
</Paper>
// APRÈS
<Paper onClick={(e) => {
e.stopPropagation();
handleNodeClick(node.id);
}}>
<ListItem disableGutters>
{/* contenu */}
</ListItem>
</Paper>
3. 🐛 Logs de débogage ajoutés
Pour faciliter le diagnostic, des logs ont été ajoutés dans :
Palette (handleNodeClick) :
console.log('Palette: Node clicked:', nodeType);
App (handleNodeAdd) :
console.log('App: Adding node of type:', type);
console.log('App: New node created:', newNode);
console.log('App: Updated nodes:', updated);
Canvas (handleDrop) :
console.log('Canvas: Drop event triggered');
console.log('Canvas: Node type from drag:', nodeType);
console.log('Canvas: Calling onNodeAdd with type:', nodeType);
Test après corrections
Redémarrer l'application
cd visual_workflow_builder
./stop.sh
./start.sh
Ouvrir et tester
- Ouvre http://localhost:3000
- Ouvre la console (F12)
- Test clic : Clique sur "Cliquer" dans la palette
- Tu devrais voir les logs dans la console
- Le node devrait apparaître sur le canvas
- Test drag-and-drop : Glisse "Saisir du texte" vers le canvas
- Tu devrais voir les logs de drop
- Le node devrait apparaître où tu l'as relâché
Vérifier les logs
Si tout fonctionne, tu verras dans la console :
Pour un clic :
Palette: Node clicked: click
App: Adding node of type: click
App: New node created: {id: "node-1733...", type: "click", ...}
App: Updated nodes: [{...}]
Pour un drag-and-drop :
Canvas: Drop event triggered
Canvas: Node type from drag: click
Canvas: Calling onNodeAdd with type: click
App: Adding node of type: click
App: New node created: {id: "node-1733...", type: "click", ...}
App: Updated nodes: [{...}]
Fichiers modifiés
-
frontend/src/components/Canvas/index.tsx- Déplacé nodeTypes/edgeTypes en dehors du composant
- Ajouté logs de débogage dans handleDrop
-
frontend/src/components/Palette/index.tsx- Ajouté e.stopPropagation() dans onClick
- Ajouté disableGutters sur ListItem
- Ajouté logs de débogage dans handleNodeClick
-
frontend/src/App.tsx- Ajouté logs de débogage dans handleNodeAdd
Prochaines étapes
Une fois que tu confirmes que tout fonctionne :
- ✅ Le warning React Flow devrait avoir disparu
- ✅ Le clic devrait fonctionner
- ✅ Le drag-and-drop devrait fonctionner
- 🧹 On pourra retirer les console.log si tu veux un code plus propre
Besoin d'aide ?
Si ça ne fonctionne toujours pas :
- Partage les logs de la console
- Indique quelle méthode ne fonctionne pas (clic ou drag-and-drop)
- Je pourrai identifier le problème exact