Fix requêtes AJAX simultanées K-Psul

- `lock` limite à 1 le nombre de requêtes AJAX critiques (perform/cancel
  operations) simultanées afin d'éviter de compter plusieurs la même
commande. Ce qui arrivait dans le cas où le panier était fait et en
tapant 2 fois enter rapidement (la 2nde requête était lancée avant que
la réponse de la 1ère ne revienne)
This commit is contained in:
Aurélien Delobelle 2016-08-31 00:54:16 +02:00
parent 7ea0998bdb
commit c27222c751

View file

@ -116,6 +116,9 @@ $(document).ready(function() {
// General
// -----
// Lock to avoid multiple requests
lock = 0;
// Retrieve settings
settings = {}
@ -369,6 +372,9 @@ $(document).ready(function() {
var operations = $('#operation_formset');
function performOperations(password = '') {
if (lock == 1)
return false;
lock = 1;
var data = operationGroup.serialize() + '&' + operations.serialize();
$.ajax({
dataType: "json",
@ -383,6 +389,7 @@ $(document).ready(function() {
})
.done(function(data) {
coolReset();
lock = 0;
})
.fail(function($xhr) {
var data = $xhr.responseJSON;
@ -398,6 +405,7 @@ $(document).ready(function() {
}
break;
}
lock = 0;
});
}
@ -414,6 +422,9 @@ $(document).ready(function() {
var cancelForm = $('#cancel_form');
function cancelOperations(opes_array, password = '') {
if (lock == 1)
return false
lock = 1;
var data = { 'operations' : opes_array }
$.ajax({
dataType: "json",
@ -429,6 +440,7 @@ $(document).ready(function() {
})
.done(function(data) {
coolReset();
lock = 0;
})
.fail(function($xhr) {
var data = $xhr.responseJSON;
@ -442,7 +454,7 @@ $(document).ready(function() {
displayErrors(getErrorsHtml(data));
break;
}
lock = 0;
});
}