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 26A90702A3 for ; Tue, 21 Jun 2022 11:20:44 +0200 (CEST) Received: from firstgate.proxmox.com (localhost [127.0.0.1]) by firstgate.proxmox.com (Proxmox) with ESMTP id E02182C96 for ; Tue, 21 Jun 2022 11:20:25 +0200 (CEST) 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 id 8BC5129D2 for ; Tue, 21 Jun 2022 11:20:15 +0200 (CEST) Received: from proxmox-new.maurer-it.com (localhost.localdomain [127.0.0.1]) by proxmox-new.maurer-it.com (Proxmox) with ESMTP id 6559043C23 for ; Tue, 21 Jun 2022 11:20:15 +0200 (CEST) From: Dominik Csapak To: pve-devel@lists.proxmox.com Date: Tue, 21 Jun 2022 11:20:04 +0200 Message-Id: <20220621092012.1776825-17-d.csapak@proxmox.com> X-Mailer: git-send-email 2.30.2 In-Reply-To: <20220621092012.1776825-1-d.csapak@proxmox.com> References: <20220621092012.1776825-1-d.csapak@proxmox.com> MIME-Version: 1.0 Content-Transfer-Encoding: 8bit X-SPAM-LEVEL: Spam detection results: 0 AWL 0.101 Adjusted score from AWL reputation of From: address 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 Alignment SPF_HELO_NONE 0.001 SPF: HELO does not publish an SPF Record SPF_PASS -0.001 SPF: sender matches SPF record T_SCC_BODY_TEXT_LINE -0.01 - Subject: [pve-devel] [PATCH manager v7 06/14] ui: dc/OptionView: add editors for tag settings 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: Tue, 21 Jun 2022 09:20:44 -0000 namely for 'tag-tree-style' and 'tag-colors'. display the tag overrides directly as they will appear as tags Signed-off-by: Dominik Csapak --- www/manager6/Utils.js | 20 +++++++++ www/manager6/dc/OptionView.js | 84 +++++++++++++++++++++++++++++++++++ 2 files changed, 104 insertions(+) diff --git a/www/manager6/Utils.js b/www/manager6/Utils.js index bd0490a4..4bd8875b 100644 --- a/www/manager6/Utils.js +++ b/www/manager6/Utils.js @@ -1851,6 +1851,26 @@ Ext.define('PVE.Utils', { Ext.ComponentQuery.query('pveResourceTree')[0].setUserCls(`proxmox-tags-${style}`); }, + tagTreeStyles: { + '__default__': Proxmox.Utils.defaultText, + 'full': gettext('Full'), + 'circle': gettext('Circle'), + 'dense': gettext('Dense'), + 'none': Proxmox.Utils.NoneText, + }, + + renderTags: function(tagstext, overrides) { + let text = ''; + if (tagstext) { + let tags = (tagstext.split(/[,; ]/) || []).filter(t => !!t); + text += ' '; + tags.forEach((tag) => { + text += Proxmox.Utils.getTagElement(tag, overrides); + }); + } + return text; + }, + tagCharRegex: /^[a-z0-9+_.-]$/i, }, diff --git a/www/manager6/dc/OptionView.js b/www/manager6/dc/OptionView.js index 51696982..6dbe1d28 100644 --- a/www/manager6/dc/OptionView.js +++ b/www/manager6/dc/OptionView.js @@ -5,6 +5,7 @@ Ext.define('PVE.dc.OptionView', { onlineHelp: 'datacenter_configuration_file', monStoreErrors: true, + userCls: 'proxmox-tags-full', add_inputpanel_row: function(name, text, opts) { var me = this; @@ -305,6 +306,86 @@ Ext.define('PVE.dc.OptionView', { submitValue: true, }], }); + me.rows['tag-style'] = { + required: true, + renderer: (value) => { + if (value === undefined) { + return gettext('No Overrides'); + } + let colors = PVE.Utils.parseTagOverrides(value.colors); + let shape = value['tree-shape']; + let shapeText = PVE.Utils.tagTreeStyles[shape] ?? Proxmox.Utils.defaultText; + let txt = Ext.String.format(gettext("Tree Shape: {0}"), shapeText); + if (Object.keys(colors).length > 0) { + txt += ', '; + } + for (const tag of Object.keys(colors)) { + txt += Proxmox.Utils.getTagElement(tag, colors); + } + return txt; + }, + header: gettext('Tag Style Override'), + editor: { + xtype: 'proxmoxWindowEdit', + width: 800, + subject: gettext('Tag Color Override'), + fieldDefaults: { + labelWidth: 100, + }, + url: '/api2/extjs/cluster/options', + items: [ + { + xtype: 'inputpanel', + setValues: function(values) { + if (values === undefined) { + return undefined; + } + values = values?.['tag-style'] ?? {}; + values['tree-shape'] = values?.['tree-shape'] || '__default__'; + return Proxmox.panel.InputPanel.prototype.setValues.call(this, values); + }, + onGetValues: function(values) { + let style = {}; + if (values.colors) { + style.colors = values.colors; + } + if (values['tree-shape']) { + style['tree-shape'] = values['tree-shape']; + } + let value = PVE.Parser.printPropertyString(style); + if (value === '') { + return { + delete: 'tag-style', + }; + } + return { + 'tag-style': value, + }; + }, + items: [ + { + name: 'tree-shape', + xtype: 'proxmoxKVComboBox', + fieldLabel: gettext('Tree Shape'), + comboItems: Object.entries(PVE.Utils.tagTreeStyles), + defaultValue: '__default__', + deleteEmpty: true, + }, + { + xtype: 'displayfield', + fieldLabel: gettext('Color Overrides'), + }, + { + name: 'colors', + xtype: 'pveTagColorGrid', + deleteEmpty: true, + height: 300, + }, + ], + }, + ], + }, + }; me.selModel = Ext.create('Ext.selection.RowModel', {}); @@ -340,6 +421,9 @@ Ext.define('PVE.dc.OptionView', { if (rec.data.value === '__default__') { delete PVE.VersionInfo.console; } + + let tagStyle = store.getById('tag-style')?.data?.value; + PVE.Utils.updateTagSettings(tagStyle?.colors, tagStyle?.['tree-shape']); }); me.on('activate', me.rstore.startUpdate); -- 2.30.2