From c24bfd4d2bdf72ceed3393a338aca443e67cb695 Mon Sep 17 00:00:00 2001 From: Michael Shamoon <4887959+nikonratm@users.noreply.github.com> Date: Fri, 11 Dec 2020 01:03:05 -0800 Subject: [PATCH] filter-dropdown-date rough implementation --- src-ui/src/app/app.module.ts | 2 + .../filter-dropdown-date.component.html | 41 ++++++++++++++ .../filter-dropdown-date.component.scss | 3 ++ .../filter-dropdown-date.component.spec.ts | 25 +++++++++ .../filter-dropdown-date.component.ts | 53 +++++++++++++++++++ .../filter-editor.component.html | 13 +---- .../filter-editor/filter-editor.component.ts | 7 +-- 7 files changed, 130 insertions(+), 14 deletions(-) create mode 100644 src-ui/src/app/components/filter-editor/filter-dropdown/filter-dropdown-date/filter-dropdown-date.component.html create mode 100644 src-ui/src/app/components/filter-editor/filter-dropdown/filter-dropdown-date/filter-dropdown-date.component.scss create mode 100644 src-ui/src/app/components/filter-editor/filter-dropdown/filter-dropdown-date/filter-dropdown-date.component.spec.ts create mode 100644 src-ui/src/app/components/filter-editor/filter-dropdown/filter-dropdown-date/filter-dropdown-date.component.ts diff --git a/src-ui/src/app/app.module.ts b/src-ui/src/app/app.module.ts index 6a847494a..394e3ba58 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 { FilterDropdownDateComponent } from './components/filter-editor/filter-dropdown/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'; import { NgxFileDropModule } from 'ngx-file-drop'; @@ -76,6 +77,7 @@ import { FilterPipe } from './pipes/filter.pipe'; ToastsComponent, FilterEditorComponent, FilterDropdownComponent, + FilterDropdownDateComponent, DocumentCardLargeComponent, DocumentCardSmallComponent, TextComponent, diff --git a/src-ui/src/app/components/filter-editor/filter-dropdown/filter-dropdown-date/filter-dropdown-date.component.html b/src-ui/src/app/components/filter-editor/filter-dropdown/filter-dropdown-date/filter-dropdown-date.component.html new file mode 100644 index 000000000..74d508390 --- /dev/null +++ b/src-ui/src/app/components/filter-editor/filter-dropdown/filter-dropdown-date/filter-dropdown-date.component.html @@ -0,0 +1,41 @@ +
+ + +
diff --git a/src-ui/src/app/components/filter-editor/filter-dropdown/filter-dropdown-date/filter-dropdown-date.component.scss b/src-ui/src/app/components/filter-editor/filter-dropdown/filter-dropdown-date/filter-dropdown-date.component.scss new file mode 100644 index 000000000..67edb9bf8 --- /dev/null +++ b/src-ui/src/app/components/filter-editor/filter-dropdown/filter-dropdown-date/filter-dropdown-date.component.scss @@ -0,0 +1,3 @@ +.date-filter { + min-width: 250px; +} diff --git a/src-ui/src/app/components/filter-editor/filter-dropdown/filter-dropdown-date/filter-dropdown-date.component.spec.ts b/src-ui/src/app/components/filter-editor/filter-dropdown/filter-dropdown-date/filter-dropdown-date.component.spec.ts new file mode 100644 index 000000000..6bf59e2e7 --- /dev/null +++ b/src-ui/src/app/components/filter-editor/filter-dropdown/filter-dropdown-date/filter-dropdown-date.component.spec.ts @@ -0,0 +1,25 @@ +import { ComponentFixture, TestBed } from '@angular/core/testing'; + +import { FilterDropdownDateComponent } from './filter-dropdown-date.component'; + +describe('FilterDropdownDateComponent', () => { + let component: FilterDropdownDateComponent; + let fixture: ComponentFixture; + + beforeEach(async () => { + await TestBed.configureTestingModule({ + declarations: [ FilterDropdownDateComponent ] + }) + .compileComponents(); + }); + + beforeEach(() => { + fixture = TestBed.createComponent(FilterDropdownDateComponent); + component = fixture.componentInstance; + fixture.detectChanges(); + }); + + it('should create', () => { + expect(component).toBeTruthy(); + }); +}); diff --git a/src-ui/src/app/components/filter-editor/filter-dropdown/filter-dropdown-date/filter-dropdown-date.component.ts b/src-ui/src/app/components/filter-editor/filter-dropdown/filter-dropdown-date/filter-dropdown-date.component.ts new file mode 100644 index 000000000..37ea2cd09 --- /dev/null +++ b/src-ui/src/app/components/filter-editor/filter-dropdown/filter-dropdown-date/filter-dropdown-date.component.ts @@ -0,0 +1,53 @@ +import { Component, EventEmitter, Input, OnInit, Output, ElementRef, ViewChild } from '@angular/core'; +import { FilterRuleType, FILTER_RULE_TYPES } from 'src/app/data/filter-rule-type'; +import { ObjectWithId } from 'src/app/data/object-with-id'; +import { FilterDropdownComponent } from '../filter-dropdown.component' +import { NgbDateStruct } from '@ng-bootstrap/ng-bootstrap'; + +@Component({ + selector: 'app-filter-dropdown-date', + templateUrl: './filter-dropdown-date.component.html', + styleUrls: ['./filter-dropdown-date.component.scss'] +}) +export class FilterDropdownDateComponent extends FilterDropdownComponent { + + @Input() + filterRuleTypeIDs: number[] = [] + + @Output() + selected = new EventEmitter() + + filterRuleTypes: FilterRuleType[] = [] + showYear: boolean = false + showMonth: boolean = false + dateAfter: NgbDateStruct + dateBefore: NgbDateStruct + + ngOnInit(): void { + this.filterRuleTypes = this.filterRuleTypeIDs.map(id => FILTER_RULE_TYPES.find(rt => rt.id == id)) + this.filterRuleTypeID = this.filterRuleTypeIDs[0] + super.ngOnInit() + + this.showYear = this.filterRuleTypes.find(rt => rt.filtervar.indexOf('year') > -1) !== undefined + this.showMonth = this.filterRuleTypes.find(rt => rt.filtervar.indexOf('month') > -1) !== undefined + } + + setQuickFilter(range: any) { + this.dateAfter = this.dateBefore = undefined + switch (typeof range) { + case 'number': + let date = new Date(); + date.setDate(date.getDate() - range) + this.dateAfter = { year: date.getFullYear(), month: date.getMonth() + 1, day: date.getDate() } + break; + + case 'string': + let filterRuleType = this.filterRuleTypes.find(rt => rt.filtervar.indexOf(range) > -1) + console.log(range); + break; + + default: + break; + } + } +} diff --git a/src-ui/src/app/components/filter-editor/filter-editor.component.html b/src-ui/src/app/components/filter-editor/filter-editor.component.html index 153f32644..d3473337b 100644 --- a/src-ui/src/app/components/filter-editor/filter-editor.component.html +++ b/src-ui/src/app/components/filter-editor/filter-editor.component.html @@ -6,18 +6,9 @@ - - + -
- -
- -
- -
+