Block parallel ajax while saving

This commit is contained in:
Nabin Hait 2014-11-13 11:19:26 +05:30
parent a41f04a479
commit 27c23dccac
2 changed files with 12 additions and 0 deletions

View file

@ -114,6 +114,13 @@ frappe.ui.form.save = function(frm, action, callback, btn) {
// btn: btn
// }
$(opts.btn).prop("disabled", true);
if(frappe.ui.form.is_saving) {
msgprint(__("Already saving. Please wait a few moments."));
throw "saving";
}
frappe.ui.form.is_saving = true;
return frappe.call({
freeze: true,
method: opts.method,
@ -121,6 +128,9 @@ frappe.ui.form.save = function(frm, action, callback, btn) {
callback: function(r) {
$(opts.btn).prop("disabled", false);
opts.callback && opts.callback(r);
},
always: function() {
frappe.ui.form.is_saving = false;
}
})
};

View file

@ -29,6 +29,7 @@ frappe.call = function(opts) {
args: args,
success: opts.callback,
error: opts.error,
always: opts.always,
btn: opts.btn,
freeze: opts.freeze,
show_spinner: !opts.no_spinner,
@ -124,6 +125,7 @@ frappe.request.call = function(opts) {
data = JSON.parse(data.responseText);
}
frappe.request.cleanup(opts, data);
if(opts.always) opts.always(data);
})
.done(function(data, textStatus, xhr) {
var status_code_handler = statusCode[xhr.statusCode().status];