[Commits] r1362 - in core/trunk/geoext: lib/GeoExt/data tests/lib/GeoExt/data
commits at geoext.org
commits at geoext.org
Mon Sep 14 10:09:32 CEST 2009
Author: bbinet
Date: 2009-09-14 10:09:32 +0200 (Mon, 14 Sep 2009)
New Revision: 1362
Modified:
core/trunk/geoext/lib/GeoExt/data/LayerRecord.js
core/trunk/geoext/tests/lib/GeoExt/data/LayerRecord.html
Log:
adds a clone method to LayerRecord in order to perform a deep copy. r=sbenthall (closes #58)
Modified: core/trunk/geoext/lib/GeoExt/data/LayerRecord.js
===================================================================
--- core/trunk/geoext/lib/GeoExt/data/LayerRecord.js 2009-09-12 07:29:55 UTC (rev 1361)
+++ core/trunk/geoext/lib/GeoExt/data/LayerRecord.js 2009-09-14 08:09:32 UTC (rev 1362)
@@ -27,6 +27,20 @@
{name: "title", type: "string", mapping: "name"}
]);
+/** api: method[clone]
+ * :param id: ``String`` (optional) A new Record id.
+ * :return: ``GeoExt.data.LayerRecord`` A new layer record.
+ *
+ * Creates a clone of this LayerRecord.
+ */
+GeoExt.data.LayerRecord.prototype.clone = function(id) {
+ var layer = this.get("layer") && this.get("layer").clone();
+ return new this.constructor(
+ Ext.applyIf({layer: layer}, this.data),
+ id || layer.id
+ );
+};
+
/** api: classmethod[create]
* :param o: ``Array`` Field definition as in ``Ext.data.Record.create``. Can
* be omitted if no additional fields are required.
Modified: core/trunk/geoext/tests/lib/GeoExt/data/LayerRecord.html
===================================================================
--- core/trunk/geoext/tests/lib/GeoExt/data/LayerRecord.html 2009-09-12 07:29:55 UTC (rev 1361)
+++ core/trunk/geoext/tests/lib/GeoExt/data/LayerRecord.html 2009-09-14 08:09:32 UTC (rev 1362)
@@ -43,6 +43,27 @@
record = new c({layer: layer, title: layer.name, foo: "bar"}, layer.id);
t.eq(record.get("foo"), "bar", "foo data row set correctly");
}
+
+
+ function test_clone(t) {
+
+ t.plan(4);
+
+ var layer = new OpenLayers.Layer();
+ var recordType = GeoExt.data.LayerRecord.create();
+
+ var record = new recordType({layer: layer, title: layer.name});
+ var clone = record.clone();
+
+ t.ok(clone.id !== record.id, "clone record does not have original id");
+ t.ok(clone.id == clone.get("layer").id, "clone record id is same as its layer id");
+
+ record.set("title", "foo");
+ t.ok(clone.get("title") !== "foo", "setting a property on original doesn't modify clone");
+
+ t.ok(clone.get("layer") !== layer, "clone does not have original layer");
+
+ }
</script>
<body>
More information about the Commits
mailing list