this.route.paramMap
.pipe(
- filter((params) => params.has('id')), // only on saved view
+ filter((params) => params.has('id')), // only on saved view e.g. /view/id
switchMap((params) => {
return this.savedViewService
.getCached(+params.get('id'))
- .pipe(map((view) => ({ params, view })))
+ .pipe(map((view) => ({ view })))
})
)
.pipe(takeUntil(this.unsubscribeNotifier))
- .subscribe(({ view, params }) => {
+ .subscribe(({ view }) => {
if (!view) {
this.router.navigate(['404'])
return
}
this.list.activateSavedView(view)
this.list.reload()
+ this.queryParamsService.updateFromView(view)
this.unmodifiedFilterRules = view.filter_rules
})
this.route.queryParamMap
.pipe(
- filter(() => !this.route.snapshot.paramMap.has('id')), // only when not on saved view
+ filter(() => !this.route.snapshot.paramMap.has('id')), // only when not on /view/id
takeUntil(this.unsubscribeNotifier)
)
.subscribe((queryParams) => {
if (queryParams.has('view')) {
+ // loading a saved view on /documents
this.loadViewConfig(parseInt(queryParams.get('view')))
} else {
this.list.activateSavedView(null)
.subscribe((view) => {
this.list.loadSavedView(view)
this.list.reload()
- // update query params if needed
- this.router.navigate([], {
- relativeTo: this.route,
- queryParams: { view: viewId },
- })
+ this.queryParamsService.updateFromView(view)
})
}
import { ParamMap, Params, Router } from '@angular/router'
import { FilterRule } from '../data/filter-rule'
import { FILTER_RULE_TYPES } from '../data/filter-rule-type'
+import { PaperlessSavedView } from '../data/paperless-saved-view'
import { DocumentListViewService } from './document-list-view.service'
const SORT_FIELD_PARAMETER = 'sort'
}
}
+ updateFromView(view: PaperlessSavedView) {
+ if (!this.router.routerState.snapshot.url.includes('/view/')) {
+ // navigation for /documents?view=
+ this.router.navigate([], {
+ queryParams: { view: view.id },
+ })
+ }
+ // make sure params are up-to-date
+ this.updateFilterRules(view.filter_rules, false)
+ this.sortParams[SORT_FIELD_PARAMETER] = this.list.sortField
+ this.sortParams[SORT_REVERSE_PARAMETER] = this.list.sortReverse
+ }
+
navigateWithFilterRules(filterRules: FilterRule[]) {
this.updateFilterRules(filterRules)
this.router.navigate(['/documents'], {