[pve-devel] [PATCH widget-toolkit 2/4] add TimezonePanel for containers
Oguz Bektas
o.bektas at proxmox.com
Thu Jul 2 14:49:12 CEST 2020
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.bektas at 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
More information about the pve-devel
mailing list