]> git.ipfire.org Git - thirdparty/paperless-ngx.git/commitdiff
Add query params for saved views
authorMichael Shamoon <4887959+shamoon@users.noreply.github.com>
Thu, 5 May 2022 05:31:09 +0000 (22:31 -0700)
committerMichael Shamoon <4887959+shamoon@users.noreply.github.com>
Thu, 5 May 2022 05:31:09 +0000 (22:31 -0700)
src-ui/src/app/components/dashboard/widgets/saved-view-widget/saved-view-widget.component.ts
src-ui/src/app/components/document-list/document-list.component.html
src-ui/src/app/components/document-list/document-list.component.ts

index e677a6e2f908be5c1b60911fed210d83ddada4de..b8bf389dd25ff167948c261f1654b8a6d5779f6d 100644 (file)
@@ -60,8 +60,9 @@ export class SavedViewWidgetComponent implements OnInit, OnDestroy {
     if (this.savedView.show_in_sidebar) {
       this.router.navigate(['view', this.savedView.id])
     } else {
-      this.list.loadSavedView(this.savedView, true)
-      this.router.navigate(['documents'])
+      this.router.navigate(['documents'], {
+        queryParams: { view: this.savedView.id },
+      })
     }
   }
 
index 1ce61f931f5159a3db40fd70258aa7ca2dad54f1..f3e5605eb947bb5002047af9c83d4ee9c98d7953 100644 (file)
@@ -64,7 +64,7 @@
     <button class="btn btn-sm btn-outline-primary dropdown-toggle flex-fill" ngbDropdownToggle i18n>Views</button>
     <div class="dropdown-menu shadow dropdown-menu-right" ngbDropdownMenu>
       <ng-container *ngIf="!list.activeSavedViewId">
-        <button ngbDropdownItem *ngFor="let view of savedViewService.allViews" (click)="loadViewConfig(view)">{{view.name}}</button>
+        <button ngbDropdownItem *ngFor="let view of savedViewService.allViews" (click)="loadViewConfig(view.id)">{{view.name}}</button>
         <div class="dropdown-divider" *ngIf="savedViewService.allViews.length > 0"></div>
       </ng-container>
 
index 9e058fb647b9b8f870e58dbe70e5bd2d3d74c94a..bfbf0fc47c681dedf7d5afe3cac4e528386fe904 100644 (file)
@@ -137,32 +137,36 @@ export class DocumentListComponent implements OnInit, OnDestroy, AfterViewInit {
         takeUntil(this.unsubscribeNotifier)
       )
       .subscribe((queryParams) => {
-        // transform query params to filter rules
-        let filterRulesFromQueryParams: FilterRule[] = []
-        allFilterRuleQueryParams
-          .filter((frqp) => queryParams.has(frqp))
-          .forEach((filterQueryParamName) => {
-            const filterQueryParamValues: string[] = queryParams
-              .get(filterQueryParamName)
-              .split(',')
-
-            filterRulesFromQueryParams = filterRulesFromQueryParams.concat(
-              // map all values to filter rules
-              filterQueryParamValues.map((val) => {
-                return {
-                  rule_type: FILTER_RULE_TYPES.find(
-                    (rt) => rt.filtervar == filterQueryParamName
-                  ).id,
-                  value: val,
-                }
-              })
-            )
-          })
-
-        this.list.activateSavedView(null)
-        this.list.filterRules = filterRulesFromQueryParams
-        this.list.reload()
-        this.unmodifiedFilterRules = []
+        if (queryParams.has('view')) {
+          this.loadViewConfig(parseInt(queryParams.get('view')))
+        } else {
+          // transform query params to filter rules
+          let filterRulesFromQueryParams: FilterRule[] = []
+          allFilterRuleQueryParams
+            .filter((frqp) => queryParams.has(frqp))
+            .forEach((filterQueryParamName) => {
+              const filterQueryParamValues: string[] = queryParams
+                .get(filterQueryParamName)
+                .split(',')
+
+              filterRulesFromQueryParams = filterRulesFromQueryParams.concat(
+                // map all values to filter rules
+                filterQueryParamValues.map((val) => {
+                  return {
+                    rule_type: FILTER_RULE_TYPES.find(
+                      (rt) => rt.filtervar == filterQueryParamName
+                    ).id,
+                    value: val,
+                  }
+                })
+              )
+            })
+
+          this.list.activateSavedView(null)
+          this.list.filterRules = filterRulesFromQueryParams
+          this.list.reload()
+          this.unmodifiedFilterRules = []
+        }
       })
   }
 
@@ -192,9 +196,19 @@ export class DocumentListComponent implements OnInit, OnDestroy, AfterViewInit {
     this.unsubscribeNotifier.complete()
   }
 
-  loadViewConfig(view: PaperlessSavedView) {
-    this.list.loadSavedView(view)
-    this.list.reload()
+  loadViewConfig(viewId: number) {
+    this.savedViewService
+      .getCached(viewId)
+      .pipe(first())
+      .subscribe((view) => {
+        this.list.loadSavedView(view)
+        this.list.reload()
+        // update query params if needed
+        this.router.navigate([], {
+          relativeTo: this.route,
+          queryParams: { view: viewId },
+        })
+      })
   }
 
   saveViewConfig() {