use index() to get cellIndex and rowIndex
[MojoFacets.git] / public / edit_table.js
index 34fa44c..9914a3c 100644 (file)
@@ -13,23 +13,33 @@ var cell_blur = function() {
 */
        var _row_id = $(this).parent().parent().attr('title');
 
-       var x = $(this).parent().attr('cellIndex');
-       var y = $(this).parent().parent().attr('rowIndex');
+       var x = $(this).parent().index();
+       var y = $(this).parent().parent().index();
 
-       var content = $(this).val();
-//     $(this).replaceWith( content );
+       if ( ! x || ! y ) {
+               console.error('no x ', x, ' or y ', y, ' defined');
+               return;
+       }
+
+       var new_content = $(this).val();
+//     $(this).replaceWith( new_content );
 
        var name = $('table tr th:nth('+x+') > a').text();
-       console.info( x, y, _row_id, name, content );
+       console.info( x, y, _row_id, name, new_content );
 
        var update = $(this);
 
        $.post( '/data/edit', {
                path: document.title, _row_id: _row_id,
-               name: name, content: content
-       } , function(data) {
-               console.debug( 'server data', data );
-               var vals = content.split('¶');
+               name: name, new_content: new_content
+       } , function(data, textStatus) {
+               console.debug( 'data:', data, 'status:', textStatus );
+               if ( ! data ) {
+                       data = new_content; // fallback to submited data for 304
+               } else {
+                       $('span.save_actions').show();
+               }
+               var vals = data.split('¶');
                data = vals.join('<span class=d>¶</span>');
                update.replaceWith( data );
        });
@@ -41,10 +51,17 @@ var cell_click = function(event) {
                , event
                , $(this).text()
        );
-       var content = $(this).text(); // we don't want para markup
-       var rows = content.split('¶').length * 2 + 1;
+
+       if ( $(this).find('textarea').length ) return; // allready editing
+
+       var new_content = $(this).text() // we don't want para markup
+               .replace(/^[ \n\r]+/,'')
+               .replace(/[ \n\r]+$/,'')
+       ;
+console.debug( 'new_content', new_content );
+       var rows = new_content.split('¶').length * 2 + 1;
        var textarea = $('<textarea rows='+rows+'/>');
-       textarea.val( content );
+       textarea.val( new_content );
        $(this).html( textarea );
        textarea.focus();
        textarea.blur( cell_blur )