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 @@