[Commits] r400 - in core/trunk/geoext: lib/GeoExt/data tests/lib/GeoExt/data

commits at geoext.org commits at geoext.org
Thu Apr 16 08:32:40 CEST 2009


Author: elemoine
Date: 2009-04-16 08:32:40 +0200 (Thu, 16 Apr 2009)
New Revision: 400

Modified:
   core/trunk/geoext/lib/GeoExt/data/FeatureRecord.js
   core/trunk/geoext/lib/GeoExt/data/LayerRecord.js
   core/trunk/geoext/tests/lib/GeoExt/data/FeatureRecord.html
   core/trunk/geoext/tests/lib/GeoExt/data/LayerRecord.html
Log:
FeatureRecord.create and LayerRecord.create should not modify globally defined prototypes, initial patch from sbenthall, r=me (closes #40)


Modified: core/trunk/geoext/lib/GeoExt/data/FeatureRecord.js
===================================================================
--- core/trunk/geoext/lib/GeoExt/data/FeatureRecord.js	2009-04-15 20:16:30 UTC (rev 399)
+++ core/trunk/geoext/lib/GeoExt/data/FeatureRecord.js	2009-04-16 06:32:40 UTC (rev 400)
@@ -55,10 +55,24 @@
 GeoExt.data.FeatureRecord.create = function(o) {
     var f = Ext.extend(GeoExt.data.FeatureRecord, {});
     var p = f.prototype;
+
+    p.fields = new Ext.util.MixedCollection(false, function(field) {
+        return field.name;
+    });
+
+    GeoExt.data.FeatureRecord.prototype.fields.each(function(f) {
+        p.fields.add(f);
+    });
+
     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: core/trunk/geoext/lib/GeoExt/data/LayerRecord.js
===================================================================
--- core/trunk/geoext/lib/GeoExt/data/LayerRecord.js	2009-04-15 20:16:30 UTC (rev 399)
+++ core/trunk/geoext/lib/GeoExt/data/LayerRecord.js	2009-04-16 06:32:40 UTC (rev 400)
@@ -63,10 +63,24 @@
 GeoExt.data.LayerRecord.create = function(o) {
     var f = Ext.extend(GeoExt.data.LayerRecord, {});
     var p = f.prototype;
+
+    p.fields = new Ext.util.MixedCollection(false, function(field) {
+        return field.name;
+    });
+
+    GeoExt.data.LayerRecord.prototype.fields.each(function(f) {
+        p.fields.add(f);
+    });
+
     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: core/trunk/geoext/tests/lib/GeoExt/data/FeatureRecord.html
===================================================================
--- core/trunk/geoext/tests/lib/GeoExt/data/FeatureRecord.html	2009-04-15 20:16:30 UTC (rev 399)
+++ core/trunk/geoext/tests/lib/GeoExt/data/FeatureRecord.html	2009-04-16 06:32:40 UTC (rev 400)
@@ -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,9 @@
                  "\"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(o)\" 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: core/trunk/geoext/tests/lib/GeoExt/data/LayerRecord.html
===================================================================
--- core/trunk/geoext/tests/lib/GeoExt/data/LayerRecord.html	2009-04-15 20:16:30 UTC (rev 399)
+++ core/trunk/geoext/tests/lib/GeoExt/data/LayerRecord.html	2009-04-16 06:32:40 UTC (rev 400)
@@ -9,7 +9,7 @@
     <script type="text/javascript">
        
         function test_layerrecord(t) {
-            t.plan(12);
+            t.plan(13);
 
             var c, layer, record;
             
@@ -31,6 +31,8 @@
                  "\"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(o)\" method does not modify class prototype's fields");
 
             layer = new OpenLayers.Layer();
             record = new c({layer: layer, title: layer.name}, layer.id);



More information about the Commits mailing list