diff --git a/www/manager6/form/IPRefSelector.js b/www/manager6/form/IPRefSelector.js index 08fafd9..7be09b6 100644 --- a/www/manager6/form/IPRefSelector.js +++ b/www/manager6/form/IPRefSelector.js @@ -8,6 +8,9 @@ Ext.define('PVE.form.IPRefSelector', { ref_type: undefined, // undefined = any [undefined, 'ipset' or 'alias'] + // list of references that should not be offered, e.g. because they are already in use + excludeRefs: [], + valueField: 'scopedref', displayField: 'ref', notFoundIsValid: true, @@ -54,6 +57,7 @@ Ext.define('PVE.form.IPRefSelector', { property: 'ref', direction: 'ASC', }, + filters: [(rec) => !me.excludeRefs.includes(rec.data.scopedref)], }); var columns = []; diff --git a/www/manager6/panel/IPSet.js b/www/manager6/panel/IPSet.js index 9e0203a..d510ae6 100644 --- a/www/manager6/panel/IPSet.js +++ b/www/manager6/panel/IPSet.js @@ -187,6 +187,9 @@ Ext.define('PVE.IPSetCidrEdit', { cidr: undefined, + // entries already in the IPSet, not offered again when adding a new one + existingCidrs: [], + initComponent: function () { var me = this; @@ -211,6 +214,7 @@ Ext.define('PVE.IPSetCidrEdit', { xtype: 'pveIPRefSelector', name: 'cidr', ref_type: 'alias', + excludeRefs: me.existingCidrs, autoSelect: false, editable: true, base_url: me.list_refs_url, @@ -359,6 +363,7 @@ Ext.define( var win = Ext.create('PVE.IPSetCidrEdit', { base_url: me.base_url, list_refs_url: me.list_refs_url, + existingCidrs: store.collect('cidr'), }); win.show(); win.on('destroy', reload);