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>
---

v1->v2:
no changes


 src/Makefile               |  1 +
 src/data/TimezoneStore.js  |  2 +-
 src/panel/TimezonePanel.js | 73 ++++++++++++++++++++++++++++++++++++++
 3 files changed, 75 insertions(+), 1 deletion(-)
 create mode 100644 src/panel/TimezonePanel.js

diff --git a/src/Makefile b/src/Makefile
index 659e876..e1a31e8 100644
--- a/src/Makefile
+++ b/src/Makefile
@@ -38,6 +38,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..5ebac65
--- /dev/null
+++ b/src/panel/TimezonePanel.js
@@ -0,0 +1,73 @@
+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) {
+           deletes.push('timezone');
+       } else if (values.tzmode === 'host') {
+           values.timezone = 'host';
+       }
+       delete values.tzmode;
+       if (deletes.length > 0) {
+           values.delete = deletes;
+       }
+
+       return values;
+    },
+
+    items: [
+       {
+           xtype: 'proxmoxKVComboBox',
+           name: 'tzmode',
+           fieldLabel: gettext('Time zone mode'),
+           value: '__default__',
+           comboItems: [
+               ['__default__', 'CT managed'],
+               ['host', 'use host settings'],
+               ['select', 'choose from list'],
+           ],
+           listeners: {
+               change: function(kvcombo, newValue, oldValue, eOpts) {
+                   var combo = kvcombo.up('form').down('#tzlistcombo');
+                   if (newValue === 'select') {
+                       combo.enable();
+                   } else if (newValue !== 'select') {
+                       combo.disable();
+                   }
+               },
+           },
+       },
+       {
+           xtype: 'combobox',
+           itemId: 'tzlistcombo',
+           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,
+       },
+    ],
+});
-- 
2.20.1

_______________________________________________
pve-devel mailing list
pve-devel@pve.proxmox.com
https://pve.proxmox.com/cgi-bin/mailman/listinfo/pve-devel

Reply via email to