From e089d6bafbad0dba1c2f31dfbf92e2ec71acbd88 Mon Sep 17 00:00:00 2001 From: Ankush Menat Date: Mon, 13 Dec 2021 22:28:38 +0530 Subject: [PATCH 1/3] fix: adding a new child expands all childs The refresh method is causing deep reload of parent node. Doesn't seem like it's of any use here. ref: https://github.com/frappe/frappe/pull/4805 This fix had side effect of expanding all parent node recursively. --- frappe/public/js/frappe/ui/tree.js | 1 - frappe/public/js/frappe/views/treeview.js | 1 + 2 files changed, 1 insertion(+), 1 deletion(-) diff --git a/frappe/public/js/frappe/ui/tree.js b/frappe/public/js/frappe/ui/tree.js index 4b11b092eb..c32d92aa32 100644 --- a/frappe/public/js/frappe/ui/tree.js +++ b/frappe/public/js/frappe/ui/tree.js @@ -299,7 +299,6 @@ frappe.ui.Tree = class { .appendTo($toolbar); $link.on('click', () => { obj.click(node); - this.refresh(); }); }); diff --git a/frappe/public/js/frappe/views/treeview.js b/frappe/public/js/frappe/views/treeview.js index 30da212f0a..44bbaaeeaf 100644 --- a/frappe/public/js/frappe/views/treeview.js +++ b/frappe/public/js/frappe/views/treeview.js @@ -242,6 +242,7 @@ frappe.views.TreeView = class TreeView { frappe.model.rename_doc(me.doctype, node.label, function(new_name) { node.$tree_link.find('a').text(new_name); node.label = new_name; + me.tree.refresh(); }); }, btnClass: "hidden-xs" From c33854010e74b82bb1c010572844681fc27dc0e4 Mon Sep 17 00:00:00 2001 From: Ankush Menat Date: Mon, 13 Dec 2021 23:10:04 +0530 Subject: [PATCH 2/3] fix: while adding a new node only expand current node deep expand is pointless and clutters the screen. Only expand / refresh current node. --- frappe/public/js/frappe/views/treeview.js | 5 +---- 1 file changed, 1 insertion(+), 4 deletions(-) diff --git a/frappe/public/js/frappe/views/treeview.js b/frappe/public/js/frappe/views/treeview.js index 44bbaaeeaf..cc0a233003 100644 --- a/frappe/public/js/frappe/views/treeview.js +++ b/frappe/public/js/frappe/views/treeview.js @@ -318,10 +318,7 @@ frappe.views.TreeView = class TreeView { args: args, callback: function(r) { if(!r.exc) { - if(node.expanded) { - me.tree.toggle_node(node); - } - me.tree.load_children(node, true); + me.tree.load_children(node); } }, always: function() { From af67ecc11679b1f885df5f960d563ca541f1563d Mon Sep 17 00:00:00 2001 From: Ankush Menat Date: Mon, 13 Dec 2021 23:16:12 +0530 Subject: [PATCH 3/3] fix: dont refresh treeview on save / realtime treeview's refresh method loads the whole tree without keeping any state of what was expanded. So if triggered update via realtime the whole page reloads and you see expanded tree. --- frappe/public/js/frappe/list/list_view.js | 6 ------ 1 file changed, 6 deletions(-) diff --git a/frappe/public/js/frappe/list/list_view.js b/frappe/public/js/frappe/list/list_view.js index 3c9f1e39fb..e9727f889a 100644 --- a/frappe/public/js/frappe/list/list_view.js +++ b/frappe/public/js/frappe/list/list_view.js @@ -1910,12 +1910,6 @@ frappe.views.ListView = class ListView extends frappe.views.BaseList { if (!doctype) return; frappe.provide("frappe.views.trees"); - // refresh tree view - if (frappe.views.trees[doctype]) { - frappe.views.trees[doctype].tree.refresh(); - return; - } - // refresh list view const page_name = frappe.get_route_str(); const list_view = frappe.views.list_view[page_name];