From mboxrd@z Thu Jan 1 00:00:00 1970 Return-Path: Received: from firstgate.proxmox.com (firstgate.proxmox.com [IPv6:2a01:7e0:0:424::9]) by lore.proxmox.com (Postfix) with ESMTPS id ED7E61FF14C for ; Fri, 15 May 2026 11:30:52 +0200 (CEST) Received: from firstgate.proxmox.com (localhost [127.0.0.1]) by firstgate.proxmox.com (Proxmox) with ESMTP id 1927915357; Fri, 15 May 2026 11:29:31 +0200 (CEST) From: Arthur Bied-Charreton To: pve-devel@lists.proxmox.com Subject: [PATCH pve-manager v5 19/21] ui: cpu flags selector: allow filtering out flags supported on 0 nodes Date: Fri, 15 May 2026 11:28:36 +0200 Message-ID: <20260515092839.238064-20-a.bied-charreton@proxmox.com> X-Mailer: git-send-email 2.47.3 In-Reply-To: <20260515092839.238064-1-a.bied-charreton@proxmox.com> References: <20260515092839.238064-1-a.bied-charreton@proxmox.com> MIME-Version: 1.0 Content-Transfer-Encoding: 8bit X-SPAM-LEVEL: Spam detection results: 0 AWL -0.132 Adjusted score from AWL reputation of From: address BAYES_00 -1.9 Bayes spam probability is 0 to 1% DMARC_MISSING 0.1 Missing DMARC policy KAM_DMARC_STATUS 0.01 Test Rule for DKIM or SPF Failure with Strict Alignment KAM_LAZY_DOMAIN_SECURITY 1 Sending domain does not have any anti-forgery methods RDNS_NONE 0.793 Delivered to internal network by a host with no rDNS SPF_HELO_NONE 0.001 SPF: HELO does not publish an SPF Record SPF_NONE 0.001 SPF: sender does not publish an SPF Record Message-ID-Hash: 53VANS2ISE65VMSVHNNEJWLD57NLRIYM X-Message-ID-Hash: 53VANS2ISE65VMSVHNNEJWLD57NLRIYM X-MailFrom: abied-charreton@jett.proxmox.com X-Mailman-Rule-Misses: dmarc-mitigation; no-senders; approved; loop; banned-address; emergency; member-moderation; nonmember-moderation; administrivia; implicit-dest; max-recipients; max-size; news-moderation; no-subject; digests; suspicious-header X-Mailman-Version: 3.3.10 Precedence: list List-Id: Proxmox VE development discussion List-Help: List-Owner: List-Post: List-Subscribe: List-Unsubscribe: The cpu-flags endpoints may return some CPU flags that are not supported on any node in the cluster. Filter those out by default in the UI, giving the option to display them via a checkbox. Unknown flags are still shown at the top of the list. Signed-off-by: Arthur Bied-Charreton --- www/manager6/form/VMCPUFlagSelector.js | 46 ++++++++++++++++++++++++++ 1 file changed, 46 insertions(+) diff --git a/www/manager6/form/VMCPUFlagSelector.js b/www/manager6/form/VMCPUFlagSelector.js index e08a911b..f7a56b5a 100644 --- a/www/manager6/form/VMCPUFlagSelector.js +++ b/www/manager6/form/VMCPUFlagSelector.js @@ -40,6 +40,18 @@ Ext.define('PVE.form.VMCPUFlagSelector', { }, }, + supportedFilterFn: function (rec) { + let state = rec.get('state'); + if (state && state !== '=') { + return true; + } + if (rec.get('unknown')) { + return true; + } + let s = rec.get('supported-on'); + return Array.isArray(s) && s.length > 0; + }, + getValue: function () { let me = this; let store = me.getStore(); @@ -265,10 +277,44 @@ Ext.define('PVE.form.VMCPUFlagSelector', { me.value = me.originalValue = ''; + me.dockedItems = [{ + xtype: 'toolbar', + dock: 'bottom', + padding: '0 5', + items: [ + { + xtype: 'checkbox', + checked: true, + submitValue: false, + isFormField: false, + boxLabel: gettext('Only show flags supported by at least one node'), + listeners: { + change: function (cb, checked) { + let grid = cb.up('grid'); + let store = grid.getStore(); + if (checked) { + store.addFilter({ + id: 'supported-filter', + filterFn: grid.supportedFilterFn, + }); + } else { + store.removeFilter('supported-filter'); + } + }, + }, + }, + ], + }]; + me.callParent(arguments); me.initialized = true; + me.getStore().addFilter({ + id: 'supported-filter', + filterFn: me.supportedFilterFn, + }); + me.getStore().on('load', function (store, _, success) { if (success) { me.adjustStoreForValue(); -- 2.47.3