From 7c71ff6743410bf1649a53a4b9ae1f16b2a26c2a Mon Sep 17 00:00:00 2001 From: "Joe L. Wroten" Date: Sun, 1 Nov 2015 22:58:47 -0600 Subject: [PATCH] Commented code better --- app.js | 22 +++++++++++++++------- 1 file changed, 15 insertions(+), 7 deletions(-) diff --git a/app.js b/app.js index c816d75..236e7e5 100644 --- a/app.js +++ b/app.js @@ -1,37 +1,43 @@ var App = new Vue({ - el: '#calculator', + el: '#calculator', // Context for 'data' usage data: { result: 0, previousResult: NaN, - calculation: '' + calculation: '' // String that'll hold our calculation, such as '6+4/2*2' }, methods: { + // Resets all of our values clear: function() { this.result = 0; this.previousResult = NaN; this.calculation = ''; }, - calcAdd: function(thing) { - this.calculation += thing; + // Takes a character and appends it to our calculation + calcAdd: function(char) { + this.calculation += char; this.result = this.calculation; }, + // Always removes character at the end of our string calcRemove: function() { if (typeof this.calculation === 'string' && this.calculation.length) { this.calculation = this.calculation.slice(0, -1); this.result = this.calculation; } }, + // Perform the calculation and display the results equals: function() { // Strip out any non-numeric character or simple math expressions var calcSafe = this.calculation.replace(/[^0-9\+\-\*\/]/g, ''); + // If our calculation starts with an operator, we prepend the previous result to the calculation if (isNaN(calcSafe.charAt(0))) calcSafe = this.previousResult + calcSafe; + // Do the math, round to nearest whole number (as per project requirements) try { this.result = Math.round(eval(calcSafe)); // Eval is safe here because of the above regex - this.previousResult = this.result; - this.calculation = ''; + this.previousResult = this.result; // Set previousResult for next time + this.calculation = ''; // Clean slate our calculation for a new one } catch (e) { - console.warn('Invalid Calculation'); + console.warn('Invalid Calculation'); // Something went wrong, but most likely the user has an operation at the end of the calculation so don't do anything. } } } @@ -62,7 +68,9 @@ $(document).ready(function() { App.calcAdd('+'); break; default: + // Keyboard numbers range from 48 to 57... if (event.keyCode >= 48 && event.keyCode <= 57) { + // ...so leverage this by subtracting 48 from the keyCode and just pass it on to the calculation. App.calcAdd(event.keyCode - 48); } }