//-------------| MohammadShokri |-
"use strict";
const calculator = document.getElementById("calculator");
const output = document.getElementById("output");
const calcResult = document.getElementById("calcResult");
// handle physical keyboard
window.addEventListener("keydown", (e) => {
let numbers = ["0", "1", "2", "3", "4", "5", "6", "7", "8", "9"];
let operators = ["+", "-", "*", "/", "%", "**", "(", ")"];
if (e.key === "Backspace") {
//delete the last index with backspace
output.value = output.value.slice(0, -1);
}
if (numbers.includes(e.key) || operators.includes(e.key)) {
//if it was number or operator write it
output.value += e.key;
}
if (e.key === "c") {
//clear output with C
output.value = "";
}
if (e.key === "Enter") {
//calc with Enter
try {
let result = eval(output.value);
output.value = result;
} catch (error) {
output.value = "Unknown Error";
}
}
});
//handle screen keyboard
calculator.addEventListener("click", (e) => {
let target = e.target;
switch (target.id) {
case "zero":
output.value += 0;
break;
case "one":
output.value += 1;
break;
case "two":
output.value += 2;
break;
case "three":
output.value += 3;
break;
case "four":
output.value += 4;
break;
case "five":
output.value += 5;
break;
case "six":
output.value += 6;
break;
case "seven":
output.value += 7;
break;
case "eight":
output.value += 8;
break;
case "nine":
output.value += 9;
break;
case "clear":
output.value = "";
break;
case "backspace":
output.value = output.value.slice(0, -1);
break;
case "sum":
output.value += "+";
break;
case "sub":
output.value += "-";
break;
case "mul":
output.value += "*";
break;
case "div":
output.value += "/";
break;
case "mod":
output.value += "%";
break;
case "pow":
output.value += "**";
break;
case "lbracket":
output.value += "(";
break;
case "rbracket":
output.value += ")";
break;
}
});
//calculate result
calcResult.addEventListener("click", (e) => {
try {
let result = eval(output.value);
output.value = result;
} catch (error) {
output.value = "Unknown Error";
}
});