a84e0987d91bfcd0e22acb5ec52f669a2771c7aa
[sdc/sdc-workflow-designer.git] /
1 /**
2  * picker.component
3  */
4
5 import {
6     AfterViewInit,
7     Component, ElementRef, EventEmitter, forwardRef, Input, OnDestroy, OnInit, Output, Renderer2,
8     ViewChild
9 } from '@angular/core';
10 import {animate, state, style, transition, trigger} from '@angular/animations';
11 import {ControlValueAccessor, NG_VALUE_ACCESSOR} from '@angular/forms';
12
13 export interface LocaleSettings {
14     firstDayOfWeek?: number;
15     dayNames: string[];
16     dayNamesShort: string[];
17     monthNames: string[];
18     monthNamesShort: string[];
19     dateFns: any;
20 }
21
22 export enum DialogType {
23     Time,
24     Date,
25     Month,
26     Year,
27 }
28
29 @Component({
30     selector: 'plx-daterange-picker',
31     templateUrl: './pickerrange.component.html',
32     styleUrls: ['./pickerrange.component.css'],
33     providers: [],
34 })
35
36 export class PlxDateRangePickerComponent  {
37     /*
38 disabled        boolean false   设置为true时input框不能输入
39 minDate Date    null    最小可选日期
40 maxDate Date    null    最大可选日期
41 showTime        boolean false   设置为true时显示时间选择器
42 showSeconds     boolean false   时间选择器显示秒
43 timeOnly        boolean false   设置为true时只显示时间选择器
44 dateFormat      string  YYYY-MM-DD HH:mm        设置时间选择模式
45 locale  Object  null    设置国际化对象,请参考国际化例子。
46 改变组件时间*/
47
48     @Input() disabled : boolean = false;
49     @Input() showTime : boolean = false;
50     @Input() showSeconds : boolean = false;
51     @Input() timeOnly : boolean = false;
52     @Input() dateFormat : string = "YYYY-MM-DD HH:mm";
53     @Input() placeHolderStartDate       : string = "";
54     @Input() placeHolderEndDate : string = "";
55     @Input() locale     : any ={
56         firstDayOfWeek: 0,
57         dayNames: ['Sunday', 'Monday', 'Tuesday', 'Wednesday', 'Thursday', 'Friday', 'Saturday'],
58         dayNamesShort: ['Sun', 'Mon', 'Tue', 'Wed', 'Thu', 'Fri', 'Sat'],
59         monthNames: ['January', 'February', 'March', 'April', 'May', 'June', 'July', 'August', 'September', 'October', 'November', 'December'],
60         monthNamesShort: ['Jan', 'Feb', 'Mar', 'Apr', 'May', 'Jun', 'Jul', 'Aug', 'Sep', 'Oct', 'Nov', 'Dec'],
61         dateFns: null,
62         confirm:'OK',
63         to:"to"
64     };
65     @Input() startDate : Date;
66     @Input() endDate : Date;
67     @Input() canClear: boolean = true;
68     @Input() startMinDate:Date;
69     @Input() endMaxDate:Date;
70     /**
71      * @default false
72      * @type {Boolean}
73      * */
74     @Input() supportKeyboardInput: boolean = false;
75     _startSetMaxDate:Date;
76     _startMaxDate:Date;
77     @Input() 
78     set startMaxDate( date:Date)
79     {
80         this._startSetMaxDate=date;
81         this.BuildstartMaxDate();
82     }    
83     _endSetMinDate:Date;
84     _endMinDate:Date;
85     @Input() 
86     set endMinDate( date:Date)
87     {
88         this._endSetMinDate=date;
89         this.BuildendMinDate();
90     }
91     BuildstartMaxDate()
92     {
93         if(this._startSetMaxDate===undefined)
94         {
95             this._startMaxDate=this.endDate
96             return;
97         }
98         if(this.endDate!==undefined)
99         {
100             this._startMaxDate= this.endDate<this._startSetMaxDate?this.endDate:this._startSetMaxDate;
101             return;
102         }
103         this._startMaxDate=this._startSetMaxDate;
104     }
105     BuildendMinDate()
106     {
107         if(this._endSetMinDate===undefined)
108         {
109             this._endMinDate=this.startDate
110             return;
111         }
112         if(this.startDate!==undefined)
113         {
114             this._endMinDate= this.startDate>this._endSetMinDate?this.startDate:this._endSetMinDate;
115             return;
116         }
117         this._endMinDate=this._endSetMinDate;
118     }
119     
120     @Output()
121     onStartDateClosed: EventEmitter<any> = new EventEmitter<any>();
122     @Output()
123     onEndDateClosed: EventEmitter<any> = new EventEmitter<any>();
124
125     EvonStartDateClosed(event : any)
126     {
127         this.BuildendMinDate();
128         if(this.startDate!==null)
129         {
130         event.date=new Date(this.startDate);
131         }
132         this.onStartDateClosed.emit(event);
133         event.preventDefault();
134         let dd= this;
135         return;
136     }
137
138
139     EvonEndDateClosed (event : any)
140     {
141
142         this.BuildstartMaxDate()
143         if(this.endDate!==null)
144         {
145         event.date=new Date(this.endDate);
146         }
147         this.onEndDateClosed.emit(event);
148         event.preventDefault();
149         let dd= this;
150         return;
151     }
152
153
154     public navigateTo (startDate: Date, endDate: Date)
155     {
156         this.startDate=startDate;
157         this.endDate = endDate;
158     }
159     
160
161
162 }