mirror of
https://github.com/paperless-ngx/paperless-ngx.git
synced 2026-10-20 06:48:16 +00:00
Fix: dont paginate 'all' tasks view across sections (#14484)
This commit is contained in:
1 parent
a8b835fcd0
commit
b1738c85d7
5 files changed
+161
-62
No files matched your search
@@ -15,6 +15,9 @@ import {
|
||||
distinctUntilChanged,
|
||||
filter,
|
||||
first,
|
||||
forkJoin,
|
||||
map,
|
||||
Observable,
|
||||
Subject,
|
||||
takeUntil,
|
||||
timer,
|
||||
@@ -25,6 +28,7 @@ import {
|
||||
PaperlessTaskTriggerSource,
|
||||
PaperlessTaskType,
|
||||
} from 'src/app/data/paperless-task'
|
||||
import { Results } from 'src/app/data/results'
|
||||
import { IfPermissionsDirective } from 'src/app/directives/if-permissions.directive'
|
||||
import { CustomDatePipe } from 'src/app/pipes/custom-date.pipe'
|
||||
import { TasksService } from 'src/app/services/tasks.service'
|
||||
@@ -169,6 +173,7 @@ export class TasksComponent
|
||||
public expandedTask: number
|
||||
public autoRefreshEnabled: boolean = true
|
||||
public readonly pageSize = 25
|
||||
public readonly overviewSize = 10
|
||||
public page: number = 1
|
||||
readonly totalTasks = signal(0)
|
||||
readonly sectionCounts = signal<Record<TaskSection, number>>({
|
||||
@@ -484,13 +489,6 @@ export class TasksComponent
|
||||
return this.sectionCounts()[section]
|
||||
}
|
||||
|
||||
private setSectionCount(section: TaskSection, count: number) {
|
||||
this.sectionCounts.update((counts) => ({
|
||||
...counts,
|
||||
[section]: count,
|
||||
}))
|
||||
}
|
||||
|
||||
sectionShowsResults(section: TaskSection): boolean {
|
||||
return section !== TaskSection.InProgress
|
||||
}
|
||||
@@ -737,21 +735,12 @@ export class TasksComponent
|
||||
this.reloadSectionCounts()
|
||||
|
||||
this.loading.set(true)
|
||||
this.tasksService
|
||||
.list(
|
||||
this.page,
|
||||
this.pageSize,
|
||||
this.getParamsForSection(this.selectedSection)
|
||||
)
|
||||
this.listTasks()
|
||||
.pipe(first(), takeUntil(this.unsubscribeNotifier))
|
||||
.subscribe({
|
||||
next: (result) => {
|
||||
this.pagedTasks.set(result.results)
|
||||
this.totalTasks.set(result.count)
|
||||
this.setSectionCount(TaskSection.All, result.count)
|
||||
if (this.selectedSection !== TaskSection.All) {
|
||||
this.setSectionCount(this.selectedSection, result.count)
|
||||
}
|
||||
this.loading.set(false)
|
||||
if (
|
||||
this.page > 1 &&
|
||||
@@ -767,4 +756,30 @@ export class TasksComponent
|
||||
},
|
||||
})
|
||||
}
|
||||
|
||||
private listTasks(): Observable<Results<PaperlessTask>> {
|
||||
if (this.selectedSection !== TaskSection.All) {
|
||||
return this.tasksService.list(
|
||||
this.page,
|
||||
this.pageSize,
|
||||
this.getParamsForSection(this.selectedSection)
|
||||
)
|
||||
}
|
||||
|
||||
// All is an overview of each section to avoid splitting sections across pages
|
||||
return forkJoin(
|
||||
this.sections.map((section) =>
|
||||
this.tasksService.list(
|
||||
1,
|
||||
this.overviewSize,
|
||||
this.getParamsForSection(section)
|
||||
)
|
||||
)
|
||||
).pipe(
|
||||
map((results) => ({
|
||||
count: results.reduce((sum, result) => sum + result.count, 0),
|
||||
results: results.flatMap((result) => result.results),
|
||||
}))
|
||||
)
|
||||
}
|
||||
}
|
||||
Reference in new issue
Block a user