diff --git a/src-ui/src/app/components/manage/tasks/tasks.component.html b/src-ui/src/app/components/manage/tasks/tasks.component.html index e0249865d..dff538f3a 100644 --- a/src-ui/src/app/components/manage/tasks/tasks.component.html +++ b/src-ui/src/app/components/manage/tasks/tasks.component.html @@ -18,7 +18,7 @@ - +
Loading...
@@ -62,21 +62,21 @@ diff --git a/src-ui/src/app/components/manage/tasks/tasks.component.ts b/src-ui/src/app/components/manage/tasks/tasks.component.ts index b9d394acc..873325b7d 100644 --- a/src-ui/src/app/components/manage/tasks/tasks.component.ts +++ b/src-ui/src/app/components/manage/tasks/tasks.component.ts @@ -34,9 +34,10 @@ export class TasksComponent implements OnInit, OnDestroy { } dismissTasks(task: PaperlessTask = undefined) { - this.tasksService.dismissTasks( - task ? new Set([task.id]) : this.selectedTasks - ) + let tasks = task ? new Set([task.id]) : this.selectedTasks + if (this.selectedTasks.size == 0) + tasks = new Set(this.currentTasks.map((t) => t.id)) + this.tasksService.dismissTasks(tasks) } toggleSelected(task: PaperlessTask) { @@ -49,13 +50,13 @@ export class TasksComponent implements OnInit, OnDestroy { let tasks: PaperlessTask[] switch (this.activeTab) { case 'incomplete': - tasks = this.tasksService.incomplete + tasks = this.tasksService.incompleteFileTasks break case 'completed': - tasks = this.tasksService.completed + tasks = this.tasksService.completedFileTasks break case 'failed': - tasks = this.tasksService.failed + tasks = this.tasksService.failedFileTasks break default: break diff --git a/src-ui/src/app/data/paperless-task.ts b/src-ui/src/app/data/paperless-task.ts index cc864710c..f906f9ae2 100644 --- a/src-ui/src/app/data/paperless-task.ts +++ b/src-ui/src/app/data/paperless-task.ts @@ -1,6 +1,22 @@ import { ObjectWithId } from './object-with-id' +export enum PaperlessTaskType { + // just file tasks, for now + File = 'file', +} + +export enum PaperlessTaskStatus { + Incomplete = 'incomplete', + Complete = 'complete', + Failed = 'failed', + Unknown = 'unknown', +} + export interface PaperlessTask extends ObjectWithId { + type: PaperlessTaskType + + status: PaperlessTaskStatus + acknowledged: boolean task_id: string diff --git a/src-ui/src/app/services/tasks.service.ts b/src-ui/src/app/services/tasks.service.ts index 82722e0ab..f6faccaa6 100644 --- a/src-ui/src/app/services/tasks.service.ts +++ b/src-ui/src/app/services/tasks.service.ts @@ -1,16 +1,13 @@ import { HttpClient } from '@angular/common/http' import { Injectable } from '@angular/core' import { first, map } from 'rxjs/operators' -import { PaperlessTask } from 'src/app/data/paperless-task' +import { + PaperlessTask, + PaperlessTaskStatus, + PaperlessTaskType, +} from 'src/app/data/paperless-task' import { environment } from 'src/environments/environment' -interface TasksAPIResponse { - total: number - incomplete: Array - completed: Array - failed: Array -} - @Injectable({ providedIn: 'root', }) @@ -19,21 +16,26 @@ export class TasksService { loading: boolean - public total: number + private fileTasks: PaperlessTask[] = [] - private incompleteTasks: PaperlessTask[] = [] - public get incomplete(): PaperlessTask[] { - return this.incompleteTasks + public get total(): number { + return this.fileTasks?.length } - private completedTasks: PaperlessTask[] = [] - public get completed(): PaperlessTask[] { - return this.completedTasks + public get incompleteFileTasks(): PaperlessTask[] { + return this.fileTasks.filter( + (t) => t.status == PaperlessTaskStatus.Incomplete + ) } - private failedTasks: PaperlessTask[] = [] - public get failed(): PaperlessTask[] { - return this.failedTasks + public get completedFileTasks(): PaperlessTask[] { + return this.fileTasks.filter( + (t) => t.status == PaperlessTaskStatus.Complete + ) + } + + public get failedFileTasks(): PaperlessTask[] { + return this.fileTasks.filter((t) => t.status == PaperlessTaskStatus.Failed) } constructor(private http: HttpClient) {} @@ -42,13 +44,10 @@ export class TasksService { this.loading = true this.http - .get(`${this.baseUrl}tasks/`) + .get(`${this.baseUrl}tasks/`) .pipe(first()) .subscribe((r) => { - this.total = r.total - this.incompleteTasks = r.incomplete - this.completedTasks = r.completed - this.failedTasks = r.failed + this.fileTasks = r.filter((t) => t.type == PaperlessTaskType.File) // they're all File tasks, for now this.loading = false return true })