[Commits] r2351 - in core/trunk/geoext: lib/GeoExt/data tests/lib/GeoExt/data

commits at geoext.org commits at geoext.org
Wed Sep 15 09:51:09 CEST 2010


Author: ahocevar
Date: 2010-09-15 09:51:08 +0200 (Wed, 15 Sep 2010)
New Revision: 2351

Modified:
   core/trunk/geoext/lib/GeoExt/data/FeatureStore.js
   core/trunk/geoext/tests/lib/GeoExt/data/FeatureStore.html
Log:
replaced addFeatureFilter with featureFilter (using OpenLayers.Filter) and removed addRecordFilter (because we can use the beforefeatureadded event in OpenLayers.Layer.Vector instead). r=elemoine (closes #55)


Modified: core/trunk/geoext/lib/GeoExt/data/FeatureStore.js
===================================================================
--- core/trunk/geoext/lib/GeoExt/data/FeatureStore.js	2010-09-15 07:42:19 UTC (rev 2350)
+++ core/trunk/geoext/lib/GeoExt/data/FeatureStore.js	2010-09-15 07:51:08 UTC (rev 2351)
@@ -77,20 +77,12 @@
          */
         reader: null,
 
-        /** api: config[addFeatureFilter]
-         *  ``Function`` This function is called before a feature record is added to
-         *  the store, it receives the feature from which a feature record is to be
-         *  created, if it returns false then no record is added.
+        /** api: config[featureFilter]
+         *  ``OpenLayers.Filter`` This filter is evaluated before a feature
+         *  record is added to the store.
          */
-        addFeatureFilter: null,
+        featureFilter: null,
         
-        /** api: config[addRecordFilter]
-         *  ``Function`` This function is called before a feature is added to the
-         *  layer, it receives the feature record associated with the feature to be
-         *  added, if it returns false then no feature is added.
-         */
-        addRecordFilter: null,
-        
         /** api: config[initDir]
          *  ``Number``  Bitfields specifying the direction to use for the
          *  initial sync between the layer and the store, if set to 0 then no
@@ -219,12 +211,12 @@
         onFeaturesAdded: function(evt) {
             if(!this._adding) {
                 var features = evt.features, toAdd = features;
-                if(typeof this.addFeatureFilter == "function") {
+                if(this.featureFilter) {
                     toAdd = [];
                     var i, len, feature;
                     for(var i=0, len=features.length; i<len; i++) {
                         feature = features[i];
-                        if(this.addFeatureFilter(feature) !== false) {
+                        if (this.featureFilter.evaluate(feature) !== false) {
                             toAdd.push(feature);
                         }
                     }
@@ -295,20 +287,10 @@
          *  function is used by the onLoad and onAdd handlers.
          */
         addFeaturesToLayer: function(records) {
-            var i, len, features, record;
-            if(typeof this.addRecordFilter == "function") {
-                features = [];
-                for(i=0, len=records.length; i<len; i++) {
-                    record = records[i];
-                    if(this.addRecordFilter(record) !== false) {
-                        features.push(record.getFeature());
-                    }
-                }
-            } else {
-                features = new Array((len=records.length));
-                for(i=0; i<len; i++) {
-                    features[i] = records[i].getFeature();
-                }
+            var i, len, features;
+            features = new Array((len=records.length));
+            for(i=0; i<len; i++) {
+                features[i] = records[i].getFeature();
             }
             if(features.length > 0) {
                 this._adding = true;

Modified: core/trunk/geoext/tests/lib/GeoExt/data/FeatureStore.html
===================================================================
--- core/trunk/geoext/tests/lib/GeoExt/data/FeatureStore.html	2010-09-15 07:42:19 UTC (rev 2350)
+++ core/trunk/geoext/tests/lib/GeoExt/data/FeatureStore.html	2010-09-15 07:51:08 UTC (rev 2351)
@@ -28,7 +28,7 @@
         } 
 
         function test_load_clear(t) {
-            t.plan(7);
+            t.plan(6);
             
             var layer = new OpenLayers.Layer.Vector("Foo layer");
             var store = new GeoExt.data.FeatureStore({
@@ -43,22 +43,12 @@
             t.eq(layer.features.length, 2, "loading two records in the store with 'loadData' adds two features to the layer");
             t.eq(store.getCount(), 2, 'loading two records in the store with "loadData" does not create duplicate records in store'); 
 
-            // loadData with addRecordFilter
-            store.addRecordFilter = function(record) { return false; };
-            store.loadData([
-                new OpenLayers.Feature.Vector(),
-                new OpenLayers.Feature.Vector()
-            ]);
-            t.eq(layer.features.length, 0,
-                 "loading two records in the store with 'loadData' adds no feature to the layer if addRecordFilter returns false");
-
             // removeAll
             store.removeAll();
             t.eq(store.getCount(), 0, '"removeAll" on store removes all records from the store'); 
             t.eq(layer.features.length, 0, '"removeAll" on store removes features from layer'); 
 
             // load no data
-            store.addRecordFilter = null;
             store.loadData([]);
             t.eq(store.getCount(), 0, '"loadData([]) does not add records to the store');
             t.eq(layer.features.length, 0, '"loadData([]) does not add features to the layer');
@@ -129,7 +119,7 @@
 
         function test_add_remove(t) {
             
-            t.plan(5);
+            t.plan(4);
             
             var layer = new OpenLayers.Layer.Vector("Foo layer");
             var store = new GeoExt.data.FeatureStore({
@@ -148,12 +138,6 @@
             store.remove(record);
             t.eq(store.getCount(), 0, 'remove on store with "remove" removes the record from the store'); 
             t.eq(layer.features.length, 0, 'remove on store with "remove" removes the corresponding feature from layer'); 
-
-            // add with addRecordFilter
-            store.addRecordFilter = function(record) { return false; };
-            store.add([record]);
-            t.eq(layer.features.length, 0,
-                 'Adding a record with "add" does not add feature to layer if addRecordFilter returns false');
         }
         
         function test_getRecordFromFeature(t) {
@@ -212,11 +196,13 @@
             t.eq(store.getCount(), 0, '"removeFeatures" on layer removes records from the store'); 
             t.eq(layer.features.length, 0, '"removeFeatures" on layer removes features from layer');
 
-            // test layer addFeatures with addFeatureFilter
-            store.addFeatureFilter = function(feature) { return false; };
+            // test layer addFeatures with featureFilter
+            store.featureFilter = new OpenLayers.Filter({
+                evaluate: function(feature) { return false; }
+            });
             layer.addFeatures(features);
             t.eq(store.getCount(), 0,
-                 'Adding features to layer with "addFeatures" does not insert records in the store if addFeatureFilter returns false');
+                 'Adding features to layer with "addFeatures" does not insert records in the store if featureFilter evaluates to false');
         }
 
         function test_featuremodified_update(t) {



More information about the Commits mailing list