summaryrefslogtreecommitdiff
path: root/addons/web/static/src
diff options
context:
space:
mode:
authorChristophe Simonis <chs@odoo.com>2019-01-29 11:57:06 +0100
committerChristophe Simonis <chs@odoo.com>2019-01-29 11:57:06 +0100
commit36d96e015032d42449fe149c050df75050276fdc (patch)
treed70144f0a11306b04f4fa776be16cf5df535c2be /addons/web/static/src
parent428546bc023db95b2128149a91c478e2be35ac39 (diff)
parent788684a5ddcff074e239b524e043cbf900dc54a9 (diff)
[MERGE] forward port branch saas-15 up to 788684a5ddc
Diffstat (limited to 'addons/web/static/src')
-rw-r--r--addons/web/static/src/js/services/crash_manager.js35
-rw-r--r--addons/web/static/src/less/navbar.less6
2 files changed, 29 insertions, 12 deletions
diff --git a/addons/web/static/src/js/services/crash_manager.js b/addons/web/static/src/js/services/crash_manager.js
index d903b5870c5..9e4d5e7b3fe 100644
--- a/addons/web/static/src/js/services/crash_manager.js
+++ b/addons/web/static/src/js/services/crash_manager.js
@@ -22,6 +22,7 @@ var map_title ={
var CrashManager = core.Class.extend({
init: function() {
this.active = true;
+ this.isConnected = true;
},
enable: function () {
this.active = true;
@@ -29,8 +30,29 @@ var CrashManager = core.Class.extend({
disable: function () {
this.active = false;
},
- rpc_error: function(error) {
+ handleLostConnection: function () {
var self = this;
+ if (!this.isConnected) {
+ // already handled, nothing to do. This can happen when several
+ // rpcs are done in parallel and fail because of a lost connection.
+ return;
+ }
+ this.isConnected = false;
+ var delay = 2000;
+ core.bus.trigger('connection_lost');
+
+ setTimeout(function checkConnection() {
+ ajax.jsonRpc('/web/webclient/version_info', 'call', {}, {shadow:true}).then(function () {
+ core.bus.trigger('connection_restored');
+ self.isConnected = true;
+ }).fail(function () {
+ // exponential backoff, with some jitter
+ delay = (delay * 1.5) + 500*Math.random();
+ setTimeout(checkConnection, delay);
+ });
+ }, delay);
+ },
+ rpc_error: function(error) {
if (!this.active) {
return;
}
@@ -38,16 +60,7 @@ var CrashManager = core.Class.extend({
return;
}
if (error.code === -32098) {
- core.bus.trigger('connection_lost');
- this.connection_lost = true;
- var timeinterval = setInterval(function() {
- var options = {shadow: true};
- ajax.jsonRpc('/web/webclient/version_info', 'call', {}, options).then(function () {
- clearInterval(timeinterval);
- core.bus.trigger('connection_restored');
- self.connection_lost = false;
- });
- }, 2000);
+ this.handleLostConnection();
return;
}
var handler = core.crash_registry.get(error.data.name, true);
diff --git a/addons/web/static/src/less/navbar.less b/addons/web/static/src/less/navbar.less
index cf14f9a8615..b280ad45173 100644
--- a/addons/web/static/src/less/navbar.less
+++ b/addons/web/static/src/less/navbar.less
@@ -155,7 +155,6 @@
position: relative;
height: @odoo-navbar-height;
- overflow: hidden;
> ul {
> li {
@@ -171,6 +170,7 @@
&.o_menu_sections {
width: 100%;
+ display: none;
> li.open .dropdown-menu {
position: static;
@@ -219,6 +219,10 @@
.o_main_navbar {
height: 100%;
overflow: auto;
+
+ .o_menu_sections {
+ display: block;
+ }
}
}
}