From 76679abf78d7a352876ba66debaea16319a95164 Mon Sep 17 00:00:00 2001 From: kwhitejr Date: Sat, 7 Nov 2015 14:33:29 -1000 Subject: [PATCH 01/14] My Calculator, framework ready --- index.html | 65 +++++++++++++++++++++++++++++++++++++++++++++ js/calculator.js | 20 ++++++++++++++ js/cash_register.js | 27 +++++++++++++++++++ styles.css | 9 +++++++ 4 files changed, 121 insertions(+) create mode 100644 styles.css diff --git a/index.html b/index.html index e69de29..59aed0b 100644 --- a/index.html +++ b/index.html @@ -0,0 +1,65 @@ + + + + + + + + + + + +
+ +
+

[__________________]

+
+ + +
+

[7]

+

[8]

+

[9]

+

[÷]

+

[clear]

+
+ + +
+

[4]

+

[5]

+

[6]

+

[×]

+

[get balance]

+
+ + +
+

[1]

+

[2]

+

[3]

+

[-]

+

[deposit cash]

+
+ + +
+

[0]

+

[00]

+

[.]

+

[+]

+

[withdraw cash]

+
+ + +
+

+

+

+

[=]

+
+
+ + + + \ No newline at end of file diff --git a/js/calculator.js b/js/calculator.js index e69de29..85d53c2 100644 --- a/js/calculator.js +++ b/js/calculator.js @@ -0,0 +1,20 @@ +console.log("Test calculator"); + +var calculator = { + total: 0, + + clear: function() {this.total = 0;}, + + add: function(num) {return this.total += num;}, + + subtract: function(num) {return this.total -= num;}, + + multiply: function(num) {return this.total *= num;}, + + divide: function(num) { + // add event listener + return this.total /= num; + }, + + equals: function() { return this.total ;} //push this.total to register.display +}; diff --git a/js/cash_register.js b/js/cash_register.js index e69de29..185241b 100644 --- a/js/cash_register.js +++ b/js/cash_register.js @@ -0,0 +1,27 @@ +// var calculatorModule = require('./calculator.js'); +console.log("Test register"); + +var register = { + + balance: 0, + + // display: ,// todo, + + getBalance: function() { + //push 'balance' to 'display' + this.display = this.balance; + return this.display; + }, + + depositCash: function(num) { + this.balance += num; + this.display = null; + }, + + withdrawCash: function(num) { + this.balance -= num; + this.display = null; + } +}; + +// \ No newline at end of file diff --git a/styles.css b/styles.css new file mode 100644 index 0000000..5d95692 --- /dev/null +++ b/styles.css @@ -0,0 +1,9 @@ +p { + display: table-cell; + padding: 15px; + font-size: 200%; +} + +.row { + display: table-row; +} \ No newline at end of file From a705d20c617d87f8c777f1c595b5334d9e6a50e5 Mon Sep 17 00:00:00 2001 From: kwhitejr Date: Sat, 7 Nov 2015 19:04:32 -1000 Subject: [PATCH 02/14] Calculator supports stringing operations --- index.html | 14 ++- js/calculator.js | 12 +- js/cash_register.js | 275 +++++++++++++++++++++++++++++++++++++++++++- 3 files changed, 286 insertions(+), 15 deletions(-) diff --git a/index.html b/index.html index 59aed0b..c01d6e9 100644 --- a/index.html +++ b/index.html @@ -11,15 +11,17 @@
-
-

[__________________]

-
+
[
+
+
]
+ +
-

[7]

-

[8]

-

[9]

+

[7]

+

[8]

+

[9]

[÷]

[clear]

diff --git a/js/calculator.js b/js/calculator.js index 85d53c2..7381b54 100644 --- a/js/calculator.js +++ b/js/calculator.js @@ -1,11 +1,16 @@ console.log("Test calculator"); var calculator = { - total: 0, + total: null, - clear: function() {this.total = 0;}, + lastOperator: "", - add: function(num) {return this.total += num;}, + clear: function() {this.total = null;}, + + add: function(num) { + + return this.total += num; + }, subtract: function(num) {return this.total -= num;}, @@ -18,3 +23,4 @@ var calculator = { equals: function() { return this.total ;} //push this.total to register.display }; + diff --git a/js/cash_register.js b/js/cash_register.js index 185241b..5d0dca0 100644 --- a/js/cash_register.js +++ b/js/cash_register.js @@ -5,23 +5,286 @@ var register = { balance: 0, - // display: ,// todo, + display: 0, getBalance: function() { //push 'balance' to 'display' - this.display = this.balance; - return this.display; + return this.balance; + // this.display = this.balance; + // return this.display; }, depositCash: function(num) { this.balance += num; - this.display = null; + // this.display = null; + return this.balance; }, withdrawCash: function(num) { this.balance -= num; - this.display = null; + // this.display = null; + return this.balance; } }; -// \ No newline at end of file +document.getElementById("keyGetBalance").addEventListener("click", function(){ + console.log("This is your balance."); + console.log(register.getBalance()); +}); + +document.getElementById("keyDepositCash").addEventListener("click", function(){ + console.log("This is how much you deposited."); + console.log(register.depositCash()); +}); + +document.getElementById("keyWithdrawCash").addEventListener("click", function(){ + console.log("This is your balance."); + console.log(register.withdrawCash()); +}); + +var keys = { + display: document.getElementById("display"), + key1: document.getElementById("key1"), + key2: document.getElementById("key2"), + key3: document.getElementById("key3"), + key4: document.getElementById("key4"), + key5: document.getElementById("key5"), + key6: document.getElementById("key6"), + key7: document.getElementById("key7"), + key8: document.getElementById("key8"), + key9: document.getElementById("key9"), + key0: document.getElementById("key0"), + key00: document.getElementById("key00"), + keyPeriod: document.getElementById("keyPeriod"), + keyClear: document.getElementById("keyClear"), + +}; + + +var press = { + press1: keys.key1.addEventListener('click', function() { + display.innerHTML += 1;}), + press2: keys.key2.addEventListener('click', function() { + display.innerHTML += 2;}), + press3: keys.key3.addEventListener('click', function() { + display.innerHTML += 3;}), + press4: keys.key4.addEventListener('click', function() { + display.innerHTML += 4;}), + press5: keys.key5.addEventListener('click', function() { + display.innerHTML += 5;}), + press6: keys.key6.addEventListener('click', function() { + display.innerHTML += 6;}), + press7: keys.key7.addEventListener('click', function() { + display.innerHTML += 7;}), + press8: keys.key8.addEventListener('click', function() { + display.innerHTML += 8;}), + press9: keys.key9.addEventListener('click', function() { + display.innerHTML += 9;}), + press0: keys.key0.addEventListener('click', function() { + display.innerHTML += 0;}), + press00: keys.key00.addEventListener('click', function() { + display.innerHTML += '00';}), + pressPeriod: keys.keyPeriod.addEventListener('click', function() {display.innerHTML += '.';}), + pressClear: keys.keyClear.addEventListener('click', function() { + display.innerHTML = ''; + calculator.total = null; + calculator.lastOperator = ''; + }) +}; + +/* Calculation Steps +1. Enter a number. +2. Click an operator. +3. Move displayed number to "total". +4. Clear display. +5. Enter a second number. +6. Click operator. +7. Apply first operator. +8. Set output to "total". +9. Display output. +*/ + + + +var operations = { + equalsButton: document.getElementById("keyEquals").addEventListener("click", function() { + if (calculator.lastOperator === "add") { + console.log(display.innerHTML); + calculator.add(parseFloat(keys.display.innerHTML)); + } else if (calculator.lastOperator === "subtract") { + console.log(display.innerHTML); + calculator.subtract(parseFloat(keys.display.innerHTML)); + } else if (calculator.lastOperator === "multiply") { + console.log(display.innerHTML); + calculator.multiply(parseFloat(keys.display.innerHTML)); + console.log(calculator.total); + } else if (calculator.lastOperator === "divide") { + console.log(display.innerHTML); + calculator.divide(parseFloat(keys.display.innerHTML)); + console.log(calculator.total); + } else { + console.log("You broke the damn calculator."); + } + console.log("========="); + console.log(calculator.total); + calculator.lastOperator = ""; + display.innerHTML = calculator.total; + }), + + addButton: document.getElementById("keyAdd").addEventListener("click", function() { + console.log(parseFloat(keys.display.innerHTML)); + if (calculator.lastOperator.length > 0) { + if (calculator.lastOperator === "add") { + console.log(display.innerHTML); + calculator.add(parseFloat(keys.display.innerHTML)); + } else if (calculator.lastOperator === "subtract") { + console.log(display.innerHTML); + calculator.subtract(parseFloat(keys.display.innerHTML)); + } else if (calculator.lastOperator === "multiply") { + console.log(display.innerHTML); + calculator.multiply(parseFloat(keys.display.innerHTML)); + console.log(calculator.total); + } else if (calculator.lastOperator === "divide") { + console.log(display.innerHTML); + calculator.divide(parseFloat(keys.display.innerHTML)); + console.log(calculator.total); + } else { + console.log("You broke the damn calculator."); + } + } else { + if (calculator.total !== null) { + calculator.total += parseFloat(keys.display.innerHTML); + } else { + calculator.total = parseFloat(keys.display.innerHTML); + } + } + calculator.lastOperator = "add"; + display.innerHTML = ""; + }), + + subtractButton: document.getElementById("keySubtract").addEventListener("click", function() { + console.log(parseFloat(keys.display.innerHTML)); + if (calculator.lastOperator.length > 0) { + if (calculator.lastOperator === "add") { + console.log(display.innerHTML); + calculator.add(parseFloat(keys.display.innerHTML)); + } else if (calculator.lastOperator === "subtract") { + console.log(display.innerHTML); + calculator.subtract(parseFloat(keys.display.innerHTML)); + } else if (calculator.lastOperator === "multiply") { + console.log(display.innerHTML); + calculator.multiply(parseFloat(keys.display.innerHTML)); + console.log(calculator.total); + } else if (calculator.lastOperator === "divide") { + console.log(display.innerHTML); + calculator.divide(parseFloat(keys.display.innerHTML)); + console.log(calculator.total); + } else { + console.log("You broke the damn calculator."); + } + } else { + if (calculator.total !== null) { + calculator.total -= parseFloat(keys.display.innerHTML); + } else { + calculator.total = parseFloat(keys.display.innerHTML); + } + } + calculator.lastOperator = "subtract"; + display.innerHTML = ""; + }), + + multiplyButton: document.getElementById("keyMultiply").addEventListener("click", function() { + console.log(parseFloat(keys.display.innerHTML)); + if (calculator.lastOperator.length > 0) { + if (calculator.lastOperator === "add") { + console.log(display.innerHTML); + calculator.add(parseFloat(keys.display.innerHTML)); + } else if (calculator.lastOperator === "subtract") { + console.log(display.innerHTML); + calculator.subtract(parseFloat(keys.display.innerHTML)); + } else if (calculator.lastOperator === "multiply") { + console.log(display.innerHTML); + calculator.multiply(parseFloat(keys.display.innerHTML)); + console.log(calculator.total); + } else if (calculator.lastOperator === "divide") { + console.log(display.innerHTML); + calculator.divide(parseFloat(keys.display.innerHTML)); + console.log(calculator.total); + } else { + console.log("You broke the damn calculator."); + } + } else { + if (calculator.total !== null) { + console.log("total was not null, so multiplied"); + calculator.total *= parseFloat(keys.display.innerHTML); + console.log(calculator.total); + } else { + console.log("total was null, can't multiply by zero, so made entry equal total"); + calculator.total = parseFloat(keys.display.innerHTML); + console.log(calculator.total); + } + } + calculator.lastOperator = "multiply"; + display.innerHTML = ""; + }), + + divideButton: document.getElementById("keyDivide").addEventListener("click", function() { + console.log(parseFloat(keys.display.innerHTML)); + if (calculator.lastOperator.length > 0) { + if (calculator.lastOperator === "add") { + console.log(display.innerHTML); + calculator.add(parseFloat(keys.display.innerHTML)); + } else if (calculator.lastOperator === "subtract") { + console.log(display.innerHTML); + calculator.subtract(parseFloat(keys.display.innerHTML)); + } else if (calculator.lastOperator === "multiply") { + console.log(display.innerHTML); + calculator.multiply(parseFloat(keys.display.innerHTML)); + console.log(calculator.total); + } else if (calculator.lastOperator === "divide") { + console.log(display.innerHTML); + calculator.divide(parseFloat(keys.display.innerHTML)); + console.log(calculator.total); + } else { + console.log("You broke the damn calculator."); + } + } else { + if (calculator.total !== null) { + console.log("total was not null, so divided"); + calculator.total /= parseFloat(keys.display.innerHTML); + console.log(calculator.total); + } else { + console.log("dividing...."); + calculator.total = parseFloat(keys.display.innerHTML); + console.log(calculator.total); + } + } + calculator.lastOperator = "divide"; + display.innerHTML = ""; + }), +}; + + + + + +// var subtractButton = document.getElementById("keySubtract"); + +// subtractButton.addEventListener("click", function(){ +// calculator.subtract(); +// console.log(calculator.subtract()); +// }); + +// var mulitplyButton = document.getElementById("keyMultiply"); + +// mulitplyButton.addEventListener("click", function(){ +// calculator.mulitply(); +// console.log(calculator.mulitply()); +// }); + +// var divideButton = document.getElementById("keyDivide"); + +// divideButton.addEventListener("click", function(){ +// calculator.divide(); +// console.log(calculator.divide()); +// }); \ No newline at end of file From 470f6ef224bb501801ae49aa8ce86351cb4862a5 Mon Sep 17 00:00:00 2001 From: kwhitejr Date: Sat, 7 Nov 2015 19:23:29 -1000 Subject: [PATCH 03/14] ATM functions appear to be working --- js/cash_register.js | 57 +++++++++++++++------------------------------ 1 file changed, 19 insertions(+), 38 deletions(-) diff --git a/js/cash_register.js b/js/cash_register.js index 5d0dca0..ef072c5 100644 --- a/js/cash_register.js +++ b/js/cash_register.js @@ -8,38 +8,44 @@ var register = { display: 0, getBalance: function() { - //push 'balance' to 'display' return this.balance; - // this.display = this.balance; - // return this.display; }, - depositCash: function(num) { - this.balance += num; - // this.display = null; - return this.balance; + depositCash: function() { + this.balance += parseFloat(display.innerHTML); + display.innerHTML = ""; + console.log(this.balance); }, - withdrawCash: function(num) { - this.balance -= num; - // this.display = null; - return this.balance; + withdrawCash: function() { + if (parseFloat(display.innerHTML) > this.balance) { + display.innerHTML = "ERROR: INSUFFICIENT FUNDS"; + console.log("You is broke."); + } else { + this.balance -= parseFloat(display.innerHTML); + display.innerHTML = ""; + console.log(this.balance); + } } }; document.getElementById("keyGetBalance").addEventListener("click", function(){ + register.getBalance(); console.log("This is your balance."); console.log(register.getBalance()); + console.log(register.balance); }); document.getElementById("keyDepositCash").addEventListener("click", function(){ + register.depositCash(); console.log("This is how much you deposited."); - console.log(register.depositCash()); + console.log(register.balance); }); document.getElementById("keyWithdrawCash").addEventListener("click", function(){ + register.withdrawCash(); console.log("This is your balance."); - console.log(register.withdrawCash()); + console.log(register.balance); }); var keys = { @@ -263,28 +269,3 @@ var operations = { display.innerHTML = ""; }), }; - - - - - -// var subtractButton = document.getElementById("keySubtract"); - -// subtractButton.addEventListener("click", function(){ -// calculator.subtract(); -// console.log(calculator.subtract()); -// }); - -// var mulitplyButton = document.getElementById("keyMultiply"); - -// mulitplyButton.addEventListener("click", function(){ -// calculator.mulitply(); -// console.log(calculator.mulitply()); -// }); - -// var divideButton = document.getElementById("keyDivide"); - -// divideButton.addEventListener("click", function(){ -// calculator.divide(); -// console.log(calculator.divide()); -// }); \ No newline at end of file From b72e2909db22f21910bc07a74c5160080b405e80 Mon Sep 17 00:00:00 2001 From: kwhitejr Date: Sat, 7 Nov 2015 20:00:54 -1000 Subject: [PATCH 04/14] Register Refactored Somewhat --- index.html | 2 +- js/cash_register.js | 124 +++++++++----------------------------------- 2 files changed, 25 insertions(+), 101 deletions(-) diff --git a/index.html b/index.html index c01d6e9..74ab6be 100644 --- a/index.html +++ b/index.html @@ -11,7 +11,7 @@
-
[
+
Super Happy Fun Calculator: [
]
diff --git a/js/cash_register.js b/js/cash_register.js index ef072c5..0c8a306 100644 --- a/js/cash_register.js +++ b/js/cash_register.js @@ -110,53 +110,36 @@ var press = { 9. Display output. */ - +/* Refactoring +1. Function for if-statement tree that forces last operation before next operation. +2. "Press" object (?) +3. "Keys" object (?) +4. Use modules +*/ +function lastOpCheck(num, keys) { + if (calculator.lastOperator === "add") { + calculator.add(parseFloat(keys)); + } else if (calculator.lastOperator === "subtract") { + calculator.subtract(parseFloat(keys)); + } else if (calculator.lastOperator === "multiply") { + calculator.multiply(parseFloat(keys)); + } else if (calculator.lastOperator === "divide") { + calculator.divide(parseFloat(keys)); + } else { + console.log("You broke the damn calculator."); + } +} var operations = { equalsButton: document.getElementById("keyEquals").addEventListener("click", function() { - if (calculator.lastOperator === "add") { - console.log(display.innerHTML); - calculator.add(parseFloat(keys.display.innerHTML)); - } else if (calculator.lastOperator === "subtract") { - console.log(display.innerHTML); - calculator.subtract(parseFloat(keys.display.innerHTML)); - } else if (calculator.lastOperator === "multiply") { - console.log(display.innerHTML); - calculator.multiply(parseFloat(keys.display.innerHTML)); - console.log(calculator.total); - } else if (calculator.lastOperator === "divide") { - console.log(display.innerHTML); - calculator.divide(parseFloat(keys.display.innerHTML)); - console.log(calculator.total); - } else { - console.log("You broke the damn calculator."); - } - console.log("========="); - console.log(calculator.total); + lastOpCheck(display.innerHTML, keys.display.innerHTML); calculator.lastOperator = ""; display.innerHTML = calculator.total; }), addButton: document.getElementById("keyAdd").addEventListener("click", function() { - console.log(parseFloat(keys.display.innerHTML)); if (calculator.lastOperator.length > 0) { - if (calculator.lastOperator === "add") { - console.log(display.innerHTML); - calculator.add(parseFloat(keys.display.innerHTML)); - } else if (calculator.lastOperator === "subtract") { - console.log(display.innerHTML); - calculator.subtract(parseFloat(keys.display.innerHTML)); - } else if (calculator.lastOperator === "multiply") { - console.log(display.innerHTML); - calculator.multiply(parseFloat(keys.display.innerHTML)); - console.log(calculator.total); - } else if (calculator.lastOperator === "divide") { - console.log(display.innerHTML); - calculator.divide(parseFloat(keys.display.innerHTML)); - console.log(calculator.total); - } else { - console.log("You broke the damn calculator."); - } + lastOpCheck(display.innerHTML, keys.display.innerHTML); } else { if (calculator.total !== null) { calculator.total += parseFloat(keys.display.innerHTML); @@ -169,25 +152,8 @@ var operations = { }), subtractButton: document.getElementById("keySubtract").addEventListener("click", function() { - console.log(parseFloat(keys.display.innerHTML)); if (calculator.lastOperator.length > 0) { - if (calculator.lastOperator === "add") { - console.log(display.innerHTML); - calculator.add(parseFloat(keys.display.innerHTML)); - } else if (calculator.lastOperator === "subtract") { - console.log(display.innerHTML); - calculator.subtract(parseFloat(keys.display.innerHTML)); - } else if (calculator.lastOperator === "multiply") { - console.log(display.innerHTML); - calculator.multiply(parseFloat(keys.display.innerHTML)); - console.log(calculator.total); - } else if (calculator.lastOperator === "divide") { - console.log(display.innerHTML); - calculator.divide(parseFloat(keys.display.innerHTML)); - console.log(calculator.total); - } else { - console.log("You broke the damn calculator."); - } + lastOpCheck(display.innerHTML, keys.display.innerHTML); } else { if (calculator.total !== null) { calculator.total -= parseFloat(keys.display.innerHTML); @@ -200,34 +166,13 @@ var operations = { }), multiplyButton: document.getElementById("keyMultiply").addEventListener("click", function() { - console.log(parseFloat(keys.display.innerHTML)); if (calculator.lastOperator.length > 0) { - if (calculator.lastOperator === "add") { - console.log(display.innerHTML); - calculator.add(parseFloat(keys.display.innerHTML)); - } else if (calculator.lastOperator === "subtract") { - console.log(display.innerHTML); - calculator.subtract(parseFloat(keys.display.innerHTML)); - } else if (calculator.lastOperator === "multiply") { - console.log(display.innerHTML); - calculator.multiply(parseFloat(keys.display.innerHTML)); - console.log(calculator.total); - } else if (calculator.lastOperator === "divide") { - console.log(display.innerHTML); - calculator.divide(parseFloat(keys.display.innerHTML)); - console.log(calculator.total); - } else { - console.log("You broke the damn calculator."); - } + lastOpCheck(display.innerHTML, keys.display.innerHTML); } else { if (calculator.total !== null) { - console.log("total was not null, so multiplied"); calculator.total *= parseFloat(keys.display.innerHTML); - console.log(calculator.total); } else { - console.log("total was null, can't multiply by zero, so made entry equal total"); calculator.total = parseFloat(keys.display.innerHTML); - console.log(calculator.total); } } calculator.lastOperator = "multiply"; @@ -235,34 +180,13 @@ var operations = { }), divideButton: document.getElementById("keyDivide").addEventListener("click", function() { - console.log(parseFloat(keys.display.innerHTML)); if (calculator.lastOperator.length > 0) { - if (calculator.lastOperator === "add") { - console.log(display.innerHTML); - calculator.add(parseFloat(keys.display.innerHTML)); - } else if (calculator.lastOperator === "subtract") { - console.log(display.innerHTML); - calculator.subtract(parseFloat(keys.display.innerHTML)); - } else if (calculator.lastOperator === "multiply") { - console.log(display.innerHTML); - calculator.multiply(parseFloat(keys.display.innerHTML)); - console.log(calculator.total); - } else if (calculator.lastOperator === "divide") { - console.log(display.innerHTML); - calculator.divide(parseFloat(keys.display.innerHTML)); - console.log(calculator.total); - } else { - console.log("You broke the damn calculator."); - } + lastOpCheck(display.innerHTML, keys.display.innerHTML); } else { if (calculator.total !== null) { - console.log("total was not null, so divided"); calculator.total /= parseFloat(keys.display.innerHTML); - console.log(calculator.total); } else { - console.log("dividing...."); calculator.total = parseFloat(keys.display.innerHTML); - console.log(calculator.total); } } calculator.lastOperator = "divide"; From 4e254bf99090006dfe9ef01bff44d07452df8001 Mon Sep 17 00:00:00 2001 From: kwhitejr Date: Sat, 7 Nov 2015 20:05:38 -1000 Subject: [PATCH 05/14] Cleaned up excess console logs --- index.html | 2 ++ js/calculator.js | 2 -- js/cash_register.js | 3 --- 3 files changed, 2 insertions(+), 5 deletions(-) diff --git a/index.html b/index.html index 74ab6be..cfac18c 100644 --- a/index.html +++ b/index.html @@ -60,6 +60,8 @@

[=]

+ +

*this calculator does not support order of operations.

diff --git a/js/calculator.js b/js/calculator.js index 7381b54..5bc0994 100644 --- a/js/calculator.js +++ b/js/calculator.js @@ -1,5 +1,3 @@ -console.log("Test calculator"); - var calculator = { total: null, diff --git a/js/cash_register.js b/js/cash_register.js index 0c8a306..21b2920 100644 --- a/js/cash_register.js +++ b/js/cash_register.js @@ -1,6 +1,3 @@ -// var calculatorModule = require('./calculator.js'); -console.log("Test register"); - var register = { balance: 0, From f002ccbf66749102bd1f9f2e65c095584c90b7ca Mon Sep 17 00:00:00 2001 From: kwhitejr Date: Mon, 9 Nov 2015 16:05:04 -1000 Subject: [PATCH 06/14] Separate Modules for Chained and Ordered Operations --- index.html | 5 +- js/calculator.js | 9 ++- js/cash_register.js | 124 ++++++++++++++++++---------------------- js/chainoperations.js | 65 +++++++++++++++++++++ js/orderedoperations.js | 78 +++++++++++++++++++++++++ 5 files changed, 206 insertions(+), 75 deletions(-) create mode 100644 js/chainoperations.js create mode 100644 js/orderedoperations.js diff --git a/index.html b/index.html index cfac18c..c05a471 100644 --- a/index.html +++ b/index.html @@ -61,7 +61,10 @@

[=]

-

*this calculator does not support order of operations.

+
+ + +
diff --git a/js/calculator.js b/js/calculator.js index 5bc0994..f2cb00f 100644 --- a/js/calculator.js +++ b/js/calculator.js @@ -1,14 +1,13 @@ var calculator = { total: null, - lastOperator: "", + lastOperator: [], - clear: function() {this.total = null;}, + numStr: '', - add: function(num) { + clear: function() {this.total = null;}, - return this.total += num; - }, + add: function(num) {return this.total += num;}, subtract: function(num) {return this.total -= num;}, diff --git a/js/cash_register.js b/js/cash_register.js index 21b2920..04d5fcf 100644 --- a/js/cash_register.js +++ b/js/cash_register.js @@ -63,7 +63,6 @@ var keys = { }; - var press = { press1: keys.key1.addEventListener('click', function() { display.innerHTML += 1;}), @@ -91,102 +90,89 @@ var press = { pressClear: keys.keyClear.addEventListener('click', function() { display.innerHTML = ''; calculator.total = null; - calculator.lastOperator = ''; + calculator.lastOperator = []; }) }; -/* Calculation Steps -1. Enter a number. -2. Click an operator. -3. Move displayed number to "total". -4. Clear display. -5. Enter a second number. -6. Click operator. -7. Apply first operator. -8. Set output to "total". -9. Display output. -*/ - -/* Refactoring -1. Function for if-statement tree that forces last operation before next operation. -2. "Press" object (?) -3. "Keys" object (?) -4. Use modules -*/ -function lastOpCheck(num, keys) { - if (calculator.lastOperator === "add") { +// This function should be added to the chainoperations.js module +function lastOpCheck(keys) { + if (calculator.lastOperator[0] === "add") { calculator.add(parseFloat(keys)); - } else if (calculator.lastOperator === "subtract") { + } else if (calculator.lastOperator[0] === "subtract") { calculator.subtract(parseFloat(keys)); - } else if (calculator.lastOperator === "multiply") { + } else if (calculator.lastOperator[0] === "multiply") { calculator.multiply(parseFloat(keys)); - } else if (calculator.lastOperator === "divide") { + } else if (calculator.lastOperator[0] === "divide") { calculator.divide(parseFloat(keys)); } else { console.log("You broke the damn calculator."); } } +// Order Of Operations + var operations = { equalsButton: document.getElementById("keyEquals").addEventListener("click", function() { - lastOpCheck(display.innerHTML, keys.display.innerHTML); - calculator.lastOperator = ""; - display.innerHTML = calculator.total; + calculator.lastOperator.push(parseFloat(keys.display.innerHTML)); + console.log(calculator.lastOperator); + + // these loops should be refactored + for (var i = 0; i < calculator.lastOperator.length; i++) { + while (calculator.lastOperator[i] === "*") { + num = calculator.lastOperator[i-1] * calculator.lastOperator[i+1]; + calculator.lastOperator.splice(i-1, 3, num); + console.log(calculator.lastOperator); + } + } + for (var k = 0; k < calculator.lastOperator.length; k++) { + while (calculator.lastOperator[k] === "/") { + num = calculator.lastOperator[k-1] / calculator.lastOperator[k+1]; + calculator.lastOperator.splice(k-1, 3, num); + console.log(calculator.lastOperator); + } + } + for (var m = 0; m < calculator.lastOperator.length; m++) { + while (calculator.lastOperator[m] === "+") { + num = calculator.lastOperator[m-1] + calculator.lastOperator[m+1]; + calculator.lastOperator.splice(m-1, 3, num); + console.log(calculator.lastOperator); + } + } + for (var p = 0; p < calculator.lastOperator.length; p++) { + while (calculator.lastOperator[p] === "-") { + num = calculator.lastOperator[p-1] - calculator.lastOperator[p+1]; + calculator.lastOperator.splice(p-1, 3, num); + console.log(calculator.lastOperator); + } + } + console.log(calculator.lastOperator[0]); + display.innerHTML = calculator.lastOperator[0].toFixed(3); + calculator.lastOperator = []; }), addButton: document.getElementById("keyAdd").addEventListener("click", function() { - if (calculator.lastOperator.length > 0) { - lastOpCheck(display.innerHTML, keys.display.innerHTML); - } else { - if (calculator.total !== null) { - calculator.total += parseFloat(keys.display.innerHTML); - } else { - calculator.total = parseFloat(keys.display.innerHTML); - } - } - calculator.lastOperator = "add"; + calculator.lastOperator.push(parseFloat(keys.display.innerHTML)); + calculator.lastOperator.push('+'); + console.log(calculator.lastOperator); display.innerHTML = ""; }), subtractButton: document.getElementById("keySubtract").addEventListener("click", function() { - if (calculator.lastOperator.length > 0) { - lastOpCheck(display.innerHTML, keys.display.innerHTML); - } else { - if (calculator.total !== null) { - calculator.total -= parseFloat(keys.display.innerHTML); - } else { - calculator.total = parseFloat(keys.display.innerHTML); - } - } - calculator.lastOperator = "subtract"; + calculator.lastOperator.push(parseFloat(keys.display.innerHTML)); + calculator.lastOperator.push('-'); display.innerHTML = ""; }), multiplyButton: document.getElementById("keyMultiply").addEventListener("click", function() { - if (calculator.lastOperator.length > 0) { - lastOpCheck(display.innerHTML, keys.display.innerHTML); - } else { - if (calculator.total !== null) { - calculator.total *= parseFloat(keys.display.innerHTML); - } else { - calculator.total = parseFloat(keys.display.innerHTML); - } - } - calculator.lastOperator = "multiply"; + calculator.lastOperator.push(parseFloat(keys.display.innerHTML)); + calculator.lastOperator.push('*'); + console.log(calculator.lastOperator); display.innerHTML = ""; }), divideButton: document.getElementById("keyDivide").addEventListener("click", function() { - if (calculator.lastOperator.length > 0) { - lastOpCheck(display.innerHTML, keys.display.innerHTML); - } else { - if (calculator.total !== null) { - calculator.total /= parseFloat(keys.display.innerHTML); - } else { - calculator.total = parseFloat(keys.display.innerHTML); - } - } - calculator.lastOperator = "divide"; + calculator.lastOperator.push(parseFloat(keys.display.innerHTML)); + calculator.lastOperator.push('/'); display.innerHTML = ""; }), -}; +}; \ No newline at end of file diff --git a/js/chainoperations.js b/js/chainoperations.js new file mode 100644 index 0000000..921a511 --- /dev/null +++ b/js/chainoperations.js @@ -0,0 +1,65 @@ +// Chain of Operations + +var operations = { + equalsButton: document.getElementById("keyEquals").addEventListener("click", function() { + lastOpCheck(keys.display.innerHTML); + calculator.lastOperator = []; + display.innerHTML = calculator.total.toFixed(3); + }), + + addButton: document.getElementById("keyAdd").addEventListener("click", function() { + if (calculator.lastOperator.length > 0) { + lastOpCheck(keys.display.innerHTML); + } else { + if (calculator.total !== null) { + calculator.total += parseFloat(keys.display.innerHTML); + } else { + calculator.total = parseFloat(keys.display.innerHTML); + } + } + calculator.lastOperator[0] = "add"; + display.innerHTML = ""; + }), + + subtractButton: document.getElementById("keySubtract").addEventListener("click", function() { + if (calculator.lastOperator.length > 0) { + lastOpCheck(keys.display.innerHTML); + } else { + if (calculator.total !== null) { + calculator.total -= parseFloat(keys.display.innerHTML); + } else { + calculator.total = parseFloat(keys.display.innerHTML); + } + } + calculator.lastOperator[0] = "subtract"; + display.innerHTML = ""; + }), + + multiplyButton: document.getElementById("keyMultiply").addEventListener("click", function() { + if (calculator.lastOperator.length > 0) { + lastOpCheck(keys.display.innerHTML); + } else { + if (calculator.total !== null) { + calculator.total *= parseFloat(keys.display.innerHTML); + } else { + calculator.total = parseFloat(keys.display.innerHTML); + } + } + calculator.lastOperator[0] = "multiply"; + display.innerHTML = ""; + }), + + divideButton: document.getElementById("keyDivide").addEventListener("click", function() { + if (calculator.lastOperator.length > 0) { + lastOpCheck(keys.display.innerHTML); + } else { + if (calculator.total !== null) { + calculator.total /= parseFloat(keys.display.innerHTML); + } else { + calculator.total = parseFloat(keys.display.innerHTML); + } + } + calculator.lastOperator[0] = "divide"; + display.innerHTML = ""; + }), +}; \ No newline at end of file diff --git a/js/orderedoperations.js b/js/orderedoperations.js new file mode 100644 index 0000000..7be7245 --- /dev/null +++ b/js/orderedoperations.js @@ -0,0 +1,78 @@ +// Order Of Operations + +var operations = { + equalsButton: document.getElementById("keyEquals").addEventListener("click", function() { + calculator.lastOperator.push(parseFloat(keys.display.innerHTML)); + console.log(calculator.lastOperator); + + // 1. Semi-string approach. + // calculator.total = parseFloat(calculator.lastOperator); + // console.log(calculator.total); + + + // 2. Looping through an array for math functions. + for (var i = 0; i < calculator.lastOperator.length; i++) { + while (calculator.lastOperator[i] === "*") { + num = calculator.lastOperator[i-1] * calculator.lastOperator[i+1]; + calculator.lastOperator.splice(i-1, 3, num); + console.log(calculator.lastOperator); + } + } + for (var k = 0; k < calculator.lastOperator.length; k++) { + while (calculator.lastOperator[k] === "/") { + num = calculator.lastOperator[k-1] / calculator.lastOperator[k+1]; + calculator.lastOperator.splice(k-1, 3, num); + console.log(calculator.lastOperator); + } + } + for (var m = 0; m < calculator.lastOperator.length; m++) { + while (calculator.lastOperator[m] === "+") { + num = calculator.lastOperator[m-1] + calculator.lastOperator[m+1]; + calculator.lastOperator.splice(m-1, 3, num); + console.log(calculator.lastOperator); + } + } + for (var p = 0; p < calculator.lastOperator.length; p++) { + while (calculator.lastOperator[p] === "-") { + num = calculator.lastOperator[p-1] - calculator.lastOperator[p+1]; + calculator.lastOperator.splice(p-1, 3, num); + console.log(calculator.lastOperator); + } + } + + // 3. Joining all elements in an array into a long math string. + // calculator.numStr = calculator.lastOperator.join(''); + // console.log(calculator.numStr); + // calculator.total = parseFloat(calculator.numStr); + + console.log(calculator.lastOperator[0]); + display.innerHTML = calculator.lastOperator[0].toFixed(3); + calculator.lastOperator = []; + }), + + addButton: document.getElementById("keyAdd").addEventListener("click", function() { + calculator.lastOperator.push(parseFloat(keys.display.innerHTML)); + calculator.lastOperator.push('+'); + console.log(calculator.lastOperator); + display.innerHTML = ""; + }), + + subtractButton: document.getElementById("keySubtract").addEventListener("click", function() { + calculator.lastOperator.push(parseFloat(keys.display.innerHTML)); + calculator.lastOperator.push('-'); + display.innerHTML = ""; + }), + + multiplyButton: document.getElementById("keyMultiply").addEventListener("click", function() { + calculator.lastOperator.push(parseFloat(keys.display.innerHTML)); + calculator.lastOperator.push('*'); + console.log(calculator.lastOperator); + display.innerHTML = ""; + }), + + divideButton: document.getElementById("keyDivide").addEventListener("click", function() { + calculator.lastOperator.push(parseFloat(keys.display.innerHTML)); + calculator.lastOperator.push('/'); + display.innerHTML = ""; + }), +}; \ No newline at end of file From 3de7b5ea26e77cb666f9a5bbfe7d02fbcac28c48 Mon Sep 17 00:00:00 2001 From: kwhitejr Date: Mon, 9 Nov 2015 16:34:21 -1000 Subject: [PATCH 07/14] Clean up code. Prepare for operations modules --- index.html | 6 +++--- js/calculator.js | 2 -- js/cash_register.js | 20 ++++++++++++++++++++ 3 files changed, 23 insertions(+), 5 deletions(-) diff --git a/index.html b/index.html index c05a471..2f381d9 100644 --- a/index.html +++ b/index.html @@ -11,7 +11,7 @@
-
Super Happy Fun Calculator: [
+
Super Happy Fun Register: $[
]
@@ -62,8 +62,8 @@
- - + +
diff --git a/js/calculator.js b/js/calculator.js index f2cb00f..bf3a08c 100644 --- a/js/calculator.js +++ b/js/calculator.js @@ -3,8 +3,6 @@ var calculator = { lastOperator: [], - numStr: '', - clear: function() {this.total = null;}, add: function(num) {return this.total += num;}, diff --git a/js/cash_register.js b/js/cash_register.js index 04d5fcf..8d533d6 100644 --- a/js/cash_register.js +++ b/js/cash_register.js @@ -60,6 +60,8 @@ var keys = { key00: document.getElementById("key00"), keyPeriod: document.getElementById("keyPeriod"), keyClear: document.getElementById("keyClear"), + chained: document.getElementById("chained"), + ordered: document.getElementById("ordered") }; @@ -91,6 +93,24 @@ var press = { display.innerHTML = ''; calculator.total = null; calculator.lastOperator = []; + }), + pressChained: keys.chained.addEventListener('click', function() { + // starts with same functionality as clear + display.innerHTML = ''; + calculator.total = null; + calculator.lastOperator = []; + // import chainoperations.js module + + + }), + pressOrdered: keys.ordered.addEventListener('click', function() { + // starts with same functionality as clear + display.innerHTML = ''; + calculator.total = null; + calculator.lastOperator = []; + // import orderedoperations.js module + + }) }; From b4898f49e09a948481b639b0099e88c591e19c1b Mon Sep 17 00:00:00 2001 From: kwhitejr Date: Mon, 9 Nov 2015 16:47:08 -1000 Subject: [PATCH 08/14] Incremental improvements: some button functionality. --- index.html | 6 +++++- js/cash_register.js | 2 ++ 2 files changed, 7 insertions(+), 1 deletion(-) diff --git a/index.html b/index.html index 2f381d9..3962f75 100644 --- a/index.html +++ b/index.html @@ -11,12 +11,16 @@
-
Super Happy Fun Register: $[
+
Super Happy Fun Register: $[
]

+
+

Calculating with ordered operations.

+
+

[7]

diff --git a/js/cash_register.js b/js/cash_register.js index 8d533d6..3dfcc8d 100644 --- a/js/cash_register.js +++ b/js/cash_register.js @@ -99,6 +99,7 @@ var press = { display.innerHTML = ''; calculator.total = null; calculator.lastOperator = []; + document.getElementById("opAlert").innerHTML = "Calculating with chained operations."; // import chainoperations.js module @@ -108,6 +109,7 @@ var press = { display.innerHTML = ''; calculator.total = null; calculator.lastOperator = []; + document.getElementById("opAlert").innerHTML = "Calculating with ordered operations."; // import orderedoperations.js module From 201a49937d86dfef577b3beeb0b6e8f5d79b8c44 Mon Sep 17 00:00:00 2001 From: kwhitejr Date: Mon, 9 Nov 2015 16:47:58 -1000 Subject: [PATCH 09/14] forgot html file --- index.html | 3 --- 1 file changed, 3 deletions(-) diff --git a/index.html b/index.html index 3962f75..b162f23 100644 --- a/index.html +++ b/index.html @@ -3,9 +3,6 @@ - - - From bc676b0392fb69b628db7df98069739fcec20667 Mon Sep 17 00:00:00 2001 From: kwhitejr Date: Mon, 9 Nov 2015 17:32:13 -1000 Subject: [PATCH 10/14] CSS Style Changes --- index.html | 56 ++++++++++++++++++++++----------------------- js/cash_register.js | 8 +++---- styles.css | 29 +++++++++++++++++++++++ 3 files changed, 61 insertions(+), 32 deletions(-) diff --git a/index.html b/index.html index b162f23..1d19a79 100644 --- a/index.html +++ b/index.html @@ -8,58 +8,58 @@
-
Super Happy Fun Register: $[
-
-
]
+
Super Happy Fun Register: $[
+
+
]

-

Calculating with ordered operations.

+

Calculating with ordered operations.

-

[7]

-

[8]

-

[9]

-

[÷]

-

[clear]

+

[7]

+

[8]

+

[9]

+

[÷]

+

[clear]

-

[4]

-

[5]

-

[6]

-

[×]

-

[get balance]

+

[4]

+

[5]

+

[6]

+

[×]

+

[get balance]

-

[1]

-

[2]

-

[3]

-

[-]

-

[deposit cash]

+

[1]

+

[2]

+

[3]

+

[-]

+

[deposit cash]

-

[0]

-

[00]

-

[.]

-

[+]

-

[withdraw cash]

+

[0]

+

[00]

+

[.]

+

[+]

+

[withdraw cash]

-

-

-

-

[=]

+

+

+

+

[=]

diff --git a/js/cash_register.js b/js/cash_register.js index 3dfcc8d..d4b9b30 100644 --- a/js/cash_register.js +++ b/js/cash_register.js @@ -16,8 +16,8 @@ var register = { withdrawCash: function() { if (parseFloat(display.innerHTML) > this.balance) { - display.innerHTML = "ERROR: INSUFFICIENT FUNDS"; - console.log("You is broke."); + display.innerHTML = "ERROR: INSUFFICIENT RUPEES"; + console.log("You is broke. Go cut some grass!"); } else { this.balance -= parseFloat(display.innerHTML); display.innerHTML = ""; @@ -99,7 +99,7 @@ var press = { display.innerHTML = ''; calculator.total = null; calculator.lastOperator = []; - document.getElementById("opAlert").innerHTML = "Calculating with chained operations."; + document.getElementById("opAlert").innerHTML = "Calculating with chained operations."; // import chainoperations.js module @@ -109,7 +109,7 @@ var press = { display.innerHTML = ''; calculator.total = null; calculator.lastOperator = []; - document.getElementById("opAlert").innerHTML = "Calculating with ordered operations."; + document.getElementById("opAlert").innerHTML = "Calculating with ordered operations."; // import orderedoperations.js module diff --git a/styles.css b/styles.css index 5d95692..522d9c3 100644 --- a/styles.css +++ b/styles.css @@ -6,4 +6,33 @@ p { .row { display: table-row; +} + +.cell { + background-color: #C3EAF7; + +} + +.cell:hover { + background-color: #A3E2F7; +} + +.cell:active { + background-color: #4AAECF; +} + +.register { + background-color: #F7C3C9; +} + +.register:hover { + background-color: #EB7885; +} + +.register:active { + background-color: #E8384C; +} + +.top { + background-color: #B0E8BD; } \ No newline at end of file From cb6495f80a6586bcb79c197dfafd186e5ca2a600 Mon Sep 17 00:00:00 2001 From: kwhitejr Date: Wed, 11 Nov 2015 18:51:27 -1000 Subject: [PATCH 11/14] Mode buttons are WORKING --- js/cash_register.js | 171 ++++++++++++++++++++++++++++------------- js/modular_register.js | 33 ++++++++ styles.css | 2 +- 3 files changed, 151 insertions(+), 55 deletions(-) create mode 100644 js/modular_register.js diff --git a/js/cash_register.js b/js/cash_register.js index d4b9b30..fb7e2de 100644 --- a/js/cash_register.js +++ b/js/cash_register.js @@ -4,6 +4,8 @@ var register = { display: 0, + regMode: "ordered", + getBalance: function() { return this.balance; }, @@ -97,22 +99,18 @@ var press = { pressChained: keys.chained.addEventListener('click', function() { // starts with same functionality as clear display.innerHTML = ''; + register.regMode = "chained"; calculator.total = null; calculator.lastOperator = []; document.getElementById("opAlert").innerHTML = "Calculating with chained operations."; - // import chainoperations.js module - - }), pressOrdered: keys.ordered.addEventListener('click', function() { // starts with same functionality as clear display.innerHTML = ''; + register.regMode = "ordered"; calculator.total = null; calculator.lastOperator = []; document.getElementById("opAlert").innerHTML = "Calculating with ordered operations."; - // import orderedoperations.js module - - }) }; @@ -131,70 +129,135 @@ function lastOpCheck(keys) { } } -// Order Of Operations - var operations = { equalsButton: document.getElementById("keyEquals").addEventListener("click", function() { - calculator.lastOperator.push(parseFloat(keys.display.innerHTML)); - console.log(calculator.lastOperator); - - // these loops should be refactored - for (var i = 0; i < calculator.lastOperator.length; i++) { - while (calculator.lastOperator[i] === "*") { - num = calculator.lastOperator[i-1] * calculator.lastOperator[i+1]; - calculator.lastOperator.splice(i-1, 3, num); - console.log(calculator.lastOperator); + if (register.regMode === "ordered") { + calculator.lastOperator.push(parseFloat(keys.display.innerHTML)); + console.log(calculator.lastOperator); + + // these loops should be refactored + for (var i = 0; i < calculator.lastOperator.length; i++) { + while (calculator.lastOperator[i] === "*") { + num = calculator.lastOperator[i-1] * calculator.lastOperator[i+1]; + calculator.lastOperator.splice(i-1, 3, num); + console.log(calculator.lastOperator); + } } - } - for (var k = 0; k < calculator.lastOperator.length; k++) { - while (calculator.lastOperator[k] === "/") { - num = calculator.lastOperator[k-1] / calculator.lastOperator[k+1]; - calculator.lastOperator.splice(k-1, 3, num); - console.log(calculator.lastOperator); + for (var k = 0; k < calculator.lastOperator.length; k++) { + while (calculator.lastOperator[k] === "/") { + num = calculator.lastOperator[k-1] / calculator.lastOperator[k+1]; + calculator.lastOperator.splice(k-1, 3, num); + console.log(calculator.lastOperator); + } } - } - for (var m = 0; m < calculator.lastOperator.length; m++) { - while (calculator.lastOperator[m] === "+") { - num = calculator.lastOperator[m-1] + calculator.lastOperator[m+1]; - calculator.lastOperator.splice(m-1, 3, num); - console.log(calculator.lastOperator); + for (var m = 0; m < calculator.lastOperator.length; m++) { + while (calculator.lastOperator[m] === "+") { + num = calculator.lastOperator[m-1] + calculator.lastOperator[m+1]; + calculator.lastOperator.splice(m-1, 3, num); + console.log(calculator.lastOperator); + } } - } - for (var p = 0; p < calculator.lastOperator.length; p++) { - while (calculator.lastOperator[p] === "-") { - num = calculator.lastOperator[p-1] - calculator.lastOperator[p+1]; - calculator.lastOperator.splice(p-1, 3, num); - console.log(calculator.lastOperator); + for (var p = 0; p < calculator.lastOperator.length; p++) { + while (calculator.lastOperator[p] === "-") { + num = calculator.lastOperator[p-1] - calculator.lastOperator[p+1]; + calculator.lastOperator.splice(p-1, 3, num); + console.log(calculator.lastOperator); + } } + console.log(calculator.lastOperator[0]); + display.innerHTML = calculator.lastOperator[0].toFixed(3); + calculator.lastOperator = []; + } + if (register.regMode === "chained") { + lastOpCheck(keys.display.innerHTML); + calculator.lastOperator = []; + display.innerHTML = calculator.total.toFixed(3); } - console.log(calculator.lastOperator[0]); - display.innerHTML = calculator.lastOperator[0].toFixed(3); - calculator.lastOperator = []; }), addButton: document.getElementById("keyAdd").addEventListener("click", function() { - calculator.lastOperator.push(parseFloat(keys.display.innerHTML)); - calculator.lastOperator.push('+'); - console.log(calculator.lastOperator); - display.innerHTML = ""; + if (register.regMode === "ordered") { + calculator.lastOperator.push(parseFloat(keys.display.innerHTML)); + calculator.lastOperator.push('+'); + console.log(calculator.lastOperator); + display.innerHTML = ""; + } + if (register.regMode === "chained") { + if (calculator.lastOperator.length > 0) { + lastOpCheck(keys.display.innerHTML); + } else { + if (calculator.total !== null) { + calculator.total += parseFloat(keys.display.innerHTML); + } else { + calculator.total = parseFloat(keys.display.innerHTML); + } + } + calculator.lastOperator[0] = "add"; + display.innerHTML = ""; + } }), subtractButton: document.getElementById("keySubtract").addEventListener("click", function() { - calculator.lastOperator.push(parseFloat(keys.display.innerHTML)); - calculator.lastOperator.push('-'); - display.innerHTML = ""; + if (register.regMode === "ordered") { + calculator.lastOperator.push(parseFloat(keys.display.innerHTML)); + calculator.lastOperator.push('-'); + display.innerHTML = ""; + } + if (register.regMode === "chained") { + if (calculator.lastOperator.length > 0) { + lastOpCheck(keys.display.innerHTML); + } else { + if (calculator.total !== null) { + calculator.total -= parseFloat(keys.display.innerHTML); + } else { + calculator.total = parseFloat(keys.display.innerHTML); + } + } + calculator.lastOperator[0] = "subtract"; + display.innerHTML = ""; + } }), multiplyButton: document.getElementById("keyMultiply").addEventListener("click", function() { - calculator.lastOperator.push(parseFloat(keys.display.innerHTML)); - calculator.lastOperator.push('*'); - console.log(calculator.lastOperator); - display.innerHTML = ""; + if (register.regMode === "ordered") { + calculator.lastOperator.push(parseFloat(keys.display.innerHTML)); + calculator.lastOperator.push('*'); + console.log(calculator.lastOperator); + display.innerHTML = ""; + } + if (register.regMode === "chained") { + if (calculator.lastOperator.length > 0) { + lastOpCheck(keys.display.innerHTML); + } else { + if (calculator.total !== null) { + calculator.total *= parseFloat(keys.display.innerHTML); + } else { + calculator.total = parseFloat(keys.display.innerHTML); + } + } + calculator.lastOperator[0] = "multiply"; + display.innerHTML = ""; + } }), divideButton: document.getElementById("keyDivide").addEventListener("click", function() { - calculator.lastOperator.push(parseFloat(keys.display.innerHTML)); - calculator.lastOperator.push('/'); - display.innerHTML = ""; - }), -}; \ No newline at end of file + if (register.regMode === "ordered") { + calculator.lastOperator.push(parseFloat(keys.display.innerHTML)); + calculator.lastOperator.push('/'); + display.innerHTML = ""; + } + if (register.regMode === "chained") { + if (calculator.lastOperator.length > 0) { + lastOpCheck(keys.display.innerHTML); + } else { + if (calculator.total !== null) { + calculator.total /= parseFloat(keys.display.innerHTML); + } else { + calculator.total = parseFloat(keys.display.innerHTML); + } + } + calculator.lastOperator[0] = "divide"; + display.innerHTML = ""; + } + }) +}; diff --git a/js/modular_register.js b/js/modular_register.js new file mode 100644 index 0000000..10fcc03 --- /dev/null +++ b/js/modular_register.js @@ -0,0 +1,33 @@ +(function() { + + var register = { + + init: function() { + + }, + + cacheDom: function() { + this.equalsButton = document.getElementById("keyEquals"); + this.addButton = document.getElementById("keyAdd"); + this.subtractButton = document.getElementById("keySubtract"); + this.multiplyButton = document.getElementById("keymultiply"); + this.divideButton = document.getElementById("keyDivide"); + this.display = document.getElementById("display"); + + }, + + bindEvents: function() { + this.equalsButton.addEventListener('click', functionhere); + this.addButton.addEventListener('click', functionhere); + this.subtractButton.addEventListener('click', functionhere); + this.multiplyButton.addEventListener('click', functionhere); + this.divideButton.addEventListener('click', functionhere) + + }, + + + + }; + + init(); +})(); \ No newline at end of file diff --git a/styles.css b/styles.css index 522d9c3..5690b86 100644 --- a/styles.css +++ b/styles.css @@ -14,7 +14,7 @@ p { } .cell:hover { - background-color: #A3E2F7; + background-color: #7ED5F2; } .cell:active { From 0a8b1fd35f9bf21ebae5527da2ff1634eea61d32 Mon Sep 17 00:00:00 2001 From: kwhitejr Date: Thu, 12 Nov 2015 17:49:56 -1000 Subject: [PATCH 12/14] Further work on modular register --- index.html | 32 +++++++++--------- js/modular_register.js | 75 +++++++++++++++++++++++++++++++++++++----- 2 files changed, 83 insertions(+), 24 deletions(-) diff --git a/index.html b/index.html index 1d19a79..71ef7eb 100644 --- a/index.html +++ b/index.html @@ -20,37 +20,37 @@
-

[7]

-

[8]

-

[9]

-

[÷]

+

[7]

+

[8]

+

[9]

+

[/]

[clear]

-

[4]

-

[5]

-

[6]

-

[×]

+

[4]

+

[5]

+

[6]

+

[*]

[get balance]

-

[1]

-

[2]

-

[3]

-

[-]

+

[1]

+

[2]

+

[3]

+

[-]

[deposit cash]

-

[0]

-

[00]

-

[.]

-

[+]

+

[0]

+

[00]

+

[.]

+

[+]

[withdraw cash]

diff --git a/js/modular_register.js b/js/modular_register.js index 10fcc03..2d9c08a 100644 --- a/js/modular_register.js +++ b/js/modular_register.js @@ -3,29 +3,88 @@ var register = { init: function() { + this.cacheDom(); + this.bindEvents(); }, cacheDom: function() { this.equalsButton = document.getElementById("keyEquals"); - this.addButton = document.getElementById("keyAdd"); - this.subtractButton = document.getElementById("keySubtract"); - this.multiplyButton = document.getElementById("keymultiply"); - this.divideButton = document.getElementById("keyDivide"); + // this.addButton = document.getElementById("keyAdd"); + // this.subtractButton = document.getElementById("keySubtract"); + // this.multiplyButton = document.getElementById("keymultiply"); + // this.divideButton = document.getElementById("keyDivide"); this.display = document.getElementById("display"); + this.numberButtons = document.querySelectorAll(".number"); + this.operatorButtons = document.querySelectorAll(".operator"); + this.chainedButton = document.getElementById("chained"); + this.orderedButton = document.getElementById("ordered"); }, bindEvents: function() { this.equalsButton.addEventListener('click', functionhere); - this.addButton.addEventListener('click', functionhere); - this.subtractButton.addEventListener('click', functionhere); - this.multiplyButton.addEventListener('click', functionhere); - this.divideButton.addEventListener('click', functionhere) + this.chainedButton.addEventListener('click', function() { + states.regMode = "chained"; + clear(); + }); + this.orderedButton.addEventListener('click', function() { + states.regMode = "ordered"; + clear(); + }); + // this.addButton.addEventListener('click', functionhere); + // this.subtractButton.addEventListener('click', functionhere); + // this.multiplyButton.addEventListener('click', functionhere); + // this.divideButton.addEventListener('click', functionhere); + for (var i=0; i < this.numberButtons.length; i++) { + this.numberButtons[i].onclick = this.appendDisplay; + } + for (var k=0; k < this.operatorButtons.length; k++) { + this.operatorButtons[k].addEventListener('click', function() { + this.operate(); + }); + } + }, + + appendDisplay: function() { + this.display.innerHTML += this.innerHTML; + }, + + clear: function() { + display.innerHTML = ""; + states.numArr = []; + }, + + operate: function() { + if (states.regMode === "ordered") { + states.numArr.push(parseFloat(this.display.innerHTML)); + + } + if (states.regMode === "chained") { + if (this.opCheck()) { + states.numArr[0] = calculateFunction(states.numArr[0], parseFloat(this.display.innerHTML)); + this.display.innerHTML = states.numArr[0]; + } else { + this.opCheck(); + } + } + }, + opCheck: function() { + if (numArr.length > 0) { + return true; + } else { + states.numArr[0] = parseFloat(this.display.innerHTML); + states.numArr[1] = /* the correct operator */; + } }, + states: { + regMode: "ordered", + numArr: [], + } +// Use check functions that return true or false }; From 33818c0ff0792866ce0083dba1c514a1de42e3fc Mon Sep 17 00:00:00 2001 From: kwhitejr Date: Sat, 21 Nov 2015 09:04:30 -1000 Subject: [PATCH 13/14] Remembering my calculator --- js/modular_register.js | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/js/modular_register.js b/js/modular_register.js index 2d9c08a..5ca6df1 100644 --- a/js/modular_register.js +++ b/js/modular_register.js @@ -58,11 +58,11 @@ operate: function() { if (states.regMode === "ordered") { states.numArr.push(parseFloat(this.display.innerHTML)); - + // much unfinished } if (states.regMode === "chained") { if (this.opCheck()) { - states.numArr[0] = calculateFunction(states.numArr[0], parseFloat(this.display.innerHTML)); + states.numArr[0] = calculateFunction(states.numArr[0], parseFloat(this.display.innerHTML)); // need to keep track of which button was pressed to trigger whatever calculator function this.display.innerHTML = states.numArr[0]; } else { this.opCheck(); From f631bff09ec477e6442c0e161122dafaed216553 Mon Sep 17 00:00:00 2001 From: kwhitejr Date: Sat, 21 Nov 2015 09:05:21 -1000 Subject: [PATCH 14/14] fergot sometin --- js/modular_calculator.js | 12 ++++++++++++ 1 file changed, 12 insertions(+) create mode 100644 js/modular_calculator.js diff --git a/js/modular_calculator.js b/js/modular_calculator.js new file mode 100644 index 0000000..35b02f8 --- /dev/null +++ b/js/modular_calculator.js @@ -0,0 +1,12 @@ +var calculator = { + + add: function(a, b) {return a + b;}, + + subtract: function(a, b) {return a - b;}, + + multiply: function(a, b) {return a * b;}, + + divide: function(a, b) {return a / b;}, + +}; +