From: Dietmar Maurer Date: Wed, 20 Sep 2017 10:42:19 +0000 (+0200) Subject: form/DateTimeField.js - new widget to select Date with Time X-Git-Url: https://git.proxmox.com/?p=proxmox-widget-toolkit.git;a=commitdiff_plain;h=2e7bd1dcba1074123d9afd8e5cdb372ca1fc4f42 form/DateTimeField.js - new widget to select Date with Time --- diff --git a/Makefile b/Makefile index 0a7479d..d135796 100644 --- a/Makefile +++ b/Makefile @@ -24,6 +24,7 @@ JSSRC= \ data/TimezoneStore.js \ form/IntegerField.js \ form/TextField.js \ + form/DateTimeField.js \ form/Checkbox.js \ form/KVComboBox.js \ form/ComboGrid.js \ diff --git a/form/DateTimeField.js b/form/DateTimeField.js new file mode 100644 index 0000000..ddd1e76 --- /dev/null +++ b/form/DateTimeField.js @@ -0,0 +1,62 @@ +Ext.define('Proxmox.DateTimeField', { + extend: 'Ext.form.FieldContainer', + xtype: 'promxoxDateTimeField', + + layout: 'hbox', + + referenceHolder: true, + + submitFormat: 'U', + + getValue: function() { + var me = this; + var d = me.lookupReference('dateentry').getValue(); + + if (d === undefined || d === null) { return null; } + + var t = me.lookupReference('timeentry').getValue(); + + if (t === undefined || t === null) { return null; } + + var offset = (t.getHours()*3600+t.getMinutes()*60)*1000; + + return new Date(d.getTime() + offset); + }, + + getSubmitValue: function() { + var me = this; + var format = me.submitFormat; + var value = me.getValue(); + + return value ? Ext.Date.format(value, format) : null; + }, + + items: [ + { + xtype: 'datefield', + editable: false, + reference: 'dateentry', + flex: 1, + format: 'Y-m-d' + }, + { + xtype: 'timefield', + reference: 'timeentry', + format: 'H:i', + width: 80, + value: '00:00', + increment: 60 + } + ], + + initComponent: function() { + var me = this; + + me.callParent(); + + var value = me.value || new Date(); + + me.lookupReference('dateentry').setValue(value); + me.lookupReference('timeentry').setValue(value); + } +});