This repository has been archived on 2022-01-02. You can view files and clone it, but cannot push or open issues/pull-requests.
AriaNg/app/scripts/controllers/list.js

94 lines
3.5 KiB
JavaScript

(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;
} else if (location == 'scheduling') {
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());
}]);
})();