]> git.proxmox.com Git - pmg-gui.git/blobdiff - js/RuleInfo.js
objects: don't reload on match mode change
[pmg-gui.git] / js / RuleInfo.js
index 404c43726953a7481128208ef71147a537025417..12c9dcb713962a93c2c44aba120f9092b59c94eb 100644 (file)
@@ -120,6 +120,8 @@ Ext.define('PMG.RuleInfo', {
                        name: oc,
                        oclass: oc,
                        type: true,
+                       invert: ruledata[`${oc}-invert`],
+                       and: ruledata[`${oc}-and`],
                        leaf: false,
                        expanded: true,
                        expandable: false,
@@ -162,6 +164,23 @@ Ext.define('PMG.RuleInfo', {
            return true;
        },
 
+       updateMode: function(field, value) {
+           let me = this;
+           let vm = me.getViewModel();
+           let oclass = field.getWidgetRecord().data.oclass;
+
+           let params = {};
+           params[`${oclass}-invert`] = value.startsWith('not') ? 1 : 0;
+           params[`${oclass}-and`] = value.endsWith('all') ? 1 : 0;
+
+           Proxmox.Utils.API2Request({
+               url: `${vm.get('baseurl')}/config`,
+               method: 'PUT',
+               params,
+               success: () => me.reload(),
+           });
+       },
+
        control: {
            'treepanel[reference=usedobjects]': {
                drop: 'addDrop',
@@ -169,6 +188,9 @@ Ext.define('PMG.RuleInfo', {
            'tabpanel[reference=availobjects] > grid': {
                drop: 'removeDrop',
            },
+           'pmgMatchModeSelector': {
+               change: 'updateMode',
+           },
        },
     },
 
@@ -312,6 +334,26 @@ Ext.define('PMG.RuleInfo', {
                    },
                    flex: 1,
                },
+               {
+                   header: gettext('Match if'),
+                   xtype: 'widgetcolumn',
+                   width: 200,
+                   widget: {
+                       xtype: 'pmgMatchModeSelector',
+                   },
+                   onWidgetAttach: function(col, widget, rec) {
+                       if (rec.data.type && rec.data.oclass !== 'action') {
+                           let mode = rec.data.invert ? 'not' : '';
+                           mode += rec.data.and ? 'all' : 'any';
+                           widget.suspendEvents();
+                           widget.setValue(mode);
+                           widget.resumeEvents();
+                           widget.setHidden(false);
+                       } else {
+                           widget.setHidden(true);
+                       }
+                   },
+               },
                {
                    text: '',
                    xtype: 'actioncolumn',