[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