Hi,
please find the attached updated patch.
Thanks,
Khushboo
On Mon, Jul 10, 2017 at 6:54 PM, Dave Page <[email protected]> wrote:
> Hi
>
> On Mon, Jul 10, 2017 at 2:14 PM, Khushboo Vashi <
> [email protected]> wrote:
>
>> Hi,
>>
>> Please find the attached patch to fix the RM #1165 - Too many request to
>> update dashboard graphs when server is disconnected.
>>
>
> If I disconnect the server, it doesn't stop trying to get data until I
> refresh the browser by clicking on another node that causes it to reload.
>
> Fixed
> If I then click back on the server node, it doesn't redraw the dashboard
> and start displaying new data upon reconnect. I have to change nodes again
> before it will respond to the re-connection.
>
> Fixed
> Thanks.
>
> --
> Dave Page
> Blog: http://pgsnake.blogspot.com
> Twitter: @pgsnake
>
> EnterpriseDB UK: http://www.enterprisedb.com
> The Enterprise PostgreSQL Company
>
diff --git a/web/pgadmin/dashboard/templates/dashboard/js/dashboard.js b/web/pgadmin/dashboard/templates/dashboard/js/dashboard.js
index 34a1ab7..1bbe5a4 100644
--- a/web/pgadmin/dashboard/templates/dashboard/js/dashboard.js
+++ b/web/pgadmin/dashboard/templates/dashboard/js/dashboard.js
@@ -22,10 +22,14 @@ function(r, $, pgAdmin, _, Backbone, gettext) {
// Bind the Dashboard object with the 'object_selected' function
var selected = this.object_selected.bind(this);
+ var disconnected = this.object_disconnected.bind(this);
// Listen for selection of any of object
pgBrowser.Events.on('pgadmin-browser:tree:selected', selected);
+ // Listen for server disconnected event
+ pgBrowser.Events.on('pgadmin:server:disconnect', disconnected);
+
// Load the default welcome dashboard
url = '{{ url_for('dashboard.index') }}';
@@ -55,6 +59,11 @@ function(r, $, pgAdmin, _, Backbone, gettext) {
}
},
+ // Handle Server Disconnect
+ object_disconnected: function(obj) {
+ this.object_selected(obj.item, obj.data, pgBrowser.Nodes[obj.data._type]);
+ },
+
// Handle treeview clicks
object_selected: function(item, itemData, node) {
if (itemData && itemData._type && dashboardVisible) {
@@ -89,28 +98,40 @@ function(r, $, pgAdmin, _, Backbone, gettext) {
);
if (div) {
- // Avoid unnecessary reloads
- if (url != $(dashboardPanel).data('dashboard_url')) {
- // Clear out everything so any existing timers die off
- $(div).empty();
+ if (itemData.connected || _.isUndefined(itemData.connected)) {
+ // Avoid unnecessary reloads
+ if (url != $(dashboardPanel).data('dashboard_url') ||
+ (url == $(dashboardPanel).data('dashboard_url') && $(dashboardPanel).data('server_status') == false )) {
+ // Clear out everything so any existing timers die off
+ $(div).empty();
+
+ $.ajax({
+ url: url,
+ type: "GET",
+ dataType: "html",
+ success: function (data) {
+ $(div).html(data);
+ },
+ error: function (xhr, status) {
+ $(div).html(
+ '<div class="alert alert-danger pg-panel-message" role="alert">' + gettext('An error occurred whilst loading the dashboard.') + '</div>'
+ );
+ }
+ });
+ $(dashboardPanel).data('server_status', true);
+ }
- $.ajax({
- url: url,
- type: "GET",
- dataType: "html",
- success: function (data) {
- $(div).html(data);
- },
- error: function (xhr, status) {
- $(div).html(
- '<div class="alert alert-danger pg-panel-message" role="alert">' + gettext('An error occurred whilst loading the dashboard.') + '</div>'
- );
- }
- });
-
- // Cache the current IDs for next time
- $(dashboardPanel).data('dashboard_url', url);
}
+ else {
+ $(div).empty();
+ $(div).html(
+ '<div class="alert alert-info pg-panel-message" role="alert">' + gettext('Please connect to the selected server to view the dashboard.') + '</div>'
+ );
+ $(dashboardPanel).data('server_status', false);
+ }
+ // Cache the current IDs for next time
+ $(dashboardPanel).data('dashboard_url', url);
+
}
}
}