2016-05-23 19:06:50 +02:00
|
|
|
(function () {
|
|
|
|
'use strict';
|
|
|
|
|
2016-05-24 19:30:02 +02:00
|
|
|
angular.module('ariaNg').controller('TaskDetailController', ['$rootScope', '$scope', '$routeParams', '$interval', 'aria2RpcService', 'ariaNgSettingService', 'utils', function ($rootScope, $scope, $routeParams, $interval, aria2RpcService, ariaNgSettingService, utils) {
|
|
|
|
var tabOrders = ['overview', 'blocks', 'filelist', 'btpeers'];
|
2016-05-23 19:06:50 +02:00
|
|
|
var downloadTaskRefreshPromise = null;
|
|
|
|
|
2016-05-24 18:20:32 +02:00
|
|
|
var refreshPeers = function (task) {
|
2016-05-24 17:30:33 +02:00
|
|
|
return aria2RpcService.getPeers({
|
2016-05-24 18:20:32 +02:00
|
|
|
params: [task.gid],
|
2016-05-24 17:30:33 +02:00
|
|
|
callback: function (result) {
|
|
|
|
if (!utils.extendArray(result, $scope.peers, 'peerId')) {
|
|
|
|
$scope.peers = result;
|
|
|
|
}
|
2016-05-24 18:20:32 +02:00
|
|
|
|
|
|
|
for (var i = 0; i < $scope.peers.length; i++) {
|
|
|
|
var peer = $scope.peers[i];
|
|
|
|
peer.completePercent = utils.estimateCompletedPercentFromBitField(peer.bitfield) * 100;
|
|
|
|
}
|
2016-05-24 19:30:02 +02:00
|
|
|
|
2016-05-24 18:20:32 +02:00
|
|
|
$scope.healthPercent = utils.estimateHealthPercentFromPeers(task, $scope.peers);
|
2016-05-24 17:30:33 +02:00
|
|
|
}
|
|
|
|
})
|
|
|
|
};
|
|
|
|
|
2016-05-23 19:06:50 +02:00
|
|
|
var refreshDownloadTask = function () {
|
|
|
|
return aria2RpcService.tellStatus({
|
|
|
|
params: [$routeParams.gid],
|
|
|
|
callback: function (result) {
|
|
|
|
var task = utils.processDownloadTask(result);
|
2016-05-24 17:30:33 +02:00
|
|
|
|
|
|
|
if (task.status == 'active' && task.bittorrent) {
|
2016-05-24 18:20:32 +02:00
|
|
|
refreshPeers(task);
|
2016-05-24 19:30:02 +02:00
|
|
|
} else {
|
|
|
|
if (tabOrders.indexOf('btpeers') >= 0) {
|
|
|
|
tabOrders.splice(tabOrders.indexOf('btpeers'), 1);
|
|
|
|
}
|
2016-05-24 17:30:33 +02:00
|
|
|
}
|
|
|
|
|
2016-05-23 19:06:50 +02:00
|
|
|
$scope.task = utils.copyObjectTo(task, $scope.task);
|
|
|
|
}
|
|
|
|
})
|
|
|
|
};
|
|
|
|
|
|
|
|
$scope.context = {
|
|
|
|
currentTab: 'overview'
|
|
|
|
};
|
|
|
|
|
2016-05-24 18:20:32 +02:00
|
|
|
$scope.healthPercent = 0;
|
2016-05-23 19:06:50 +02:00
|
|
|
$scope.loadPromise = refreshDownloadTask();
|
|
|
|
|
2016-05-24 19:30:02 +02:00
|
|
|
$rootScope.swipeActions.extentLeftSwipe = function () {
|
|
|
|
var tabIndex = tabOrders.indexOf($scope.context.currentTab);
|
|
|
|
|
|
|
|
if (tabIndex < tabOrders.length - 1) {
|
|
|
|
$scope.context.currentTab = tabOrders[tabIndex + 1];
|
|
|
|
return true;
|
|
|
|
} else {
|
|
|
|
return false;
|
|
|
|
}
|
|
|
|
};
|
|
|
|
|
|
|
|
$rootScope.swipeActions.extentRightSwipe = function () {
|
|
|
|
var tabIndex = tabOrders.indexOf($scope.context.currentTab);
|
|
|
|
|
|
|
|
if (tabIndex > 0) {
|
|
|
|
$scope.context.currentTab = tabOrders[tabIndex - 1];
|
|
|
|
return true;
|
|
|
|
} else {
|
|
|
|
return false;
|
|
|
|
}
|
|
|
|
};
|
|
|
|
|
2016-05-23 19:06:50 +02:00
|
|
|
if (ariaNgSettingService.getDownloadTaskRefreshInterval() > 0) {
|
|
|
|
downloadTaskRefreshPromise = $interval(function () {
|
|
|
|
refreshDownloadTask();
|
|
|
|
}, ariaNgSettingService.getDownloadTaskRefreshInterval());
|
|
|
|
}
|
|
|
|
|
|
|
|
$scope.$on('$destroy', function () {
|
|
|
|
if (downloadTaskRefreshPromise) {
|
|
|
|
$interval.cancel(downloadTaskRefreshPromise);
|
|
|
|
}
|
|
|
|
});
|
|
|
|
}]);
|
|
|
|
})();
|