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 <d.csapak@proxmox.com>
This commit is contained in:
Dominik Csapak authored and Thomas Lamprecht committed 2022-05-12 14:28:16 +02:00
1 parent 8ca7cccf5f
commit c7d42dac97
1 file changed
+13 -11
+13 -11
View File
@@ -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);
}
}