Changeset 1995

Show
Ignore:
Timestamp:
03/17/10 15:28:07 (5 months ago)
Author:
bartvde
Message:

provide an option to append/prepend wildcards in GeoExt forms, r=elemoine (closes #154)

Files:

Legend:

Unmodified
Added
Removed
Modified
Copied
Moved
  • core/trunk/geoext/lib/GeoExt/widgets/form.js

    r1956 r1995  
    1414 *      ``OpenLayers.Filter.Logical.OR``, set to 
    1515 *      ``OpenLayers.Filter.Logical.AND`` if null or undefined 
     16 *  :param wildcard: ``Integer`` Determines the wildcard behaviour of like 
     17 *      queries. This behaviour can either be: none, prepend, append or both. 
    1618 *       
    1719 *  :return: ``OpenLayers.Filter`` 
     
    2022 *      or a {Ext.form.FormPanel} instance. 
    2123 */ 
    22 GeoExt.form.toFilter = function(form, logicalOp) { 
     24GeoExt.form.toFilter = function(form, logicalOp, wildcard) { 
    2325    if(form instanceof Ext.form.FormPanel) { 
    2426        form = form.getForm(); 
     
    3537        } else { 
    3638            type = OpenLayers.Filter.Comparison.EQUAL_TO; 
     39        } 
     40 
     41        if (type === OpenLayers.Filter.Comparison.LIKE) { 
     42            switch(wildcard) { 
     43                case GeoExt.form.ENDS_WITH: 
     44                    value = '.*' + value; 
     45                    break; 
     46                case GeoExt.form.STARTS_WITH: 
     47                    value += '.*'; 
     48                    break; 
     49                case GeoExt.form.CONTAINS: 
     50                    value = '.*' + value + '.*'; 
     51                    break; 
     52                default: 
     53                    // do nothing, just take the value 
     54                    break; 
     55            } 
    3756        } 
    3857 
     
    6584    "like": OpenLayers.Filter.Comparison.LIKE 
    6685}; 
     86 
     87GeoExt.form.ENDS_WITH = 1; 
     88GeoExt.form.STARTS_WITH = 2; 
     89GeoExt.form.CONTAINS = 3; 
  • core/trunk/geoext/lib/GeoExt/widgets/form/SearchAction.js

    r1956 r1995  
    113113    run: function() { 
    114114        var o = this.options; 
    115         var f = GeoExt.form.toFilter(this.form); 
     115        var f = GeoExt.form.toFilter(this.form, o.logicalOp, o.wildcard); 
    116116        if(o.clientValidation === false || this.form.isValid()){ 
    117117 
  • core/trunk/geoext/tests/lib/GeoExt/widgets/form.html

    r836 r1995  
    141141              "logicalOp is OpenLayers.Filter.Logical.OR"].join(" ")); 
    142142    } 
     143 
     144    function test_toFilter_Wildcard(t) { 
     145        t.plan(4); 
     146 
     147        /* 
     148         * Set up 
     149         */ 
     150 
     151        var form, filter, fields = []; 
     152 
     153        fields.push(new Ext.form.TextField({ 
     154            name: "foo__like", 
     155            value: "bar" 
     156        })); 
     157 
     158        form = new Ext.form.FormPanel({ 
     159            renderTo: "form", 
     160            items: fields 
     161        }); 
     162 
     163        /* 
     164         * Test 
     165         */ 
     166 
     167        filter = GeoExt.form.toFilter(form, null, GeoExt.form.STARTS_WITH); 
     168        t.eq(filter.filters[0].value, "bar.*", "GeoExt.form.STARTS_WITH appends a wildcard"); 
     169        filter = GeoExt.form.toFilter(form, null, GeoExt.form.ENDS_WITH); 
     170        t.eq(filter.filters[0].value, ".*bar", "GeoExt.form.ENDS_WITH prepends a wildcard"); 
     171        filter = GeoExt.form.toFilter(form, null, GeoExt.form.CONTAINS); 
     172        t.eq(filter.filters[0].value, ".*bar.*", "GeoExt.form.CONTAINS appends *and* prepends a wildcard"); 
     173        filter = GeoExt.form.toFilter(form); 
     174        t.eq(filter.filters[0].value, "bar", "Default behaviour is to not add any wildcards"); 
     175    } 
     176 
    143177    </script> 
    144178  <body>