From: Mike Rylander Date: Wed, 31 May 2017 15:51:37 +0000 (-0400) Subject: webstaff: correct merge error of idl.Clone (and also simplify it); protect against... X-Git-Url: https://old-git.evergreen-ils.org/?a=commitdiff_plain;h=1b27a89bf7d9a263ca0ec9d23ec4a1e20cf14473;p=working%2FEvergreen.git webstaff: correct merge error of idl.Clone (and also simplify it); protect against deleted or missing data Signed-off-by: Mike Rylander --- diff --git a/Open-ILS/web/js/ui/default/staff/serials/services/core.js b/Open-ILS/web/js/ui/default/staff/serials/services/core.js index 47d1bf59c2..5f057c43bc 100644 --- a/Open-ILS/web/js/ui/default/staff/serials/services/core.js +++ b/Open-ILS/web/js/ui/default/staff/serials/services/core.js @@ -185,7 +185,8 @@ function(egCore , orderByFilter , $q , $filter , $uibModal , ngToast , egConfirm service.fetchLastCallnumber = function(contextOrg) { return egCore.pcrud.search('acn', { record : service.bibId, - owning_lib : contextOrg + owning_lib : contextOrg, + deleted : 'f' }, { order_by : [{class:'acn',field:'create_date',direction:'desc'}], limit : 1 }, { atomic : true } ).then(function(list) { @@ -819,7 +820,7 @@ function(egCore , orderByFilter , $q , $filter , $uibModal , ngToast , egConfirm pile_o_promises.push( service.fetchLastCallnumber( i.stream().distribution().holding_lib().id() - ).then(function(cn){ i._call_number = cn.label() }) + ).then(function(cn){ if (cn) i._call_number = cn.label() }) ); } } diff --git a/Open-ILS/web/js/ui/default/staff/services/idl.js b/Open-ILS/web/js/ui/default/staff/services/idl.js index af626f2bfd..629e5958e0 100644 --- a/Open-ILS/web/js/ui/default/staff/services/idl.js +++ b/Open-ILS/web/js/ui/default/staff/services/idl.js @@ -24,61 +24,28 @@ angular.module('egCoreMod') service.Clone = function(old, depth) { if (depth === undefined) depth = 100; var obj; - if (typeof old == 'undefined') { + if (typeof old == 'undefined' || old === null) { 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 (typeof thing == 'undefined') { - obj.a[i] = thing; - } else if (thing._isfieldmapper) { - if (depth) obj.a[i] = service.Clone(thing, depth - 1); - } else { - if(angular.isArray(thing)) { - obj.a[i] = []; - - for( var j in thing ) { - - if (typeof thing[j] == 'undefined') { - obj.a[i][j] = thing[j]; - } else if( thing[j]._isfieldmapper ) { - if (depth) obj.a[i][j] = service.Clone(thing[j], depth - 1); - } else { - obj.a[i][j] = angular.copy(thing[j]); - } - } - } - } - } + if (old.a) obj.a = service.Clone(old.a, depth); // pass same depth because we're still cloning this same object } else { if(angular.isArray(old)) { obj = []; - for( var j in old ) { - if (typeof old[j] == 'undefined') { - obj[j] = old[j]; - } else if( old[j]._isfieldmapper ) { - if (depth) obj[j] = service.Clone(old[j], depth - 1); - } else { - obj[j] = angular.copy(old[j]); - } - } } else if(angular.isObject(old)) { obj = {}; - for( var j in old ) { - if (typeof old[j] == 'undefined') { - obj[j] = old[j]; - } else if( old[j]._isfieldmapper ) { - if (depth) obj[j] = service.Clone(old[j], depth - 1); - } else { - obj[j] = angular.copy(old[j]); - } - } } else { - obj = angular.copy(old); + return angular.copy(old); + } + + for( var j in old ) { + if (old[j] === null || typeof old[j] == 'undefined') { + obj[j] = old[j]; + } else if( old[j]._isfieldmapper ) { + if (depth) obj[j] = service.Clone(old[j], depth - 1); + } else { + obj[j] = angular.copy(old[j]); + } } } return obj;