Merge pull request #540 from paperless-ngx/filtering-query-params

Feature: Filtering query params aka browser navigation for filtering
This commit is contained in:
shamoon
2022-03-28 00:07:46 -07:00
committed by GitHub
13 changed files with 159 additions and 67 deletions

View File

@@ -143,8 +143,8 @@ export class DocumentListViewService {
activeListViewState.sortReverse,
activeListViewState.filterRules
)
.subscribe(
(result) => {
.subscribe({
next: (result) => {
this.isReloading = false
activeListViewState.collectionSize = result.count
activeListViewState.documents = result.results
@@ -153,7 +153,7 @@ export class DocumentListViewService {
}
this.rangeSelectionAnchorIndex = this.lastRangeSelectionToIndex = null
},
(error) => {
error: (error) => {
this.isReloading = false
if (activeListViewState.currentPage != 1 && error.status == 404) {
// this happens when applying a filter: the current page might not be available anymore due to the reduced result set.
@@ -162,8 +162,8 @@ export class DocumentListViewService {
} else {
this.error = error.error
}
}
)
},
})
}
set filterRules(filterRules: FilterRule[]) {
@@ -249,20 +249,11 @@ export class DocumentListViewService {
}
quickFilter(filterRules: FilterRule[]) {
this._activeSavedViewId = null
this.activeListViewState.filterRules = filterRules
this.activeListViewState.currentPage = 1
if (isFullTextFilterRule(filterRules)) {
this.activeListViewState.sortField = 'score'
this.activeListViewState.sortReverse = false
}
this.reduceSelectionToFilter()
this.saveDocumentListView()
if (this.router.url == '/documents') {
this.reload()
} else {
this.router.navigate(['documents'])
}
const params = this.documentService.filterRulesToQueryParams(filterRules)
this.router.navigate(['/documents'], {
relativeTo: this.route,
queryParams: params,
})
}
getLastPage(): number {

View File

@@ -57,7 +57,7 @@ export class DocumentService extends AbstractPaperlessService<PaperlessDocument>
super(http, 'documents')
}
private filterRulesToQueryParams(filterRules: FilterRule[]) {
public filterRulesToQueryParams(filterRules: FilterRule[]): Object {
if (filterRules) {
let params = {}
for (let rule of filterRules) {