[pve-devel] [PATCH widget-toolkit 2/2] add a checkbox to edit windows for advanced options

Dominik Csapak d.csapak at proxmox.com
Thu Apr 5 16:03:45 CEST 2018


if the inputpanel has advanced options, show a checkbox to
show/hide them

Signed-off-by: Dominik Csapak <d.csapak at proxmox.com>
---
 window/Edit.js | 39 +++++++++++++++++++++++++++++++++++++++
 1 file changed, 39 insertions(+)

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





More information about the pve-devel mailing list