From: Dominik Csapak Date: Thu, 5 Apr 2018 14:03:45 +0000 (+0200) Subject: add a checkbox to edit windows for advanced options X-Git-Url: https://git.proxmox.com/?p=proxmox-widget-toolkit.git;a=commitdiff_plain;h=880df5d504f2de70ff7496fd242e42a8c534a993 add a checkbox to edit windows for advanced options if the inputpanel has advanced options, show a checkbox to show/hide them Signed-off-by: Dominik Csapak --- diff --git a/window/Edit.js b/window/Edit.js index f72bee0..8d5aa19 100644 --- a/window/Edit.js +++ b/window/Edit.js @@ -274,6 +274,23 @@ Ext.define('Proxmox.window.Edit', { var dirty = form.isDirty(); submitBtn.setDisabled(!valid || !(dirty || me.isCreate)); resetBtn.setDisabled(!dirty); + + if (inputPanel && inputPanel.hasAdvanced) { + // we want to show the advanced options + // as soon as some of it is not valid + var advancedItems = me.down('#advancedContainer').query('field'); + var valid = true; + advancedItems.forEach(function(field) { + if (!field.isValid()) { + valid = false; + } + }); + + if (!valid) { + inputPanel.setAdvancedVisible(true); + me.down('#advancedcb').setValue(true); + } + } }; form.on('dirtychange', set_button_status); @@ -297,6 +314,28 @@ Ext.define('Proxmox.window.Edit', { me.buttons = [ submitBtn, resetBtn ]; } + if (inputPanel && inputPanel.hasAdvanced) { + var sp = Ext.state.Manager.getProvider(); + var advchecked = sp.get('proxmox-advanced-cb'); + inputPanel.setAdvancedVisible(advchecked); + me.buttons.unshift( + { + xtype: 'proxmoxcheckbox', + itemId: 'advancedcb', + boxLabelAlign: 'before', + boxLabel: gettext('Advanced'), + stateId: 'proxmox-advanced-cb', + value: advchecked, + listeners: { + change: function(cb, val) { + inputPanel.setAdvancedVisible(val); + sp.set('proxmox-advanced-cb', val); + } + } + } + ); + } + var onlineHelp = me.onlineHelp; if (!onlineHelp && inputPanel && inputPanel.onlineHelp) { onlineHelp = inputPanel.onlineHelp;