1 $(document).ready( function() {
3 var cell_blur = function() {
4 console.debug( 'cell_blur'
10 // FIXME primary key is fixed to 1st column
11 var pk = $('table tr th:nth(0) > a').text();
12 var id = $(this).parent().siblings(':nth(0)').text()
14 var _row_id = $(this).parent().parent().attr('title');
16 var x = $(this).parent().attr('cellIndex');
17 var y = $(this).parent().parent().attr('rowIndex');
19 var content = $(this).val();
20 // $(this).replaceWith( content );
22 var name = $('table tr th:nth('+x+') > a').text();
23 console.info( x, y, _row_id, name, content );
27 $.post( '/data/edit', {
28 path: document.title, _row_id: _row_id,
29 name: name, content: content
30 } , function(data, textStatus) {
31 console.debug( 'data:', data, 'status:', textStatus );
33 data = content; // fallback to submited data for 304
35 if ( $('a.save_changes').length == 0 )
36 $('a.changes').before('<a class=save_changes href="/data/save">save</a>')
38 var vals = data.split('¶');
39 data = vals.join('<span class=d>¶</span>');
40 update.replaceWith( data );
44 var cell_click = function(event) {
45 console.debug( 'cell_click'
50 var content = $(this).text() // we don't want para markup
51 .replace(/^[ \n\r]+/,'')
52 .replace(/[ \n\r]+$/,'')
54 console.debug( 'content', content );
55 var rows = content.split('¶').length * 2 + 1;
56 var textarea = $('<textarea rows='+rows+'/>');
57 textarea.val( content );
58 $(this).html( textarea );
60 textarea.blur( cell_blur )
64 console.info('double-click on cell to edit it');
65 $('table td').live( 'dblclick', cell_click );