From d566e4f444852966d581dbe9d191b72d75eb9c57 Mon Sep 17 00:00:00 2001 From: mdipierro Date: Tue, 4 Sep 2012 17:58:52 -0500 Subject: [PATCH] simplified grid console logic and style --- VERSION | 2 +- gluon/sqlhtml.py | 55 ++++++++++++++++++++++++++++-------------------- 2 files changed, 33 insertions(+), 24 deletions(-) diff --git a/VERSION b/VERSION index a3893ee0..ea7c48ff 100644 --- a/VERSION +++ b/VERSION @@ -1 +1 @@ -Version 2.0.7 (2012-09-04 15:32:23) stable +Version 2.0.7 (2012-09-04 17:58:46) stable diff --git a/gluon/sqlhtml.py b/gluon/sqlhtml.py index ffa05bf5..928e24df 100644 --- a/gluon/sqlhtml.py +++ b/gluon/sqlhtml.py @@ -1498,11 +1498,10 @@ class SQLFORM(FORM): selectfields = [] for field in fields: name = str(field).replace('.','-') - criterion = [] options = search_options.get(field.type,None) if options: label = isinstance(field.label,str) and T(field.label) or field.label - selectfields.append((str(field),label)) + selectfields.append(OPTION(label, _value=str(field))) operators = SELECT(*[T(option) for option in options]) if field.type=='boolean': value_input = SELECT( @@ -1510,30 +1509,39 @@ class SQLFORM(FORM): OPTION(T("False"),_value="F"), _id="w2p_value_"+name) else: - value_input = INPUT(_type='text',_id="w2p_value_"+name, + value_input = INPUT(_type='text', + _id="w2p_value_"+name, _class=field.type) new_button = INPUT( _type="button", _value=T('New'),_class="btn", - _onclick="w2p_build_query('new','"+str(field)+"')") + _onclick="w2p_build_query('new','%s')" % field) and_button = INPUT( _type="button", _value=T('And'),_class="btn", - _onclick="w2p_build_query('and','"+str(field)+"')") + _onclick="w2p_build_query('and','%s')" % field) or_button = INPUT( _type="button", _value=T('Or'),_class="btn", - _onclick="w2p_build_query('or','"+str(field)+"')") + _onclick="w2p_build_query('or','%s')" % field) + close_button = INPUT( + _type="button", _value=T('Close'),_class="btn", + _onclick="jQuery('#w2p_query_panel').slideUp()") - criterion.extend([operators,value_input,new_button,and_button,or_button]) - criteria.append(DIV(criterion, _id='w2p_field_%s' % name, - _class='w2p_query_row hidden')) + criteria.append(DIV( + operators,value_input,new_button, + and_button,or_button,close_button, + _id='w2p_field_%s' % name, + _class='w2p_query_row hidden', + _style='display:inline')) + criteria.insert(0,SELECT( _id="w2p_query_fields", _onchange="jQuery('.w2p_query_row').hide();jQuery('#w2p_field_'+jQuery('#w2p_query_fields').val().replace('.','-')).show();", - *[OPTION(label, _value=fname) for fname,label in selectfields])) + _style='float:left', + *selectfields)) + fadd = SCRIPT(""" - jQuery('#w2p_query_panel input,#w2p_query_panel select').css( - 'width','auto').css('float','left'); + jQuery('#w2p_query_panel input,#w2p_query_panel select').css('width','auto'); jQuery(function(){web2py_ajax_fields('#w2p_query_panel');}); - function w2p_build_query(aggregator,a){ + function w2p_build_query(aggregator,a) { var b=a.replace('.','-'); var option = jQuery('#w2p_field_'+b+' select').val(); var value = jQuery('#w2p_value_'+b).val().replace('"','\\\\"'); @@ -1541,10 +1549,11 @@ class SQLFORM(FORM): var k=jQuery('#web2py_keywords'); var v=k.val(); if(aggregator=='new') k.val(s); else k.val((v?(v+' '+ aggregator +' '):'')+s); - jQuery('#w2p_query_panel').slideUp(); } """) - return CAT(DIV(_id="w2p_query_panel",_class='hidden',*criteria),fadd) + return CAT( + DIV(_id="w2p_query_panel",_class='hidden',*criteria),fadd) + @staticmethod @@ -1855,12 +1864,6 @@ class SQLFORM(FORM): session['_web2py_grid_referrer_'+formname] = url2(vars=request.vars) console = DIV(_class='web2py_console %(header)s %(cornertop)s' % ui) - if create: - console.append(gridbutton( - buttonclass='buttonadd', - buttontext='Add', - buttonurl=url(args=['new',tablename]))) - error = None if searchable: sfields = reduce(lambda a,b:a+b, @@ -1869,13 +1872,13 @@ class SQLFORM(FORM): search_widget = search_widget[tablename] if search_widget=='default': search_menu = SQLFORM.search_menu(sfields) - search_widget = lambda sfield, url: FORM( + search_widget = lambda sfield, url: DIV(FORM( INPUT(_name='keywords',_value=request.vars.keywords, _id='web2py_keywords',_onfocus="jQuery('#w2p_query_fields').change();jQuery('#w2p_query_panel').slideDown();"), INPUT(_type='submit',_value=T('Search'),_class="btn"), INPUT(_type='submit',_value=T('Clear'),_class="btn", _onclick="jQuery('#web2py_keywords').val('');"), - search_menu,_method="GET",_action=url) + _method="GET",_action=url),search_menu) form = search_widget and search_widget(sfields,url()) or '' console.append(form) keywords = request.vars.get('keywords','') @@ -1889,6 +1892,12 @@ class SQLFORM(FORM): error = T('Invalid query') else: subquery = None + if create: + console.append(gridbutton( + buttonclass='buttonadd', + buttontext='Add', + buttonurl=url(args=['new',tablename]))) + if subquery: dbset = dbset(subquery) try: