[Commits] r2645 - in core/trunk/geoext: lib/GeoExt/data tests/lib/GeoExt/data
commits at geoext.org
commits at geoext.org
Mon Apr 11 13:44:28 CEST 2011
Author: ahocevar
Date: 2011-04-11 13:44:28 +0200 (Mon, 11 Apr 2011)
New Revision: 2645
Modified:
core/trunk/geoext/lib/GeoExt/data/FeatureStore.js
core/trunk/geoext/tests/lib/GeoExt/data/FeatureStore.html
Log:
deprecating getRecordFromFeature, replacing it with getByFeature which returns undefined when no matching feature is found. r=bbinet (closes #381)
Modified: core/trunk/geoext/lib/GeoExt/data/FeatureStore.js
===================================================================
--- core/trunk/geoext/lib/GeoExt/data/FeatureStore.js 2011-04-05 17:25:57 UTC (rev 2644)
+++ core/trunk/geoext/lib/GeoExt/data/FeatureStore.js 2011-04-11 11:44:28 UTC (rev 2645)
@@ -188,10 +188,23 @@
* :returns: :class:`GeoExt.data.FeatureRecord` The record corresponding
* to the given feature. Returns null if no record matches.
*
+ * *Deprecated* Use getByFeature instead.
+ *
* Get the record corresponding to a feature.
*/
getRecordFromFeature: function(feature) {
- var record = null;
+ return this.getByFeature(feature) || null;
+ },
+
+ /** api: method[getByFeature]
+ * :arg feature: ``OpenLayers.Vector.Feature``
+ * :returns: :class:`GeoExt.data.FeatureRecord` The record corresponding
+ * to the given feature. Returns undefined if no record matches.
+ *
+ * Get the record corresponding to a feature.
+ */
+ getByFeature: function(feature) {
+ var record;
if(feature.state !== OpenLayers.State.INSERT) {
record = this.getById(feature.id);
} else {
@@ -238,7 +251,7 @@
var features = evt.features, feature, record, i;
for(i=features.length - 1; i>=0; i--) {
feature = features[i];
- record = this.getRecordFromFeature(feature);
+ record = this.getByFeature(feature);
if(record !== undefined) {
this._removing = true;
this.remove(record);
@@ -254,7 +267,7 @@
onFeatureModified: function(evt) {
if(!this._updating) {
var feature = evt.feature;
- var record = this.getRecordFromFeature(feature);
+ var record = this.getByFeature(feature);
if(record !== undefined) {
record.beginEdit();
var attributes = feature.attributes;
Modified: core/trunk/geoext/tests/lib/GeoExt/data/FeatureStore.html
===================================================================
--- core/trunk/geoext/tests/lib/GeoExt/data/FeatureStore.html 2011-04-05 17:25:57 UTC (rev 2644)
+++ core/trunk/geoext/tests/lib/GeoExt/data/FeatureStore.html 2011-04-11 11:44:28 UTC (rev 2645)
@@ -140,7 +140,7 @@
t.eq(layer.features.length, 0, 'remove on store with "remove" removes the corresponding feature from layer');
}
- function test_getRecordFromFeature(t) {
+ function test_getByFeature(t) {
t.plan(2);
var layer = new OpenLayers.Layer.Vector();
@@ -157,12 +157,12 @@
var record;
// confirm that we can get a phantom record
- record = store.getRecordFromFeature(features[0]);
+ record = store.getByFeature(features[0]);
t.ok((record && record.getFeature()) === features[0],
"phantom record retrieved");
// confirm that we can get a normal record
- record = store.getRecordFromFeature(features[1]);
+ record = store.getByFeature(features[1]);
t.ok((record && record.getFeature()) === features[1],
"normal record retrieved");
@@ -203,10 +203,11 @@
layer.addFeatures(features);
t.eq(store.getCount(), 0,
'Adding features to layer with "addFeatures" does not insert records in the store if featureFilter evaluates to false');
+
}
function test_featuremodified_update(t) {
- t.plan(14);
+ t.plan(15);
/*
* Set up
@@ -242,7 +243,7 @@
fields: recordType,
data: [feature]
});
- record = store.getRecordFromFeature(feature);
+ record = store.getByFeature(feature);
t.eq(record.get("foo"), "foo",
"record gets correct initial value for property \"foo\"");
@@ -309,6 +310,24 @@
record.set("foo", "still insert");
t.eq(feature.attributes.foo, "still insert", "attribute set");
t.eq(feature.state, OpenLayers.State.INSERT, "insert state remains");
+
+ // confirm that update doesn't cause errors for features that were
+ // filtered out
+ var filteredFeature = new OpenLayers.Feature.Vector();
+ filteredFeature.state = OpenLayers.State.INSERT;
+ store.featureFilter = new OpenLayers.Filter({
+ evaluate: function(feature) {
+ return feature !== filteredFeature;
+ }
+ });
+ layer.addFeatures([filteredFeature]);
+ var ok = true;
+ try {
+ layer.events.triggerEvent("featuremodified", {feature: filteredFeature});
+ } catch(e) {
+ ok = false;
+ }
+ t.ok(ok, "modifying filtered out features does not cause errors");
}
</script>
More information about the Commits
mailing list