From d1e974be5963107fbac6a74fa8248241509bf88b Mon Sep 17 00:00:00 2001 From: janis steiner Date: Tue, 12 May 2026 10:45:05 +0200 Subject: [PATCH] . --- frontend/assets/js/app.js | 10 +++++++--- 1 file changed, 7 insertions(+), 3 deletions(-) diff --git a/frontend/assets/js/app.js b/frontend/assets/js/app.js index 7f1885b..9806df0 100644 --- a/frontend/assets/js/app.js +++ b/frontend/assets/js/app.js @@ -1184,12 +1184,16 @@ function renderNodeToolbar() { function setupCanvasDrop() { const wrapper = document.getElementById('networkCanvasWrapper'); + let dropPending = false; wrapper.addEventListener('dragover', (e) => { e.preventDefault(); e.dataTransfer.dropEffect = 'copy'; }); wrapper.addEventListener('drop', async (e) => { e.preventDefault(); e.stopPropagation(); - suppressNextMouse = Date.now() + 300; + if (dropPending) return; + dropPending = true; + suppressNextMouse = Date.now() + 500; const data = e.dataTransfer.getData('text/plain'); + if (!data) { dropPending = false; return; } const rect = canvas.getBoundingClientRect(); const mx = e.clientX - rect.left - panX; const my = e.clientY - rect.top - panY; @@ -1204,7 +1208,6 @@ function setupCanvasDrop() { color: '#1e3a5f', border_color: '#3b82f6', opacity: 0.15, z_index: nextShapeZ++ })}); - loadNetworkData(); } else { await apiFetch('nodes', { method: 'POST', body: JSON.stringify({ label: data.charAt(0).toUpperCase() + data.slice(1), @@ -1212,8 +1215,9 @@ function setupCanvasDrop() { group_name: 'default', notes: '', pos_x: mx, pos_y: my })}); - loadNetworkData(); } + await loadNetworkData(); + dropPending = false; }); }