[Commits] r1995 - in core/trunk/geoext: lib/GeoExt/widgets lib/GeoExt/widgets/form tests/lib/GeoExt/widgets
commits at geoext.org
commits at geoext.org
Wed Mar 17 15:28:08 CET 2010
Author: bartvde
Date: 2010-03-17 15:28:07 +0100 (Wed, 17 Mar 2010)
New Revision: 1995
Modified:
core/trunk/geoext/lib/GeoExt/widgets/form.js
core/trunk/geoext/lib/GeoExt/widgets/form/SearchAction.js
core/trunk/geoext/tests/lib/GeoExt/widgets/form.html
Log:
provide an option to append/prepend wildcards in GeoExt forms, r=elemoine (closes #154)
Modified: core/trunk/geoext/lib/GeoExt/widgets/form/SearchAction.js
===================================================================
--- core/trunk/geoext/lib/GeoExt/widgets/form/SearchAction.js 2010-03-17 14:26:02 UTC (rev 1994)
+++ core/trunk/geoext/lib/GeoExt/widgets/form/SearchAction.js 2010-03-17 14:28:07 UTC (rev 1995)
@@ -112,7 +112,7 @@
*/
run: function() {
var o = this.options;
- var f = GeoExt.form.toFilter(this.form);
+ var f = GeoExt.form.toFilter(this.form, o.logicalOp, o.wildcard);
if(o.clientValidation === false || this.form.isValid()){
if (o.abortPrevious && this.form.prevResponse) {
Modified: core/trunk/geoext/lib/GeoExt/widgets/form.js
===================================================================
--- core/trunk/geoext/lib/GeoExt/widgets/form.js 2010-03-17 14:26:02 UTC (rev 1994)
+++ core/trunk/geoext/lib/GeoExt/widgets/form.js 2010-03-17 14:28:07 UTC (rev 1995)
@@ -13,13 +13,15 @@
* :param logicalOp: ``String`` Either ``OpenLayers.Filter.Logical.AND`` or
* ``OpenLayers.Filter.Logical.OR``, set to
* ``OpenLayers.Filter.Logical.AND`` if null or undefined
+ * :param wildcard: ``Integer`` Determines the wildcard behaviour of like
+ * queries. This behaviour can either be: none, prepend, append or both.
*
* :return: ``OpenLayers.Filter``
*
* Create an {OpenLayers.Filter} object from a {Ext.form.BasicForm}
* or a {Ext.form.FormPanel} instance.
*/
-GeoExt.form.toFilter = function(form, logicalOp) {
+GeoExt.form.toFilter = function(form, logicalOp, wildcard) {
if(form instanceof Ext.form.FormPanel) {
form = form.getForm();
}
@@ -36,6 +38,23 @@
type = OpenLayers.Filter.Comparison.EQUAL_TO;
}
+ if (type === OpenLayers.Filter.Comparison.LIKE) {
+ switch(wildcard) {
+ case GeoExt.form.ENDS_WITH:
+ value = '.*' + value;
+ break;
+ case GeoExt.form.STARTS_WITH:
+ value += '.*';
+ break;
+ case GeoExt.form.CONTAINS:
+ value = '.*' + value + '.*';
+ break;
+ default:
+ // do nothing, just take the value
+ break;
+ }
+ }
+
filters.push(
new OpenLayers.Filter.Comparison({
type: type,
@@ -64,3 +83,7 @@
"ge": OpenLayers.Filter.Comparison.GREATER_THAN_OR_EQUAL_TO,
"like": OpenLayers.Filter.Comparison.LIKE
};
+
+GeoExt.form.ENDS_WITH = 1;
+GeoExt.form.STARTS_WITH = 2;
+GeoExt.form.CONTAINS = 3;
Modified: core/trunk/geoext/tests/lib/GeoExt/widgets/form.html
===================================================================
--- core/trunk/geoext/tests/lib/GeoExt/widgets/form.html 2010-03-17 14:26:02 UTC (rev 1994)
+++ core/trunk/geoext/tests/lib/GeoExt/widgets/form.html 2010-03-17 14:28:07 UTC (rev 1995)
@@ -140,6 +140,40 @@
["GeoExt.form.filterFormForm returns a logical OR filter if",
"logicalOp is OpenLayers.Filter.Logical.OR"].join(" "));
}
+
+ function test_toFilter_Wildcard(t) {
+ t.plan(4);
+
+ /*
+ * 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, 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.ENDS_WITH);
+ t.eq(filter.filters[0].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");
+ filter = GeoExt.form.toFilter(form);
+ t.eq(filter.filters[0].value, "bar", "Default behaviour is to not add any wildcards");
+ }
+
</script>
<body>
<div id="form"></div>
More information about the Commits
mailing list