On 02.07.20 14:49, Oguz Bektas wrote:
> 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 = [];

how's that not just a static
items: [
    { ... },
],

definition?

And even if it would need to be in initComponent then to me.items = [ ... ]
not that weird push every item step by step.

But please wait for a v4, I did not looked at the rest or tested this at
all..

> +     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();
> +    },
> +});
> 


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

Reply via email to