[Commits] r341 - in sandbox/opengeo/geoexplorer: lib/GeoExt/data tests/lib/GeoExt/data
commits at geoext.org
commits at geoext.org
Fri Apr 3 01:18:58 CEST 2009
Author: tschaub
Date: 2009-04-03 01:18:58 +0200 (Fri, 03 Apr 2009)
New Revision: 341
Modified:
sandbox/opengeo/geoexplorer/lib/GeoExt/data/LayerStore.js
sandbox/opengeo/geoexplorer/tests/lib/GeoExt/data/LayerStore.html
Log:
Correctly handle layer order on store.insert. (see #37)
Modified: sandbox/opengeo/geoexplorer/lib/GeoExt/data/LayerStore.js
===================================================================
--- sandbox/opengeo/geoexplorer/lib/GeoExt/data/LayerStore.js 2009-04-02 22:57:37 UTC (rev 340)
+++ sandbox/opengeo/geoexplorer/lib/GeoExt/data/LayerStore.js 2009-04-02 23:18:58 UTC (rev 341)
@@ -141,19 +141,21 @@
onLayerChange: function(evt) {
var layer = evt.layer;
if(evt.property === "order") {
- var layerIndex = this.map.getLayerIndex(layer);
- var recordIndex = this.findBy(function(rec, id) {
- return rec.get("layer") === layer;
- });
- if(recordIndex > -1) {
- if(layerIndex !== recordIndex) {
- var record = this.getAt(recordIndex);
- this._removing = true;
- this.remove(record);
- delete this._removing;
- this._adding = true;
- this.insert(layerIndex, [record]);
- delete this._adding;
+ if(!this._adding && !this._removing) {
+ var layerIndex = this.map.getLayerIndex(layer);
+ var recordIndex = this.findBy(function(rec, id) {
+ return rec.get("layer") === layer;
+ });
+ if(recordIndex > -1) {
+ if(layerIndex !== recordIndex) {
+ var record = this.getAt(recordIndex);
+ this._removing = true;
+ this.remove(record);
+ delete this._removing;
+ this._adding = true;
+ this.insert(layerIndex, [record]);
+ delete this._adding;
+ }
}
}
}
@@ -203,8 +205,13 @@
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"));
+ var layer;
+ for(var i=records.length-1; i>=0; --i) {
+ layer = records[i].get("layer");
+ this.map.addLayer(layer);
+ if(index !== this.map.layers.length-1) {
+ this.map.setLayerIndex(layer, index);
+ }
}
delete this._adding;
}
Modified: sandbox/opengeo/geoexplorer/tests/lib/GeoExt/data/LayerStore.html
===================================================================
--- sandbox/opengeo/geoexplorer/tests/lib/GeoExt/data/LayerStore.html 2009-04-02 22:57:37 UTC (rev 340)
+++ sandbox/opengeo/geoexplorer/tests/lib/GeoExt/data/LayerStore.html 2009-04-02 23:18:58 UTC (rev 341)
@@ -142,9 +142,45 @@
t.eq(map.layers[1].name, "b", "[c, b, a] second layer correct on map");
t.eq(map.layers[2].name, "a", "[c, b, a] third layer correct on map");
+ map.destroy();
}
+
+ function test_insert(t) {
+
+ t.plan(10);
+
+ var map = new OpenLayers.Map("mappanel");
+ var a = new OpenLayers.Layer.Vector("a");
+ var b = new OpenLayers.Layer.Vector("b");
+ var c = new OpenLayers.Layer.Vector("c");
+ var d = new OpenLayers.Layer.Vector("d");
+ var store = new GeoExt.data.LayerStore({
+ map: map
+ });
+
+ store.add(store.reader.readRecords([a, b, c]).records);
+
+ // insert d into second position
+ store.insert(1, store.reader.readRecords([d]).records);
+
+ t.eq(store.getCount(), 4, "[a, d, b, c] four layers in store");
+ t.eq(store.getAt(0).get("layer").name, "a", "[a, d, b, c] first layer correct in store");
+ t.eq(store.getAt(1).get("layer").name, "d", "[a, d, b, c] second layer correct in store");
+ t.eq(store.getAt(2).get("layer").name, "b", "[a, d, b, c] third layer correct in store");
+ t.eq(store.getAt(3).get("layer").name, "c", "[a, d, b, c] fourth layer correct in store");
+ t.eq(map.layers.length, 4, "[a, d, b, c] four layers on map");
+ t.eq(map.layers[0].name, "a", "[a, d, b, c] first layer correct on map");
+ t.eq(map.layers[1].name, "d", "[a, d, b, c] second layer correct on map");
+ t.eq(map.layers[2].name, "b", "[a, d, b, c] third layer correct on map");
+ t.eq(map.layers[3].name, "c", "[a, d, b, c] fourth layer correct on map");
+
+ map.destroy();
+
+ }
+
+
</script>
<body>
<div id="mappanel"></div>
More information about the Commits
mailing list