]>
git.proxmox.com Git - proxmox-widget-toolkit.git/blob - src/form/DateTimeField.js
1 Ext
.define('Proxmox.DateTimeField', {
2 extend
: 'Ext.form.FieldContainer',
3 // FIXME: remove once all use sites upgraded (with versioned depends on new WTK!)
4 alias
: ['widget.promxoxDateTimeField'],
5 xtype
: 'proxmoxDateTimeField',
19 return get('datetime');
23 this.set('datetime', null);
26 let datetime
= new Date(this.get('datetime'));
27 datetime
.setFullYear(date
.getFullYear(), date
.getMonth(), date
.getDate());
28 this.set('datetime', datetime
);
34 return get('datetime');
38 this.set('datetime', null);
41 let datetime
= new Date(this.get('datetime'));
42 datetime
.setHours(time
.getHours());
43 datetime
.setMinutes(time
.getMinutes());
44 datetime
.setSeconds(time
.getSeconds());
45 datetime
.setMilliseconds(time
.getMilliseconds());
46 this.set('datetime', datetime
);
52 let datetime
= get('minDatetime');
53 return datetime
? new Date(datetime
) : null;
59 let datetime
= get('maxDatetime');
60 return datetime
? new Date(datetime
) : null;
66 let current
= get('datetime');
67 let min
= get('minDatetime');
68 if (min
&& current
&& !this.isSameDay(current
, min
)) {
69 return new Date(min
).setHours('00', '00', '00', '000');
77 let current
= get('datetime');
78 let max
= get('maxDatetime');
79 if (max
&& current
&& !this.isSameDay(current
, max
)) {
80 return new Date(max
).setHours('23', '59', '59', '999');
87 // Helper function to check if dates are the same day of the year
88 isSameDay: function(date1
, date2
) {
89 return date1
.getDate() === date2
.getDate() &&
90 date1
.getMonth() === date2
.getMonth() &&
91 date1
.getFullYear() === date2
.getFullYear();
101 setValue: function(value
) {
102 this.getViewModel().set('datetime', value
);
105 getValue: function() {
106 return this.getViewModel().get('datetime');
109 getSubmitValue: function() {
111 let value
= me
.getValue();
112 return value
? Ext
.Date
.format(value
, me
.submitFormat
) : null;
115 setMinValue: function(value
) {
116 this.getViewModel().set('minDatetime', value
);
119 getMinValue: function() {
120 return this.getViewModel().get('minDatetime');
123 setMaxValue: function(value
) {
124 this.getViewModel().set('maxDatetime', value
);
127 getMaxValue: function() {
128 return this.getViewModel().get('maxDatetime');
131 initComponent: function() {
135 let vm
= me
.getViewModel();
136 vm
.set('datetime', me
.config
.value
);
137 // Propagate state change to binding
138 vm
.bind('{datetime}', function(value
) {
139 me
.publishState('value', value
);
140 me
.fireEvent('change', value
);
152 minValue
: '{minDate}',
153 maxValue
: '{maxDate}',
164 minValue
: '{minTime}',
165 maxValue
: '{maxTime}',