From 7a53390ef6496940dd7999b842b0be368c789123 Mon Sep 17 00:00:00 2001 From: Dan Wells Date: Thu, 11 Oct 2018 09:21:05 -0400 Subject: [PATCH] LP#1796971 Wait for call number and copy before loading locations In cases where add a copy to a call number, we fetch the original call number via async, then attach the new copy to it. Before this commit, however, we were not waiting for the call number fetch promise to resolve, so the copy wasn't there to use for limiting the location load. Since the async request is internal to a loop, one way out is to capture that promise, then make sure it resolves before loading the locations. (We previously returned the copies from the internal function, but that value wasn't being used anyway, so we don't worry about unwrapping the $q.all() when it resolves.) Signed-off-by: Dan Wells --- Open-ILS/web/js/ui/default/staff/cat/volcopy/app.js | 7 ++++--- 1 file changed, 4 insertions(+), 3 deletions(-) diff --git a/Open-ILS/web/js/ui/default/staff/cat/volcopy/app.js b/Open-ILS/web/js/ui/default/staff/cat/volcopy/app.js index 08ceb661b4..a289134ad5 100644 --- a/Open-ILS/web/js/ui/default/staff/cat/volcopy/app.js +++ b/Open-ILS/web/js/ui/default/staff/cat/volcopy/app.js @@ -1525,12 +1525,13 @@ function($scope , $q , $window , $routeParams , $location , $timeout , egCore , * All can be left out and a completely empty vol/copy combo will be vivicated. */ + var promises = []; angular.forEach( data.raw, function (proto) { if (proto.fast_add) $scope.is_fast_add = true; if (proto.callnumber) { - return egCore.pcrud.retrieve('acn', proto.callnumber) + promises.push(egCore.pcrud.retrieve('acn', proto.callnumber) .then(function(cn) { var cp = new itemSvc.generateNewCopy( cn, @@ -1545,7 +1546,7 @@ function($scope , $q , $window , $routeParams , $location , $timeout , egCore , } itemSvc.addCopy(cp) - }); + })); } else { var cn = new egCore.idl.acn(); cn.id( --itemSvc.new_cn_id ); @@ -1612,7 +1613,7 @@ function($scope , $q , $window , $routeParams , $location , $timeout , egCore , } }); - return itemSvc.copies; + return $q.all(promises); } if (data.copies && data.copies.length) -- 2.11.0