Skip to content
Open
Show file tree
Hide file tree
Changes from all commits
Commits
File filter

Filter by extension

Filter by extension


Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
61 changes: 61 additions & 0 deletions index.html
Original file line number Diff line number Diff line change
@@ -0,0 +1,61 @@
<!DOCTYPE html>
<html>

<head>
<meta charset="utf-8">
<title>Mac Calculator</title>
<link rel="stylesheet" href="styles.css"/>
</head>

<body>

<div class="calculator-container">

<div class="calculator-display">
<div class="calculator-display-port">

</div>
</div>

<div class="calculator-button-container">

<div class="calculator-row-1">
<div class="calculator-function-button calculator-AC-button calculator-button"> AC </div>
<div class="calculator-function-button calculator-plus-minus-button calculator-button"> +/- </div>
<div class="calculator-function-button calculator-percent-button calculator-button"> % </div>
<div class="calculator-operation-button calculator-divide-button calculator-button"> ÷ </div>
</div>

<div class="calculator-row-2">
<div class="calculator-number-button calculator-seven-button calculator-button"> 7 </div>
<div class="calculator-number-button calculator-eight-button calculator-button"> 8 </div>
<div class="calculator-number-button calculator-nine-button calculator-button"> 9 </div>
<div class="calculator-operation-button calculator-multiplication-button calculator-button"> x </div>
</div>

<div class="calculator-row-3">
<div class="calculator-number-button calculator-four-button calculator-button"> 4 </div>
<div class="calculator-number-button calculator-five-button calculator-button"> 5 </div>
<div class="calculator-number-button calculator-six-button calculator-button"> 6 </div>
<div class="calculator-operation-button calculator-subtraction-button calculator-button"> - </div>
</div>

<div class="calculator-row-4">
<div class="calculator-number-button calculator-one-button calculator-button"> 1 </div>
<div class="calculator-number-button calculator-two-button calculator-button"> 2 </div>
<div class="calculator-number-button calculator-three-button calculator-button"> 3 </div>
<div class="calculator-operation-button calculator-addition-button calculator-button"> + </div>
</div>

<div class="calculator-row-5">
<div class="calculator-number-button calculator-zero-button calculator-zero-button"> 0 </div>
<div class="calculator-decimal-button calculator-button"> . </div>
<div class="calculator-operation-button calculator-equals-button calculator-button"> = </div>
</div>

</div>

</div>
<script src='./javascripts/controller.js'></script>
</body>
</html>
115 changes: 115 additions & 0 deletions javascripts/controller.js
Original file line number Diff line number Diff line change
@@ -0,0 +1,115 @@
(function(){
var calculatorButtons, input, screen, clear, number, mathFunction, operation, operationStack, numberStack, currentValue;

calculatorButtons = document.querySelectorAll('.calculator-button-container')[0];
calculatorButtons.addEventListener("click", buttonClicked, false)

firstInput = null
operation = null
secondOperation = null
secondInput = null
// currentValue = 0

displayPort = document.querySelectorAll(".calculator-display-port")[0];
clear = document.querySelector(".calculator-AC-button");
number = document.querySelector(".calculator-number-button");
mathFunction = document.querySelector(".calculator-function-button");
// operation = document.querySelector(".calculator-operation-button");
decimal = document.querySelector(".calculator-decimal-button");


function buttonClicked(event) {
var displayedNumber = displayPort.innerText
var buttonValue = event.target.innerText
console.log( '---===target===---', buttonValue )
if (buttonValue === 'AC') {
firstInput = secondInput = operation = null
updateDisplay()
return
}
if (/^\d$/.test(buttonValue)) {
if (operation) {
secondInput = parseInt(
secondInput
? secondInput + '' + buttonValue
: buttonValue,
10)

} else {
firstInput = parseInt(
firstInput
? firstInput + '' + buttonValue
: buttonValue,
10)
}
updateDisplay()
return
}
if (buttonValue === '+') {
operation = operations.add
updateDisplay()
return
}
if (buttonValue === '-') {
operation = operations.subtract
updateDisplay()
return
}
if (buttonValue === '/') {
operation = operations.divide
updateDisplay()
return
}
if (buttonValue === 'x') {
operation = operations.multiply
updateDisplay()
return
}
if (buttonValue === '+/-') {
operation = function(firstInput,secondInput) {return firstInput * -1}
calculate()
updateDisplay()
return
}
if (buttonValue === '%') {
operation = function(firstInput,secondInput) {return firstInput / 100}
calculate()
updateDisplay()
return
}
if (buttonValue === '=') {
calculate()
updateDisplay()
return
}
}

var operations = {
add: function(a,b) { return a + b },
subtract: function(a,b) { return a - b },
divide: function(a,b) { return a / b },
multiply: function(a,b) { return a * b }
}

clear.onClick = function() {
currentValue = [];
}

function calculate() {
// do operation update display with the result of operation
result = operation(firstInput, secondInput)
console.log( '<3333333 success <3333333', result )
secondInput = undefined
firstInput = result
updateDisplay()
return result
}

function updateDisplay() {
console.log( '---===firstInput===---', firstInput )
console.log( '---===secondInput===---', secondInput )
console.log( '---===operation===---', operation )
displayPort.innerText = secondInput ? secondInput : firstInput
}

})()
22 changes: 22 additions & 0 deletions package.json
Original file line number Diff line number Diff line change
@@ -0,0 +1,22 @@
{
"name": "mac-calculator-clone",
"version": "1.0.0",
"description": "A clone of the mac calculator for the web!",
"main": "index.js",
"scripts": {
"test": "echo \"Error: no test specified\" && exit 1"
},
"repository": {
"type": "git",
"url": "git+https://github.com/mKleinCreative/mac-calculator-clone.git"
},
"author": "Michael Klein",
"license": "MIT",
"bugs": {
"url": "https://github.com/mKleinCreative/mac-calculator-clone/issues"
},
"homepage": "https://github.com/mKleinCreative/mac-calculator-clone#readme",
"dependencies": {
"normalize.css": "^6.0.0"
}
}
125 changes: 125 additions & 0 deletions styles.css
Original file line number Diff line number Diff line change
@@ -0,0 +1,125 @@
@import url('https://fonts.googleapis.com/css?family=Roboto:100,400');



.calculator-container {
display: flex;
position: absolute;
left: 50%;
top: 35%;
transform: translateX(-50%);
flex-direction: column;
justify-content: center;
font-family: 'Roboto', sans-serif;
border-radius: 1.5%;
width: 230px;
height: 320px;
background-color: #A0A0A0;
user-select: none;
}

/*.calculator-display-port{
background-color: #bada55
}*/

.calculator-decimal-button:hover,
.calculator-number-button:hover,
.calculator-function-button:hover {
background-color: #B7B7B7;
}

.calculator-decimal-button:active,
.calculator-number-button:active,
.calculator-function-button:active {
background-color: #9E9E9E;
fontfilter: invert(100%);
}

.calculator-operation-button:hover {
background-color: #D68039;
}

.calculator-operation-button:active {
background-color: #AF692F;
color: rgb(104,104,104);
}

.calculator-button {
transition: background-color 100ms;
transition-delay: 50ms;
width: 25%;
margin: 0px 1px 1px 0px;
display:flex;
font-weight: 400;
justify-content: center;
align-items: center;
}

.calculator-zero-button {
display: flex;
width: 41%;
justify-content: flex-start;
align-items: center;
margin: 0px 1px 1px 0px;
padding-left: 22px;
}

.calculator-row-1,
.calculator-row-2,
.calculator-row-3,
.calculator-row-4,
.calculator-row-5,
.calculator-row-6 {
display: flex;
justify-content: space-between;
align-content: center;
height: 48.5px;
}

.calculator-display {
display: flex;
font-size: 3em;
height: 77.5px;
justify-content: flex-end;
align-items: center;
color: #F7F1EF;
padding-right: 5px;
font-weight: 100;
}

.calculator-operation-button {
font-size: 1.25em;
background-color: #EF9343;
color: #F7F1EF;
}

.calculator-decimal-button,
.calculator-number-button {
font-size: 1.25em;
background-color: #E0E0E0;
align-content: center;
}
.calculator-function-button {
font-size: 1.25em;
background-color: #D6D6D6 ;
}

.calculator-row-1 {
order: 2;
}

.calculator-row-2 {
order: 3
}

.calculator-row-3 {
order: 4
}

.calculator-row-4 {
order: 5
}

.calculator-row-5 {
order: 6
}