diff options
| author | Christophe Simonis <chs@openerp.com> | 2012-10-30 12:37:50 +0100 |
|---|---|---|
| committer | Christophe Simonis <chs@openerp.com> | 2012-10-30 12:37:50 +0100 |
| commit | f986227f8f0b354dd2ea4aabdcdec02b3628fdfd (patch) | |
| tree | 0d303b1c49d606d24b5df44f9bdb80f840f41b16 | |
| parent | da27fd32e05675b7234868927bab667ed1e29da9 (diff) | |
[IMP] reload: can wait server is available
bzr revid: chs@openerp.com-20121030113750-4y039gx7cunwz859
| -rw-r--r-- | addons/web/static/src/js/chrome.js | 47 |
1 files changed, 36 insertions, 11 deletions
diff --git a/addons/web/static/src/js/chrome.js b/addons/web/static/src/js/chrome.js index d5f72ee8bb9..26f82665a03 100644 --- a/addons/web/static/src/js/chrome.js +++ b/addons/web/static/src/js/chrome.js @@ -615,22 +615,47 @@ instance.web.client_actions.add("login", "instance.web.Login"); /** * Client action to reload the whole interface. * If params has an entry 'menu_id', it opens the given menu entry. + * If params has an entry 'wait', reload will wait the openerp server to be reachable before reloading */ instance.web.Reload = function(parent, params) { - var menu_id = (params && params.menu_id) || false; - var l = window.location; + // hide errors + if (instance.client && instance.client.crashmanager) { + instance.client.crashmanager.destroy(); + } + + var reload = function() { + console.log('relocate'); + var menu_id = (params && params.menu_id) || false; + var l = window.location; - var sobj = $.deparam(l.search.substr(1)); - sobj.ts = new Date().getTime(); - var search = '?' + $.param(sobj); + var sobj = $.deparam(l.search.substr(1)); + sobj.ts = new Date().getTime(); + var search = '?' + $.param(sobj); + + var hash = l.hash; + if (menu_id) { + hash = "#menu_id=" + menu_id; + } + var url = l.protocol + "//" + l.host + l.pathname + search + hash; + window.location = url; + }; + + var wait_server = function() { + parent.session.rpc("/web/webclient/version_info", {}) + .done(function() { + reload(); + }) + .fail(function() { + setTimeout(wait_server, 250); + }); + }; - var hash = l.hash; - if (menu_id) { - hash = "#menu_id=" + menu_id; + if (parent && params && params.wait) { + setTimeout(wait_server, 1000); + } else { + reload(); } - var url = l.protocol + "//" + l.host + l.pathname + search + hash; - window.onerror = function() {}; - window.location = url; + }; instance.web.client_actions.add("reload", "instance.web.Reload"); |
