diff --git a/src-ui/src/app/data/filter-rule.ts b/src-ui/src/app/data/filter-rule.ts index 2dc632d9c..a0c6f0086 100644 --- a/src-ui/src/app/data/filter-rule.ts +++ b/src-ui/src/app/data/filter-rule.ts @@ -1,10 +1,8 @@ -import { FilterRuleType } from './filter-rule-type'; - export function cloneFilterRules(filterRules: FilterRule[]): FilterRule[] { if (filterRules) { let newRules: FilterRule[] = [] for (let rule of filterRules) { - newRules.push({type: rule.type, value: rule.value}) + newRules.push({rule_type: rule.rule_type, value: rule.value}) } return newRules } else { @@ -13,6 +11,6 @@ export function cloneFilterRules(filterRules: FilterRule[]): FilterRule[] { } export interface FilterRule { - type: FilterRuleType + rule_type: number value: any } \ No newline at end of file diff --git a/src-ui/src/app/data/paperless-saved-view.ts b/src-ui/src/app/data/paperless-saved-view.ts new file mode 100644 index 000000000..fbc2f5d5e --- /dev/null +++ b/src-ui/src/app/data/paperless-saved-view.ts @@ -0,0 +1,18 @@ +import { FilterRule } from './filter-rule'; +import { ObjectWithId } from './object-with-id'; + +export interface PaperlessSavedView extends ObjectWithId { + + name?: string + + show_on_dashboard?: boolean + + show_in_sidebar?: boolean + + sort_field: string + + sort_reverse: boolean + + filter_rules: FilterRule[] + +} \ No newline at end of file diff --git a/src-ui/src/app/data/saved-view-config.ts b/src-ui/src/app/data/saved-view-config.ts deleted file mode 100644 index 9d7076215..000000000 --- a/src-ui/src/app/data/saved-view-config.ts +++ /dev/null @@ -1,19 +0,0 @@ -import { FilterRule } from './filter-rule'; - -export interface SavedViewConfig { - - id?: string - - filterRules: FilterRule[] - - sortField: string - - sortDirection: string - - title?: string - - showInSideBar?: boolean - - showInDashboard?: boolean - -} \ No newline at end of file diff --git a/src-ui/src/app/services/rest/saved-view.service.spec.ts b/src-ui/src/app/services/rest/saved-view.service.spec.ts new file mode 100644 index 000000000..588cf6347 --- /dev/null +++ b/src-ui/src/app/services/rest/saved-view.service.spec.ts @@ -0,0 +1,16 @@ +import { TestBed } from '@angular/core/testing'; + +import { SavedViewService } from './saved-view.service'; + +describe('SavedViewService', () => { + let service: SavedViewService; + + beforeEach(() => { + TestBed.configureTestingModule({}); + service = TestBed.inject(SavedViewService); + }); + + it('should be created', () => { + expect(service).toBeTruthy(); + }); +}); diff --git a/src-ui/src/app/services/rest/saved-view.service.ts b/src-ui/src/app/services/rest/saved-view.service.ts new file mode 100644 index 000000000..343b1a8f8 --- /dev/null +++ b/src-ui/src/app/services/rest/saved-view.service.ts @@ -0,0 +1,53 @@ +import { HttpClient } from '@angular/common/http'; +import { Injectable } from '@angular/core'; +import { Subject } from 'rxjs'; +import { map, tap } from 'rxjs/operators'; +import { PaperlessSavedView } from 'src/app/data/paperless-saved-view'; +import { AbstractPaperlessService } from './abstract-paperless-service'; + +@Injectable({ + providedIn: 'root' +}) +export class SavedViewService extends AbstractPaperlessService { + + constructor(http: HttpClient) { + super(http, 'saved_views') + this.reload() + } + + private reload() { + this.listAll().subscribe(r => this.savedViews = r.results) + } + + private savedViews: PaperlessSavedView[] = [] + + get allViews() { + return this.savedViews + } + + get sidebarViews() { + return this.savedViews.filter(v => v.show_in_sidebar) + } + + get dashboardViews() { + return this.savedViews.filter(v => v.show_on_dashboard) + } + + create(o: PaperlessSavedView) { + return super.create(o).pipe( + tap(() => this.reload()) + ) + } + + update(o: PaperlessSavedView) { + return super.update(o).pipe( + tap(() => this.reload()) + ) + } + + delete(o: PaperlessSavedView) { + return super.delete(o).pipe( + tap(() => this.reload()) + ) + } +} diff --git a/src-ui/src/app/services/saved-view-config.service.spec.ts b/src-ui/src/app/services/saved-view-config.service.spec.ts deleted file mode 100644 index c67affead..000000000 --- a/src-ui/src/app/services/saved-view-config.service.spec.ts +++ /dev/null @@ -1,16 +0,0 @@ -import { TestBed } from '@angular/core/testing'; - -import { SavedViewConfigService } from './saved-view-config.service'; - -describe('SavedViewConfigService', () => { - let service: SavedViewConfigService; - - beforeEach(() => { - TestBed.configureTestingModule({}); - service = TestBed.inject(SavedViewConfigService); - }); - - it('should be created', () => { - expect(service).toBeTruthy(); - }); -}); diff --git a/src-ui/src/app/services/saved-view-config.service.ts b/src-ui/src/app/services/saved-view-config.service.ts deleted file mode 100644 index 41c28216b..000000000 --- a/src-ui/src/app/services/saved-view-config.service.ts +++ /dev/null @@ -1,66 +0,0 @@ -import { Injectable } from '@angular/core'; -import { v4 as uuidv4 } from 'uuid'; -import { SavedViewConfig } from '../data/saved-view-config'; - -@Injectable({ - providedIn: 'root' -}) -export class SavedViewConfigService { - - constructor() { - let savedConfigs = localStorage.getItem('saved-view-config-service:savedConfigs') - if (savedConfigs) { - try { - this.configs = JSON.parse(savedConfigs) - } catch (e) { - this.configs = [] - } - } - } - - private configs: SavedViewConfig[] = [] - - getConfigs(): SavedViewConfig[] { - return this.configs - } - - getDashboardConfigs(): SavedViewConfig[] { - return this.configs.filter(sf => sf.showInDashboard) - } - - getSideBarConfigs(): SavedViewConfig[] { - return this.configs.filter(sf => sf.showInSideBar) - } - - getConfig(id: string): SavedViewConfig { - return this.configs.find(sf => sf.id == id) - } - - newConfig(config: SavedViewConfig) { - config.id = uuidv4() - this.configs.push(config) - - this.save() - } - - updateConfig(config: SavedViewConfig) { - let savedConfig = this.configs.find(c => c.id == config.id) - if (savedConfig) { - Object.assign(savedConfig, config) - this.save() - } - } - - private save() { - localStorage.setItem('saved-view-config-service:savedConfigs', JSON.stringify(this.configs)) - } - - deleteConfig(config: SavedViewConfig) { - let index = this.configs.findIndex(vc => vc.id == config.id) - if (index != -1) { - this.configs.splice(index, 1) - this.save() - } - - } -}