Skip to content
73 changes: 73 additions & 0 deletions index.html
Original file line number Diff line number Diff line change
@@ -0,0 +1,73 @@
<!doctype html>
<html lang="en">
<head>
<link rel="stylesheet" type="text/css" href="styles.css">

</head>

<body>
<section>
<!-- insert display -->
<div class="top" style="padding: 15px; font-size: 200%; display: inline-block"><u>Super Happy Fun Register</u>: $[</div>
<div class="top" id="display" style="padding: 15px; font-size: 200%; display: inline-block"></div>
<div class="top" style="padding: 15px; font-size: 200%; display: inline-block">]</div>

<br>

<div>
<p id="opAlert" style="color: blue; font-size: 125%">Calculating with <b>ordered</b> operations.</p>
</div>

<!-- insert 789 divide clear -->
<div class="row">
<p class="cell number" id="key7">[7]</p>
<p class="cell number" id="key8">[8]</p>
<p class="cell number" id="key9">[9]</p>
<p class="cell operator" id="keyDivide">[/]</p>
<p class="register" id="keyClear">[clear]</p>
</div>

<!-- insert 456 times getBalance -->
<div class="row">
<p class="cell number" id="key4">[4]</p>
<p class="cell number" id="key5">[5]</p>
<p class="cell number" id="key6">[6]</p>
<p class="cell operator" id="keyMultiply">[*]</p>
<p class="register" id="keyGetBalance">[get balance]</p>
</div>

<!-- insert 123 minus depositeCash -->
<div class="row">
<p class="cell number" id="key1">[1]</p>
<p class="cell number" id="key2">[2]</p>
<p class="cell number" id="key3">[3]</p>
<p class="cell operator" id="keySubtract">[-]</p>
<p class="register" id="keyDepositCash">[deposit cash]</p>
</div>

<!-- insert 0 00 . plus withdrawCash -->
<div class="row">
<p class="cell number" id="key0">[0]</p>
<p class="cell number" id="key00">[00]</p>
<p class="cell number" id="keyPeriod">[.]</p>
<p class="cell operator" id="keyAdd">[+]</p>
<p class="register" id="keyWithdrawCash">[withdraw cash]</p>
</div>

<!-- insert equals -->
<div class="row">
<p class="cell"></p>
<p class="cell"></p>
<p class="cell"></p>
<p class="cell" id="keyEquals">[=]</p>
</div>

<div style="display: inline-block">
<button id="chained" type="button" style="padding: 10px; font-size: 150%; font-family: arial">Chained Operations</button>
<button id="ordered" type="button" style="padding: 10px; font-size: 150%; font-family: arial">Ordered Operations</button>
</div>
</section>
<script src="./js/calculator.js"></script>
<script src="./js/cash_register.js"></script>
</body>
</html>
21 changes: 21 additions & 0 deletions js/calculator.js
Original file line number Diff line number Diff line change
@@ -0,0 +1,21 @@
var calculator = {
total: null,

lastOperator: [],

clear: function() {this.total = null;},

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
};

263 changes: 263 additions & 0 deletions js/cash_register.js
Original file line number Diff line number Diff line change
@@ -0,0 +1,263 @@
var register = {

balance: 0,

display: 0,

regMode: "ordered",

getBalance: function() {
return this.balance;
},

depositCash: function() {
this.balance += parseFloat(display.innerHTML);
display.innerHTML = "";
console.log(this.balance);
},

withdrawCash: function() {
if (parseFloat(display.innerHTML) > this.balance) {
display.innerHTML = "ERROR: INSUFFICIENT RUPEES";
console.log("You is broke. Go cut some grass!");
} 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.balance);
});

document.getElementById("keyWithdrawCash").addEventListener("click", function(){
register.withdrawCash();
console.log("This is your balance.");
console.log(register.balance);
});

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"),
chained: document.getElementById("chained"),
ordered: document.getElementById("ordered")

};

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 = [];
}),
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 <b>chained</b> operations.";
}),
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 <b>ordered</b> operations.";
})
};

// 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[0] === "subtract") {
calculator.subtract(parseFloat(keys));
} else if (calculator.lastOperator[0] === "multiply") {
calculator.multiply(parseFloat(keys));
} else if (calculator.lastOperator[0] === "divide") {
calculator.divide(parseFloat(keys));
} else {
console.log("You broke the damn calculator.");
}
}

var operations = {
equalsButton: document.getElementById("keyEquals").addEventListener("click", function() {
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 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 = [];
}
if (register.regMode === "chained") {
lastOpCheck(keys.display.innerHTML);
calculator.lastOperator = [];
display.innerHTML = calculator.total.toFixed(3);
}
}),

addButton: document.getElementById("keyAdd").addEventListener("click", function() {
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() {
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() {
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() {
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 = "";
}
})
};
Loading