-
Notifications
You must be signed in to change notification settings - Fork 0
Expand file tree
/
Copy pathscript.js
More file actions
119 lines (111 loc) · 2.71 KB
/
script.js
File metadata and controls
119 lines (111 loc) · 2.71 KB
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
const keys = new Map();
const allkeys = document.querySelectorAll(".grid-item");
allkeys.forEach((keyElement) => {
keyElement.addEventListener("click", (e) => {
mapKeysWithEvent(e.target.innerHTML);
});
});
let expStack = [];
let inputEle = document.querySelector("#input-display");
let preResult = document.querySelector("#operation-display");
preResult.innerHTML = "0";
inputEle.innerHTML = "0";
const takeInput = (digit) => {
if (inputEle.innerHTML != "0") inputEle.innerHTML += digit;
else {
inputEle.innerHTML = digit;
}
};
const pushToExp = (operation) => {
if (!Number(inputEle.innerHTML)) {
console.log("Enter a number!!!");
return;
}
// calculate();
if (expStack.length != 0) {
expStack[1] = operation;
calculate();
} else {
expStack.push(inputEle.innerHTML, operation);
console.log(expStack, "push input inner html and operation");
}
displayExp();
};
const displayExp = () => {
let exp = expStack.reduce((acc, c) => acc + c, "");
preResult.innerHTML = exp;
};
const mapKeysWithEvent = (key) => {
if (Number(key) || key == "0" || key == ".") {
takeInput(key);
return;
}
switch (key) {
case "+":
pushToExp("+");
break;
case "-":
pushToExp("-");
break;
case "*":
pushToExp("*");
break;
case "/":
pushToExp("/");
break;
case "=":
calculate();
break;
case "AC": {
preResult.innerHTML = "0";
inputEle.innerHTML = "0";
expStack = [];
break;
}
case "DEL":
console.log("Del!");
break;
}
};
const calculate = () => {
// check if no operation is performed before
if (!expStack[0]) {
console.log("No operations has been performed!!!");
return;
}
// else
// take first value from expStack to know the pre result,second value for last operation
console.log(expStack);
console.log(Number(expStack[0]), expStack[1], Number(inputEle.innerHTML));
let p_res = Number(expStack[0]);
let p_op = expStack[1];
let c_value = Number(inputEle.innerHTML);
expStack.splice(2, expStack.length);
console.log("Made", expStack);
switch (p_op) {
case "+":
// console.log(p_res + c_value);
expStack[0] = Number(p_res + c_value);
break;
case "-":
let x = Number(p_res - c_value);
expStack[0] = x;
console.log(expStack[0]);
break;
case "*":
// console.log(p_res + c_value);
expStack[0] = Number(p_res * c_value);
break;
case "/":
expStack[0] = Number(p_res / c_value);
break;
// pushToExp("+");
}
inputEle.innerHTML = "0";
displayExp();
};
// console.log(allkeys)
// perfrom operation
// create function for that
// take user input
// display user input