diff --git a/web/pgadmin/browser/static/js/browser.js b/web/pgadmin/browser/static/js/browser.js
index 475412bf7..16b98a8d9 100644
--- a/web/pgadmin/browser/static/js/browser.js
+++ b/web/pgadmin/browser/static/js/browser.js
@@ -251,8 +251,9 @@ define('pgadmin.browser', [
title: gettext('Statistics'),
icon: '',
width: 500,
- isCloseable: false,
- isPrivate: true,
+ isCloseable: true,
+ isPrivate: false,
+ canHide: true,
content: '
' + select_object_msg + '
',
events: panelEvents,
}),
@@ -272,8 +273,9 @@ define('pgadmin.browser', [
title: gettext('Dependencies'),
icon: '',
width: 500,
- isCloseable: false,
- isPrivate: true,
+ isCloseable: true,
+ isPrivate: false,
+ canHide: true,
content: '' + select_object_msg + '
',
events: panelEvents,
}),
@@ -283,8 +285,9 @@ define('pgadmin.browser', [
title: gettext('Dependents'),
icon: '',
width: 500,
- isCloseable: false,
- isPrivate: true,
+ isCloseable: true,
+ isPrivate: false,
+ canHide: true,
content: '' + select_object_msg + '
',
events: panelEvents,
}),
diff --git a/web/pgadmin/browser/static/js/panel.js b/web/pgadmin/browser/static/js/panel.js
index edad85018..da7cb2adb 100644
--- a/web/pgadmin/browser/static/js/panel.js
+++ b/web/pgadmin/browser/static/js/panel.js
@@ -183,26 +183,26 @@ define(
}
},
handleVisibility: function(eventName) {
- // Currently this function only works with dashboard panel but
- // as per need it can be extended
- if (this._type != 'dashboard' || _.isUndefined(pgAdmin.Dashboard))
+ // Supported modules
+ let type_module = {
+ 'dashboard': pgAdmin.Dashboard,
+ 'statistics': pgBrowser.NodeStatistics,
+ 'dependencies': pgBrowser.NodeDependencies,
+ 'dependents': pgBrowser.NodeDependents,
+ };
+
+ let module = type_module[this._type];
+ if(_.isUndefined(module))
+ return;
+
+ if(_.isUndefined(module.toggleVisibility))
return;
if (eventName == 'panelClosed') {
/* Pass the closed flag also */
- pgAdmin.Dashboard.toggleVisibility(false, true);
+ module.toggleVisibility.call(module, [false, true]);
} else if (eventName == 'panelVisibilityChanged') {
- if (pgBrowser.tree) {
- var selectedNode = pgBrowser.tree.selected();
- if (!_.isUndefined(pgAdmin.Dashboard)) {
- pgAdmin.Dashboard.toggleVisibility(pgBrowser.panels.dashboard.panel.isVisible());
- }
- // Explicitly trigger tree selected event when we add the tab.
- if(selectedNode.length) {
- pgBrowser.Events.trigger('pgadmin-browser:tree:selected', selectedNode,
- pgBrowser.tree.itemData(selectedNode), pgBrowser.Node);
- }
- }
+ module.toggleVisibility.call(module, [pgBrowser.docker.findPanels(this._type)[0].isVisible()]);
}
},
diff --git a/web/pgadmin/dashboard/static/js/dashboard.js b/web/pgadmin/dashboard/static/js/dashboard.js
index 1f61a2e62..d8c298201 100644
--- a/web/pgadmin/dashboard/static/js/dashboard.js
+++ b/web/pgadmin/dashboard/static/js/dashboard.js
@@ -225,7 +225,6 @@ define('pgadmin.dashboard', [
var dashboardPanel = pgBrowser.panels['dashboard'].panel;
if (dashboardPanel) {
var div = dashboardPanel.layout().scene().find('.pg-panel-content');
-
if (div) {
var ajaxHook = function() {
$.ajax({
@@ -1100,7 +1099,13 @@ define('pgadmin.dashboard', [
if(closed) {
this.chartsDomObj && this.chartsDomObj.unmount();
} else {
+ var t = pgBrowser.tree,
+ i = t.selected(),
+ d = i && t.itemData(i),
+ n = i && d && pgBrowser.Nodes[d._type];
+
this.chartsDomObj && this.chartsDomObj.setPageVisible(dashboardVisible);
+ this.object_selected(i, d, n);
}
},
can_take_action: function(m) {
diff --git a/web/pgadmin/misc/dependencies/static/js/dependencies.js b/web/pgadmin/misc/dependencies/static/js/dependencies.js
index c89d03b41..67377c9a5 100644
--- a/web/pgadmin/misc/dependencies/static/js/dependencies.js
+++ b/web/pgadmin/misc/dependencies/static/js/dependencies.js
@@ -31,7 +31,8 @@ define('misc.dependencies', [
/* Parameter is used to set the proper label of the
* backgrid header cell.
*/
- _.bindAll(this, 'showDependencies', '__loadMoreRows', '__appendGridToPanel');
+ _.bindAll(this, 'showDependencies', '__updateCollection', '__loadMoreRows',
+ '__appendGridToPanel', 'toggleVisibility');
// Defining Backbone Model for Dependencies.
var Model = Backbone.Model.extend({
@@ -63,8 +64,28 @@ define('misc.dependencies', [
model: Model,
}))(null);
- pgBrowser.Events.on('pgadmin-browser:tree:selected', this.showDependencies);
- this.__appendGridToPanel();
+ if(this.dependenciesPanel) this.toggleVisibility(this.dependenciesPanel.isVisible());
+ },
+
+ toggleVisibility: function(visible, closed=false) {
+ if (visible) {
+ this.dependenciesPanel = pgBrowser.docker.findPanels('dependencies')[0];
+ var t = pgBrowser.tree,
+ i = t.selected(),
+ d = i && t.itemData(i),
+ n = i && d && pgBrowser.Nodes[d._type];
+
+ this.showDependencies(i, d, n);
+
+ // We will start listening the tree selection event.
+ pgBrowser.Events.on('pgadmin-browser:tree:selected', this.showDependencies);
+ } else {
+ if(closed) {
+ $(this.dependenciesPanel).data('node-prop', '');
+ }
+ // We don't need to listen the tree item selection event.
+ pgBrowser.Events.off('pgadmin-browser:tree:selected', this.showDependencies);
+ }
},
/* Function is used to create and render backgrid with
@@ -112,6 +133,7 @@ define('misc.dependencies', [
// Condition is used to save grid object to change the label of the header.
this.dependenciesGrid = grid;
+ $gridContainer.empty();
$gridContainer.append(grid.render().el);
return true;
@@ -119,15 +141,34 @@ define('misc.dependencies', [
// Fetch the actual data and update the collection
showDependencies: function(item, data, node) {
+ if (!node) {
+ return;
+ }
+
+ /**
+ * We can't start fetching the statistics immediately, it is possible -
+ * the user is just using keyboards to select the node, and just
+ * traversing through.
+ *
+ * We will wait for some time before fetching
+ **/
+ if (this.timeout) {
+ clearTimeout(this.timeout);
+ }
+ this.timeout = setTimeout(() => {
+ this.__updateCollection(node.generate_url(item, 'dependency', data, true), node, item, data._type);
+ }, 400);
+ },
+
+ // Fetch the actual data and update the collection
+ __updateCollection: function(url, node, item, node_type) {
let self = this,
msg = gettext('Please select an object in the tree view.'),
panel = this.dependenciesPanel,
$container = panel.layout().scene().find('.pg-panel-content'),
$msgContainer = $container.find('.pg-panel-depends-message'),
$gridContainer = $container.find('.pg-panel-dependencies-container'),
- treeHierarchy = node.getTreeNodeHierarchy(item),
- n_type = data._type,
- url = node.generate_url(item, 'dependency', data, true);
+ treeHierarchy = node.getTreeNodeHierarchy(item);
if (node) {
/* We fetch the Dependencies and Dependencies tab only for
@@ -135,12 +176,24 @@ define('misc.dependencies', [
*/
msg = gettext('No dependency information is available for the selected object.');
if (node.hasDepends) {
+ // Avoid unnecessary reloads
+ var cache_flag = {
+ node_type: node_type,
+ url: url,
+ };
+ if (_.isEqual($(panel).data('node-prop'), cache_flag)) {
+ return;
+ }
+ // Cache the current IDs for next time
+ $(panel).data('node-prop', cache_flag);
+
/* Updating the label for the 'field' type of the backbone model.
* Label should be "Database" if the node type is tablespace or role
* and dependencies tab is selected. For other nodes and dependencies tab
* it should be 'Restriction'.
*/
+ self.__appendGridToPanel();
this.dependenciesGrid.columns.models[2].set({
'label': gettext('Restriction'),
});
@@ -150,85 +203,87 @@ define('misc.dependencies', [
$gridContainer.removeClass('d-none');
var timer = '';
- $.ajax({
- url: url,
- type: 'GET',
- beforeSend: function(xhr) {
- xhr.setRequestHeader(pgAdmin.csrf_token_header, pgAdmin.csrf_token);
- // Generate a timer for the request
- timer = setTimeout(function() {
- // notify user if request is taking longer than 1 second
-
- $msgContainer.text(gettext('Fetching dependency information from the server...'));
- $msgContainer.removeClass('d-none');
- msg = '';
-
- }, 1000);
- },
- })
- .done(function(res) {
- clearTimeout(timer);
-
- if (res.length > 0) {
-
- if (!$msgContainer.hasClass('d-none')) {
- $msgContainer.addClass('d-none');
+ var ajaxHook = function() {
+ $.ajax({
+ url: url,
+ type: 'GET',
+ beforeSend: function(xhr) {
+ xhr.setRequestHeader(pgAdmin.csrf_token_header, pgAdmin.csrf_token);
+ // Generate a timer for the request
+ timer = setTimeout(function() {
+ // notify user if request is taking longer than 1 second
+
+ $msgContainer.text(gettext('Fetching dependency information from the server...'));
+ $msgContainer.removeClass('d-none');
+ msg = '';
+
+ }, 1000);
+ },
+ })
+ .done(function(res) {
+ clearTimeout(timer);
+
+ if (res.length > 0) {
+
+ if (!$msgContainer.hasClass('d-none')) {
+ $msgContainer.addClass('d-none');
+ }
+ $gridContainer.removeClass('d-none');
+
+ self.dependenciesData = res;
+
+ // Load only 100 rows
+ self.dependenciesCollection.reset(self.dependenciesData.splice(0, 100), {parse: true});
+
+ // Load more rows on scroll down
+ pgBrowser.Events.on(
+ 'pgadmin-browser:panel-dependencies:' +
+ wcDocker.EVENT.SCROLLED,
+ self.__loadMoreRows
+ );
+ } else {
+ // Do not listen the scroll event
+ pgBrowser.Events.off(
+ 'pgadmin-browser:panel-dependencies:' +
+ wcDocker.EVENT.SCROLLED
+ );
+
+ self.dependenciesCollection.reset({silent: true});
+ $msgContainer.text(msg);
+ $msgContainer.removeClass('d-none');
+
+ if (!$gridContainer.hasClass('d-none')) {
+ $gridContainer.addClass('d-none');
+ }
}
- $gridContainer.removeClass('d-none');
-
- self.dependenciesData = res;
-
- // Load only 100 rows
- self.dependenciesCollection.reset(self.dependenciesData.splice(0, 100), {parse: true});
- // Load more rows on scroll down
- pgBrowser.Events.on(
- 'pgadmin-browser:panel-dependencies:' +
- wcDocker.EVENT.SCROLLED,
- self.__loadMoreRows
- );
- } else {
- // Do not listen the scroll event
- pgBrowser.Events.off(
- 'pgadmin-browser:panel-dependencies:' +
- wcDocker.EVENT.SCROLLED
+ })
+ .fail(function(xhr, error, message) {
+ var _label = treeHierarchy[node_type].label;
+ pgBrowser.Events.trigger(
+ 'pgadmin:node:retrieval:error', 'depends', xhr, error, message
);
-
- self.dependenciesCollection.reset({silent: true});
- $msgContainer.text(msg);
- $msgContainer.removeClass('d-none');
-
- if (!$gridContainer.hasClass('d-none')) {
- $gridContainer.addClass('d-none');
+ if (!Alertify.pgHandleItemError(xhr, error, message, {
+ item: item,
+ info: treeHierarchy,
+ })) {
+ Alertify.pgNotifier(
+ error, xhr,
+ gettext('Error retrieving data from the server: %s', message || _label),
+ function(alertMsg) {
+ if(alertMsg === 'CRYPTKEY_SET') {
+ ajaxHook();
+ } else {
+ console.warn(arguments);
+ }
+ });
}
- }
-
-
- })
- .fail(function(xhr, error, message) {
- var _label = treeHierarchy[n_type].label;
- pgBrowser.Events.trigger(
- 'pgadmin:node:retrieval:error', 'depends', xhr, error, message
- );
- if (!Alertify.pgHandleItemError(xhr, error, message, {
- item: item,
- info: treeHierarchy,
- })) {
- Alertify.pgNotifier(
- error, xhr,
- gettext('Error retrieving data from the server: %s', message || _label),
- function(alertMsg) {
- if(alertMsg === 'CRYPTKEY_SET') {
- self.showDependencies(item, data, node);
- } else {
- console.warn(arguments);
- }
- });
- }
- // show failed message.
- $msgContainer.text(gettext('Failed to retrieve data from the server.'));
- });
+ // show failed message.
+ $msgContainer.text(gettext('Failed to retrieve data from the server.'));
+ });
+ };
+ ajaxHook();
}
}
if (msg != '') {
diff --git a/web/pgadmin/misc/dependents/static/js/dependents.js b/web/pgadmin/misc/dependents/static/js/dependents.js
index ca46dde5a..6564979d7 100644
--- a/web/pgadmin/misc/dependents/static/js/dependents.js
+++ b/web/pgadmin/misc/dependents/static/js/dependents.js
@@ -31,7 +31,8 @@ define('misc.dependents', [
/* Parameter is used to set the proper label of the
* backgrid header cell.
*/
- _.bindAll(this, 'showDependents', '__loadMoreRows', '__appendGridToPanel');
+ _.bindAll(this, 'showDependents', '__updateCollection', '__loadMoreRows',
+ '__appendGridToPanel', 'toggleVisibility');
// Defining Backbone Model for Dependents.
var Model = Backbone.Model.extend({
@@ -63,9 +64,28 @@ define('misc.dependents', [
model: Model,
}))(null);
- pgBrowser.Events.on('pgadmin-browser:tree:selected', this.showDependents);
- pgBrowser.Events.on('pgadmin-browser:tree:refreshing', this.refreshDependents, this);
- this.__appendGridToPanel();
+ if(this.dependentsPanel) this.toggleVisibility(this.dependentsPanel.isVisible());
+ },
+
+ toggleVisibility: function(visible, closed=false) {
+ if (visible) {
+ this.dependentsPanel = pgBrowser.docker.findPanels('dependents')[0];
+ var t = pgBrowser.tree,
+ i = t.selected(),
+ d = i && t.itemData(i),
+ n = i && d && pgBrowser.Nodes[d._type];
+
+ this.showDependents(i, d, n);
+
+ // We will start listening the tree selection event.
+ pgBrowser.Events.on('pgadmin-browser:tree:selected', this.showDependents);
+ } else {
+ if(closed) {
+ $(this.dependentsPanel).data('node-prop', '');
+ }
+ // We don't need to listen the tree item selection event.
+ pgBrowser.Events.off('pgadmin-browser:tree:selected', this.showDependents);
+ }
},
/* Function is used to create and render backgrid with
@@ -113,6 +133,7 @@ define('misc.dependents', [
// Condition is used to save grid object to change the label of the header.
this.dependentGrid = grid;
+ $gridContainer.empty();
$gridContainer.append(grid.render().el);
return true;
@@ -120,15 +141,34 @@ define('misc.dependents', [
// Fetch the actual data and update the collection
showDependents: function(item, data, node) {
+ if (!node) {
+ return;
+ }
+
+ /**
+ * We can't start fetching the statistics immediately, it is possible -
+ * the user is just using keyboards to select the node, and just
+ * traversing through.
+ *
+ * We will wait for some time before fetching
+ **/
+ if (this.timeout) {
+ clearTimeout(this.timeout);
+ }
+ this.timeout = setTimeout(() => {
+ this.__updateCollection(node.generate_url(item, 'dependent', data, true), node, item, data._type);
+ }, 400);
+ },
+
+ // Fetch the actual data and update the collection
+ __updateCollection: function(url, node, item, node_type) {
let self = this,
msg = gettext('Please select an object in the tree view.'),
panel = this.dependentsPanel,
$container = panel.layout().scene().find('.pg-panel-content'),
$msgContainer = $container.find('.pg-panel-depends-message'),
$gridContainer = $container.find('.pg-panel-dependents-container'),
- treeHierarchy = node.getTreeNodeHierarchy(item),
- n_type = data._type,
- url = node.generate_url(item, 'dependent', data, true);
+ treeHierarchy = node.getTreeNodeHierarchy(item);
if (node) {
/* We fetch the Dependencies and Dependents tab only for
@@ -136,11 +176,23 @@ define('misc.dependents', [
*/
msg = gettext('No dependent information is available for the selected object.');
if (node.hasDepends) {
+ // Avoid unnecessary reloads
+ var cache_flag = {
+ node_type: node_type,
+ url: url,
+ };
+ if (_.isEqual($(panel).data('node-prop'), cache_flag)) {
+ return;
+ }
+ // Cache the current IDs for next time
+ $(panel).data('node-prop', cache_flag);
+
/* Updating the label for the 'field' type of the backbone model.
* Label should be "Database" if the node type is tablespace or role
* and dependent tab is selected. For other nodes and dependencies tab
* it should be 'Restriction'.
*/
+ this.__appendGridToPanel();
if (node.type == 'tablespace' || node.type == 'role') {
this.dependentGrid.columns.models[2].set({
'label': gettext('Database'),
@@ -156,85 +208,88 @@ define('misc.dependents', [
$gridContainer.removeClass('d-none');
var timer = '';
- $.ajax({
- url: url,
- type: 'GET',
- beforeSend: function(xhr) {
- xhr.setRequestHeader(pgAdmin.csrf_token_header, pgAdmin.csrf_token);
- // Generate a timer for the request
- timer = setTimeout(function() {
- // notify user if request is taking longer than 1 second
-
- $msgContainer.text(gettext('Fetching dependent information from the server...'));
- $msgContainer.removeClass('d-none');
- msg = '';
-
- }, 1000);
- },
- })
- .done(function(res) {
- clearTimeout(timer);
-
- if (res.length > 0) {
-
- if (!$msgContainer.hasClass('d-none')) {
- $msgContainer.addClass('d-none');
+ var ajaxHook = function() {
+ $.ajax({
+ url: url,
+ type: 'GET',
+ beforeSend: function(xhr) {
+ xhr.setRequestHeader(pgAdmin.csrf_token_header, pgAdmin.csrf_token);
+ // Generate a timer for the request
+ timer = setTimeout(function() {
+ // notify user if request is taking longer than 1 second
+
+ $msgContainer.text(gettext('Fetching dependent information from the server...'));
+ $msgContainer.removeClass('d-none');
+ msg = '';
+
+ }, 1000);
+ },
+ })
+ .done(function(res) {
+ clearTimeout(timer);
+
+ if (res.length > 0) {
+
+ if (!$msgContainer.hasClass('d-none')) {
+ $msgContainer.addClass('d-none');
+ }
+ $gridContainer.removeClass('d-none');
+
+ self.dependentData = res;
+
+ // Load only 100 rows
+ self.dependentCollection.reset(self.dependentData.splice(0, 100), {parse: true});
+
+ // Load more rows on scroll down
+ pgBrowser.Events.on(
+ 'pgadmin-browser:panel-dependents:' +
+ wcDocker.EVENT.SCROLLED,
+ self.__loadMoreRows
+ );
+
+ } else {
+ // Do not listen the scroll event
+ pgBrowser.Events.off(
+ 'pgadmin-browser:panel-dependents:' +
+ wcDocker.EVENT.SCROLLED
+ );
+
+ self.dependentCollection.reset({silent: true});
+ $msgContainer.text(msg);
+ $msgContainer.removeClass('d-none');
+
+ if (!$gridContainer.hasClass('d-none')) {
+ $gridContainer.addClass('d-none');
+ }
}
- $gridContainer.removeClass('d-none');
- self.dependentData = res;
-
- // Load only 100 rows
- self.dependentCollection.reset(self.dependentData.splice(0, 100), {parse: true});
-
- // Load more rows on scroll down
- pgBrowser.Events.on(
- 'pgadmin-browser:panel-dependents:' +
- wcDocker.EVENT.SCROLLED,
- self.__loadMoreRows
- );
- } else {
- // Do not listen the scroll event
- pgBrowser.Events.off(
- 'pgadmin-browser:panel-dependents:' +
- wcDocker.EVENT.SCROLLED
+ })
+ .fail(function(xhr, error, message) {
+ var _label = treeHierarchy[node_type].label;
+ pgBrowser.Events.trigger(
+ 'pgadmin:node:retrieval:error', 'depends', xhr, error, message
);
-
- self.dependentCollection.reset({silent: true});
- $msgContainer.text(msg);
- $msgContainer.removeClass('d-none');
-
- if (!$gridContainer.hasClass('d-none')) {
- $gridContainer.addClass('d-none');
+ if (!Alertify.pgHandleItemError(xhr, error, message, {
+ item: item,
+ info: treeHierarchy,
+ })) {
+ Alertify.pgNotifier(
+ error, xhr,
+ gettext('Error retrieving data from the server: %s', message || _label),
+ function(alertMsg) {
+ if(alertMsg === 'CRYPTKEY_SET') {
+ ajaxHook();
+ } else {
+ console.warn(arguments);
+ }
+ });
}
- }
-
-
- })
- .fail(function(xhr, error, message) {
- var _label = treeHierarchy[n_type].label;
- pgBrowser.Events.trigger(
- 'pgadmin:node:retrieval:error', 'depends', xhr, error, message
- );
- if (!Alertify.pgHandleItemError(xhr, error, message, {
- item: item,
- info: treeHierarchy,
- })) {
- Alertify.pgNotifier(
- error, xhr,
- gettext('Error retrieving data from the server: %s', message || _label),
- function(alertMsg) {
- if(alertMsg === 'CRYPTKEY_SET') {
- self.showDependents(item, data, node);
- } else {
- console.warn(arguments);
- }
- });
- }
- // show failed message.
- $msgContainer.text(gettext('Failed to retrieve data from the server.'));
- });
+ // show failed message.
+ $msgContainer.text(gettext('Failed to retrieve data from the server.'));
+ });
+ };
+ ajaxHook();
}
}
if (msg != '') {
diff --git a/web/pgadmin/misc/statistics/static/js/statistics.js b/web/pgadmin/misc/statistics/static/js/statistics.js
index e1660efa9..f0dbc6a3b 100644
--- a/web/pgadmin/misc/statistics/static/js/statistics.js
+++ b/web/pgadmin/misc/statistics/static/js/statistics.js
@@ -116,12 +116,11 @@ define('misc.statistics', [
this.initialized = true;
_.bindAll(
this,
- 'showStatistics', 'panelVisibilityChanged',
+ 'showStatistics', 'toggleVisibility',
'__createMultiLineStatistics', '__createSingleLineStatistics', '__loadMoreRows');
_.extend(
this, {
- initialized: true,
collection: new(Backbone.Collection)(null),
statistic_columns: [{
editable: false,
@@ -136,66 +135,49 @@ define('misc.statistics', [
label: gettext('Value'),
cell: 'string',
}],
- panel: pgBrowser.docker.findPanels('statistics'),
columns: null,
grid: null,
});
- var self = this;
+ this.panel = pgBrowser.docker.findPanels('statistics');
+ if(this.panel.length > 0) this.toggleVisibility(this.panel[0].isVisible());
+ },
- // We will listen to the visibility change of the statistics panel
- pgBrowser.Events.on(
- 'pgadmin-browser:panel-statistics:' +
- wcDocker.EVENT.VISIBILITY_CHANGED,
- this.panelVisibilityChanged
- );
+ toggleVisibility: function(visible, closed=false) {
+ if (visible) {
+ this.panel = pgBrowser.docker.findPanels('statistics');
+ var t = pgBrowser.tree,
+ i = t.selected(),
+ d = i && t.itemData(i),
+ n = i && d && pgBrowser.Nodes[d._type];
- pgBrowser.Events.on(
- 'pgadmin:browser:node:updated',
- function() {
- if (this.panel && this.panel.length) {
- $(this.panel[0]).data('node-prop', '');
- this.panelVisibilityChanged(this.panel[0]);
- }
- }, this
- );
-
- // Hmm.. Did we find the statistics panel, and is it visible (openned)?
- // If that is the case - we need to listen the browser tree selection
- // events.
- if (this.panel.length == 0) {
+ pgBrowser.NodeStatistics.showStatistics.apply(
+ pgBrowser.NodeStatistics, [i, d, n]
+ );
+
+ // We will start listening the tree selection event.
pgBrowser.Events.on(
- 'pgadmin-browser:panel-statistics:' + wcDocker.EVENT.INIT,
- function() {
- self.panel = pgBrowser.docker.findPanels('statistics');
- if (self.panel[0].isVisible() ||
- self.panel.length != 1) {
- pgBrowser.Events.on(
- 'pgadmin-browser:tree:selected', this.showStatistics
- );
- pgBrowser.Events.on(
- 'pgadmin-browser:tree:refreshing', this.refreshStatistics, this
- );
- }
- }.bind(this)
+ 'pgadmin-browser:tree:selected',
+ pgBrowser.NodeStatistics.showStatistics
+ );
+ pgBrowser.Events.on(
+ 'pgadmin-browser:tree:refreshing',
+ pgBrowser.NodeStatistics.refreshStatistics,
+ this
);
} else {
- if (self.panel[0].isVisible() ||
- self.panel.length != 1) {
- pgBrowser.Events.on(
- 'pgadmin-browser:tree:selected', this.showStatistics
- );
- pgBrowser.Events.on(
- 'pgadmin-browser:tree:refreshing', this.refreshStatistics, this
- );
+ if(closed) {
+ $(this.panel[0]).data('node-prop', '');
}
- }
- if (self.panel.length > 0 && self.panel[0].isVisible()) {
- pgBrowser.Events.on(
- 'pgadmin-browser:tree:selected', this.showStatistics
+ // We don't need to listen the tree item selection event.
+ pgBrowser.Events.off(
+ 'pgadmin-browser:tree:selected',
+ pgBrowser.NodeStatistics.showStatistics
);
- pgBrowser.Events.on(
- 'pgadmin-browser:tree:refreshing', this.refreshStatistics, this
+ pgBrowser.Events.off(
+ 'pgadmin-browser:tree:refreshing',
+ pgBrowser.NodeStatistics.refreshStatistics,
+ this
);
}
},
@@ -440,41 +422,6 @@ define('misc.statistics', [
this.collection.reset(res);
},
-
- panelVisibilityChanged: function(panel) {
- if (panel.isVisible()) {
- var t = pgBrowser.tree,
- i = t.selected(),
- d = i && t.itemData(i),
- n = i && d && pgBrowser.Nodes[d._type];
-
- pgBrowser.NodeStatistics.showStatistics.apply(
- pgBrowser.NodeStatistics, [i, d, n]
- );
-
- // We will start listening the tree selection event.
- pgBrowser.Events.on(
- 'pgadmin-browser:tree:selected',
- pgBrowser.NodeStatistics.showStatistics
- );
- pgBrowser.Events.on(
- 'pgadmin-browser:tree:refreshing',
- pgBrowser.NodeStatistics.refreshStatistics,
- this
- );
- } else {
- // We don't need to listen the tree item selection event.
- pgBrowser.Events.off(
- 'pgadmin-browser:tree:selected',
- pgBrowser.NodeStatistics.showStatistics
- );
- pgBrowser.Events.off(
- 'pgadmin-browser:tree:refreshing',
- pgBrowser.NodeStatistics.refreshStatistics,
- this
- );
- }
- },
});
return pgBrowser.NodeStatistics;