@@ -1184,12 +1184,16 @@ function renderNodeToolbar() {
|
|||||||
|
|
||||||
function setupCanvasDrop() {
|
function setupCanvasDrop() {
|
||||||
const wrapper = document.getElementById('networkCanvasWrapper');
|
const wrapper = document.getElementById('networkCanvasWrapper');
|
||||||
|
let dropPending = false;
|
||||||
wrapper.addEventListener('dragover', (e) => { e.preventDefault(); e.dataTransfer.dropEffect = 'copy'; });
|
wrapper.addEventListener('dragover', (e) => { e.preventDefault(); e.dataTransfer.dropEffect = 'copy'; });
|
||||||
wrapper.addEventListener('drop', async (e) => {
|
wrapper.addEventListener('drop', async (e) => {
|
||||||
e.preventDefault();
|
e.preventDefault();
|
||||||
e.stopPropagation();
|
e.stopPropagation();
|
||||||
suppressNextMouse = Date.now() + 300;
|
if (dropPending) return;
|
||||||
|
dropPending = true;
|
||||||
|
suppressNextMouse = Date.now() + 500;
|
||||||
const data = e.dataTransfer.getData('text/plain');
|
const data = e.dataTransfer.getData('text/plain');
|
||||||
|
if (!data) { dropPending = false; return; }
|
||||||
const rect = canvas.getBoundingClientRect();
|
const rect = canvas.getBoundingClientRect();
|
||||||
const mx = e.clientX - rect.left - panX;
|
const mx = e.clientX - rect.left - panX;
|
||||||
const my = e.clientY - rect.top - panY;
|
const my = e.clientY - rect.top - panY;
|
||||||
@@ -1204,7 +1208,6 @@ function setupCanvasDrop() {
|
|||||||
color: '#1e3a5f', border_color: '#3b82f6',
|
color: '#1e3a5f', border_color: '#3b82f6',
|
||||||
opacity: 0.15, z_index: nextShapeZ++
|
opacity: 0.15, z_index: nextShapeZ++
|
||||||
})});
|
})});
|
||||||
loadNetworkData();
|
|
||||||
} else {
|
} else {
|
||||||
await apiFetch('nodes', { method: 'POST', body: JSON.stringify({
|
await apiFetch('nodes', { method: 'POST', body: JSON.stringify({
|
||||||
label: data.charAt(0).toUpperCase() + data.slice(1),
|
label: data.charAt(0).toUpperCase() + data.slice(1),
|
||||||
@@ -1212,8 +1215,9 @@ function setupCanvasDrop() {
|
|||||||
group_name: 'default', notes: '',
|
group_name: 'default', notes: '',
|
||||||
pos_x: mx, pos_y: my
|
pos_x: mx, pos_y: my
|
||||||
})});
|
})});
|
||||||
loadNetworkData();
|
|
||||||
}
|
}
|
||||||
|
await loadNetworkData();
|
||||||
|
dropPending = false;
|
||||||
});
|
});
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|||||||
Reference in New Issue
Block a user