[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