[Commits] r2467 - in core/trunk/geoext: lib/GeoExt/widgets tests/lib/GeoExt/widgets

commits at geoext.org commits at geoext.org
Thu Oct 21 13:00:55 CEST 2010


Author: elemoine
Date: 2010-10-21 13:00:54 +0200 (Thu, 21 Oct 2010)
New Revision: 2467

Modified:
   core/trunk/geoext/lib/GeoExt/widgets/form.js
   core/trunk/geoext/tests/lib/GeoExt/widgets/form.html
Log:
fix form.toFilter: AND filters should only be applied with two or more terms, p=Testbaudson,ahocevar,me r=ahocevar,me (closes #366)

Modified: core/trunk/geoext/lib/GeoExt/widgets/form.js
===================================================================
--- core/trunk/geoext/lib/GeoExt/widgets/form.js	2010-10-19 06:35:27 UTC (rev 2466)
+++ core/trunk/geoext/lib/GeoExt/widgets/form.js	2010-10-21 11:00:54 UTC (rev 2467)
@@ -64,10 +64,12 @@
         );
     }
 
-    return new OpenLayers.Filter.Logical({
-        type: logicalOp || OpenLayers.Filter.Logical.AND,
-        filters: filters
-    });
+    return filters.length == 1 && logicalOp != OpenLayers.Filter.Logical.NOT ?
+        filters[0] :
+        new OpenLayers.Filter.Logical({
+            type: logicalOp || OpenLayers.Filter.Logical.AND,
+            filters: filters
+        });
 };
 
 /** private: constant[FILTER_MAP]

Modified: core/trunk/geoext/tests/lib/GeoExt/widgets/form.html
===================================================================
--- core/trunk/geoext/tests/lib/GeoExt/widgets/form.html	2010-10-19 06:35:27 UTC (rev 2466)
+++ core/trunk/geoext/tests/lib/GeoExt/widgets/form.html	2010-10-21 11:00:54 UTC (rev 2467)
@@ -142,6 +142,39 @@
               "logicalOp is OpenLayers.Filter.Logical.OR"].join(" "));
     }
 
+    // http://trac.geoext.org/ticket/366
+    function test_toFilter_one_filter(t) {
+        t.plan(2);
+
+        /*
+         * Set up
+         */
+
+        var form, filter, fields = [];
+
+        fields.push(new Ext.form.TextField({
+            name: "foo__like",
+            value: "bar"
+        }));
+
+        form = new Ext.form.FormPanel({
+            renderTo: "form",
+            items: fields
+        });
+
+        /*
+         * Test
+         */
+
+        filter = GeoExt.form.toFilter(form);
+        t.ok(filter instanceof OpenLayers.Filter.Comparison,
+             "comparison filter not wrapped in a logical filter");
+
+        filter = GeoExt.form.toFilter(form, OpenLayers.Filter.Logical.NOT);
+        t.ok(filter instanceof OpenLayers.Filter.Logical,
+             "comparison filter wrapped in logical not filter");
+    }
+
     function test_toFilter_Wildcard(t) {
         t.plan(4);
 
@@ -166,13 +199,14 @@
          */
 
         filter = GeoExt.form.toFilter(form, null, GeoExt.form.STARTS_WITH);
-        t.eq(filter.filters[0].value, "bar.*", "GeoExt.form.STARTS_WITH appends a wildcard");
+        filter = GeoExt.form.toFilter(form, null, GeoExt.form.STARTS_WITH);
+        t.eq(filter.value, "bar.*", "GeoExt.form.STARTS_WITH appends a wildcard");
         filter = GeoExt.form.toFilter(form, null, GeoExt.form.ENDS_WITH);
-        t.eq(filter.filters[0].value, ".*bar", "GeoExt.form.ENDS_WITH prepends a wildcard");
+        t.eq(filter.value, ".*bar", "GeoExt.form.ENDS_WITH prepends a wildcard");
         filter = GeoExt.form.toFilter(form, null, GeoExt.form.CONTAINS);
-        t.eq(filter.filters[0].value, ".*bar.*", "GeoExt.form.CONTAINS appends *and* prepends a wildcard");
+        t.eq(filter.value, ".*bar.*", "GeoExt.form.CONTAINS appends *and* prepends a wildcard");
         filter = GeoExt.form.toFilter(form);
-        t.eq(filter.filters[0].value, "bar", "Default behaviour is to not add any wildcards");
+        t.eq(filter.value, "bar", "Default behaviour is to not add any wildcards");
     }
 
     function test_recordToField(t) {



More information about the Commits mailing list