webstaff: Protect the cloner from undefined values
authorMike Rylander <mrylander@gmail.com>
Tue, 8 Sep 2015 15:47:27 +0000 (11:47 -0400)
committerJason Stephenson <jstephenson@mvlc.org>
Mon, 14 Sep 2015 19:44:20 +0000 (15:44 -0400)
Signed-off-by: Mike Rylander <mrylander@gmail.com>
Signed-off-by: Galen Charlton <gmc@esilibrary.com>
Signed-off-by: Jason Stephenson <jstephenson@mvlc.org>
Open-ILS/web/js/ui/default/staff/services/idl.js

index 681a63a..fda58d3 100644 (file)
@@ -23,14 +23,18 @@ angular.module('egCoreMod')
     // Clones data structures containing fieldmapper objects
     service.Clone = function(old) {
         var obj;
-        if (old._isfieldmapper) {
+        if (typeof old == 'undefined') {
+            return old;
+        } else if (old._isfieldmapper) {
             obj = new service[old.classname]()
 
             for( var i in old.a ) {
                 var thing = old.a[i];
                 if(thing === null) continue;
 
-                if( thing._isfieldmapper ) {
+                if (typeof thing == 'undefined') {
+                    obj.a[i] = thing;
+                } else if (thing._isfieldmapper) {
                     obj.a[i] = service.Clone(thing);
                 } else {
 
@@ -39,7 +43,9 @@ angular.module('egCoreMod')
 
                         for( var j in thing ) {
 
-                            if( thing[j]._isfieldmapper )
+                            if (typeof thing[j] == 'undefined')
+                                obj.a[i][j] = thing[j];
+                            else if( thing[j]._isfieldmapper )
                                 obj.a[i][j] = service.Clone(thing[j]);
                             else
                                 obj.a[i][j] = angular.copy(thing[j]);
@@ -53,7 +59,9 @@ angular.module('egCoreMod')
             if(angular.isArray(old)) {
                 obj = [];
                 for( var j in old ) {
-                    if( old[j]._isfieldmapper )
+                    if (typeof old[j] == 'undefined')
+                        obj[j] = old[j];
+                    else if( old[j]._isfieldmapper )
                         obj[j] = service.Clone(old[j]);
                     else
                         obj[j] = angular.copy(old[j]);
@@ -61,7 +69,9 @@ angular.module('egCoreMod')
             } else if(angular.isObject(old)) {
                 obj = {};
                 for( var j in old ) {
-                    if( old[j]._isfieldmapper )
+                    if (typeof old[j] == 'undefined')
+                        obj[j] = old[j];
+                    else if( old[j]._isfieldmapper )
                         obj[j] = service.Clone(old[j]);
                     else
                         obj[j] = angular.copy(old[j]);