From 02c1d496d609fbcb11e106ed4a0c71478e8eb725 Mon Sep 17 00:00:00 2001 From: jonaswinkler Date: Mon, 14 Dec 2020 11:22:24 +0100 Subject: [PATCH] some refactoring. --- .../filter-editor.component.html | 2 +- .../filter-editor/filter-editor.component.ts | 18 +++++----- .../services/filter-editor-view.service.ts | 35 +++++++------------ 3 files changed, 24 insertions(+), 31 deletions(-) diff --git a/src-ui/src/app/components/filter-editor/filter-editor.component.html b/src-ui/src/app/components/filter-editor/filter-editor.component.html index 7b11c4d42..3452d12b3 100644 --- a/src-ui/src/app/components/filter-editor/filter-editor.component.html +++ b/src-ui/src/app/components/filter-editor/filter-editor.component.html @@ -3,7 +3,7 @@
Filter by:
- +
diff --git a/src-ui/src/app/components/filter-editor/filter-editor.component.ts b/src-ui/src/app/components/filter-editor/filter-editor.component.ts index 320322b53..7177d885c 100644 --- a/src-ui/src/app/components/filter-editor/filter-editor.component.ts +++ b/src-ui/src/app/components/filter-editor/filter-editor.component.ts @@ -25,29 +25,31 @@ export class FilterEditorComponent implements OnInit, OnDestroy { @Output() apply = new EventEmitter() - get filterText() { - return this.filterEditorService.filterText + get titleFilter() { + return this.filterEditorService.titleFilter } - set filterText(value) { - this.filterTextDebounce.next(value) + set titleFilter(value) { + this.titleFilterDebounce.next(value) } - filterTextDebounce: Subject + titleFilterDebounce: Subject subscription: Subscription ngOnInit() { - this.filterTextDebounce = new Subject() - this.subscription = this.filterTextDebounce.pipe( + this.titleFilterDebounce = new Subject() + this.subscription = this.titleFilterDebounce.pipe( debounceTime(400), distinctUntilChanged() ).subscribe(title => { - this.filterEditorService.filterText = title + this.filterEditorService.titleFilter = title this.applyFilters() }) } ngOnDestroy() { + this.titleFilterDebounce.complete() + // TODO: not sure if both is necessary this.subscription.unsubscribe() } diff --git a/src-ui/src/app/services/filter-editor-view.service.ts b/src-ui/src/app/services/filter-editor-view.service.ts index 27d089106..9a6eeef41 100644 --- a/src-ui/src/app/services/filter-editor-view.service.ts +++ b/src-ui/src/app/services/filter-editor-view.service.ts @@ -16,9 +16,6 @@ import { NgbDate, NgbDateStruct } from '@ng-bootstrap/ng-bootstrap'; providedIn: 'root' }) export class FilterEditorViewService { - private tags$: Observable> - private correspondents$: Observable> - private documentTypes$: Observable> tags: PaperlessTag[] = [] correspondents: PaperlessCorrespondent[] @@ -27,12 +24,9 @@ export class FilterEditorViewService { filterRules: FilterRule[] = [] constructor(private tagService: TagService, private documentTypeService: DocumentTypeService, private correspondentService: CorrespondentService) { - this.tags$ = this.tagService.listAll() - this.tags$.subscribe(result => this.tags = result.results) - this.correspondents$ = this.correspondentService.listAll() - this.correspondents$.subscribe(result => this.correspondents = result.results) - this.documentTypes$ = this.documentTypeService.listAll() - this.documentTypes$.subscribe(result => this.documentTypes = result.results) + this.tagService.listAll().subscribe(result => this.tags = result.results) + this.correspondentService.listAll().subscribe(result => this.correspondents = result.results) + this.documentTypeService.listAll().subscribe(result => this.documentTypes = result.results) } clear() { @@ -43,22 +37,19 @@ export class FilterEditorViewService { return this.filterRules.length > 0 } - set filterText(text: string) { - let filterRules = this.filterRules - let existingRule = filterRules.find(rule => rule.type.id == FILTER_TITLE) - if (existingRule && (!text || text.length == 0)) { - filterRules.splice(filterRules.findIndex(rule => rule.type.id == FILTER_TITLE), 1) - } else if (existingRule && existingRule.value == text) { - return - } else if (existingRule) { - existingRule.value = text - } else { - filterRules.push({type: FILTER_RULE_TYPES.find(t => t.id == FILTER_TITLE), value: text}) + set titleFilter(title: string) { + let existingRule = this.filterRules.find(rule => rule.type.id == FILTER_TITLE) + + if (!existingRule && title) { + this.filterRules.push({type: FILTER_RULE_TYPES.find(t => t.id == FILTER_TITLE), value: title}) + } else if (existingRule && !title) { + this.filterRules.splice(this.filterRules.findIndex(rule => rule.type.id == FILTER_TITLE), 1) + } else if (existingRule && title) { + existingRule.value = title } - this.filterRules = filterRules } - get filterText(): string { + get titleFilter(): string { let existingRule = this.filterRules.find(rule => rule.type.id == FILTER_TITLE) return existingRule ? existingRule.value : '' }