From f44ea704fe562dc346b280c6f546e5bc8d630387 Mon Sep 17 00:00:00 2001 From: Antony Lesuisse Date: Thu, 11 Oct 2012 02:37:29 +0200 Subject: [PATCH] [IMP] CrashManager use event dispatcher and cleanups bzr revid: al@openerp.com-20121011003729-jjbh5se1cpsachvm --- addons/web/static/src/js/chrome.js | 20 ++++++++++---------- addons/web/static/src/js/corelib.js | 9 ++++----- addons/web/static/src/js/view_form.js | 10 +++------- 3 files changed, 17 insertions(+), 22 deletions(-) diff --git a/addons/web/static/src/js/chrome.js b/addons/web/static/src/js/chrome.js index ffec074a975..b605f4ad4e1 100644 --- a/addons/web/static/src/js/chrome.js +++ b/addons/web/static/src/js/chrome.js @@ -181,7 +181,7 @@ instance.web.Dialog = instance.web.Widget.extend({ }); instance.web.CrashManager = instance.web.CallbackEnabled.extend({ - on_rpc_error: function(error) { + rpc_error: function(error) { if (error.data.fault_code) { var split = ("" + error.data.fault_code).split('\n')[0].split(' -- '); if (split.length > 1) { @@ -190,12 +190,12 @@ instance.web.CrashManager = instance.web.CallbackEnabled.extend({ } } if (error.code === 200 && error.type) { - this.on_managed_error(error); + this.show_warning(error); } else { - this.on_traceback(error); + this.show_error(error); } }, - on_managed_error: function(error) { + show_warning: function(error) { instance.web.dialog($('
' + QWeb.render('CrashManager.warning', {error: error}) + '
'), { title: "OpenERP " + _.str.capitalize(error.type), buttons: [ @@ -203,7 +203,7 @@ instance.web.CrashManager = instance.web.CallbackEnabled.extend({ ] }); }, - on_traceback: function(error) { + show_error: function(error) { var self = this; var buttons = {}; buttons[_t("Ok")] = function() { @@ -219,8 +219,8 @@ instance.web.CrashManager = instance.web.CallbackEnabled.extend({ }).open(); dialog.$el.html(QWeb.render('CrashManager.error', {session: instance.session, error: error})); }, - on_javascript_exception: function(exception) { - this.on_traceback({ + show_message: function(exception) { + this.show_error({ type: _t("Client Error"), message: exception, data: {debug: ""} @@ -236,7 +236,7 @@ instance.web.Loading = instance.web.Widget.extend({ this.blocked_ui = false; this.session.on("request", this, this.request_call); this.session.on("response", this, this.response_call); - this.session.on("error", this, this.response_call); + this.session.on("response_failed", this, this.response_call); }, destroy: function() { this.on_rpc_event(-this.count); @@ -957,7 +957,7 @@ instance.web.Client = instance.web.Widget.extend({ show_common: function() { var self = this; this.crashmanager = new instance.web.CrashManager(); - instance.session.on_rpc_error.add(this.crashmanager.on_rpc_error); + instance.session.on('error', this.crashmanager, this.crashmanager.rpc_error); self.notification = new instance.web.Notification(this); self.notification.appendTo(self.$el); self.loading = new instance.web.Loading(self); @@ -1007,7 +1007,7 @@ instance.web.WebClient = instance.web.Client.extend({ var self = this; this._super(); window.onerror = function (message, file, line) { - self.crashmanager.on_traceback({ + self.crashmanager.show_error({ type: _t("Client Error"), message: message, data: {debug: file + ':' + line} diff --git a/addons/web/static/src/js/corelib.js b/addons/web/static/src/js/corelib.js index 7a9af79b4fb..b5fbacc7927 100644 --- a/addons/web/static/src/js/corelib.js +++ b/addons/web/static/src/js/corelib.js @@ -980,7 +980,8 @@ instance.web.JsonRPC = instance.web.CallbackEnabled.extend({ triggers: { 'request': 'Request sent', 'response': 'Response received', - 'error': 'HTTP Error response or timeout received', + 'response_failed': 'HTTP Error response or timeout received', + 'error': 'The received response is an JSON-RPC error', }, /** * @constructs instance.web.JsonRPC @@ -1336,7 +1337,7 @@ instance.web.JsonRPC = instance.web.CallbackEnabled.extend({ } }, function(jqXHR, textStatus, errorThrown) { - self.trigger('error'); + self.trigger('response_failed', jqXHR); var error = { code: -32098, message: "XmlHttpRequestError " + errorThrown, @@ -1348,7 +1349,7 @@ instance.web.JsonRPC = instance.web.CallbackEnabled.extend({ deferred.fail(function() { deferred.fail(function(error, event) { if (!event.isDefaultPrevented()) { - self.on_rpc_error(error, event); + self.trigger('error', error, event); } }); }); @@ -1434,8 +1435,6 @@ instance.web.JsonRPC = instance.web.CallbackEnabled.extend({ return deferred; } }, - on_rpc_error: function(error) { - }, get_url: function (file) { return this.prefix + file; }, diff --git a/addons/web/static/src/js/view_form.js b/addons/web/static/src/js/view_form.js index 2b4569eea3f..afb5e258c0b 100644 --- a/addons/web/static/src/js/view_form.js +++ b/addons/web/static/src/js/view_form.js @@ -615,7 +615,7 @@ instance.web.FormView = instance.web.View.extend(instance.web.form.FieldManagerM return self.on_processed_onchange(response, processed); } catch(e) { console.error(e); - instance.webclient.crashmanager.on_javascript_exception(e); + instance.webclient.crashmanager.show_message(e); return $.Deferred().reject(); } }); @@ -650,7 +650,7 @@ instance.web.FormView = instance.web.View.extend(instance.web.form.FieldManagerM return $.Deferred().resolve(); } catch(e) { console.error(e); - instance.webclient.crashmanager.on_javascript_exception(e); + instance.webclient.crashmanager.show_message(e); return $.Deferred().reject(); } }, @@ -3316,11 +3316,7 @@ instance.web.form.FieldOne2Many = instance.web.form.AbstractField.extend({ var views = []; _.each(modes, function(mode) { if (! _.include(["list", "tree", "graph", "kanban"], mode)) { - try { - throw new Error(_.str.sprintf("View type '%s' is not supported in One2Many.", mode)); - } catch(e) { - instance.webclient.crashmanager.on_javascript_exception(e) - } + throw new Error(_.str.sprintf("View type '%s' is not supported in One2Many.", mode)); } var view = { view_id: false,