--- sql-editor.js 2009/04/15 22:44:40 16 +++ sql-editor.js 2009/12/09 13:43:34 35 @@ -10,83 +10,93 @@ $(document).ready( function() { - function click_on_cell(e) { + $('table#results td').bind('click', function(e) { - var tag = e.originalTarget.tagName; - - var col_nr = e.originalTarget.cellIndex; + var col_nr = $(this).parent().children().index( $(this) ); var column = $('table#results th:nth-child(' + ( col_nr + 1 ) + ')').text(); var where_operator = '='; - var where_value = window.getSelection().getRangeAt(0).cloneContents().textContent; - if ( where_value.length == 0 ) - where_value = e.originalTarget.textContent; + var where_value = ''; + var selected_text = window.getSelection().getRangeAt(0).cloneContents().textContent; + if ( selected_text != '' ) + where_value = '%' + selected_text + '%'; else - where_value = '%' + where_value + '%'; + where_value = $(this).text(); var type = column_type[col_nr]; - console.debug('click on ', this, e, - e.originalTarget, + console.debug('td', column, type, where_operator, where_value ); $('form#sql .changed').removeClass('changed'); - if ( tag == 'TH' ) { - console.info('header', column); - $('form#sql input[name=order_by]') - .addClass('changed') - .attr('value', where_value + ' desc') - ; - } else if ( tag = 'TD' ) { - console.info('column', column, where_operator, where_value); - $('form#sql input[name=where_value]') - .addClass('changed') - .attr('value', where_value) - ; - $('form#sql select[name=where_column]') - .addClass('changed') - .attr('options').selectedIndex = col_nr - ; - $('form#sql input[name=add_group_by]') - .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); - } + console.info('column', column, where_operator, where_value); + $('form#sql input[name=where_value]') + .addClass('changed') + .attr('value', where_value) + ; + $('form#sql select[name=where_column]') + .addClass('changed') + .attr('options').selectedIndex = col_nr + ; + $('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) + ; - $('form#sql').addClass('visible'); - }; + $('form#sql').addClass('visible').addClass('fixed'); + }); + + + $('table#results th').bind('click', function(e) { + var column = $(this).text(); + console.info('th', 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').bind('mouseup', 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'); - var column = $('form#sql input[name=add_group_by]').attr('value'); + 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 '+column+'...').css('display','block'); + l.html('...loading lookup for '+column+'...').css('display','block').scrollTop(0); console.debug( this, e, column, col_nr, l ); - $('input[name=add_group_by]') + $('input[name=lookup_col]') .removeClass('changed') .attr('disabled', 1); - $.get('', { add_group_by: column }, function(data,textStatus) { + 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 );