From 01f22ece2efb554bd97c092c06883bfc9ee7962c Mon Sep 17 00:00:00 2001 From: phasefx Date: Sun, 1 Feb 2009 07:52:31 +0000 Subject: [PATCH] added a statusbar and a progress meter for network activity. Isn't aware of network activity in HTML-based pages yet git-svn-id: svn://svn.open-ils.org/ILS/branches/staff-client-experiment@12033 dcc99617-32d9-48b4-a31d-7c20da2025e4 --- .../xul/staff_client/chrome/content/util/network.js | 20 ++++++++++++++++++++ Open-ILS/xul/staff_client/server/main/menu.js | 18 ++++++++++++++++++ .../staff_client/server/main/menu_frame_overlay.xul | 9 +++++++-- 3 files changed, 45 insertions(+), 2 deletions(-) diff --git a/Open-ILS/xul/staff_client/chrome/content/util/network.js b/Open-ILS/xul/staff_client/chrome/content/util/network.js index 5cbec25199..3f38a81a96 100644 --- a/Open-ILS/xul/staff_client/chrome/content/util/network.js +++ b/Open-ILS/xul/staff_client/chrome/content/util/network.js @@ -89,6 +89,12 @@ util.network.prototype = { '\noverride_params = ' + override_params + '\n_params = ' + _params + '\nResult #' + (++obj.link_id) + ( f ? ' asynced' : ' synced' ) ); + if (document.getElementById('network_progress')) { + if (g && g.menu && g.menu.network_meter && typeof g.menu.network_meter.inc == 'function') g.menu.network_meter.inc(app,name); + } else if (typeof xulG != 'undefined') { + if (xulG && xulG.network_meter && typeof xulG.network_meter.inc == 'function') xulG.network_meter.inc(app,name); + } + var request = new RemoteRequest( app, name ); if (_params && _params.secure) { request.setSecure(true); @@ -106,6 +112,13 @@ util.network.prototype = { try { var duration = ( (new Date).getTime() - start_timer )/1000; if ( obj.get_result(req) == null && duration > obj.network_timeout ) req.cancelled = true; + + if (document.getElementById('network_progress')) { + if (g && g.menu && g.menu.network_meter && typeof g.menu.network_meter.dec == 'function') g.menu.network_meter.dec(app,name); + } else if (typeof xulG != 'undefined') { + if (xulG && xulG.network_meter && typeof xulG.network_meter.dec == 'function') xulG.network_meter.dec(app,name); + } + var json_string = js2JSON(obj.get_result(req)); obj.error.sdump('D_SES_RESULT','asynced result #' + obj.link_id + '\n\n' @@ -140,6 +153,13 @@ util.network.prototype = { request.send(true); var duration = ( (new Date).getTime() - start_timer )/1000; if ( obj.get_result(request) == null && duration > obj.network_timeout ) request.cancelled = true; + + if (document.getElementById('network_progress')) { + if (g && g.menu && g.menu.network_meter && typeof g.menu.network_meter.dec == 'function') g.menu.network_meter.dec(app,name); + } else if (typeof xulG != 'undefined') { + if (xulG && xulG.network_meter && typeof xulG.network_meter.dec == 'function') xulG.network_meter.dec(app,name); + } + } catch(E) { throw(E); } diff --git a/Open-ILS/xul/staff_client/server/main/menu.js b/Open-ILS/xul/staff_client/server/main/menu.js index 3eb240f621..e146a7d7bd 100644 --- a/Open-ILS/xul/staff_client/server/main/menu.js +++ b/Open-ILS/xul/staff_client/server/main/menu.js @@ -12,6 +12,7 @@ main.menu = function () { JSAN.use('util.window'); this.window = new util.window(); this.w = window; + document.getElementById('network_progress').setAttribute('count','0'); } main.menu.prototype = { @@ -882,6 +883,22 @@ main.menu.prototype = { } }, + 'network_meter' : { + 'inc' : function(msg) { + var m = document.getElementById('network_progress'); + var count = 1 + Number( m.getAttribute('count') ); + m.setAttribute('mode','undetermined'); + m.setAttribute('count', count); + }, + 'dec' : function(msg) { + var m = document.getElementById('network_progress'); + var count = 1 - Number( m.getAttribute('count') ); + if (count < 0) count = 0; + if (count == 0) m.setAttribute('mode','determined'); + m.setAttribute('count', count); + } + }, + 'set_tab' : function(url,params,content_params) { var obj = this; if (!url) url = '/xul/server/'; @@ -900,6 +917,7 @@ main.menu.prototype = { content_params.set_tab_name = function(name) { tab.setAttribute('label',(idx + 1) + ' ' + name); }; content_params.open_chrome_window = function(a,b,c) { return xulG.window.open(a,b,c); }; content_params.url_prefix = function(url) { return obj.url_prefix(url); }; + content_params.network_meter = obj.network_meter; content_params.chrome_xulG = xulG; if (params && params.tab_name) content_params.set_tab_name( params.tab_name ); diff --git a/Open-ILS/xul/staff_client/server/main/menu_frame_overlay.xul b/Open-ILS/xul/staff_client/server/main/menu_frame_overlay.xul index d24cac5f47..71af057fb8 100644 --- a/Open-ILS/xul/staff_client/server/main/menu_frame_overlay.xul +++ b/Open-ILS/xul/staff_client/server/main/menu_frame_overlay.xul @@ -38,7 +38,12 @@ - + + + + + + @@ -49,7 +54,7 @@ - + -- 2.11.0