From c38face9fc98b1a969513aaa5c0e352698edaa9a Mon Sep 17 00:00:00 2001 From: Nikhil Mohite Date: Mon, 7 Nov 2022 10:54:58 +0530 Subject: [PATCH] Ensure that the browser tree should auto scroll to the selected node when expanding the server node. #2174 --- web/pgadmin/static/js/tree/pgadmin_tree_save_state.js | 6 +++++- web/pgadmin/static/js/tree/tree.js | 4 ++-- 2 files changed, 7 insertions(+), 3 deletions(-) diff --git a/web/pgadmin/static/js/tree/pgadmin_tree_save_state.js b/web/pgadmin/static/js/tree/pgadmin_tree_save_state.js index 6991f5852..4cadc64ce 100644 --- a/web/pgadmin/static/js/tree/pgadmin_tree_save_state.js +++ b/web/pgadmin/static/js/tree/pgadmin_tree_save_state.js @@ -49,6 +49,8 @@ _.extend(pgBrowser.browserTreeState, { // Previous tree state last_state: {}, + is_selected: false, + // Current tree state current_state: {}, @@ -314,6 +316,7 @@ _.extend(pgBrowser.browserTreeState, { } // Select the previously selected item + !this.is_selected && pgBrowser.tree.ensureVisible(item, 'center'); this.select_tree_item(item); }, @@ -372,13 +375,14 @@ _.extend(pgBrowser.browserTreeState, { treeHierarchy = pgBrowser.tree.getTreeNodeHierarchy(item), tmpTreeData = treeData[treeHierarchy[this.parent]['_id']]; - if (treeHierarchy.hasOwnProperty('server')) { let selectedItem = treeHierarchy['server']['id']; if (tmpTreeData && 'selected' in tmpTreeData && selectedItem in tmpTreeData['selected']) { if (tmpTreeData['selected'][selectedItem] == data.id) { + this.is_selected = true; pgBrowser.tree.select(item, true, 'center'); + pgBrowser.tree.ensureVisible(item, 'center'); } } } diff --git a/web/pgadmin/static/js/tree/tree.js b/web/pgadmin/static/js/tree/tree.js index b08c6255d..20620627f 100644 --- a/web/pgadmin/static/js/tree/tree.js +++ b/web/pgadmin/static/js/tree/tree.js @@ -154,8 +154,8 @@ export class Tree { await item.ensureLoaded(); } - async ensureVisible(item) { - await this.tree.ensureVisible(item); + async ensureVisible(item, align='auto') { + await this.tree.ensureVisible(item, align); } async openPath(item) {