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) {
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() })
);
}
}
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;