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

2018-04-06 Thread Thomas Lamprecht

Am 04/05/2018 um 04:03 PM schrieb Dominik Csapak:

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

Signed-off-by: Dominik Csapak 
---
  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;
+   }
+   });


Do you want to run isValid on all fields, as else only the first invalid
will be shown?

If so include this info in the comment, e.g., something like:
// tell user why the panel is invalid, show all invalid advanced items 
always


else use:
valid = advancedItems.every(function(f) { return f.isValid() });


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




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


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

2018-04-05 Thread Dominik Csapak
if the inputpanel has advanced options, show a checkbox to
show/hide them

Signed-off-by: Dominik Csapak 
---
 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


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