namely for 'tag-tree-style' and 'tag-colors'. display the tag overrides directly as they will appear as tags
Signed-off-by: Dominik Csapak <d.csa...@proxmox.com> --- 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 ba276ebe..c2a98523 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 ff96351d..cb1b1dc7 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; @@ -312,6 +313,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', {}); @@ -347,6 +428,9 @@ Ext.define('PVE.dc.OptionView', { if (rec.data.value === '__default__') { delete PVE.UIOptions.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 _______________________________________________ pve-devel mailing list pve-devel@lists.proxmox.com https://lists.proxmox.com/cgi-bin/mailman/listinfo/pve-devel