[IMP] CrashManager use event dispatcher and cleanups

bzr revid: al@openerp.com-20121011003729-jjbh5se1cpsachvm
This commit is contained in:
Antony Lesuisse 2012-10-11 02:37:29 +02:00
parent 462eccb10d
commit f44ea704fe
3 changed files with 17 additions and 22 deletions

View File

@ -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($('<div>' + QWeb.render('CrashManager.warning', {error: error}) + '</div>'), {
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}

View File

@ -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;
},

View File

@ -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,