[OpenLayers-Commits] r11804 - in trunk/openlayers: lib/OpenLayers/Strategy tests/Strategy

commits-20090109 at openlayers.org commits-20090109 at openlayers.org
Wed Mar 30 16:19:27 EDT 2011


Author: tschaub
Date: 2011-03-30 13:19:24 -0700 (Wed, 30 Mar 2011)
New Revision: 11804

Modified:
   trunk/openlayers/lib/OpenLayers/Strategy/Filter.js
   trunk/openlayers/tests/Strategy/Filter.html
Log:
Making it so the setFilter method on the filter strategy allows notification to listeners of feature add/remove events. p=vog,me r=me (closes #3216)

Modified: trunk/openlayers/lib/OpenLayers/Strategy/Filter.js
===================================================================
--- trunk/openlayers/lib/OpenLayers/Strategy/Filter.js	2011-03-30 19:38:59 UTC (rev 11803)
+++ trunk/openlayers/lib/OpenLayers/Strategy/Filter.js	2011-03-30 20:19:24 UTC (rev 11804)
@@ -138,17 +138,19 @@
         // cache now contains features to remove from layer
         if (this.cache.length > 0) {
             this.caching = true;
-            this.layer.removeFeatures(this.cache.slice(), {silent: true});
+            this.layer.removeFeatures(this.cache.slice());
             this.caching = false;
         }
         // now look through previous cache for features to add to layer
         if (previousCache.length > 0) {
             var event = {features: previousCache};
             this.handleAdd(event);
-            // event has features to add to layer
-            this.caching = true;
-            this.layer.addFeatures(event.features, {silent: true});
-            this.caching = false;
+            if (event.features.length > 0) {
+                // event has features to add to layer
+                this.caching = true;
+                this.layer.addFeatures(event.features);
+                this.caching = false;
+            }
         }
     },
 

Modified: trunk/openlayers/tests/Strategy/Filter.html
===================================================================
--- trunk/openlayers/tests/Strategy/Filter.html	2011-03-30 19:38:59 UTC (rev 11803)
+++ trunk/openlayers/tests/Strategy/Filter.html	2011-03-30 20:19:24 UTC (rev 11804)
@@ -70,7 +70,7 @@
 
 function test_setFilter(t) {
     
-    t.plan(7);
+    t.plan(13);
 
     var strategy = new OpenLayers.Strategy.Filter({filter: filter});
     var layer = new OpenLayers.Layer.Vector(null, {
@@ -84,24 +84,43 @@
         center: new OpenLayers.LonLat(0, 0),
         zoom: 1
     });
+    
+    var log = [];
+    layer.events.on({
+        beforefeaturesadded:  function(event) {
+            log.push(event.type);
+        },
+        beforefeaturesremoved: function(event) {
+            log.push(event.type);
+        }
+    })
 
-    // add all features
+    // a) add all features
+    log = [];
     layer.addFeatures(features);
-    t.eq(features.length, 20, "collection of 20 features")
-    t.eq(layer.features.length, 10, "layer got 10 with filter 'index < 10'");
-    t.eq(strategy.cache.length, 10, "strategy cached 10 with filter 'index < 10'");
+    t.eq(features.length, 20, "a) collection of 20 features")
+    t.eq(layer.features.length, 10, "a) layer got 10 with filter 'index < 10'");
+    t.eq(strategy.cache.length, 10, "a) strategy cached 10 with filter 'index < 10'");
+    t.eq(log.length, 1, "a) one event logged");
+    t.eq(log[0], "beforefeaturesadded", "a) beforefeaturesadded fired");
 
-    // update filter
+    // b) update filter
+    log = [];
     filter.value = 5;
     strategy.setFilter(filter);
-    t.eq(layer.features.length, 5, "layer got 5 with filter 'index < 5'");
-    t.eq(strategy.cache.length, 15, "strategy cached 15 with filter 'index < 5'");
+    t.eq(layer.features.length, 5, "b) layer got 5 with filter 'index < 5'");
+    t.eq(strategy.cache.length, 15, "b) strategy cached 15 with filter 'index < 5'");
+    t.eq(log.length, 1, "b) one event logged");
+    t.eq(log[0], "beforefeaturesremoved", "b) beforefeaturesremoved fired");
 
-    // update filter
+    // c) update filter
+    log = [];
     filter.value = 15;
     strategy.setFilter(filter);
-    t.eq(layer.features.length, 15, "layer got 15 with filter 'index < 15'");
-    t.eq(strategy.cache.length, 5, "strategy cached 5 with filter 'index < 15'");
+    t.eq(layer.features.length, 15, "c) layer got 15 with filter 'index < 15'");
+    t.eq(strategy.cache.length, 5, "c) strategy cached 5 with filter 'index < 15'");
+    t.eq(log.length, 1, "c) one event logged");
+    t.eq(log[0], "beforefeaturesadded", "c) beforefeaturesadded fired");
     
     map.destroy();
     



More information about the Commits mailing list