]> git.proxmox.com Git - proxmox-widget-toolkit.git/commitdiff
add a checkbox to edit windows for advanced options
authorDominik Csapak <d.csapak@proxmox.com>
Thu, 5 Apr 2018 14:03:45 +0000 (16:03 +0200)
committerDietmar Maurer <dietmar@proxmox.com>
Fri, 6 Apr 2018 08:08:31 +0000 (10:08 +0200)
if the inputpanel has advanced options, show a checkbox to
show/hide them

Signed-off-by: Dominik Csapak <d.csapak@proxmox.com>
window/Edit.js

index f72bee0d3c6f84ad5a6a934bbff39f70414bcb29..8d5aa19a5382bcbd166f79bd14b20f596deaa7fb 100644 (file)
@@ -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;