From 366558a79db9cdd0de73fef61cd734319632020e Mon Sep 17 00:00:00 2001 From: Dominik Csapak Date: Wed, 16 Nov 2022 16:48:13 +0100 Subject: [PATCH] ui: tree/ResourceTree: show Tags in tree and update the treenodes when the tags change. since we change the vm node text (which we pass through to the config panel), we have to change how we generate the text there slightly (otherwise that would include the rendered tags) Signed-off-by: Dominik Csapak --- www/manager6/data/ResourceStore.js | 6 ++++++ www/manager6/lxc/Config.js | 4 +++- www/manager6/qemu/Config.js | 4 +++- www/manager6/tree/ResourceTree.js | 10 +++++++++- 4 files changed, 21 insertions(+), 3 deletions(-) diff --git a/www/manager6/data/ResourceStore.js b/www/manager6/data/ResourceStore.js index c7b72306..b18f7dd8 100644 --- a/www/manager6/data/ResourceStore.js +++ b/www/manager6/data/ResourceStore.js @@ -293,6 +293,12 @@ Ext.define('PVE.data.ResourceStore', { sortable: true, width: 100, }, + tags: { + header: gettext('Tags'), + type: 'string', + hidden: true, + sortable: true, + }, }; let fields = []; diff --git a/www/manager6/lxc/Config.js b/www/manager6/lxc/Config.js index 9b3017ad..f3339051 100644 --- a/www/manager6/lxc/Config.js +++ b/www/manager6/lxc/Config.js @@ -206,8 +206,10 @@ Ext.define('PVE.lxc.Config', { }, }); + let vm_text = `${vm.vmid} (${vm.name})`; + Ext.apply(me, { - title: Ext.String.format(gettext("Container {0} on node '{1}'"), vm.text, nodename), + title: Ext.String.format(gettext("Container {0} on node '{1}'"), vm_text, nodename), hstateid: 'lxctab', tbarSpacing: false, tbar: [statusTxt, tagsContainer, '->', startBtn, shutdownBtn, migrateBtn, consoleBtn, moreBtn], diff --git a/www/manager6/qemu/Config.js b/www/manager6/qemu/Config.js index 2cd6d856..5c8fa620 100644 --- a/www/manager6/qemu/Config.js +++ b/www/manager6/qemu/Config.js @@ -242,8 +242,10 @@ Ext.define('PVE.qemu.Config', { }, }); + let vm_text = `${vm.vmid} (${vm.name})`; + Ext.apply(me, { - title: Ext.String.format(gettext("Virtual Machine {0} on node '{1}'"), vm.text, nodename), + title: Ext.String.format(gettext("Virtual Machine {0} on node '{1}'"), vm_text, nodename), hstateid: 'kvmtab', tbarSpacing: false, tbar: [statusTxt, tagsContainer, '->', resumeBtn, startBtn, shutdownBtn, migrateBtn, consoleBtn, moreBtn], diff --git a/www/manager6/tree/ResourceTree.js b/www/manager6/tree/ResourceTree.js index be90d4f7..5c92d412 100644 --- a/www/manager6/tree/ResourceTree.js +++ b/www/manager6/tree/ResourceTree.js @@ -5,6 +5,8 @@ Ext.define('PVE.tree.ResourceTree', { extend: 'Ext.tree.TreePanel', alias: ['widget.pveResourceTree'], + userCls: 'proxmox-tags-circle', + statics: { typeDefaults: { node: { @@ -114,6 +116,8 @@ Ext.define('PVE.tree.ResourceTree', { } } + info.text += PVE.Utils.renderTags(info.tags, PVE.Utils.tagOverrides); + info.text = status + info.text; }, @@ -226,6 +230,10 @@ Ext.define('PVE.tree.ResourceTree', { let stateid = 'rid'; + const changedFields = [ + 'text', 'running', 'template', 'status', 'qmpstatus', 'hastate', 'lock', 'tags', + ]; + let updateTree = function() { store.suspendEvents(); @@ -261,7 +269,7 @@ Ext.define('PVE.tree.ResourceTree', { } // tree item has been updated - for (const field of ['text', 'running', 'template', 'status', 'qmpstatus', 'hastate', 'lock']) { + for (const field of changedFields) { if (item.data[field] !== olditem.data[field]) { changed = true; break;