Add button to remove edge
This commit is contained in:
parent
55ff0b24d4
commit
7f199f3789
@ -80,9 +80,9 @@ def list_icons():
|
|||||||
return categories
|
return categories
|
||||||
|
|
||||||
|
|
||||||
if __name__ == "__main__":
|
# if __name__ == "__main__":
|
||||||
uvicorn.run(app, host="0.0.0.0", port=8000)
|
# uvicorn.run(app, host="0.0.0.0", port=8000)
|
||||||
|
|
||||||
# For development, you can uncomment the line below to run the server with uvicorn directly.
|
# For development, you can uncomment the line below to run the server with uvicorn directly.
|
||||||
# if __name__ == "__main__":
|
if __name__ == "__main__":
|
||||||
# uvicorn.run(app, host="0.0.0.0", port=8001)
|
uvicorn.run(app, host="0.0.0.0", port=8001)
|
||||||
23
diagram.json
23
diagram.json
@ -1,25 +1,4 @@
|
|||||||
{
|
{
|
||||||
"nodes": [
|
"nodes": [],
|
||||||
{
|
|
||||||
"id": "1",
|
|
||||||
"type": "custom",
|
|
||||||
"data": {
|
|
||||||
"label": "Node 1",
|
|
||||||
"icon": "https://s3.dvirlabs.com/lab-icons/dev-tools/argocd.svg"
|
|
||||||
},
|
|
||||||
"position": {
|
|
||||||
"x": 68.5849844537563,
|
|
||||||
"y": 225.18693121594464
|
|
||||||
},
|
|
||||||
"width": 82,
|
|
||||||
"height": 82,
|
|
||||||
"selected": false,
|
|
||||||
"positionAbsolute": {
|
|
||||||
"x": 68.5849844537563,
|
|
||||||
"y": 225.18693121594464
|
|
||||||
},
|
|
||||||
"dragging": false
|
|
||||||
}
|
|
||||||
],
|
|
||||||
"edges": []
|
"edges": []
|
||||||
}
|
}
|
||||||
@ -23,6 +23,8 @@ function Diagram() {
|
|||||||
const [showForm, setShowForm] = useState(false);
|
const [showForm, setShowForm] = useState(false);
|
||||||
const [newLabel, setNewLabel] = useState('');
|
const [newLabel, setNewLabel] = useState('');
|
||||||
const [selectedIcon, setSelectedIcon] = useState('');
|
const [selectedIcon, setSelectedIcon] = useState('');
|
||||||
|
const [selectedEdge, setSelectedEdge] = useState(null);
|
||||||
|
|
||||||
|
|
||||||
useEffect(() => {
|
useEffect(() => {
|
||||||
fetchDiagram().then((data) => {
|
fetchDiagram().then((data) => {
|
||||||
@ -80,6 +82,19 @@ function Diagram() {
|
|||||||
setSelectedNode(null);
|
setSelectedNode(null);
|
||||||
};
|
};
|
||||||
|
|
||||||
|
const onEdgeClick = (_, edge) => {
|
||||||
|
setSelectedEdge(edge);
|
||||||
|
setSelectedNode(null);
|
||||||
|
};
|
||||||
|
|
||||||
|
const handleDeleteEdge = () => {
|
||||||
|
if (!selectedEdge) return;
|
||||||
|
|
||||||
|
setEdges((eds) => eds.filter((e) => e.id !== selectedEdge.id));
|
||||||
|
toast.error(`🗑️ Edge "${selectedEdge.id}" deleted`);
|
||||||
|
setSelectedEdge(null);
|
||||||
|
};
|
||||||
|
|
||||||
const onConnect = useCallback(
|
const onConnect = useCallback(
|
||||||
(params) => setEdges((eds) => addEdge({ ...params, animated: true }, eds)),
|
(params) => setEdges((eds) => addEdge({ ...params, animated: true }, eds)),
|
||||||
[setEdges]
|
[setEdges]
|
||||||
@ -107,6 +122,7 @@ function Diagram() {
|
|||||||
<button onClick={handleSave} className="btn">💾 Save</button>
|
<button onClick={handleSave} className="btn">💾 Save</button>
|
||||||
<button onClick={handleAddNode} className="btn" style={{ marginLeft: 8 }}>➕ Add Node</button>
|
<button onClick={handleAddNode} className="btn" style={{ marginLeft: 8 }}>➕ Add Node</button>
|
||||||
<button onClick={handleDeleteNode} className="btn" style={{ marginLeft: 8 }} disabled={!selectedNode}>🗑️ Delete Node</button>
|
<button onClick={handleDeleteNode} className="btn" style={{ marginLeft: 8 }} disabled={!selectedNode}>🗑️ Delete Node</button>
|
||||||
|
<button onClick={handleDeleteEdge} className="btn" style={{ marginLeft: 8 }} disabled={!selectedEdge}>🗑️ Delete Edge</button>
|
||||||
</div>
|
</div>
|
||||||
|
|
||||||
{showForm && (
|
{showForm && (
|
||||||
@ -176,6 +192,7 @@ function Diagram() {
|
|||||||
onConnect={onConnect}
|
onConnect={onConnect}
|
||||||
onNodeClick={onNodeClick}
|
onNodeClick={onNodeClick}
|
||||||
onNodeDoubleClick={handleNodeDoubleClick}
|
onNodeDoubleClick={handleNodeDoubleClick}
|
||||||
|
onEdgeClick={onEdgeClick}
|
||||||
nodeTypes={nodeTypes}
|
nodeTypes={nodeTypes}
|
||||||
fitView
|
fitView
|
||||||
>
|
>
|
||||||
|
|||||||
Loading…
x
Reference in New Issue
Block a user