diff --git a/ressources/index.css b/ressources/index.css index 6e6b7be..9291b16 100644 --- a/ressources/index.css +++ b/ressources/index.css @@ -111,8 +111,9 @@ body, html { transition: font 0.3s ease; } -.display.error { - color: #c62828; +.error .display { + color: #d00506; + font-weight: 600; } .display.big { diff --git a/ressources/index.js b/ressources/index.js index 08e5a01..b7c889c 100644 --- a/ressources/index.js +++ b/ressources/index.js @@ -8,14 +8,7 @@ let operators = [ let operation = ""; let operations = []; -if ( localStorage.getItem( "operations" ) ) { - operations = JSON.parse( localStorage.getItem( "operations" ) ); - setTimeout( () => insertHistory(), 10 ); -} - function calculate() { - let $display = $( ".display" ); - try { let result = eval( operation ); @@ -24,13 +17,12 @@ function calculate() { result, date: new Date().getTime() } ); - $display.text( result ); operation = result.toString(); - setFontSize( $display ); localStorage.setItem( "operations", JSON.stringify( operations ) ); + display(); insertHistory(); } catch (e) { - + $( ".display-container" ).addClass( "error" ); } } @@ -105,7 +97,7 @@ function insertHistory() { } else if ( diff === 1 ) { daysAgo = "Yesterday"; } else { - daysAgo = diff + "days ago"; + daysAgo = diff + " days ago"; } $html.prepend(`
@@ -120,13 +112,25 @@ function insertHistory() { historyContainer.html( $html.html() ); historyContainer.animate( { scrollTop: historyContainer[0].scrollHeight }, 300 ); - // historyContainer.scrollTop( historyContainer[0].scrollHeight ); } else { historyContainer.empty(); } } -$( document ).on( "click", "#ac", function () { +function supp() { + if ( operation.length > 0 ) { + let $display = $( ".display" ); + + operation = operation.slice( 0, -1 ); + $display.text( operation ); + $display.scrollLeft( 1000 ); + + setFontSize( $display ); + $( ".display-container" ).removeClass( "error" ); + } +} + +function ac() { if ( operation.length > 0 ) { let $display = $( ".display" ); @@ -136,61 +140,18 @@ $( document ).on( "click", "#ac", function () { setFontSize( $display ); } -} ); + $( ".display-container" ).removeClass( "error" ); +} -$( document ).on( "click", "#sup", function () { - if ( operation.length > 0 ) { - let $display = $( ".display" ); - - operation = operation.slice( 0, -1 ); - $display.text( operation ); - $display.scrollLeft( 1000 ); - - setFontSize( $display ); - } -} ); - -$( document ).on( "keypress", "#main-input", function ( e ) { - let char = e.charCode; - let $this = $( this ); - - if ( char === 13 ) { - calculate( $this.val() ); - } else if ( operators.indexOf( String.fromCharCode( char ) ) >= 0 ) { - // Operators - if ( operators.indexOf( $this.val().split("").pop() ) >= 0 ) { - e.preventDefault(); - } - } else if ( ( char >= 48 && char <= 57 ) || char === 40 || char === 41 ) { - // Number - } else { - e.preventDefault(); - } -} ); - -$( document ).on( "click", ".button-input", function () { - let $elem = $( this ); - let input = $elem.find( "span" ).html(); +function display() { let $display = $( ".display" ); - if ( input === "=" ) { - calculate(); - } else { - operation += $elem.find( "span" ).html(); - $display.text( operation ); - $display.scrollLeft( 1000 ); + $display.text( operation ); + $display.scrollLeft( 1000 ); - setFontSize( $display ); - } -} ); - -$( document ).on( "click", ".expand-buttons", () => $( ".container" ).toggleClass( "history" ) ); - -$( document ).on( "click", "#delete-history", function () { - operations = []; - localStorage.setItem( "operations", JSON.stringify( operations ) ); - insertHistory(); -} ); + setFontSize( $display ); + $( ".display-container" ).removeClass( "error" ); +} function swipedetect( el, callback ) { @@ -242,6 +203,58 @@ function swipedetect( el, callback ) { $( window ).on( "load", function () { + if ( localStorage.getItem( "operations" ) ) { + operations = JSON.parse( localStorage.getItem( "operations" ) ); + insertHistory(); + } + + $( document ).on( "click", "#ac", ac ); + + $( document ).on( "click", "#sup", supp ); + + $( document ).on( "click", ".button-input", function () { + let $elem = $( this ); + let input = $elem.find( "span" ).html(); + + if ( input === "=" ) { + calculate(); + } else { + operation += $elem.find( "span" ).html(); + display(); + } + } ); + + $( document ).on( "click", ".expand-buttons", () => $( ".container" ).toggleClass( "history" ) ); + + $( document ).on( "click", "#delete-history", function () { + operations = []; + localStorage.setItem( "operations", JSON.stringify( operations ) ); + insertHistory(); + } ); + + $( window ).on( "keypress", function ( e ) { + e.preventDefault(); + let char = e.charCode; + + console.log( char, String.fromCharCode( char ) ); + if ( char === 13 ) { + calculate(); + } else if ( operators.indexOf( String.fromCharCode( char ) ) >= 0 ) { + // Operators authorized + operation += String.fromCharCode( char ); + } else if ( char >= 48 && char <= 57 ) { + // Number authorized + operation += String.fromCharCode( char ); + } else if ( char === 115 || char === 83 ) { + // Sup + supp() + } else if ( char === 97 || char === 65 ) { + // AC + ac() + } + display(); + } ); + swipedetect( document.getElementsByClassName( "display-container" )[0], function ( dir ) { if ( dir === "down" ) { $( ".container" ).addClass( "history" ); @@ -256,4 +269,4 @@ $( window ).on( "load", function () { } } ) -} ); +} ); \ No newline at end of file