insert save link only once
[MojoFacets.git] / public / edit_table.js
index 11c3f2f..67ab62b 100644 (file)
@@ -2,24 +2,43 @@ $(document).ready( function() {
 
 var cell_blur = function() {
        console.debug( 'cell_blur'
-               , this
-               , $(this).val()
+//             , this
+//             , $(this).val()
        );
 
+/*
+       // FIXME primary key is fixed to 1st column
+       var pk = $('table tr th:nth(0) > a').text();
+       var id = $(this).parent().siblings(':nth(0)').text()
+*/
+       var _row_id = $(this).parent().parent().attr('title');
+
        var x = $(this).parent().attr('cellIndex');
        var y = $(this).parent().parent().attr('rowIndex');
 
        var content = $(this).val();
-       if ( 0 ) { // leave delimiters in edited cells visible
-               var vals = content.split('¶');
-               content = vals.join('<span class=d>¶</span>');
-       }
-
-//     var cell = $('<td>'+content+'</td>');
-       $(this).replaceWith( content );
+//     $(this).replaceWith( content );
 
        var name = $('table tr th:nth('+x+') > a').text();
-       console.info( x, y, name, content );
+       console.info( x, y, _row_id, name, content );
+
+       var update = $(this);
+
+       $.post( '/data/edit', {
+               path: document.title, _row_id: _row_id,
+               name: name, content: content
+       } , function(data, textStatus) {
+               console.debug( 'data:', data, 'status:', textStatus );
+               if ( ! data ) {
+                       data = content; // fallback to submited data for 304
+               } else {
+                       if ( $('a.save_changes').length == 0 )
+                       $('a.changes').before('<a class=save_changes href="/data/save">save</a>')
+               }
+               var vals = data.split('¶');
+               data = vals.join('<span class=d>¶</span>');
+               update.replaceWith( data );
+       });
 }
 
 var cell_click = function(event) {
@@ -28,7 +47,11 @@ var cell_click = function(event) {
                , event
                , $(this).text()
        );
-       var content = $(this).text(); // we don't want para markup
+       var content = $(this).text() // we don't want para markup
+               .replace(/^[ \n\r]+/,'')
+               .replace(/[ \n\r]+$/,'')
+       ;
+console.debug( 'content', content );
        var rows = content.split('¶').length * 2 + 1;
        var textarea = $('<textarea rows='+rows+'/>');
        textarea.val( content );