Save the treeview state periodically, and restore it automatically when reconnecting. Fixes #1253

This commit is contained in:
Khushboo Vashi
2018-10-08 10:03:19 +01:00
committed by Dave Page
parent 44ef501283
commit 528ea88dec
11 changed files with 680 additions and 21 deletions

View File

@@ -9,7 +9,7 @@ define('pgadmin.browser', [
'pgadmin.browser.error', 'pgadmin.browser.frame',
'pgadmin.browser.node', 'pgadmin.browser.collection',
'sources/codemirror/addon/fold/pgadmin-sqlfoldcode',
'pgadmin.browser.keyboard',
'pgadmin.browser.keyboard', 'sources/tree/pgadmin_tree_save_state',
], function(
tree,
gettext, url_for, require, $, _, S, Bootstrap, pgAdmin, Alertify,
@@ -513,9 +513,11 @@ define('pgadmin.browser', [
.done(function() {})
.fail(function() {});
}, 300000);
obj.Events.on('pgadmin:browser:tree:add', obj.onAddTreeNode, obj);
obj.Events.on('pgadmin:browser:tree:update', obj.onUpdateTreeNode, obj);
obj.Events.on('pgadmin:browser:tree:refresh', obj.onRefreshTreeNode, obj);
},
add_menu_category: function(
@@ -1942,19 +1944,10 @@ define('pgadmin.browser', [
pgAdmin.Browser.editor_shortcut_keys.Tab = 'insertSoftTab';
}
window.onbeforeunload = function() {
var e = window.event,
msg = S(gettext('Are you sure you wish to close the %s browser?')).sprintf(pgBrowser.utils.app_name).value();
// For IE and Firefox prior to version 4
if (e) {
e.returnValue = msg;
}
// For Safari
return msg;
};
$(window).on('beforeunload', function() {
if (pgBrowser.get_preference('browser', 'browser_tree_state_save_interval').value !== -1)
pgAdmin.Browser.browserTreeState.save_state();
});
return pgAdmin.Browser;
});

View File

@@ -1,11 +1,11 @@
define('pgadmin.browser.node', [
'sources/tree/pgadmin_tree_node',
'sources/tree/pgadmin_tree_node', 'sources/url_for',
'sources/gettext', 'jquery', 'underscore', 'underscore.string', 'sources/pgadmin',
'pgadmin.browser.menu', 'backbone', 'pgadmin.alertifyjs', 'pgadmin.browser.datamodel',
'backform', 'sources/browser/generate_url', 'sources/utils', 'pgadmin.browser.utils',
'pgadmin.backform',
], function(
pgadminTreeNode,
pgadminTreeNode, url_for,
gettext, $, _, S, pgAdmin, Menu, Backbone, Alertify, pgBrowser, Backform, generateUrl, commonUtils
) {
@@ -849,7 +849,6 @@ define('pgadmin.browser.node', [
}
}
},
added: function(item, data, browser) {
var b = browser || pgBrowser,
t = b.tree,
@@ -876,6 +875,8 @@ define('pgadmin.browser.node', [
);
}
pgBrowser.Events.trigger('pgadmin:browser:tree:expand-from-previous-tree-state',
item);
pgBrowser.Node.callbacks.change_server_background(item, data);
},
// Callback called - when a node is selected in browser tree.
@@ -905,6 +906,8 @@ define('pgadmin.browser.node', [
}
}
pgBrowser.Events.trigger('pgadmin:browser:tree:update-tree-state',
item);
return true;
},
removed: function(item) {
@@ -958,6 +961,14 @@ define('pgadmin.browser.node', [
},
});
},
opened: function(item) {
pgBrowser.Events.trigger('pgadmin:browser:tree:update-tree-state',
item);
},
closed: function(item) {
pgBrowser.Events.trigger('pgadmin:browser:tree:remove-from-tree-state',
item);
},
},
/**********************************************************************
* A hook (not a callback) to show object properties in given HTML

View File

@@ -94,6 +94,9 @@ _.extend(pgBrowser, {
modifyAnimation.modifyAlertifyAnimation(self);
}
// Initialize Tree saving/reloading
pgBrowser.browserTreeState.init();
/* Once the cache is loaded after changing the preferences,
* notify the modules of the change
*/