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

commits at geoext.org commits at geoext.org
Tue Apr 14 22:32:13 CEST 2009


Author: sbenthall
Date: 2009-04-14 22:32:13 +0200 (Tue, 14 Apr 2009)
New Revision: 382

Modified:
   sandbox/opengeo/geoexplorer/lib/GeoExt/data/FeatureRecord.js
   sandbox/opengeo/geoexplorer/lib/GeoExt/data/LayerRecord.js
   sandbox/opengeo/geoexplorer/modifications.txt
   sandbox/opengeo/geoexplorer/tests/lib/GeoExt/data/FeatureRecord.html
   sandbox/opengeo/geoexplorer/tests/lib/GeoExt/data/LayerRecord.html
Log:
Made FeatureRecord.create() and LayerRecord.create() not modify prototype fields. (see #40)


Modified: sandbox/opengeo/geoexplorer/lib/GeoExt/data/FeatureRecord.js
===================================================================
--- sandbox/opengeo/geoexplorer/lib/GeoExt/data/FeatureRecord.js	2009-04-14 18:50:41 UTC (rev 381)
+++ sandbox/opengeo/geoexplorer/lib/GeoExt/data/FeatureRecord.js	2009-04-14 20:32:13 UTC (rev 382)
@@ -55,10 +55,25 @@
 GeoExt.data.FeatureRecord.create = function(o) {
     var f = Ext.extend(GeoExt.data.FeatureRecord, {});
     var p = f.prototype;
-    if(o) {
+
+    var oldFields = p.fields;    
+    p.fields = new Ext.util.MixedCollection(false, function(field){
+        return field.name;
+    });
+
+    oldFields.each(function(field){
+        p.fields.add(field);
+    });
+
+    if(o){
         for(var i = 0, len = o.length; i < len; i++){
             p.fields.add(new Ext.data.Field(o[i]));
         }
     }
+
+    f.getField = function(name){
+        return p.fields.get(name);
+    };
+
     return f;
 };

Modified: sandbox/opengeo/geoexplorer/lib/GeoExt/data/LayerRecord.js
===================================================================
--- sandbox/opengeo/geoexplorer/lib/GeoExt/data/LayerRecord.js	2009-04-14 18:50:41 UTC (rev 381)
+++ sandbox/opengeo/geoexplorer/lib/GeoExt/data/LayerRecord.js	2009-04-14 20:32:13 UTC (rev 382)
@@ -63,10 +63,25 @@
 GeoExt.data.LayerRecord.create = function(o) {
     var f = Ext.extend(GeoExt.data.LayerRecord, {});
     var p = f.prototype;
-    if(o) {
+
+    var oldFields = p.fields;    
+    p.fields = new Ext.util.MixedCollection(false, function(field){
+        return field.name;
+    });
+
+    oldFields.each(function(field){
+        p.fields.add(field);
+    });
+
+    if(o){
         for(var i = 0, len = o.length; i < len; i++){
             p.fields.add(new Ext.data.Field(o[i]));
         }
     }
+
+    f.getField = function(name){
+        return p.fields.get(name);
+    };
+
     return f;
 };

Modified: sandbox/opengeo/geoexplorer/modifications.txt
===================================================================
--- sandbox/opengeo/geoexplorer/modifications.txt	2009-04-14 18:50:41 UTC (rev 381)
+++ sandbox/opengeo/geoexplorer/modifications.txt	2009-04-14 20:32:13 UTC (rev 382)
@@ -6,4 +6,5 @@
  * Add WMSCapabilitiesStore (see #9)
  * Added examples of grid using WMSCapabilitiesStore (see #9)
  * Added (with some tweaks) LegendPanel from GeoExt #2
+ * Made FeatureRecord.create() and LayerRecord.create() not modify prototype fields. (see #40)
 

Modified: sandbox/opengeo/geoexplorer/tests/lib/GeoExt/data/FeatureRecord.html
===================================================================
--- sandbox/opengeo/geoexplorer/tests/lib/GeoExt/data/FeatureRecord.html	2009-04-14 18:50:41 UTC (rev 381)
+++ sandbox/opengeo/geoexplorer/tests/lib/GeoExt/data/FeatureRecord.html	2009-04-14 20:32:13 UTC (rev 382)
@@ -10,7 +10,7 @@
     <script type="text/javascript">
        
         function test_featurerecord(t) {
-            t.plan(14);
+            t.plan(15);
 
             var c, feature, record;
             
@@ -36,6 +36,8 @@
                  "\"create(o)\" returns a func with a \"extra1\" field in its prototype"); 
             t.eq(c.prototype.fields.items[4].name, "extra2",
                  "\"create(o)\" returns a func with a \"extra2\" field in its prototype"); 
+            t.eq(GeoExt.data.FeatureRecord.prototype.fields.items.length, 3, "create() method does not modify class prototype's fields");
+        
 
             feature = new OpenLayers.Feature();
             record = new c({feature: feature, state: feature.state, fid: feature.fid}, feature.id);

Modified: sandbox/opengeo/geoexplorer/tests/lib/GeoExt/data/LayerRecord.html
===================================================================
--- sandbox/opengeo/geoexplorer/tests/lib/GeoExt/data/LayerRecord.html	2009-04-14 18:50:41 UTC (rev 381)
+++ sandbox/opengeo/geoexplorer/tests/lib/GeoExt/data/LayerRecord.html	2009-04-14 20:32:13 UTC (rev 382)
@@ -9,7 +9,7 @@
     <script type="text/javascript">
        
         function test_layerrecord(t) {
-            t.plan(12);
+            t.plan(13);
 
             var c, layer, record;
             
@@ -31,7 +31,9 @@
                  "\"create(o)\" returns a func with a \"extra1\" field in its prototype"); 
             t.eq(c.prototype.fields.items[3].name, "extra2",
                  "\"create(o)\" returns a func with a \"extra2\" field in its prototype"); 
+            t.eq(GeoExt.data.LayerRecord.prototype.fields.items.length, 2, "create() method does not modify class prototype's fields");
 
+
             layer = new OpenLayers.Layer();
             record = new c({layer: layer, title: layer.name}, layer.id);
             t.ok(record instanceof GeoExt.data.LayerRecord, "create returns a constructor (LayerRecord)");



More information about the Commits mailing list