mirror of
https://github.com/paperless-ngx/paperless-ngx.git
synced 2025-04-09 09:58:20 -05:00
some refactoring.
This commit is contained in:
parent
98ab79ad5a
commit
02c1d496d6
@ -3,7 +3,7 @@
|
|||||||
<div class="text-muted mt-1">Filter by:</div>
|
<div class="text-muted mt-1">Filter by:</div>
|
||||||
</div>
|
</div>
|
||||||
<div class="col">
|
<div class="col">
|
||||||
<input class="form-control form-control-sm" type="text" [(ngModel)]="filterText" placeholder="Title">
|
<input class="form-control form-control-sm" type="text" [(ngModel)]="titleFilter" placeholder="Title">
|
||||||
</div>
|
</div>
|
||||||
|
|
||||||
<app-filter-dropdown class="col-auto" [(items)]="filterEditorService.tags" [itemsSelected]="filterEditorService.selectedTags" [title]="'Tags'" (toggle)="onToggleTag($event)"></app-filter-dropdown>
|
<app-filter-dropdown class="col-auto" [(items)]="filterEditorService.tags" [itemsSelected]="filterEditorService.selectedTags" [title]="'Tags'" (toggle)="onToggleTag($event)"></app-filter-dropdown>
|
||||||
|
@ -25,29 +25,31 @@ export class FilterEditorComponent implements OnInit, OnDestroy {
|
|||||||
@Output()
|
@Output()
|
||||||
apply = new EventEmitter()
|
apply = new EventEmitter()
|
||||||
|
|
||||||
get filterText() {
|
get titleFilter() {
|
||||||
return this.filterEditorService.filterText
|
return this.filterEditorService.titleFilter
|
||||||
}
|
}
|
||||||
|
|
||||||
set filterText(value) {
|
set titleFilter(value) {
|
||||||
this.filterTextDebounce.next(value)
|
this.titleFilterDebounce.next(value)
|
||||||
}
|
}
|
||||||
|
|
||||||
filterTextDebounce: Subject<string>
|
titleFilterDebounce: Subject<string>
|
||||||
subscription: Subscription
|
subscription: Subscription
|
||||||
|
|
||||||
ngOnInit() {
|
ngOnInit() {
|
||||||
this.filterTextDebounce = new Subject<string>()
|
this.titleFilterDebounce = new Subject<string>()
|
||||||
this.subscription = this.filterTextDebounce.pipe(
|
this.subscription = this.titleFilterDebounce.pipe(
|
||||||
debounceTime(400),
|
debounceTime(400),
|
||||||
distinctUntilChanged()
|
distinctUntilChanged()
|
||||||
).subscribe(title => {
|
).subscribe(title => {
|
||||||
this.filterEditorService.filterText = title
|
this.filterEditorService.titleFilter = title
|
||||||
this.applyFilters()
|
this.applyFilters()
|
||||||
})
|
})
|
||||||
}
|
}
|
||||||
|
|
||||||
ngOnDestroy() {
|
ngOnDestroy() {
|
||||||
|
this.titleFilterDebounce.complete()
|
||||||
|
// TODO: not sure if both is necessary
|
||||||
this.subscription.unsubscribe()
|
this.subscription.unsubscribe()
|
||||||
}
|
}
|
||||||
|
|
||||||
|
@ -16,9 +16,6 @@ import { NgbDate, NgbDateStruct } from '@ng-bootstrap/ng-bootstrap';
|
|||||||
providedIn: 'root'
|
providedIn: 'root'
|
||||||
})
|
})
|
||||||
export class FilterEditorViewService {
|
export class FilterEditorViewService {
|
||||||
private tags$: Observable<Results<PaperlessTag>>
|
|
||||||
private correspondents$: Observable<Results<PaperlessCorrespondent>>
|
|
||||||
private documentTypes$: Observable<Results<PaperlessDocumentType>>
|
|
||||||
|
|
||||||
tags: PaperlessTag[] = []
|
tags: PaperlessTag[] = []
|
||||||
correspondents: PaperlessCorrespondent[]
|
correspondents: PaperlessCorrespondent[]
|
||||||
@ -27,12 +24,9 @@ export class FilterEditorViewService {
|
|||||||
filterRules: FilterRule[] = []
|
filterRules: FilterRule[] = []
|
||||||
|
|
||||||
constructor(private tagService: TagService, private documentTypeService: DocumentTypeService, private correspondentService: CorrespondentService) {
|
constructor(private tagService: TagService, private documentTypeService: DocumentTypeService, private correspondentService: CorrespondentService) {
|
||||||
this.tags$ = this.tagService.listAll()
|
this.tagService.listAll().subscribe(result => this.tags = result.results)
|
||||||
this.tags$.subscribe(result => this.tags = result.results)
|
this.correspondentService.listAll().subscribe(result => this.correspondents = result.results)
|
||||||
this.correspondents$ = this.correspondentService.listAll()
|
this.documentTypeService.listAll().subscribe(result => this.documentTypes = result.results)
|
||||||
this.correspondents$.subscribe(result => this.correspondents = result.results)
|
|
||||||
this.documentTypes$ = this.documentTypeService.listAll()
|
|
||||||
this.documentTypes$.subscribe(result => this.documentTypes = result.results)
|
|
||||||
}
|
}
|
||||||
|
|
||||||
clear() {
|
clear() {
|
||||||
@ -43,22 +37,19 @@ export class FilterEditorViewService {
|
|||||||
return this.filterRules.length > 0
|
return this.filterRules.length > 0
|
||||||
}
|
}
|
||||||
|
|
||||||
set filterText(text: string) {
|
set titleFilter(title: string) {
|
||||||
let filterRules = this.filterRules
|
let existingRule = this.filterRules.find(rule => rule.type.id == FILTER_TITLE)
|
||||||
let existingRule = filterRules.find(rule => rule.type.id == FILTER_TITLE)
|
|
||||||
if (existingRule && (!text || text.length == 0)) {
|
if (!existingRule && title) {
|
||||||
filterRules.splice(filterRules.findIndex(rule => rule.type.id == FILTER_TITLE), 1)
|
this.filterRules.push({type: FILTER_RULE_TYPES.find(t => t.id == FILTER_TITLE), value: title})
|
||||||
} else if (existingRule && existingRule.value == text) {
|
} else if (existingRule && !title) {
|
||||||
return
|
this.filterRules.splice(this.filterRules.findIndex(rule => rule.type.id == FILTER_TITLE), 1)
|
||||||
} else if (existingRule) {
|
} else if (existingRule && title) {
|
||||||
existingRule.value = text
|
existingRule.value = title
|
||||||
} else {
|
|
||||||
filterRules.push({type: FILTER_RULE_TYPES.find(t => t.id == FILTER_TITLE), value: text})
|
|
||||||
}
|
}
|
||||||
this.filterRules = filterRules
|
|
||||||
}
|
}
|
||||||
|
|
||||||
get filterText(): string {
|
get titleFilter(): string {
|
||||||
let existingRule = this.filterRules.find(rule => rule.type.id == FILTER_TITLE)
|
let existingRule = this.filterRules.find(rule => rule.type.id == FILTER_TITLE)
|
||||||
return existingRule ? existingRule.value : ''
|
return existingRule ? existingRule.value : ''
|
||||||
}
|
}
|
||||||
|
Loading…
x
Reference in New Issue
Block a user