+47
-47
@@ -30,7 +30,6 @@ let editingNodeId = null;
|
||||
let editingShapeId = null;
|
||||
|
||||
document.addEventListener('DOMContentLoaded', () => {
|
||||
// Check auth first
|
||||
checkSession().then(() => {
|
||||
canvas = document.getElementById('networkCanvas');
|
||||
ctx = canvas.getContext('2d');
|
||||
@@ -50,59 +49,60 @@ document.addEventListener('DOMContentLoaded', () => {
|
||||
document.getElementById('opacityVal').textContent = parseFloat(e.target.value).toFixed(2);
|
||||
});
|
||||
|
||||
canvas.addEventListener('mousedown', onMouseDown);
|
||||
canvas.addEventListener('mousemove', onMouseMove);
|
||||
canvas.addEventListener('mouseup', onMouseUp);
|
||||
canvas.addEventListener('dblclick', onDblClick);
|
||||
canvas.addEventListener('contextmenu', (e) => e.preventDefault());
|
||||
window.addEventListener('resize', () => { resizeCanvas(); renderNetwork(); });
|
||||
canvas.addEventListener('mousedown', onMouseDown);
|
||||
canvas.addEventListener('mousemove', onMouseMove);
|
||||
canvas.addEventListener('mouseup', onMouseUp);
|
||||
canvas.addEventListener('dblclick', onDblClick);
|
||||
canvas.addEventListener('contextmenu', (e) => e.preventDefault());
|
||||
window.addEventListener('resize', () => { resizeCanvas(); renderNetwork(); });
|
||||
|
||||
document.addEventListener('keydown', (e) => {
|
||||
if ((e.ctrlKey || e.metaKey) && e.key === 'c') {
|
||||
if (!document.activeElement || document.activeElement.tagName !== 'INPUT') {
|
||||
if (selectedNodeId) copyNode(selectedNodeId);
|
||||
else if (selectedShapeId) copyShape(selectedShapeId);
|
||||
document.addEventListener('keydown', (e) => {
|
||||
if ((e.ctrlKey || e.metaKey) && e.key === 'c') {
|
||||
if (!document.activeElement || document.activeElement.tagName !== 'INPUT') {
|
||||
if (selectedNodeId) copyNode(selectedNodeId);
|
||||
else if (selectedShapeId) copyShape(selectedShapeId);
|
||||
}
|
||||
return;
|
||||
}
|
||||
return;
|
||||
}
|
||||
if ((e.ctrlKey || e.metaKey) && e.key === 'v') {
|
||||
if (!document.activeElement || document.activeElement.tagName !== 'INPUT') {
|
||||
if (copyBuffer) pasteItem();
|
||||
if ((e.ctrlKey || e.metaKey) && e.key === 'v') {
|
||||
if (!document.activeElement || document.activeElement.tagName !== 'INPUT') {
|
||||
if (copyBuffer) pasteItem();
|
||||
}
|
||||
return;
|
||||
}
|
||||
return;
|
||||
}
|
||||
if ((e.ctrlKey || e.metaKey) && e.key === 'a') {
|
||||
if (!document.activeElement || document.activeElement.tagName !== 'INPUT') {
|
||||
e.preventDefault();
|
||||
selectedNodeIds = canvasNodes.map(n => n.id);
|
||||
selectedNodeId = selectedNodeIds.length > 0 ? selectedNodeIds[0] : null;
|
||||
if ((e.ctrlKey || e.metaKey) && e.key === 'a') {
|
||||
if (!document.activeElement || document.activeElement.tagName !== 'INPUT') {
|
||||
e.preventDefault();
|
||||
selectedNodeIds = canvasNodes.map(n => n.id);
|
||||
selectedNodeId = selectedNodeIds.length > 0 ? selectedNodeIds[0] : null;
|
||||
selectedShapeId = null;
|
||||
renderNodeList(); renderShapeList(); renderNetwork();
|
||||
}
|
||||
return;
|
||||
}
|
||||
if (e.key === 'Delete') {
|
||||
if (!document.activeElement || document.activeElement.tagName !== 'INPUT') {
|
||||
if (selectedNodeIds.length > 0) deleteSelectedNodes();
|
||||
else if (selectedShapeId) deleteSelectedShape(selectedShapeId);
|
||||
}
|
||||
}
|
||||
if (e.key === 'Escape') {
|
||||
selectedNodeId = null;
|
||||
selectedShapeId = null;
|
||||
renderNodeList(); renderShapeList(); renderNetwork();
|
||||
renderNetwork();
|
||||
renderNodeList();
|
||||
renderShapeList();
|
||||
}
|
||||
return;
|
||||
}
|
||||
if (e.key === 'Delete') {
|
||||
if (!document.activeElement || document.activeElement.tagName !== 'INPUT') {
|
||||
if (selectedNodeIds.length > 0) deleteSelectedNodes();
|
||||
else if (selectedShapeId) deleteSelectedShape(selectedShapeId);
|
||||
}
|
||||
}
|
||||
if (e.key === 'Escape') {
|
||||
selectedNodeId = null;
|
||||
selectedShapeId = null;
|
||||
renderNetwork();
|
||||
renderNodeList();
|
||||
renderShapeList();
|
||||
}
|
||||
});
|
||||
|
||||
document.querySelectorAll('[data-bs-toggle="tab"]').forEach(tab => {
|
||||
tab.addEventListener('shown.bs.tab', () => {
|
||||
if (tab.id === 'network-tab') { resizeCanvas(); renderNetwork(); }
|
||||
});
|
||||
});
|
||||
|
||||
document.documentElement.setAttribute('data-bs-theme', 'dark');
|
||||
document.querySelectorAll('[data-bs-toggle="tab"]').forEach(tab => {
|
||||
tab.addEventListener('shown.bs.tab', () => {
|
||||
if (tab.id === 'network-tab') { resizeCanvas(); renderNetwork(); }
|
||||
});
|
||||
});
|
||||
|
||||
document.documentElement.setAttribute('data-bs-theme', 'dark');
|
||||
});
|
||||
});
|
||||
|
||||
function resizeCanvas() {
|
||||
|
||||
Reference in New Issue
Block a user