From 74812e9ba66270b667e99ea146cd4288f7afef01 Mon Sep 17 00:00:00 2001 From: MaysWind Date: Sun, 7 Apr 2019 14:23:56 +0800 Subject: [PATCH] add select all failed tasks --- src/langs/zh_Hans.txt | 1 + src/langs/zh_Hant.txt | 1 + src/scripts/config/defaultLanguage.js | 1 + src/scripts/controllers/main.js | 12 ++++-- src/scripts/core/root.js | 61 +++++++++++++++++++++++++++ src/views/list.html | 6 +++ 6 files changed, 78 insertions(+), 4 deletions(-) diff --git a/src/langs/zh_Hans.txt b/src/langs/zh_Hans.txt index b4f43e2..a9b6e2f 100644 --- a/src/langs/zh_Hans.txt +++ b/src/langs/zh_Hans.txt @@ -23,6 +23,7 @@ Delete=删除任务 Select All=全部选中 Select None=全部不选 Select Invert=反向选择 +Select All Failed Task=全选失败任务 Display Order=显示顺序 Copy Download Url=复制下载链接 Copy Magnet Link=复制磁力链接 diff --git a/src/langs/zh_Hant.txt b/src/langs/zh_Hant.txt index 23a3735..fdfb33f 100644 --- a/src/langs/zh_Hant.txt +++ b/src/langs/zh_Hant.txt @@ -23,6 +23,7 @@ Delete=刪除工作 Select All=全部選中 Select None=全部不選 Select Invert=反向選擇 +Select All Failed Task=全選失敗工作 Display Order=顯示順序 Copy Download Url=複製下載連結 Copy Magnet Link=複製磁力連結 diff --git a/src/scripts/config/defaultLanguage.js b/src/scripts/config/defaultLanguage.js index 78a1b06..b2f53e1 100644 --- a/src/scripts/config/defaultLanguage.js +++ b/src/scripts/config/defaultLanguage.js @@ -27,6 +27,7 @@ 'Select All': 'Select All', 'Select None': 'Select None', 'Select Invert': 'Select Invert', + 'Select All Failed Task': 'Select All Failed Task', 'Display Order': 'Display Order', 'Copy Download Url': 'Copy Download Url', 'Copy Magnet Link': 'Copy Magnet Link', diff --git a/src/scripts/controllers/main.js b/src/scripts/controllers/main.js index 7b8869b..c9cbffc 100644 --- a/src/scripts/controllers/main.js +++ b/src/scripts/controllers/main.js @@ -197,8 +197,8 @@ }); }; - $scope.isTaskRetryable = function (task) { - return task && task.status === 'error' && task.errorDescription && !task.bittorrent; + $scope.hasRetryableTask = function () { + return $rootScope.taskContext.hasRetryableTask(); }; $scope.isSelectedTaskRetryable = function () { @@ -209,7 +209,7 @@ } for (var i = 0; i < selectedTasks.length; i++) { - if (!$scope.isTaskRetryable(selectedTasks[i])) { + if (!$rootScope.isTaskRetryable(selectedTasks[i])) { return false; } } @@ -230,7 +230,7 @@ var skipCount = 0; for (var i = 0; i < tasks.length; i++) { - if ($scope.isTaskRetryable(tasks[i])) { + if ($rootScope.isTaskRetryable(tasks[i])) { retryableTasks.push(tasks[i]); } else { skipCount++; @@ -322,6 +322,10 @@ $rootScope.taskContext.selectAll(); }; + $scope.selectAllFailedTasks = function () { + $rootScope.taskContext.selectAllFailed(); + }; + $scope.copySelectedOneTaskDownloadLink = function () { var selectedTasks = $rootScope.taskContext.getSelectedTasks(); diff --git a/src/scripts/core/root.js b/src/scripts/core/root.js index 5b3e575..39d1cef 100644 --- a/src/scripts/core/root.js +++ b/src/scripts/core/root.js @@ -151,6 +151,21 @@ return isAllSelected; }, + hasRetryableTask: function () { + for (var i = 0; i < this.list.length; i++) { + var task = this.list[i]; + + if (!$rootScope.filterTask(task)) { + continue; + } + + if ($rootScope.isTaskRetryable(task)) { + return true; + } + } + + return false; + }, selectAll: function () { if (!this.list || !this.selected || this.list.length < 1) { return; @@ -171,6 +186,48 @@ this.selected[task.gid] = !isAllSelected; } + }, + selectAllFailed: function () { + if (!this.list || !this.selected || this.list.length < 1) { + return; + } + + if (!this.enableSelectAll) { + return; + } + + var isAllFailedSelected = true; + + for (var i = 0; i < this.list.length; i++) { + var task = this.list[i]; + + if (!$rootScope.filterTask(task)) { + continue; + } + + if (!$rootScope.isTaskRetryable(task)) { + continue; + } + + if (!this.selected[task.gid]) { + isAllFailedSelected = false; + } + } + + for (var i = 0; i < this.list.length; i++) { + var task = this.list[i]; + + if (!$rootScope.filterTask(task)) { + continue; + } + + if (!$rootScope.isTaskRetryable(task)) { + this.selected[task.gid] = false; + continue; + } + + this.selected[task.gid] = !isAllFailedSelected; + } } }; @@ -186,6 +243,10 @@ return (task.taskName.toLowerCase().indexOf($rootScope.searchContext.text.toLowerCase()) >= 0); }; + $rootScope.isTaskRetryable = function (task) { + return task && task.status === 'error' && task.errorDescription && !task.bittorrent; + }; + $rootScope.swipeActions = { leftSwipe: function () { if (isSidebarShowInSmallScreen()) { diff --git a/src/views/list.html b/src/views/list.html index 97ae791..bff00e5 100644 --- a/src/views/list.html +++ b/src/views/list.html @@ -164,6 +164,12 @@ Select All +
  • + + + Select All Failed Task + +