Merge pull request #1 from smiggiddy/patch-calculator

merge: patch calculator
This commit is contained in:
Mike 2023-10-14 07:30:24 -04:00 committed by GitHub
commit 1ad3c8efdb
No known key found for this signature in database
GPG key ID: 4AEE18F83AFDEB23

View file

@ -5,18 +5,13 @@ const ops = {
firstNum: String(),
secondNum: String(),
operator: undefined,
lastOperator: undefined,
numFlag: false,
onSecondNumber: false,
stringLength: 8,
periodClicked: false,
result: String(),
updateNum: (num) => {
if (!this.updateSecondNum){
this.firstNum = num;
} else {
this.secondNum = num;
}
},
toggleNumFlag: function() {
this.numFlag = !this.numFlag
},
@ -26,6 +21,7 @@ const ops = {
this.operator = undefined;
this.numFlag = false;
this.onSecondNumber = false;
this.result = String();
display.textContent = "0";
},
appendNumber: function(num) {
@ -81,25 +77,32 @@ function operate(firstNum, secondNum, operator) {
}
function handleOperation() {
let first = Number(ops.firstNum);
let second = Number(ops.secondNum);
const first = Number(ops.firstNum);
const second = Number(ops.secondNum);
let result = operate(first, second, ops.operator);
// result = Math.round(result * (10^3)/(10^3));
if (result === "error") {
ops.clear();
return;
}
result = roundThreeDecimals(result);
updateDisplay(result);
ops.firstNum = result;
ops.secondNum = String();
if (ops.operator === '=') {
// store result
ops.result = result;
if (ops.lastOperator === '=') {
ops.firstNum = String();
ops.secondNum = String();
ops.numFlag = false;
ops.onSecondNumber = false;
ops.onSecondNumber = !ops.onSecondNumber;
} else {
ops.firstNum = ops.result;
ops.secondNum = "";
ops.onSecondNumber = true;
}
ops.operator = undefined;
// ops.operator = undefined;
}
function updateDisplay(displayValue) {
@ -117,27 +120,36 @@ function roundThreeDecimals(number) {
function handleOperatorClick(operatorClicked) {
ops.lastOperator = operatorClicked;
// TODO handle ops for = or clear
if (operatorClicked === 'cls') {
ops.clear();
return;
} else if (operatorClicked === '=') {
ops.lastOperator = '=';
handleOperation();
return;
} else if (operatorClicked === '+/-') {
negateNumber();
return
return;
} else if (operatorClicked === '%') {
percentageNumber();
return
return;
} else {
if(ops.secondNum && ops.numFlag){
handleOperation();
return;
}
}
ops.operator = operatorClicked;
//TODO fix this conditional should be if numFlag and a check if = or additional ops
if(!ops.onSecondNumber){
if(!ops.onSecondNumber ){
ops.numFlag = true;
} else if (ops.result !== undefined ) {
console.log('this is running the ops.result');
ops.firstNum = ops.result;
ops.onSecondNumber = true;
return
}
ops.onSecondNumber = !ops.onSecondNumber;
}