diff --git a/src-ui/src/app/components/admin/tasks/tasks.component.html b/src-ui/src/app/components/admin/tasks/tasks.component.html index f9e24b5c7..6c3ebcaa6 100644 --- a/src-ui/src/app/components/admin/tasks/tasks.component.html +++ b/src-ui/src/app/components/admin/tasks/tasks.component.html @@ -135,20 +135,20 @@ {{ task.date_created | customDate:'short' }} @if (sectionShowsResults(section)) { - @if (task.result_message?.length > 50) { + @if (taskHasLongResultMessage(task)) {
- {{ task.result_message | slice:0:50 }}… + {{ taskResultPreview(task) }}
} - @if (task.result_message?.length <= 50) { - {{ task.result_message }} + @if (taskHasResultMessage(task) && !taskHasLongResultMessage(task)) { + {{ taskResultMessage(task) }} } -
{{ task.result_message | slice:0:300 }}@if (task.result_message.length > 300) {
+                  
{{ taskResultPopoverMessage(task) }}@if (taskResultMessageOverflowsPopover(task)) {
                     …
                   }
- @if (task.result_message?.length > 300) { + @if (taskResultMessageOverflowsPopover(task)) {
(click for full output) } @@ -178,10 +178,10 @@
- @if (task.result_message) { + @if (taskHasResultMessage(task)) {
Result message
-
{{ task.result_message }}
+
{{ taskResultMessage(task) }}
} diff --git a/src-ui/src/app/components/admin/tasks/tasks.component.spec.ts b/src-ui/src/app/components/admin/tasks/tasks.component.spec.ts index 4b562ab4e..0b7101144 100644 --- a/src-ui/src/app/components/admin/tasks/tasks.component.spec.ts +++ b/src-ui/src/app/components/admin/tasks/tasks.component.spec.ts @@ -48,8 +48,10 @@ const tasks: PaperlessTask[] = [ trigger_source_display: 'Folder Consume', status: PaperlessTaskStatus.Failure, status_display: 'Failure', - result_message: - 'test.pd: Not consuming test.pdf: It is a duplicate of test (#100)', + result_data: { + error_message: + 'test.pd: Not consuming test.pdf: It is a duplicate of test (#100)', + }, acknowledged: false, related_document_ids: [], }, @@ -65,8 +67,7 @@ const tasks: PaperlessTask[] = [ trigger_source_display: 'Folder Consume', status: PaperlessTaskStatus.Failure, status_display: 'Failure', - result_message: - '191092.pd: Not consuming 191092.pdf: It is a duplicate of 191092 (#311)', + result_data: { duplicate_of: 311 }, acknowledged: false, related_document_ids: [], }, @@ -82,7 +83,7 @@ const tasks: PaperlessTask[] = [ trigger_source_display: 'Folder Consume', status: PaperlessTaskStatus.Pending, status_display: 'Pending', - result_message: null, + result_data: null, acknowledged: false, related_document_ids: [], }, @@ -98,7 +99,7 @@ const tasks: PaperlessTask[] = [ trigger_source_display: 'Email Consume', status: PaperlessTaskStatus.Success, status_display: 'Success', - result_message: 'Success. New document id 422 created', + result_data: { document_id: 422 }, acknowledged: false, related_document_ids: [422], }, @@ -114,7 +115,7 @@ const tasks: PaperlessTask[] = [ trigger_source_display: 'Folder Consume', status: PaperlessTaskStatus.Success, status_display: 'Success', - result_message: 'Success. New document id 421 created', + result_data: { document_id: 421 }, acknowledged: false, related_document_ids: [421], }, @@ -130,7 +131,7 @@ const tasks: PaperlessTask[] = [ trigger_source_display: 'Email Consume', status: PaperlessTaskStatus.Started, status_display: 'Started', - result_message: null, + result_data: null, acknowledged: false, related_document_ids: [], }, @@ -146,7 +147,6 @@ const tasks: PaperlessTask[] = [ trigger_source_display: 'System', status: PaperlessTaskStatus.Started, status_display: 'Started', - result_message: null, result_data: { issues_found: 0 }, acknowledged: false, related_document_ids: [], diff --git a/src-ui/src/app/components/admin/tasks/tasks.component.ts b/src-ui/src/app/components/admin/tasks/tasks.component.ts index f926ce5a0..75e555e5c 100644 --- a/src-ui/src/app/components/admin/tasks/tasks.component.ts +++ b/src-ui/src/app/components/admin/tasks/tasks.component.ts @@ -318,6 +318,59 @@ export class TasksComponent return this.taskDisplayName(task) !== task.task_type_display } + taskResultMessage(task: PaperlessTask): string | null { + if (!task.result_data) { + return null + } + + const documentId = task.result_data?.['document_id'] + if (typeof documentId === 'number') { + return `Success. New document id ${documentId} created` + } + + const reason = task.result_data?.['reason'] + if (typeof reason === 'string') { + return reason + } + + const duplicateOf = task.result_data?.['duplicate_of'] + if (typeof duplicateOf === 'number') { + return `Not consuming: It is a duplicate of document #${duplicateOf}` + } + + const errorMessage = task.result_data?.['error_message'] + if (typeof errorMessage === 'string') { + return errorMessage + } + + return null + } + + taskResultPreview(task: PaperlessTask): string | null { + const message = this.taskResultMessage(task) + if (!message) { + return null + } + + return message.length > 50 ? `${message.slice(0, 50)}...` : message + } + + taskHasLongResultMessage(task: PaperlessTask): boolean { + return (this.taskResultMessage(task)?.length ?? 0) > 50 + } + + taskHasResultMessage(task: PaperlessTask): boolean { + return !!this.taskResultMessage(task) + } + + taskResultPopoverMessage(task: PaperlessTask): string { + return this.taskResultMessage(task)?.slice(0, 300) ?? '' + } + + taskResultMessageOverflowsPopover(task: PaperlessTask): boolean { + return (this.taskResultMessage(task)?.length ?? 0) > 300 + } + tasksForSection(section: TaskSection): PaperlessTask[] { let tasks = this.tasksService.allFileTasks.filter((task) => this.taskBelongsToSection(task, section) @@ -451,7 +504,7 @@ export class TasksComponent .some((value) => value.toLowerCase().includes(query)) } - return task.result_message?.toLowerCase().includes(query) + return this.taskResultMessage(task)?.toLowerCase().includes(query) ?? false } private tasksForOptionCounts({ diff --git a/src-ui/src/app/data/paperless-task.ts b/src-ui/src/app/data/paperless-task.ts index 0d0aaa84c..53aba0edd 100644 --- a/src-ui/src/app/data/paperless-task.ts +++ b/src-ui/src/app/data/paperless-task.ts @@ -47,7 +47,6 @@ export interface PaperlessTask extends ObjectWithId { wait_time_seconds?: number input_data: Record result_data?: Record - result_message?: string related_document_ids: number[] acknowledged: boolean owner?: number