[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