mirror of
https://gitea.smigz.com/smiggiddy/odin-codeprojects.git
synced 2024-12-26 06:20:42 -05:00
Merge pull request #1 from smiggiddy/patch-calculator
merge: patch calculator
This commit is contained in:
commit
1ad3c8efdb
1 changed files with 32 additions and 20 deletions
|
@ -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;
|
||||
|
||||
// store result
|
||||
ops.result = result;
|
||||
|
||||
if (ops.lastOperator === '=') {
|
||||
ops.firstNum = String();
|
||||
ops.secondNum = String();
|
||||
if (ops.operator === '=') {
|
||||
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 ){
|
||||
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;
|
||||
}
|
||||
|
|
Loading…
Reference in a new issue