with 3 modes; - CT managed (no action) - match host (use same timezone as host) - select from list
also move 'UTC' to the top of the TimezoneStore for convenience Signed-off-by: Oguz Bektas <o.bek...@proxmox.com> --- v2->v3: * use radiofields src/Makefile | 1 + src/data/TimezoneStore.js | 2 +- src/panel/TimezonePanel.js | 91 ++++++++++++++++++++++++++++++++++++++ 3 files changed, 93 insertions(+), 1 deletion(-) create mode 100644 src/panel/TimezonePanel.js diff --git a/src/Makefile b/src/Makefile index 12dda30..8bd576f 100644 --- a/src/Makefile +++ b/src/Makefile @@ -41,6 +41,7 @@ JSSRC= \ panel/JournalView.js \ panel/RRDChart.js \ panel/GaugeWidget.js \ + panel/TimezonePanel.js \ window/Edit.js \ window/PasswordEdit.js \ window/TaskViewer.js \ diff --git a/src/data/TimezoneStore.js b/src/data/TimezoneStore.js index a67ad8b..fcaca3e 100644 --- a/src/data/TimezoneStore.js +++ b/src/data/TimezoneStore.js @@ -7,6 +7,7 @@ Ext.define('Proxmox.data.TimezoneStore', { extend: 'Ext.data.Store', model: 'Timezone', data: [ + ['UTC'], ['Africa/Abidjan'], ['Africa/Accra'], ['Africa/Addis_Ababa'], @@ -414,6 +415,5 @@ Ext.define('Proxmox.data.TimezoneStore', { ['Pacific/Tongatapu'], ['Pacific/Wake'], ['Pacific/Wallis'], - ['UTC'], ], }); diff --git a/src/panel/TimezonePanel.js b/src/panel/TimezonePanel.js new file mode 100644 index 0000000..25d6423 --- /dev/null +++ b/src/panel/TimezonePanel.js @@ -0,0 +1,91 @@ +Ext.define('PVE.panel.TimezonePanel', { + extend: 'Proxmox.panel.InputPanel', + alias: 'widget.PVETimezonePanel', + + insideWizard: false, + + setValues: function(values) { + var me = this; + + if (!values.timezone) { + delete values.tzmode; + } else if (values.timezone === 'host') { + values.tzmode = 'host'; + } else { + values.tzmode = 'select'; + } + return me.callParent([values]); + }, + + onGetValues: function(values) { + var me = this; + + var deletes = []; + if (values.tzmode === '__default__') { + deletes.push('timezone'); + } else if (values.tzmode === 'host') { + values.timezone = 'host'; + } + + delete values.tzmode; + + if (deletes.length) { + values.delete = deletes.join(','); + } + + return values; + }, + + + initComponent: function() { + var me = this; + + var items = []; + items.push({ + xtype: 'radiofield', + name: 'tzmode', + inputValue: '__default__', + boxLabel: gettext('Container managed'), + checked: true, + }); + items.push({ + xtype: 'radiofield', + name: 'tzmode', + inputValue: 'host', + boxLabel: gettext('Use host settings'), + }); + items.push({ + xtype: 'radiofield', + name: 'tzmode', + inputValue: 'select', + boxLabel: gettext('Select a timezone'), + listeners: { + change: function(f, value) { + if (!this.rendered) { + return; + } + let timezoneSelect = me.down('field[name=timezone]'); + timezoneSelect.setDisabled(!value); + }, + }, + }); + items.push({ + xtype: 'combobox', + itemId: 'tzlist', + fieldLabel: gettext('Time zone'), + disabled: true, + name: 'timezone', + queryMode: 'local', + store: Ext.create('Proxmox.data.TimezoneStore'), + displayField: 'zone', + editable: true, + anyMatch: true, + forceSelection: true, + allowBlank: false, + }); + + me.items = items; + + me.callParent(); + }, +}); -- 2.20.1 _______________________________________________ pve-devel mailing list pve-devel@pve.proxmox.com https://pve.proxmox.com/cgi-bin/mailman/listinfo/pve-devel