]> git.proxmox.com Git - pve-manager.git/blobdiff - www/manager6/panel/IPSet.js
ui: backup job: avoid calling max-workers VM workers
[pve-manager.git] / www / manager6 / panel / IPSet.js
index a46067698edea1663644b0bfe63855e10f27668c..814b52ae44d18e80776da687aa9e9734c17147c5 100644 (file)
@@ -42,6 +42,9 @@ Ext.define('PVE.IPSetList', {
            },
        });
 
+       var caps = Ext.state.Manager.get('GuiCap');
+       let canEdit = !!caps.vms['VM.Config.Network'] || !!caps.dc['Sys.Modify'] || !!caps.nodes['Sys.Modify'];
+
        var sm = Ext.create('Ext.selection.RowModel', {});
 
        var reload = function() {
@@ -58,7 +61,7 @@ Ext.define('PVE.IPSetList', {
 
        var run_editor = function() {
            var rec = sm.getSelection()[0];
-           if (!rec) {
+           if (!rec || !canEdit) {
                return;
            }
            var win = Ext.create('Proxmox.window.Edit', {
@@ -94,6 +97,7 @@ Ext.define('PVE.IPSetList', {
        me.editBtn = new Proxmox.button.Button({
            text: gettext('Edit'),
            disabled: true,
+           enableFn: rec => canEdit,
            selModel: sm,
            handler: run_editor,
        });
@@ -128,6 +132,7 @@ Ext.define('PVE.IPSetList', {
        });
 
        me.removeBtn = Ext.create('Proxmox.button.StdRemoveButton', {
+           enableFn: rec => canEdit,
            selModel: sm,
            baseurl: me.base_url + '/',
            callback: reload,
@@ -138,8 +143,18 @@ Ext.define('PVE.IPSetList', {
            tbar: ['<b>IPSet:</b>', me.addBtn, me.removeBtn, me.editBtn],
            selModel: sm,
            columns: [
-               { header: 'IPSet', dataIndex: 'name', width: '100' },
-               { header: gettext('Comment'), dataIndex: 'comment', renderer: Ext.String.htmlEncode, flex: 1 },
+               {
+                   header: 'IPSet',
+                   dataIndex: 'name',
+                   minWidth: 150,
+                   flex: 1,
+               },
+               {
+                   header: gettext('Comment'),
+                   dataIndex: 'comment',
+                   renderer: Ext.String.htmlEncode,
+                   flex: 4,
+               },
            ],
            listeners: {
                itemdblclick: run_editor,
@@ -154,6 +169,10 @@ Ext.define('PVE.IPSetList', {
            },
        });
 
+       if (!canEdit) {
+           me.addBtn.setDisabled(true);
+       }
+
        me.callParent();
 
        store.load();
@@ -172,12 +191,12 @@ Ext.define('PVE.IPSetCidrEdit', {
 
 
        if (me.isCreate) {
-            me.url = '/api2/extjs' + me.base_url;
-            me.method = 'POST';
-        } else {
-            me.url = '/api2/extjs' + me.base_url + '/' + me.cidr;
-            me.method = 'PUT';
-        }
+           me.url = '/api2/extjs' + me.base_url;
+           me.method = 'POST';
+       } else {
+           me.url = '/api2/extjs' + me.base_url + '/' + me.cidr;
+           me.method = 'PUT';
+       }
 
        var column1 = [];
 
@@ -193,7 +212,7 @@ Ext.define('PVE.IPSetCidrEdit', {
                autoSelect: false,
                editable: true,
                base_url: me.list_refs_url,
-               value: '',
+               allowBlank: false,
                fieldLabel: gettext('IP/CIDR'),
            });
        } else {
@@ -268,7 +287,9 @@ Ext.define('PVE.IPSetGrid', {
            me.addBtn.setDisabled(true);
            me.store.removeAll();
        } else {
-           me.addBtn.setDisabled(false);
+           if (me.canEdit) {
+               me.addBtn.setDisabled(false);
+           }
            me.removeBtn.baseurl = url + '/';
            me.store.setProxy({
                type: 'proxmox',
@@ -296,9 +317,12 @@ Ext.define('PVE.IPSetGrid', {
 
        var sm = Ext.create('Ext.selection.RowModel', {});
 
+       me.caps = Ext.state.Manager.get('GuiCap');
+       me.canEdit = !!me.caps.vms['VM.Config.Network'] || !!me.caps.dc['Sys.Modify'] || !!me.caps.nodes['Sys.Modify'];
+
        var run_editor = function() {
            var rec = sm.getSelection()[0];
-           if (!rec) {
+           if (!rec || !me.canEdit) {
                return;
            }
            var win = Ext.create('PVE.IPSetCidrEdit', {
@@ -312,6 +336,7 @@ Ext.define('PVE.IPSetGrid', {
        me.editBtn = new Proxmox.button.Button({
            text: gettext('Edit'),
            disabled: true,
+           enableFn: rec => me.canEdit,
            selModel: sm,
            handler: run_editor,
        });
@@ -319,6 +344,7 @@ Ext.define('PVE.IPSetGrid', {
        me.addBtn = new Proxmox.button.Button({
            text: gettext('Add'),
            disabled: true,
+           enableFn: rec => me.canEdit,
            handler: function() {
                if (!me.base_url) {
                    return;
@@ -333,6 +359,8 @@ Ext.define('PVE.IPSetGrid', {
        });
 
        me.removeBtn = Ext.create('Proxmox.button.StdRemoveButton', {
+           disabled: true,
+           enableFn: rec => me.canEdit,
            selModel: sm,
            baseurl: me.base_url + '/',
            callback: reload,
@@ -362,11 +390,15 @@ Ext.define('PVE.IPSetGrid', {
            columns: [
                {
                    xtype: 'rownumberer',
+                   // cannot use width on instantiation as rownumberer hard-wires that in the
+                   // constructor to avoid being overridden by applyDefaults
+                   minWidth: 40,
                },
                {
                    header: gettext('IP/CIDR'),
                    dataIndex: 'cidr',
-                   width: 150,
+                   minWidth: 150,
+                   flex: 1,
                    renderer: function(value, metaData, record) {
                        value = render_errors(value, metaData, record);
                        if (record.data.nomatch) {
@@ -378,7 +410,7 @@ Ext.define('PVE.IPSetGrid', {
                {
                    header: gettext('Comment'),
                    dataIndex: 'comment',
-                   flex: 1,
+                   flex: 3,
                    renderer: function(value) {
                        return Ext.util.Format.htmlEncode(value);
                    },
@@ -434,8 +466,8 @@ Ext.define('PVE.IPSet', {
        });
 
        Ext.apply(me, {
-            layout: 'border',
-            items: [ipset_list, ipset_panel],
+           layout: 'border',
+           items: [ipset_list, ipset_panel],
            listeners: {
                show: function() {
                    ipset_list.fireEvent('show', ipset_list);