把前端从CircuitVerse中拆了出来
This commit is contained in:
commit
5bf1284599
2182 changed files with 189323 additions and 0 deletions
246
public/js/embedListeners.js
Normal file
246
public/js/embedListeners.js
Normal file
|
@ -0,0 +1,246 @@
|
|||
// Listeners when circuit is embedded
|
||||
// Refer listeners.js
|
||||
|
||||
function startListeners() {
|
||||
window.addEventListener('keyup', function (e) {
|
||||
scheduleUpdate(1);
|
||||
if (e.keyCode == 16) {
|
||||
simulationArea.shiftDown = false;
|
||||
}
|
||||
if (e.key == "Meta" || e.key == "Control") {
|
||||
simulationArea.controlDown = false;
|
||||
}
|
||||
});
|
||||
|
||||
document.getElementById("simulationArea").addEventListener('mousedown', function (e) {
|
||||
errorDetected = false;
|
||||
updateSimulation = true;
|
||||
updatePosition = true;
|
||||
updateCanvas = true;
|
||||
|
||||
simulationArea.lastSelected = undefined;
|
||||
simulationArea.selected = false;
|
||||
simulationArea.hover = undefined;
|
||||
var rect = simulationArea.canvas.getBoundingClientRect();
|
||||
simulationArea.mouseDownRawX = (e.clientX - rect.left) * DPR;
|
||||
simulationArea.mouseDownRawY = (e.clientY - rect.top) * DPR;
|
||||
simulationArea.mouseDownX = Math.round(((simulationArea.mouseDownRawX - globalScope.ox) / globalScope.scale) / unit) * unit;
|
||||
simulationArea.mouseDownY = Math.round(((simulationArea.mouseDownRawY - globalScope.oy) / globalScope.scale) / unit) * unit;
|
||||
simulationArea.mouseDown = true;
|
||||
simulationArea.oldx = globalScope.ox;
|
||||
simulationArea.oldy = globalScope.oy;
|
||||
|
||||
|
||||
e.preventDefault();
|
||||
scheduleUpdate(1);
|
||||
});
|
||||
|
||||
document.getElementById('simulationArea').addEventListener('mousemove', () => {
|
||||
var ele = document.getElementById('elementName');
|
||||
if (globalScope && simulationArea && simulationArea.objectList) {
|
||||
var { objectList } = simulationArea;
|
||||
objectList = objectList.filter(val => val !== 'wires');
|
||||
|
||||
for (var i = 0; i < objectList.length; i++) {
|
||||
for (var j = 0; j < globalScope[objectList[i]].length; j++) {
|
||||
if (globalScope[objectList[i]][j].isHover()) {
|
||||
ele.style.display = 'block';
|
||||
if (objectList[i] === 'SubCircuit') {
|
||||
ele.innerHTML = `Subcircuit: ${globalScope.SubCircuit[j].data.name}`;
|
||||
} else {
|
||||
ele.innerHTML = `CircuitElement: ${objectList[i]}`;
|
||||
}
|
||||
return;
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
ele.style.display = 'none';
|
||||
document.getElementById('elementName').innerHTML = '';
|
||||
});
|
||||
|
||||
window.addEventListener('mousemove', function (e) {
|
||||
|
||||
var rect = simulationArea.canvas.getBoundingClientRect();
|
||||
simulationArea.mouseRawX = (e.clientX - rect.left) * DPR;
|
||||
simulationArea.mouseRawY = (e.clientY - rect.top) * DPR;
|
||||
simulationArea.mouseXf = (simulationArea.mouseRawX - globalScope.ox) / globalScope.scale;
|
||||
simulationArea.mouseYf = (simulationArea.mouseRawY - globalScope.oy) / globalScope.scale;
|
||||
simulationArea.mouseX = Math.round(simulationArea.mouseXf / unit) * unit;
|
||||
simulationArea.mouseY = Math.round(simulationArea.mouseYf / unit) * unit;
|
||||
|
||||
updateCanvas = true;
|
||||
if (simulationArea.lastSelected == globalScope.root) {
|
||||
updateCanvas = true;
|
||||
var fn;
|
||||
fn = function () {
|
||||
updateSelectionsAndPane();
|
||||
}
|
||||
scheduleUpdate(0, 20, fn);
|
||||
|
||||
} else {
|
||||
scheduleUpdate(0, 200);
|
||||
}
|
||||
|
||||
|
||||
});
|
||||
window.addEventListener('keydown', function (e) {
|
||||
|
||||
errorDetected = false;
|
||||
updateSimulation = true;
|
||||
updatePosition = true;
|
||||
|
||||
// zoom in (+)
|
||||
if (e.key == "Meta" || e.key == "Control") {
|
||||
simulationArea.controlDown = true;
|
||||
}
|
||||
|
||||
if (simulationArea.controlDown && (e.keyCode == 187 || e.KeyCode == 171)) {
|
||||
e.preventDefault();
|
||||
if (globalScope.scale < 4 * DPR)
|
||||
changeScale(.1 * DPR);
|
||||
}
|
||||
|
||||
// zoom out (-)
|
||||
if (simulationArea.controlDown && (e.keyCode == 189 || e.Keycode == 173)) {
|
||||
e.preventDefault();
|
||||
if (globalScope.scale > 0.5 * DPR)
|
||||
changeScale(-.1 * DPR);
|
||||
}
|
||||
|
||||
|
||||
if (simulationArea.mouseRawX < 0 || simulationArea.mouseRawY < 0 || simulationArea.mouseRawX > width || simulationArea.mouseRawY > height) return;
|
||||
|
||||
scheduleUpdate(1);
|
||||
updateCanvas = true;
|
||||
|
||||
if (simulationArea.lastSelected && simulationArea.lastSelected.keyDown) {
|
||||
if (e.key.toString().length == 1 || e.key.toString() == "Backspace") {
|
||||
simulationArea.lastSelected.keyDown(e.key.toString());
|
||||
return;
|
||||
}
|
||||
|
||||
}
|
||||
if (simulationArea.lastSelected && simulationArea.lastSelected.keyDown2) {
|
||||
if (e.key.toString().length == 1) {
|
||||
simulationArea.lastSelected.keyDown2(e.key.toString());
|
||||
return;
|
||||
}
|
||||
|
||||
}
|
||||
|
||||
// if (simulationArea.lastSelected && simulationArea.lastSelected.keyDown3) {
|
||||
// if (e.key.toString() != "Backspace" && e.key.toString() != "Delete") {
|
||||
// simulationArea.lastSelected.keyDown3(e.key.toString());
|
||||
// return;
|
||||
// }
|
||||
|
||||
// }
|
||||
|
||||
if (e.key == "T" || e.key == "t") {
|
||||
simulationArea.changeClockTime(prompt("Enter Time:"));
|
||||
}
|
||||
|
||||
})
|
||||
document.getElementById("simulationArea").addEventListener('dblclick', function (e) {
|
||||
scheduleUpdate(2);
|
||||
if (simulationArea.lastSelected && simulationArea.lastSelected.dblclick !== undefined) {
|
||||
simulationArea.lastSelected.dblclick();
|
||||
}
|
||||
});
|
||||
|
||||
|
||||
window.addEventListener('mouseup', function (e) {
|
||||
|
||||
simulationArea.mouseDown = false;
|
||||
errorDetected = false;
|
||||
updateSimulation = true;
|
||||
updatePosition = true;
|
||||
updateCanvas = true;
|
||||
gridUpdate = true;
|
||||
wireToBeChecked = true;
|
||||
|
||||
scheduleUpdate(1);
|
||||
});
|
||||
window.addEventListener('mousedown', function (e) {
|
||||
this.focus();
|
||||
});
|
||||
|
||||
document.getElementById("simulationArea").addEventListener('mousewheel', MouseScroll);
|
||||
document.getElementById("simulationArea").addEventListener('DOMMouseScroll', MouseScroll);
|
||||
|
||||
function MouseScroll(event) {
|
||||
updateCanvas = true;
|
||||
|
||||
event.preventDefault()
|
||||
var deltaY = event.wheelDelta ? event.wheelDelta : -event.detail;
|
||||
var scrolledUp = deltaY < 0;
|
||||
var scrolledDown = deltaY > 0;
|
||||
|
||||
if (event.ctrlKey) {
|
||||
if (scrolledUp && globalScope.scale > 0.5 * DPR) {
|
||||
changeScale(-.1 * DPR);
|
||||
}
|
||||
if (scrolledDown && globalScope.scale < 4 * DPR) {
|
||||
changeScale(.1 * DPR);
|
||||
}
|
||||
} else {
|
||||
if (scrolledUp && globalScope.scale < 4 * DPR) {
|
||||
changeScale(.1 * DPR);
|
||||
}
|
||||
if (scrolledDown && globalScope.scale > 0.5 * DPR) {
|
||||
changeScale(-.1 * DPR);
|
||||
}
|
||||
}
|
||||
|
||||
updateCanvas = true;
|
||||
gridUpdate = true;
|
||||
update(); // Schedule update not working, this is INEFFICENT
|
||||
}
|
||||
|
||||
document.addEventListener('cut', function (e) {
|
||||
simulationArea.copyList = simulationArea.multipleObjectSelections.slice();
|
||||
if (simulationArea.lastSelected && simulationArea.lastSelected !== simulationArea.root && !simulationArea.copyList.contains(simulationArea.lastSelected)) {
|
||||
simulationArea.copyList.push(simulationArea.lastSelected);
|
||||
}
|
||||
|
||||
var textToPutOnClipboard = cut(simulationArea.copyList);
|
||||
if (isIe) {
|
||||
window.clipboardData.setData('Text', textToPutOnClipboard);
|
||||
} else {
|
||||
e.clipboardData.setData('text/plain', textToPutOnClipboard);
|
||||
}
|
||||
e.preventDefault();
|
||||
});
|
||||
document.addEventListener('copy', function (e) {
|
||||
simulationArea.copyList = simulationArea.multipleObjectSelections.slice();
|
||||
if (simulationArea.lastSelected && simulationArea.lastSelected !== simulationArea.root && !simulationArea.copyList.contains(simulationArea.lastSelected)) {
|
||||
simulationArea.copyList.push(simulationArea.lastSelected);
|
||||
}
|
||||
|
||||
var textToPutOnClipboard = copy(simulationArea.copyList);
|
||||
if (isIe) {
|
||||
window.clipboardData.setData('Text', textToPutOnClipboard);
|
||||
} else {
|
||||
e.clipboardData.setData('text/plain', textToPutOnClipboard);
|
||||
}
|
||||
e.preventDefault();
|
||||
});
|
||||
|
||||
document.addEventListener('paste', function (e) {
|
||||
var data;
|
||||
if (isIe) {
|
||||
data = window.clipboardData.getData('Text');
|
||||
} else {
|
||||
data = e.clipboardData.getData('text/plain');
|
||||
}
|
||||
|
||||
paste(data);
|
||||
e.preventDefault();
|
||||
});
|
||||
}
|
||||
|
||||
|
||||
var isIe = (navigator.userAgent.toLowerCase().indexOf("msie") != -1 ||
|
||||
navigator.userAgent.toLowerCase().indexOf("trident") != -1);
|
Loading…
Add table
Add a link
Reference in a new issue