From mboxrd@z Thu Jan 1 00:00:00 1970 Return-Path: Received: from firstgate.proxmox.com (firstgate.proxmox.com [212.224.123.68]) (using TLSv1.3 with cipher TLS_AES_256_GCM_SHA384 (256/256 bits) key-exchange X25519 server-signature RSA-PSS (2048 bits)) (No client certificate requested) by lists.proxmox.com (Postfix) with ESMTPS id D511D9817 for ; Fri, 18 Nov 2022 09:10:09 +0100 (CET) Received: from firstgate.proxmox.com (localhost [127.0.0.1]) by firstgate.proxmox.com (Proxmox) with ESMTP id B577035638 for ; Fri, 18 Nov 2022 09:09:39 +0100 (CET) Received: from proxmox-new.maurer-it.com (proxmox-new.maurer-it.com [94.136.29.106]) (using TLSv1.3 with cipher TLS_AES_256_GCM_SHA384 (256/256 bits) key-exchange X25519 server-signature RSA-PSS (2048 bits)) (No client certificate requested) by firstgate.proxmox.com (Proxmox) with ESMTPS for ; Fri, 18 Nov 2022 09:09:38 +0100 (CET) Received: from proxmox-new.maurer-it.com (localhost.localdomain [127.0.0.1]) by proxmox-new.maurer-it.com (Proxmox) with ESMTP id AA5B244023 for ; Fri, 18 Nov 2022 09:09:38 +0100 (CET) From: Dominik Csapak To: pve-devel@lists.proxmox.com Date: Fri, 18 Nov 2022 09:09:37 +0100 Message-Id: <20221118080937.407056-1-d.csapak@proxmox.com> X-Mailer: git-send-email 2.30.2 MIME-Version: 1.0 Content-Transfer-Encoding: 8bit X-SPAM-LEVEL: Spam detection results: =?UTF-8?Q?0=0A=09?=AWL 0.065 Adjusted score from AWL reputation of From: =?UTF-8?Q?address=0A=09?=BAYES_00 -1.9 Bayes spam probability is 0 to 1% KAM_DMARC_STATUS 0.01 Test Rule for DKIM or SPF Failure with Strict =?UTF-8?Q?Alignment=0A=09?=SPF_HELO_NONE 0.001 SPF: HELO does not publish an SPF =?UTF-8?Q?Record=0A=09?=SPF_PASS -0.001 SPF: sender matches SPF record Subject: [pve-devel] [PATCH manager] ui: fix datacenter tags options inputs X-BeenThere: pve-devel@lists.proxmox.com X-Mailman-Version: 2.1.29 Precedence: list List-Id: Proxmox VE development discussion List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , X-List-Received-Date: Fri, 18 Nov 2022 08:10:09 -0000 * dont allow blank for tree shape * allow completely removing registered tags and user-tag-access properties * correctly check validity for the listfield * use correct gettexts * don't inject empty field in the listfield when setting an empty string Signed-off-by: Dominik Csapak --- www/manager6/dc/OptionView.js | 9 +++++---- www/manager6/dc/RegisteredTagsEdit.js | 18 +++++++++++------- www/manager6/dc/UserTagAccessEdit.js | 2 +- www/manager6/form/ListField.js | 8 ++++++-- 4 files changed, 23 insertions(+), 14 deletions(-) diff --git a/www/manager6/dc/OptionView.js b/www/manager6/dc/OptionView.js index 7f77ea758..5cb5b0b6f 100644 --- a/www/manager6/dc/OptionView.js +++ b/www/manager6/dc/OptionView.js @@ -384,6 +384,7 @@ Ext.define('PVE.dc.OptionView', { fieldLabel: gettext('Tree Shape'), valueField: 'value', displayField: 'display', + allowBlank: false, listConfig: { columns: [ { @@ -448,12 +449,12 @@ Ext.define('PVE.dc.OptionView', { return Ext.String.format(gettext('Mode: {0}'), 'free'); } let mode = value?.['user-allow'] ?? 'free'; - let list = value?.['user-allow-list'].join(','); - let modeTxt = Ext.String.format(gettext('Mode {0}'), mode); + let list = value?.['user-allow-list']?.join(',') ?? ''; + let modeTxt = Ext.String.format(gettext('Mode: {0}'), mode); let overrides = PVE.Utils.tagOverrides; let tags = PVE.Utils.renderTags(list, overrides); - - return `${modeTxt}, ${gettext('Pre-defined:')} ${tags}`; + let listTxt = tags !== '' ? `, ${gettext('Pre-defiend:')} ${tags}` : ''; + return `${modeTxt}${listTxt}`; }, header: gettext('User Tag Access'), editor: { diff --git a/www/manager6/dc/RegisteredTagsEdit.js b/www/manager6/dc/RegisteredTagsEdit.js index 75b4f9ba3..b46326ae8 100644 --- a/www/manager6/dc/RegisteredTagsEdit.js +++ b/www/manager6/dc/RegisteredTagsEdit.js @@ -36,25 +36,29 @@ Ext.define('PVE.dc.RegisteredTagsEdit', { setValues: function(values) { let allowed_tags = values?.['user-tag-access']?.['user-allow-list'] ?? []; this.up('pveRegisteredTagEdit').allowed_tags = allowed_tags; - - let tags = values?.['registered-tags'] ?? ''; + let tags = values?.['registered-tags']; return Proxmox.panel.InputPanel.prototype.setValues.call(this, { tags }); }, onGetValues: function(values) { - return { - 'registered-tags': values, - }; + if (!values.tags) { + return { + 'delete': 'registered-tags', + }; + } else { + return { + 'registered-tags': values.tags, + }; + } }, items: [ { name: 'tags', xtype: 'pveListField', - emptyText: gettext('No Tags defined'), - fieldTitle: gettext('Tag'), maskRe: PVE.Utils.tagCharRegex, gridConfig: { height: 200, scrollable: true, + emptyText: gettext('No Tags defined'), }, listeners: { change: 'tagChange', diff --git a/www/manager6/dc/UserTagAccessEdit.js b/www/manager6/dc/UserTagAccessEdit.js index f22ac9b3d..61c38c074 100644 --- a/www/manager6/dc/UserTagAccessEdit.js +++ b/www/manager6/dc/UserTagAccessEdit.js @@ -40,7 +40,7 @@ Ext.define('PVE.dc.UserTagAccessEdit', { }, onGetValues: function(values) { if (values === undefined || Object.keys(values).length === 0) { - return { 'delete': name }; + return { 'delete': 'user-tag-access' }; } return { 'user-tag-access': PVE.Parser.printPropertyString(values), diff --git a/www/manager6/form/ListField.js b/www/manager6/form/ListField.js index 77e9ebfca..61e37f7e5 100644 --- a/www/manager6/form/ListField.js +++ b/www/manager6/form/ListField.js @@ -22,7 +22,8 @@ Ext.define('PVE.form.ListField', { setValue: function(list) { let me = this; - list = Ext.isArray(list) ? list : (list ?? '').split(';'); + list = Ext.isArray(list) ? list : (list ?? '').split(';').filter(t => t !== ''); + let store = me.lookup('grid').getStore(); if (list.length > 0) { store.setData(list.map(item => ({ item }))); @@ -99,6 +100,7 @@ Ext.define('PVE.form.ListField', { grid.getStore().remove(record); view.checkChange(); + view.validate(); }, itemChange: function(field, newValue) { @@ -108,7 +110,9 @@ Ext.define('PVE.form.ListField', { } let column = field.getWidgetColumn(); rec.set(column.dataIndex, newValue); - field.up('pveListField').checkChange(); + let list = field.up('pveListField'); + list.checkChange(); + list.validate(); }, control: { -- 2.30.2