Completely refactored because programming

Extracted filter editor to service
Made all components actually reactive
This commit is contained in:
Michael Shamoon
2020-12-12 22:53:34 -08:00
parent e01c011677
commit 9623139cb2
17 changed files with 395 additions and 202 deletions

View File

@@ -64,7 +64,7 @@
<div class="card w-100 mb-3">
<div class="card-body">
<app-filter-editor [(filterRules)]="filterRules" (apply)="applyFilterRules()" (clear)="clearFilterRules()" #filterEditor></app-filter-editor>
<app-filter-editor [(filterEditorService)]="filterEditorService" (apply)="applyFilterRules()" (clear)="clearFilterRules()" #filterEditor></app-filter-editor>
</div>
</div>

View File

@@ -6,6 +6,7 @@ import { cloneFilterRules, FilterRule } from 'src/app/data/filter-rule';
import { FILTER_CORRESPONDENT, FILTER_DOCUMENT_TYPE, FILTER_HAS_TAG, FILTER_RULE_TYPES } from 'src/app/data/filter-rule-type';
import { SavedViewConfig } from 'src/app/data/saved-view-config';
import { DocumentListViewService } from 'src/app/services/document-list-view.service';
import { FilterEditorViewService } from 'src/app/services/filter-editor-view.service';
import { DOCUMENT_SORT_FIELDS } from 'src/app/services/rest/document.service';
import { SavedViewConfigService } from 'src/app/services/saved-view-config.service';
import { Toast, ToastService } from 'src/app/services/toast.service';
@@ -26,6 +27,7 @@ export class DocumentListComponent implements OnInit {
constructor(
public list: DocumentListViewService,
public savedViewConfigService: SavedViewConfigService,
public filterEditorService: FilterEditorViewService,
public route: ActivatedRoute,
private toastService: ToastService,
public modalService: NgbModal,
@@ -33,14 +35,18 @@ export class DocumentListComponent implements OnInit {
displayMode = 'smallCards' // largeCards, smallCards, details
filterRules: FilterRule[] = []
@ViewChild('filterEditor') filterEditor: FilterEditorComponent
get isFiltered() {
return this.list.filterRules?.length > 0
}
set filterRules(filterRules: FilterRule[]) {
this.filterEditorService.filterRules = filterRules
}
get filterRules(): FilterRule[] {
return this.filterEditorService.filterRules
}
getTitle() {
return this.list.savedViewTitle || "Documents"
}
@@ -60,28 +66,29 @@ export class DocumentListComponent implements OnInit {
this.route.paramMap.subscribe(params => {
if (params.has('id')) {
this.list.savedView = this.savedViewConfigService.getConfig(params.get('id'))
this.filterRules = this.list.filterRules
this.filterEditorService.filterRules = this.list.filterRules
this.titleService.setTitle(`${this.list.savedView.title} - ${environment.appTitle}`)
} else {
this.list.savedView = null
this.filterRules = this.list.filterRules
this.filterEditorService.filterRules = this.list.filterRules
this.titleService.setTitle(`Documents - ${environment.appTitle}`)
}
this.list.clear()
this.list.reload()
})
this.filterEditorService.filterRules = this.list.filterRules
}
applyFilterRules() {
this.list.filterRules = this.filterRules
this.list.filterRules = this.filterEditorService.filterRules
}
clearFilterRules() {
this.list.filterRules = this.filterRules
this.list.filterRules = this.filterEditorService.filterRules
}
loadViewConfig(config: SavedViewConfig) {
this.filterRules = cloneFilterRules(config.filterRules)
this.filterEditorService.filterRules = cloneFilterRules(config.filterRules)
this.list.load(config)
}
@@ -106,15 +113,18 @@ export class DocumentListComponent implements OnInit {
}
clickTag(tagID: number) {
this.filterEditor.toggleFilterByItem(tagID, FILTER_HAS_TAG)
this.filterEditorService.toggleFitlerByTagID(tagID)
this.applyFilterRules()
}
clickCorrespondent(correspondentID: number) {
this.filterEditor.toggleFilterByItem(correspondentID, FILTER_CORRESPONDENT)
this.filterEditorService.toggleFitlerByCorrespondentID(correspondentID)
this.applyFilterRules()
}
clickDocumentType(documentTypeID: number) {
this.filterEditor.toggleFilterByItem(documentTypeID, FILTER_DOCUMENT_TYPE)
this.filterEditorService.toggleFitlerByDocumentTypeID(documentTypeID)
this.applyFilterRules()
}
}