2016-05-13 18:09:12 +02:00
|
|
|
(function () {
|
|
|
|
'use strict';
|
|
|
|
|
|
|
|
angular.module('ariaNg').controller('DownloadListController', ['$rootScope', '$scope', '$window', '$location', '$interval', 'translateFilter', 'aria2RpcService', 'ariaNgSettingService', 'utils', function ($rootScope, $scope, $window, $location, $interval, translateFilter, aria2RpcService, ariaNgSettingService, utils) {
|
|
|
|
var location = $location.path().substring(1);
|
|
|
|
|
|
|
|
var getTitleWidth = function () {
|
|
|
|
var titleColumn = angular.element('.task-table > .row > .col-md-8:first-child');
|
|
|
|
|
|
|
|
if (titleColumn.length > 0) {
|
|
|
|
return titleColumn.width();
|
|
|
|
} else {
|
|
|
|
var taskTable = angular.element('.task-table');
|
|
|
|
|
|
|
|
if ($window.innerWidth <= 767) {
|
|
|
|
return taskTable.width();
|
|
|
|
} else {
|
|
|
|
return taskTable.width() / 12 * 8;
|
|
|
|
}
|
|
|
|
}
|
|
|
|
};
|
|
|
|
|
|
|
|
var calculateDownloadRemainTime = function (remainBytes, downloadSpeed) {
|
|
|
|
if (downloadSpeed == 0) {
|
|
|
|
return 0;
|
|
|
|
}
|
|
|
|
|
|
|
|
return remainBytes / downloadSpeed;
|
|
|
|
};
|
|
|
|
|
|
|
|
var processDownloadTask = function (task) {
|
|
|
|
var remainLength = task.totalLength - task.completedLength;
|
|
|
|
|
|
|
|
if (task.bittorrent && task.bittorrent.info) {
|
|
|
|
task.taskName = task.bittorrent.info.name;
|
|
|
|
} else if (task.files && task.files.length >= 1) {
|
|
|
|
task.taskName = utils.getFileNameFromPath(task.files[0].path);
|
|
|
|
} else {
|
|
|
|
task.taskName = translateFilter('Unknown');
|
|
|
|
}
|
|
|
|
|
|
|
|
task.completePercent = task.completedLength / task.totalLength * 100;
|
|
|
|
task.idle = task.downloadSpeed == 0;
|
|
|
|
task.remainTime = calculateDownloadRemainTime(remainLength, task.downloadSpeed);
|
|
|
|
};
|
|
|
|
|
|
|
|
$scope.titleWidth = getTitleWidth();
|
|
|
|
|
|
|
|
angular.element($window).bind('resize', function () {
|
|
|
|
$scope.titleWidth = getTitleWidth();
|
|
|
|
});
|
|
|
|
|
|
|
|
$scope.getOrderType = function () {
|
|
|
|
return ariaNgSettingService.getDisplayOrder();
|
|
|
|
};
|
|
|
|
|
|
|
|
if ($rootScope.downloadTaskRefreshTimer) {
|
|
|
|
$interval.cancel($rootScope.downloadTaskRefreshTimer);
|
|
|
|
}
|
|
|
|
|
|
|
|
$rootScope.downloadTaskRefreshTimer = $interval(function () {
|
|
|
|
var invokeMethod = null;
|
|
|
|
var params = [];
|
|
|
|
|
|
|
|
if (location == 'downloading') {
|
|
|
|
invokeMethod = aria2RpcService.tellActive;
|
2016-05-16 15:20:52 +02:00
|
|
|
} else if (location == 'waiting') {
|
2016-05-13 18:09:12 +02:00
|
|
|
invokeMethod = aria2RpcService.tellWaiting;
|
|
|
|
params = [0, 1000];
|
|
|
|
} else if (location == 'downloaded') {
|
|
|
|
invokeMethod = aria2RpcService.tellStopped;
|
|
|
|
params = [0, 1000];
|
|
|
|
}
|
|
|
|
|
|
|
|
if (invokeMethod) {
|
|
|
|
invokeMethod({
|
|
|
|
params: params,
|
|
|
|
callback: function (result) {
|
|
|
|
if (result && result.length > 0) {
|
|
|
|
for (var i = 0; i < result.length; i++) {
|
|
|
|
processDownloadTask(result[i]);
|
|
|
|
}
|
|
|
|
}
|
|
|
|
|
|
|
|
if (!utils.replaceArray(result, $scope.downloadTasks, 'gid')) {
|
|
|
|
$scope.downloadTasks = result;
|
|
|
|
}
|
|
|
|
}
|
|
|
|
});
|
|
|
|
}
|
|
|
|
}, ariaNgSettingService.getDownloadTaskRefreshInterval());
|
|
|
|
}]);
|
|
|
|
})();
|