From a599e19cccee4d380f508d7372bbd57d85cc8e16 Mon Sep 17 00:00:00 2001 From: dvirlabs Date: Fri, 11 Jul 2025 19:29:12 +0300 Subject: [PATCH] Add more node type --- frontend/src/components/Diagram.jsx | 29 +++++++++++++++++++++++++---- 1 file changed, 25 insertions(+), 4 deletions(-) diff --git a/frontend/src/components/Diagram.jsx b/frontend/src/components/Diagram.jsx index f4ced64..9b8e518 100644 --- a/frontend/src/components/Diagram.jsx +++ b/frontend/src/components/Diagram.jsx @@ -16,9 +16,11 @@ import { import CustomNode from './CustomNode'; import IconSelector from './IconSelector'; import { toast } from 'react-toastify'; +import RouterNode from './RouterNode'; const nodeTypes = { custom: CustomNode, + router: RouterNode, }; function Diagram() { @@ -27,6 +29,7 @@ function Diagram() { const [selectedNode, setSelectedNode] = useState(null); const [showForm, setShowForm] = useState(false); const [newLabel, setNewLabel] = useState(''); + const [newType, setNewType] = useState('custom'); const [selectedIcon, setSelectedIcon] = useState(''); const [selectedEdge, setSelectedEdge] = useState(null); const [diagramName, setDiagramName] = useState(null); @@ -121,8 +124,10 @@ function Diagram() { const newNode = { id, - type: 'custom', - data: { label, icon }, + type: newType, + data: newType === 'custom' + ? { label, icon } + : { label }, // router and other types don't have icons position: { x: Math.random() * 400, y: Math.random() * 300 }, }; @@ -131,6 +136,7 @@ function Diagram() { setShowForm(false); setNewLabel(''); setSelectedIcon(''); + setNewType('custom'); }; const handleDeleteNode = () => { @@ -272,6 +278,7 @@ function Diagram() { {showForm && (

🧩 Add New Node

+ setNewLabel(e.target.value)} style={{ padding: '6px', width: '100%', borderRadius: 6, border: '1px solid #ccc', marginBottom: 12 }} /> - + + + + + {newType === 'custom' && ( + + )} +
@@ -311,4 +332,4 @@ function Diagram() { ); } -export default Diagram; \ No newline at end of file +export default Diagram;