From e215e11417448a4294f507260d718d11bd5f9e0e Mon Sep 17 00:00:00 2001 From: Michael Shamoon <4887959+nikonratm@users.noreply.github.com> Date: Sat, 12 Dec 2020 22:53:34 -0800 Subject: [PATCH] Completely refactored because programming Extracted filter editor to service Made all components actually reactive --- src-ui/src/app/app.module.ts | 2 + .../document-list.component.html | 2 +- .../document-list/document-list.component.ts | 34 ++-- .../filter-dropdown-date.component.html | 4 +- .../filter-dropdown-date.component.ts | 46 ++--- .../filter-dropdown-button.component.html | 12 ++ .../filter-dropdown-button.component.scss | 4 + .../filter-dropdown-button.component.spec.ts | 25 +++ .../filter-dropdown-button.component.ts | 32 +++ .../filter-dropdown.component.html | 17 +- .../filter-dropdown.component.scss | 5 - .../filter-dropdown.component.ts | 29 ++- .../filter-editor.component.html | 11 +- .../filter-editor/filter-editor.component.ts | 164 ++++----------- .../services/document-list-view.service.ts | 6 +- .../filter-editor-view.service.spec.ts | 16 ++ .../services/filter-editor-view.service.ts | 188 ++++++++++++++++++ 17 files changed, 395 insertions(+), 202 deletions(-) create mode 100644 src-ui/src/app/components/filter-editor/filter-dropdown/filter-dropdown-button/filter-dropdown-button.component.html create mode 100644 src-ui/src/app/components/filter-editor/filter-dropdown/filter-dropdown-button/filter-dropdown-button.component.scss create mode 100644 src-ui/src/app/components/filter-editor/filter-dropdown/filter-dropdown-button/filter-dropdown-button.component.spec.ts create mode 100644 src-ui/src/app/components/filter-editor/filter-dropdown/filter-dropdown-button/filter-dropdown-button.component.ts create mode 100644 src-ui/src/app/services/filter-editor-view.service.spec.ts create mode 100644 src-ui/src/app/services/filter-editor-view.service.ts diff --git a/src-ui/src/app/app.module.ts b/src-ui/src/app/app.module.ts index 3021e417b..4d31fff18 100644 --- a/src-ui/src/app/app.module.ts +++ b/src-ui/src/app/app.module.ts @@ -29,6 +29,7 @@ import { AppFrameComponent } from './components/app-frame/app-frame.component'; import { ToastsComponent } from './components/common/toasts/toasts.component'; import { FilterEditorComponent } from './components/filter-editor/filter-editor.component'; import { FilterDropdownComponent } from './components/filter-editor/filter-dropdown/filter-dropdown.component'; +import { FilterDropdownButtonComponent } from './components/filter-editor/filter-dropdown/filter-dropdown-button/filter-dropdown-button.component'; import { FilterDropdownDateComponent } from './components/filter-editor/filter-dropdown-date/filter-dropdown-date.component'; import { DocumentCardLargeComponent } from './components/document-list/document-card-large/document-card-large.component'; import { DocumentCardSmallComponent } from './components/document-list/document-card-small/document-card-small.component'; @@ -77,6 +78,7 @@ import { FilterPipe } from './pipes/filter.pipe'; ToastsComponent, FilterEditorComponent, FilterDropdownComponent, + FilterDropdownButtonComponent, FilterDropdownDateComponent, DocumentCardLargeComponent, DocumentCardSmallComponent, diff --git a/src-ui/src/app/components/document-list/document-list.component.html b/src-ui/src/app/components/document-list/document-list.component.html index a6ec1b741..0fd139b89 100644 --- a/src-ui/src/app/components/document-list/document-list.component.html +++ b/src-ui/src/app/components/document-list/document-list.component.html @@ -64,7 +64,7 @@
- +
diff --git a/src-ui/src/app/components/document-list/document-list.component.ts b/src-ui/src/app/components/document-list/document-list.component.ts index 271f6f7e5..fe03cae80 100644 --- a/src-ui/src/app/components/document-list/document-list.component.ts +++ b/src-ui/src/app/components/document-list/document-list.component.ts @@ -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() } } diff --git a/src-ui/src/app/components/filter-editor/filter-dropdown-date/filter-dropdown-date.component.html b/src-ui/src/app/components/filter-editor/filter-dropdown-date/filter-dropdown-date.component.html index fb514d7df..a2b395c09 100644 --- a/src-ui/src/app/components/filter-editor/filter-dropdown-date/filter-dropdown-date.component.html +++ b/src-ui/src/app/components/filter-editor/filter-dropdown-date/filter-dropdown-date.component.html @@ -11,7 +11,7 @@