--- sql-editor.js 2009/04/15 15:26:38 13 +++ sql-editor.js 2009/12/09 13:10:54 34 @@ -12,6 +12,8 @@ function click_on_cell(e) { +console.debug( e, this ); + var tag = e.originalTarget.tagName; var col_nr = e.originalTarget.cellIndex; @@ -24,9 +26,11 @@ else where_value = '%' + where_value + '%'; + var type = column_type[col_nr]; + console.debug('click on ', this, e, e.originalTarget, - column, where_operator, where_value + column, type, where_operator, where_value ); $('form#sql .changed').removeClass('changed'); @@ -47,36 +51,87 @@ .addClass('changed') .attr('options').selectedIndex = col_nr ; - $('form#sql input[name=add_group_by]') + $('form#sql input[name=lookup_col]') .addClass('changed') .attr('value', column) .css('display','block') .attr('disabled',0) ; + $('select[name=where_operator]') + .addClass('changed') + .attr('selectedIndex', type < 0 ? 0 : 2) + ; } else { console.error('unknown click on ', tag, e); } - $('form#sql').addClass('visible'); + $('form#sql').addClass('visible').addClass('fixed'); }; - $('table#results').bind('mouseup', click_on_cell); + $('table#results th').bind('click', function(e) { + var column = $(this).text(); + console.info('header', column); + + $('form#sql .changed').removeClass('changed'); + + $('form#sql input[name=order_by]') + .addClass('changed') + .attr('value', column + ' desc') + ; + + $('form#sql').addClass('visible').addClass('fixed'); + }); + +// $('table#results td').bind('click', click_on_cell); $('#status').bind('click', function() { - $('form#sql').toggleClass('visible'); + $('form#sql').toggleClass('visible').addClass('fixed'); }); - $('input[name=add_group_by]').bind('click', function(e) { + $('input[name=lookup_col]').bind('click', function(e) { var l = $('div#lookup'); - l.html('...loading...').css('display','block'); - var column = $('form#sql input[name=add_group_by]').attr('value'); - console.debug( this, e, column, l ); + var column = $('form#sql input[name=lookup_col]').attr('value'); + var col_nr = $('form#sql select[name=where_column]').attr('options').selectedIndex; + var operator = $('select[name=where_operator]').attr('options').selectedIndex; + + l.html('...loading lookup for '+column+'...').css('display','block').scrollTop(0); - $('input[name=add_group_by]') + console.debug( this, e, column, col_nr, l ); + + $('input[name=lookup_col]') .removeClass('changed') .attr('disabled', 1); - l.load('?add_group_by='+column).addClass('changed'); + var where_parts = []; + $('input[name=where_parts]').each(function(){ if (this.checked) where_parts.push(this.value) }); + var args = { + table: $('input[name=from]').val(), + lookup_col: column, + where_parts: where_parts, + }; + console.debug( 'get', args ); + $.get('', args, function(data,textStatus) { + console.debug( data, textStatus ); + l.addClass('changed'); + l.html( data ); + + $('div#lookup a') + .bind('click', function(e) { + console.debug( 'lookup click', e ); + $('form#sql input[name=where_value]') + .attr('value', e.target.text ) + ; + $('form#sql select[name=where_column]') + .attr('options').selectedIndex = col_nr + ; + $('select[name=where_operator]') + .attr('options').selectedIndex = operator + 1 // remove not + ; + return false; + }); + }); + + $('input[name=close_group_by]') .addClass('changed') .attr('disabled', 0)