Project

General

Profile

1
import {Component, Input, Output, EventEmitter} from '@angular/core';
2
import {Observable}       from 'rxjs';
3

    
4
import { Filter, Value, DateValue} from './searchHelperClasses.class';
5
import {IMyOptions, IMyDateModel} from '../../utils/my-date-picker/interfaces/index';
6
import {Dates} from '../../utils/string-utils.class';
7
import {FormControl} from "@angular/forms";
8
import {MatDatepickerInputEvent} from "@angular/material";
9

    
10
@Component({
11
    selector: 'date-filter',
12
    template: `
13
<div  class="uk-input ">
14
    <mat-select *ngIf="dateValue && dateValue.type!='range' "  name="{{'select_date_type'+filterId}}" class=" matSelection uk-input"    [(ngModel)]=dateValue.type  [disableOptionCentering]="true" panelClass="matSelectionPanel">
15
      <mat-option *ngFor="let type of dateValue.types let i = index"  [value]="type" (click)="typeChanged(type)">{{dateValue.typesTitle[i]}}</mat-option>
16
    </mat-select>
17
    <div *ngIf="dateValue && dateValue.type=='range' ">
18
      <div class=" uk-grid uk-" >
19
          <div class="uk-padding-remove uk-margin-small-left uk-width-small">
20
            <mat-select name="{{'select_date_type'+filterId}}"    [(ngModel)]=dateValue.type [disableOptionCentering]="true" class="matSelection uk-input" panelClass="matSelectionPanel">
21
              <mat-option *ngFor="let type of dateValue.types let i = index"  [value]="type" (click)="typeChanged(type)">{{dateValue.typesTitle[i]}}</mat-option>
22
            </mat-select>
23
          </div>
24
          <div class="uk-padding-remove uk-margin-small-left" style="">
25
            <mat-form-field class="uk-width-small">
26
              <input matInput [matDatepicker]="pickerFrom" placeholder="Choose from date" 
27
                     [formControl]="fromDate" (click)="pickerFrom.open()" (dateChange)="fromDateChanged($event)">
28
              <mat-datepicker-toggle matSuffix [for]="pickerFrom"></mat-datepicker-toggle>
29
              <mat-datepicker #pickerFrom></mat-datepicker>
30
            </mat-form-field>
31
          </div>
32
          <div class="uk-padding-remove uk-margin-small-left" style="">
33
            <mat-form-field class="uk-width-small">
34
              <input matInput [matDatepicker]="pickerTo" placeholder="Choose to date" 
35
                     [formControl]="toDate" (click)="pickerTo.open()" (dateChange)="toDateChanged($event)">
36
              <mat-datepicker-toggle matSuffix [for]="pickerTo"></mat-datepicker-toggle>
37
              <mat-datepicker #pickerTo></mat-datepicker>
38
            </mat-form-field>
39
          </div>
40
        
41
      </div>
42
    </div>
43
</div>
44
    `
45

    
46
})
47

    
48
export class DateFilterComponent {
49

    
50
    @Input() dateValue = new DateValue("any");
51
    @Input() filterId;
52
    @Input() validDateFrom: boolean = true;
53
    @Input() validDateTo: boolean = true;
54

    
55
      // Initialized to specific date (09.10.2018).
56
      public from;//: Object = { date: { year: 2018, month: 10, day: 9 } };
57
      public to;//: Object = { date: { year: 2018, month: 10, day: 9 } };
58
      public fromDate;
59
      public toDate;
60

    
61
constructor() {
62
}
63

    
64
ngOnInit() {
65
  this.updateDefaultRangeDates(this.dateValue.from,this.dateValue.to);
66
}
67
updateDefaultRangeDates(df:Date,dt:Date){
68
    this.fromDate = new FormControl(df);
69
    this.toDate = new FormControl(dt);
70

    
71
  }
72
typeChanged(type:string){
73
  this.dateValue.setDatesByType(type);
74
  this.updateDefaultRangeDates(this.dateValue.from, this.dateValue.to);
75
}
76

    
77

    
78
fromDateChanged(event: MatDatepickerInputEvent<Date>) {
79
  this.dateValue.from = event.value;
80
  //console.info("FROM: "+Dates.getDateToString(this.dateValue.from));
81
}
82

    
83
toDateChanged(event: MatDatepickerInputEvent<Date>) {
84
  this.dateValue.to = event.value;
85
  //console.info("TO: "+Dates.getDateToString(this.dateValue.to));
86
}
87
}
(15-15/55)