Commits

Miki Tebeka committed 3f1a1d2

History and pre

Comments (0)

Files changed (1)

         <style>
             body {
                 margin: 50px;
-                font-family: Monospace;
+                font-family: Georgia, serif;
             }
             #log {
+                font-family: Monospace;
                 border: 3px solid black;
                 width: 100%;
                 height: 500px;
             div.error {
                 color: red;
             }
+            div.result {
+                white-space: pre;
+            }
         </style>
     </head>
     <body>
         src="http://flesler-plugins.googlecode.com/files/jquery.scrollTo-1.4.2-min.js">
     </script>
     <script>
+        var HISTORY = [];
+        var INDEX = 0;
+        var ENTER_KEY = 13;
+        var UP_KEY = 38;
+        var DOWN_KEY = 40;
+
         function append_log(div) {
             $('#log').append(div);
             $('#log').scrollTo(div);
         }
 
         function on_result(data) {
-            var div = $('<div/>');
+            var div = $('<div class="result" />');
             if (data.error) {
-                div.attr('class', 'error');
+                div.addClass('error');
                 if (data.result.length == 0) {
                     data.result = "Unknown Error!";
                 }
             if (expr.length == 0) {
                 return;
             }
+
+            HISTORY.push(expr);
+
             var div = $('<div/>').text('=> ' + expr);
             append_log(div);
             $.ajax({
                 success: on_result,
                 dataType: 'json'
             });
+            $('#entry').val('');
         }
 
-        function hook_enter_key(elem, handler) {
-            elem.keyup(function(e) {
-                if (e.keyCode == 13) {
-                    handler();
-                }
-            });
+        function on_history(direction) {
+            if (HISTORY.length == 0) {
+                return;
+            }
+
+            INDEX = (INDEX + direction);
+            if (INDEX < 0) {
+                INDEX = HISTORY.length - 1;
+            } else if (INDEX >= HISTORY.length) {
+                INDEX = 0;
+            }
+
+            $('#entry').val(HISTORY[INDEX]);
+        }
+
+        function on_entry_keyup(e) {
+            if (e.keyCode == ENTER_KEY) {
+                on_run();
+            } else if (e.keyCode == UP_KEY) {
+                on_history(-1);
+            } else if (e.keyCode == DOWN_KEY) {
+                on_history(1);
+            }
         }
 
         $(document).ready(function() {
             $('#submit').click(on_run);
-            hook_enter_key($('#entry'), on_run);
+            $('#entry').keyup(on_entry_keyup).val('').focus();
         });
     </script>
 </html>