return json from matrix, be pretty n'ajaxy
[matrixnullspace.com.git] / js / matrix.js
diff --git a/js/matrix.js b/js/matrix.js
new file mode 100644 (file)
index 0000000..83e8e27
--- /dev/null
@@ -0,0 +1,43 @@
+$(document).ready(function(){
+  $('#submit').click(function(event){
+    if ($('#matrix').val() == ''
+        || $('#matrix').val().match(/[^.\-\d\s]/) != null) {
+        event.preventDefault();
+        $('#results').fadeOut('slow', function() {
+            $('#results').html(
+                $('<span>').attr('id', 'fail').text(
+                    $('#matrix').val() == '' ?
+                        'Enter a matrix!' : 'Invalid character in matrix.'
+                    ));
+            $('#results').fadeIn();
+        });
+        return;
+    }
+    $.post('/calculate', { 'matrix' : $('#matrix').val() })
+        .done(function(data) {
+            $('#results').fadeOut('slow', function() {
+                $('#results').html('').append(
+                    $('<li>').text('eigenvalues').append(
+                        $('<pre>').text(data.eigenvalues)),
+                    $('<li>').text('determinant').append(
+                        $('<pre>').text(data.determinant)),
+                    $('<li>').text('nullspace').append(
+                        $('<pre>').text(data.nullspace))
+                );
+                $('#results').fadeIn();
+            });
+        })
+        .fail(function(data) {
+            $('#results').fadeOut('slow', function() {
+                $('#results').html(
+                    $('<span>').attr('id', 'fail')
+                        .text('Uh-oh, something\'s gone wrong!'));
+                $('#results').fadeIn();
+            });
+        });
+  });
+  $('textarea').focus(function(e) {
+      $(e.target).text('');
+      $(e.target).css({ 'color' : 'black', 'font-style' : 'none' });
+  });
+});