make most of the buttons work

This commit is contained in:
filifa 2025-12-11 23:49:34 -05:00
parent 24145fffec
commit 7fb2cbf7d9
1 changed files with 46 additions and 1 deletions

47
main.js
View File

@ -97,6 +97,11 @@ function compute(queue, modulus) {
const c = (a * binv) % modulus;
stack.push(c);
} else if (token === "^") {
// FIXME: not always valid - consider 2^3^4 mod 7
// also 2^(3+4)
// solution might be to change parser
// might also be better to just mod once at the end
// instead of with every op
const [a, b] = binaryOpPop(stack);
const c = modpow(a, b, modulus);
stack.push(c);
@ -145,7 +150,47 @@ function calculate() {
}
result.value = r;
}
let currentInput = null;
function setCurrentInput() {
currentInput = this;
}
function clear() {
currentInput.value = "";
// TODO: set current input as focused
}
function keyPress(c) {
currentInput.value += c;
// TODO: set current input as focused
}
document.querySelector("#expr").addEventListener("focus", setCurrentInput);
document.querySelector("#modulus").addEventListener("focus", setCurrentInput);
document.querySelector("#zero").addEventListener("click", () => keyPress("0"));
document.querySelector("#one").addEventListener("click", () => keyPress("1"));
document.querySelector("#two").addEventListener("click", () => keyPress("2"));
document.querySelector("#three").addEventListener("click", () => keyPress("3"));
document.querySelector("#four").addEventListener("click", () => keyPress("4"));
document.querySelector("#five").addEventListener("click", () => keyPress("5"));
document.querySelector("#six").addEventListener("click", () => keyPress("6"));
document.querySelector("#seven").addEventListener("click", () => keyPress("7"));
document.querySelector("#eight").addEventListener("click", () => keyPress("8"));
document.querySelector("#nine").addEventListener("click", () => keyPress("9"));
document.querySelector("#plus").addEventListener("click", () => keyPress("+"));
document.querySelector("#minus").addEventListener("click", () => keyPress("-"));
document.querySelector("#times").addEventListener("click", () => keyPress("*"));
document.querySelector("#divide").addEventListener("click", () => keyPress("/"));
document.querySelector("#lparen").addEventListener("click", () => keyPress("("));
document.querySelector("#rparen").addEventListener("click", () => keyPress(")"));
document.querySelector("#pow").addEventListener("click", () => keyPress("^"));
document.querySelector("#clear").addEventListener("click", clear);
document.querySelector("#enter").addEventListener("click", calculate);