[Commits] r346 - in core/trunk/geoext: lib/GeoExt/data tests/lib/GeoExt/data
commits at geoext.org
commits at geoext.org
Fri Apr 3 18:08:18 CEST 2009
Author: tschaub
Date: 2009-04-03 18:08:18 +0200 (Fri, 03 Apr 2009)
New Revision: 346
Modified:
core/trunk/geoext/lib/GeoExt/data/LayerStore.js
core/trunk/geoext/tests/lib/GeoExt/data/LayerStore.html
Log:
Take care not to add records twice when calling store.add. r=ahocevar (closes #36)
Modified: core/trunk/geoext/lib/GeoExt/data/LayerStore.js
===================================================================
--- core/trunk/geoext/lib/GeoExt/data/LayerStore.js 2009-04-03 16:06:15 UTC (rev 345)
+++ core/trunk/geoext/lib/GeoExt/data/LayerStore.js 2009-04-03 16:08:18 UTC (rev 346)
@@ -136,10 +136,12 @@
* evt - {Object}
*/
onAddLayer: function(evt) {
- var layer = evt.layer;
- this._adding = true;
- this.add((this.reader.readRecords([layer])).records);
- delete this._adding;
+ if(!this._adding) {
+ var layer = evt.layer;
+ this._adding = true;
+ this.add((this.reader.readRecords([layer])).records);
+ delete this._adding;
+ }
},
/**
@@ -150,10 +152,12 @@
* evt - {Object}
*/
onRemoveLayer: function(evt){
- var layer = evt.layer;
- this._removing = true;
- this.remove(this.getById(layer.id));
- delete this._removing;
+ if(!this._removing) {
+ var layer = evt.layer;
+ this._removing = true;
+ this.remove(this.getById(layer.id));
+ delete this._removing;
+ }
},
/**
@@ -167,9 +171,11 @@
*/
onAdd: function(store, records, index) {
if(!this._adding) {
+ this._adding = true;
for(var i=0; i<records.length; ++i) {
this.map.addLayer(records[i].get("layer"));
}
+ delete this._adding;
}
},
@@ -184,7 +190,9 @@
*/
onRemove: function(store, record, index){
if(!this._removing) {
+ this._removing = true;
this.map.removeLayer(record.get("layer"));
+ delete this._removing;
}
}
};
Modified: core/trunk/geoext/tests/lib/GeoExt/data/LayerStore.html
===================================================================
--- core/trunk/geoext/tests/lib/GeoExt/data/LayerStore.html 2009-04-03 16:06:15 UTC (rev 345)
+++ core/trunk/geoext/tests/lib/GeoExt/data/LayerStore.html 2009-04-03 16:08:18 UTC (rev 346)
@@ -73,6 +73,27 @@
t.eq(map.layers.length,1,"Adding layer to MapPanel's LayerStore adds only one layer to map");
t.eq(mapPanel.layers.getCount(),1,"Adding layers to MapPanel's LayerStore does not create duplicate layers");
}
+
+ function test_add_remove(t) {
+
+ t.plan(2);
+
+ var map = new OpenLayers.Map("mappanel");
+ var store = new GeoExt.data.LayerStore({
+ map: map
+ });
+ var record = new GeoExt.data.LayerRecord({
+ layer: new OpenLayers.Layer.Vector()
+ });
+
+ store.add([record]);
+ t.eq(store.getCount(), 1, "adding a single record to the store adds one record");
+
+ store.remove(record);
+ t.eq(store.getCount(), 0, "removing a single record from the store removes one record");
+
+ }
+
</script>
<body>
<div id="mappanel"></div>
More information about the Commits
mailing list