mirror of
				https://github.com/paperless-ngx/paperless-ngx.git
				synced 2025-10-30 03:56:23 -05:00 
			
		
		
		
	some refactoring.
This commit is contained in:
		| @@ -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 : '' | ||||||
|   } |   } | ||||||
|   | |||||||
		Reference in New Issue
	
	Block a user
	 jonaswinkler
					jonaswinkler