support restart task
This commit is contained in:
parent
d03de0dc5c
commit
74e3b8f614
|
@ -15,6 +15,7 @@ RPC=RPC
|
|||
New=新建
|
||||
Start=开始任务
|
||||
Pause=暂停任务
|
||||
Restart=重试
|
||||
Delete=删除任务
|
||||
Select All=全选
|
||||
Select None=不选
|
||||
|
@ -96,6 +97,9 @@ Speed=速度
|
|||
No Data=无数据
|
||||
No connected peers=没有连接到其他节点
|
||||
Failed to change some tasks state.=修改一些任务状态时失败.
|
||||
Confirm Restart=确认重试
|
||||
Are you sure you want to restart this task? AriaNg will create a same task after clicking OK.=您是否要重试这个任务? 点击 "确定" 后, AriaNg 将会创建一个相同的任务.
|
||||
Failed to restart this task.=该任务重试失败.
|
||||
Confirm Remove=确认删除
|
||||
Are you sure you want to remove the selected task?=您是否要删除选中的任务?
|
||||
Failed to remove some task(s).=删除一些任务时失败.
|
||||
|
|
|
@ -19,6 +19,7 @@
|
|||
'New': 'New',
|
||||
'Start': 'Start',
|
||||
'Pause': 'Pause',
|
||||
'Restart': 'Restart',
|
||||
'Delete': 'Delete',
|
||||
'Select All': 'Select All',
|
||||
'Select None': 'Select None',
|
||||
|
@ -100,6 +101,9 @@
|
|||
'No Data': 'No Data',
|
||||
'No connected peers': 'No connected peers',
|
||||
'Failed to change some tasks state.': 'Failed to change some tasks state.',
|
||||
'Confirm Restart': 'Confirm Restart',
|
||||
'Are you sure you want to restart this task? AriaNg will create a same task after clicking OK.': 'Are you sure you want to restart this task? AriaNg will create a same task after clicking OK.',
|
||||
'Failed to restart this task.': 'Failed to restart this task.',
|
||||
'Confirm Remove': 'Confirm Remove',
|
||||
'Are you sure you want to remove the selected task?': 'Are you sure you want to remove the selected task?',
|
||||
'Failed to remove some task(s).': 'Failed to remove some task(s).',
|
||||
|
|
|
@ -119,13 +119,13 @@
|
|||
refreshGlobalStat(true);
|
||||
|
||||
if (!response.hasError && state === 'start') {
|
||||
if ($location.path() === '/waiting') {
|
||||
if ($location.path() !== '/downloading') {
|
||||
$location.path('/downloading');
|
||||
} else {
|
||||
$route.reload();
|
||||
}
|
||||
} else if (!response.hasError && state === 'pause') {
|
||||
if ($location.path() === '/downloading') {
|
||||
if ($location.path() !== '/waiting') {
|
||||
$location.path('/waiting');
|
||||
} else {
|
||||
$route.reload();
|
||||
|
@ -134,6 +134,27 @@
|
|||
}, (gids.length > 1));
|
||||
};
|
||||
|
||||
$scope.restart = function (task) {
|
||||
ariaNgCommonService.confirm('Confirm Restart', 'Are you sure you want to restart this task? AriaNg will create a same task after clicking OK.', 'info', function () {
|
||||
$rootScope.loadPromise = aria2TaskService.restartTask(task.gid, function (response) {
|
||||
if (!response.success) {
|
||||
ariaNgCommonService.showError('Failed to restart this task.');
|
||||
return;
|
||||
}
|
||||
|
||||
refreshGlobalStat(true);
|
||||
|
||||
if (response.success) {
|
||||
if ($location.path() !== '/downloading') {
|
||||
$location.path('/downloading');
|
||||
} else {
|
||||
$route.reload();
|
||||
}
|
||||
}
|
||||
}, false);
|
||||
});
|
||||
};
|
||||
|
||||
$scope.removeTasks = function () {
|
||||
var tasks = $rootScope.taskContext.getSelectedTasks();
|
||||
|
||||
|
@ -154,10 +175,10 @@
|
|||
refreshGlobalStat(true);
|
||||
|
||||
if (!response.hasError) {
|
||||
if ($location.path() === '/stopped') {
|
||||
$route.reload();
|
||||
} else {
|
||||
if ($location.path() !== '/stopped') {
|
||||
$location.path('/stopped');
|
||||
} else {
|
||||
$route.reload();
|
||||
}
|
||||
}
|
||||
}, (tasks.length > 1));
|
||||
|
@ -173,10 +194,10 @@
|
|||
|
||||
refreshGlobalStat(true);
|
||||
|
||||
if ($location.path() === '/stopped') {
|
||||
$route.reload();
|
||||
} else {
|
||||
if ($location.path() !== '/stopped') {
|
||||
$location.path('/stopped');
|
||||
} else {
|
||||
$route.reload();
|
||||
}
|
||||
});
|
||||
});
|
||||
|
|
|
@ -1,7 +1,7 @@
|
|||
(function () {
|
||||
'use strict';
|
||||
|
||||
angular.module('ariaNg').factory('aria2TaskService', ['$q', '$translate', 'bittorrentPeeridService', 'aria2Errors', 'aria2RpcService', 'ariaNgCommonService', function ($q, $translate, bittorrentPeeridService, aria2Errors, aria2RpcService, ariaNgCommonService) {
|
||||
angular.module('ariaNg').factory('aria2TaskService', ['$q', '$translate', 'bittorrentPeeridService', 'aria2Errors', 'aria2RpcService', 'ariaNgCommonService', 'ariaNgLogService', function ($q, $translate, bittorrentPeeridService, aria2Errors, aria2RpcService, ariaNgCommonService, ariaNgLogService) {
|
||||
var getFileName = function (file) {
|
||||
if (!file) {
|
||||
return '';
|
||||
|
@ -423,6 +423,100 @@
|
|||
callback: callback
|
||||
});
|
||||
},
|
||||
restartTask: function (gid, callback, silent) {
|
||||
var deferred = $q.defer();
|
||||
|
||||
var methods = [
|
||||
aria2RpcService.tellStatus({gid: gid}, true),
|
||||
aria2RpcService.getOption({gid: gid}, true)
|
||||
];
|
||||
|
||||
var task = null, options = null;
|
||||
|
||||
aria2RpcService.multicall({
|
||||
methods: methods,
|
||||
silent: !!silent,
|
||||
callback: function (response) {
|
||||
if (!callback) {
|
||||
ariaNgLogService.warn("[aria2TaskService.restartTask] callback is null");
|
||||
return;
|
||||
}
|
||||
|
||||
if (!response.success) {
|
||||
ariaNgLogService.warn("[aria2TaskService.restartTask] response is not success");
|
||||
deferred.reject(response);
|
||||
callback(response);
|
||||
return;
|
||||
}
|
||||
|
||||
if (response.data.length > 0) {
|
||||
task = response.data[0][0];
|
||||
}
|
||||
|
||||
if (response.data.length > 1) {
|
||||
options = response.data[1][0];
|
||||
}
|
||||
|
||||
if (!task || !options || !task.files || task.files.length != 1 || task.bittorrent) {
|
||||
if (!task) {
|
||||
ariaNgLogService.warn("[aria2TaskService.restartTask] task is null");
|
||||
}
|
||||
|
||||
if (!options) {
|
||||
ariaNgLogService.warn("[aria2TaskService.restartTask] options is null");
|
||||
}
|
||||
|
||||
if (!task.files) {
|
||||
ariaNgLogService.warn("[aria2TaskService.restartTask] task file is null");
|
||||
}
|
||||
|
||||
if (task.files.length != 1) {
|
||||
ariaNgLogService.warn("[aria2TaskService.restartTask] task file length is not equal 1");
|
||||
}
|
||||
|
||||
if (task.bittorrent) {
|
||||
ariaNgLogService.warn("[aria2TaskService.restartTask] task is bittorrent");
|
||||
}
|
||||
|
||||
deferred.reject(gid);
|
||||
callback({
|
||||
success: false
|
||||
});
|
||||
return;
|
||||
}
|
||||
|
||||
var file = task.files[0];
|
||||
var urls = [];
|
||||
|
||||
for (var i = 0; i < file.uris.length; i++) {
|
||||
var uriObj = file.uris[i];
|
||||
urls.push(uriObj.uri);
|
||||
}
|
||||
|
||||
aria2RpcService.addUri({
|
||||
task: {
|
||||
urls: urls,
|
||||
options: options
|
||||
},
|
||||
pauseOnAdded: false,
|
||||
silent: !!silent,
|
||||
callback: function (response) {
|
||||
if (!response.success) {
|
||||
ariaNgLogService.warn("[aria2TaskService.restartTask] addUri response is not success");
|
||||
deferred.reject(response);
|
||||
callback(response);
|
||||
return;
|
||||
}
|
||||
|
||||
deferred.resolve(response);
|
||||
callback(response);
|
||||
}
|
||||
});
|
||||
}
|
||||
});
|
||||
|
||||
return deferred.promise;
|
||||
},
|
||||
removeTasks: function (tasks, callback, silent) {
|
||||
var runningTaskGids = [];
|
||||
var stoppedTaskGids = [];
|
||||
|
|
|
@ -46,6 +46,7 @@
|
|||
<a ng-href="#/task/detail/{{task.gid}}">
|
||||
<span ng-if="task.files" ng-bind="('format.settings.file-count' | translate: {count: task.selectedFileCount})"></span>
|
||||
</a><i class="icon-error fa fa-times" ng-if="task && task.status == 'error' && task.errorDescription" title="{{task.errorDescription | translate}}"></i><i class="icon-seeder fa fa-arrow-up" ng-if="task && task.status == 'active' && task.seeder" title="{{'Seeding' | translate}}"></i>
|
||||
<a class="pointer-cursor" ng-if="task && task.status == 'error' && task.errorDescription && !task.bittorrent" ng-click="restart(task)" title="{{'Restart' | translate}}" translate>Restart</a>
|
||||
</div>
|
||||
</div>
|
||||
<div class="col-md-2 col-sm-3 col-xs-12">
|
||||
|
|
Reference in a new issue