From c7d42dac97f0e4633a1f4f8bb8dbdfdbdb6e0eea Mon Sep 17 00:00:00 2001 From: Dominik Csapak Date: Thu, 12 May 2022 14:23:52 +0200 Subject: [PATCH] ui: navigation tree: fix losing datastore selection on store load instead of using 'replaceChild', simply set the appropriate properties. When using the 'nodeUpdate' (protected function of extjs, intended to be overwritten) instead of the private 'updateNode', it will be called when the properties change This way, the treenode stays the same and it can keep the selection Signed-off-by: Dominik Csapak --- www/NavigationTree.js | 24 +++++++++++++----------- 1 file changed, 13 insertions(+), 11 deletions(-) diff --git a/www/NavigationTree.js b/www/NavigationTree.js index eea1d158..577310fd 100644 --- a/www/NavigationTree.js +++ b/www/NavigationTree.js @@ -130,9 +130,10 @@ Ext.define('PBS.store.NavigationStore', { Ext.define('CustomTreeListItem', { extend: 'Ext.list.TreeItem', xtype: 'qtiptreelistitem', - updateNode: function(node, oldNode) { + + nodeUpdate: function(node, modifiedFieldNames) { + this.callParent(arguments); const qtip = node ? node.get('qtip') : null; - this.callParent([node, oldNode]); if (qtip) { this.element.dom.setAttribute('data-qtip', qtip); } else { @@ -261,17 +262,18 @@ Ext.define('PBS.view.main.NavigationTree', { iconCls = 'fa fa-database pmx-tree-icon-custom maintenance'; } - const child = { - text: name, - qtip, - path: `DataStore-${name}`, - iconCls, - leaf: true, - }; if (getChildTextAt(j).localeCompare(name) !== 0) { - list.insertChild(j, child); + list.insertChild(j, { + text: name, + qtip, + path: `DataStore-${name}`, + iconCls, + leaf: true, + }); } else { - list.replaceChild(child, list.getChildAt(j)); + let oldChild = list.getChildAt(j); + oldChild.set('qtip', qtip); + oldChild.set('iconCls', iconCls); } }