X-Git-Url: https://git.arvados.org/arvados.git/blobdiff_plain/1c8feea9305ca6fa78ddf1875f893304c3739db8..bef091f69353d5a1ec7ef6c4e84f81756023596b:/apps/workbench/app/assets/javascripts/upload_to_collection.js diff --git a/apps/workbench/app/assets/javascripts/upload_to_collection.js b/apps/workbench/app/assets/javascripts/upload_to_collection.js index 027c54ec90..d66be63853 100644 --- a/apps/workbench/app/assets/javascripts/upload_to_collection.js +++ b/apps/workbench/app/assets/javascripts/upload_to_collection.js @@ -1,3 +1,7 @@ +// Copyright (C) The Arvados Authors. All rights reserved. +// +// SPDX-License-Identifier: AGPL-3.0 + var app = angular.module('Workbench', ['Arvados']); app.controller('UploadToCollection', UploadToCollection); app.directive('arvUuid', arvUuid); @@ -23,13 +27,18 @@ function UploadToCollection($scope, $filter, $q, $timeout, // Angular binding doesn't work its usual magic for file // inputs, so we need to $scope.$apply() this update. $scope.$apply(function(){ - var i; - var insertAt; - for (insertAt=0; (insertAt<$scope.uploadQueue.length && - $scope.uploadQueue[insertAt].state != 'Done'); - insertAt++); + var i, nItemsTodo; + // Add these new files after the items already waiting + // in the queue -- but before the items that are + // 'Done' and have therefore been pushed to the + // bottom. + for (nItemsTodo = 0; + (nItemsTodo < $scope.uploadQueue.length && + $scope.uploadQueue[nItemsTodo].state !== 'Done'); ) { + nItemsTodo++; + } for (i=0; i= 0) { + $scope.uploadQueue[i].state = 'Done'; + $scope.uploadQueue.push.apply( + $scope.uploadQueue, + $scope.uploadQueue.splice(i, 1)); + --i; + --qLen; + } } + }). + then(_deferredAppend.resolve, + _deferredAppend.reject); + return _deferredAppend.promise(). + always(function() { + _deferredAppend = null; }); - return deferred.promise.then(doQueueWork); } } }