[Commits] r334 - in sandbox/opengeo/geoexplorer: . lib/GeoExt/data tests/lib/GeoExt/data

commits at geoext.org commits at geoext.org
Thu Apr 2 22:48:43 CEST 2009


Author: tschaub
Date: 2009-04-02 22:48:43 +0200 (Thu, 02 Apr 2009)
New Revision: 334

Modified:
   sandbox/opengeo/geoexplorer/lib/GeoExt/data/LayerStore.js
   sandbox/opengeo/geoexplorer/modifications.txt
   sandbox/opengeo/geoexplorer/tests/lib/GeoExt/data/LayerStore.html
Log:
Fixing the layer store add method (see #36).

Modified: sandbox/opengeo/geoexplorer/lib/GeoExt/data/LayerStore.js
===================================================================
--- sandbox/opengeo/geoexplorer/lib/GeoExt/data/LayerStore.js	2009-04-02 20:47:14 UTC (rev 333)
+++ sandbox/opengeo/geoexplorer/lib/GeoExt/data/LayerStore.js	2009-04-02 20:48:43 UTC (rev 334)
@@ -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: sandbox/opengeo/geoexplorer/modifications.txt
===================================================================
--- sandbox/opengeo/geoexplorer/modifications.txt	2009-04-02 20:47:14 UTC (rev 333)
+++ sandbox/opengeo/geoexplorer/modifications.txt	2009-04-02 20:48:43 UTC (rev 334)
@@ -7,5 +7,6 @@
  * Added examples of grid using WMSCapabilitiesStore (see #9)
  * Clone feature and layer in record.clone (see #34)
  * Set allOverlays in MapPanel (see #35)
+ * Take care not to add records twice in LayerStore (see #36)
  * Merge changes from trunk up to r319
 

Modified: sandbox/opengeo/geoexplorer/tests/lib/GeoExt/data/LayerStore.html
===================================================================
--- sandbox/opengeo/geoexplorer/tests/lib/GeoExt/data/LayerStore.html	2009-04-02 20:47:14 UTC (rev 333)
+++ sandbox/opengeo/geoexplorer/tests/lib/GeoExt/data/LayerStore.html	2009-04-02 20:48:43 UTC (rev 334)
@@ -1,9 +1,9 @@
 <!DOCTYPE html>
 <html debug="true">
   <head>
-    <script type="text/javascript" src="../../../../../../openlayers/lib/OpenLayers.js"></script>
-    <script type="text/javascript" src="../../../../../../ext/2.2.1/adapter/ext/ext-base.js"></script>
-    <script type="text/javascript" src="../../../../../../ext/2.2.1/ext-all-debug.js"></script>
+    <script type="text/javascript" src="../../../../../openlayers/lib/OpenLayers.js"></script>
+    <script type="text/javascript" src="../../../../../ext/adapter/ext/ext-base.js"></script>
+    <script type="text/javascript" src="../../../../../ext/ext-all-debug.js"></script>
     <script type="text/javascript" src="../../../../lib/GeoExt.js"></script>
 
     <script type="text/javascript">
@@ -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