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 : ''
}