TakePos: add temporization when searching products.
Adds a temporization after each typed letter, giving the user 700ms to type next letter before sending the search request It prevents hammering the server for each typed letter and "results jumping" effect, which is error-prone.
This commit is contained in:
parent
02f21d478a
commit
10780a343e
@ -178,6 +178,7 @@ var place="<?php echo $place; ?>";
|
|||||||
var editaction="qty";
|
var editaction="qty";
|
||||||
var editnumber="";
|
var editnumber="";
|
||||||
var invoiceid=0;
|
var invoiceid=0;
|
||||||
|
var search2_timer=null;
|
||||||
|
|
||||||
/*
|
/*
|
||||||
var app = this;
|
var app = this;
|
||||||
@ -545,62 +546,72 @@ function Search2(keyCodeForEnter) {
|
|||||||
}
|
}
|
||||||
|
|
||||||
if (search === true) {
|
if (search === true) {
|
||||||
pageproducts = 0;
|
|
||||||
jQuery(".wrapper2 .catwatermark").hide();
|
// temporization time to give time to type
|
||||||
$.getJSON('<?php echo DOL_URL_ROOT ?>/takepos/ajax/ajax.php?action=search&term=' + $('#search').val(), function (data) {
|
if (search2_timer) {
|
||||||
for (i = 0; i < <?php echo $MAXPRODUCT ?>; i++) {
|
console.log(search2_timer);
|
||||||
if (typeof (data[i]) == "undefined") {
|
clearTimeout(search2_timer);
|
||||||
$("#prodesc" + i).text("");
|
}
|
||||||
$("#probutton" + i).text("");
|
|
||||||
$("#probutton" + i).hide();
|
search2_timer = setTimeout(function(){
|
||||||
$("#proprice" + i).attr("class", "hidden");
|
|
||||||
$("#proprice" + i).html("");
|
pageproducts = 0;
|
||||||
$("#proimg" + i).attr("src", "genimg/empty.png");
|
jQuery(".wrapper2 .catwatermark").hide();
|
||||||
$("#prodiv" + i).data("rowid", "");
|
$.getJSON('<?php echo DOL_URL_ROOT ?>/takepos/ajax/ajax.php?action=search&term=' + $('#search').val(), function (data) {
|
||||||
continue;
|
for (i = 0; i < <?php echo $MAXPRODUCT ?>; i++) {
|
||||||
|
if (typeof (data[i]) == "undefined") {
|
||||||
|
$("#prodesc" + i).text("");
|
||||||
|
$("#probutton" + i).text("");
|
||||||
|
$("#probutton" + i).hide();
|
||||||
|
$("#proprice" + i).attr("class", "hidden");
|
||||||
|
$("#proprice" + i).html("");
|
||||||
|
$("#proimg" + i).attr("src", "genimg/empty.png");
|
||||||
|
$("#prodiv" + i).data("rowid", "");
|
||||||
|
continue;
|
||||||
|
}
|
||||||
|
<?php
|
||||||
|
$titlestring = "'".dol_escape_js($langs->transnoentities('Ref').': ')."' + data[i]['ref']";
|
||||||
|
$titlestring .= " + ' - ".dol_escape_js($langs->trans("Barcode").': ')."' + data[i]['barcode']";
|
||||||
|
?>
|
||||||
|
var titlestring = <?php echo $titlestring; ?>;
|
||||||
|
$("#prodesc" + i).text(data[i]['label']);
|
||||||
|
$("#prodivdesc" + i).show();
|
||||||
|
$("#probutton" + i).text(data[i]['label']);
|
||||||
|
$("#probutton" + i).show();
|
||||||
|
if (data[i]['price_formated']) {
|
||||||
|
$("#proprice" + i).attr("class", "productprice");
|
||||||
|
$("#proprice" + i).html(data[i]['price_formated']);
|
||||||
|
}
|
||||||
|
$("#proimg" + i).attr("title", titlestring);
|
||||||
|
$("#proimg" + i).attr("src", "genimg/index.php?query=pro&id=" + data[i]['rowid']);
|
||||||
|
$("#prodiv" + i).data("rowid", data[i]['rowid']);
|
||||||
|
$("#prodiv" + i).data("iscat", 0);
|
||||||
}
|
}
|
||||||
<?php
|
}).always(function (data) {
|
||||||
$titlestring = "'".dol_escape_js($langs->transnoentities('Ref').': ')."' + data[i]['ref']";
|
// If there is only 1 answer
|
||||||
$titlestring .= " + ' - ".dol_escape_js($langs->trans("Barcode").': ')."' + data[i]['barcode']";
|
if ($('#search').val().length > 0 && data.length == 1) {
|
||||||
?>
|
console.log($('#search').val()+' - '+data[0]['barcode']);
|
||||||
var titlestring = <?php echo $titlestring; ?>;
|
if ($('#search').val() == data[0]['barcode'] && 'thirdparty' == data[0]['object']) {
|
||||||
$("#prodesc" + i).text(data[i]['label']);
|
console.log("There is only 1 answer with barcode matching the search, so we change the thirdparty "+data[0]['rowid']);
|
||||||
$("#prodivdesc" + i).show();
|
ChangeThirdparty(data[0]['rowid']);
|
||||||
$("#probutton" + i).text(data[i]['label']);
|
}
|
||||||
$("#probutton" + i).show();
|
else if ($('#search').val() == data[0]['barcode'] && 'product' == data[0]['object']) {
|
||||||
if (data[i]['price_formated']) {
|
console.log("There is only 1 answer with barcode matching the search, so we add the product in basket");
|
||||||
$("#proprice" + i).attr("class", "productprice");
|
ClickProduct(0);
|
||||||
$("#proprice" + i).html(data[i]['price_formated']);
|
}
|
||||||
}
|
}
|
||||||
$("#proimg" + i).attr("title", titlestring);
|
if (eventKeyCode == keyCodeForEnter){
|
||||||
$("#proimg" + i).attr("src", "genimg/index.php?query=pro&id=" + data[i]['rowid']);
|
if (data.length == 0) {
|
||||||
$("#prodiv" + i).data("rowid", data[i]['rowid']);
|
$('#search').val('<?php
|
||||||
$("#prodiv" + i).data("iscat", 0);
|
$langs->load('errors');
|
||||||
}
|
echo dol_escape_js($langs->trans("ErrorRecordNotFound"));
|
||||||
}).always(function (data) {
|
?>');
|
||||||
// If there is only 1 answer
|
$('#search').select();
|
||||||
if ($('#search').val().length > 0 && data.length == 1) {
|
}
|
||||||
console.log($('#search').val()+' - '+data[0]['barcode']);
|
else ClearSearch();
|
||||||
if ($('#search').val() == data[0]['barcode'] && 'thirdparty' == data[0]['object']) {
|
|
||||||
console.log("There is only 1 answer with barcode matching the search, so we change the thirdparty "+data[0]['rowid']);
|
|
||||||
ChangeThirdparty(data[0]['rowid']);
|
|
||||||
}
|
}
|
||||||
else if ($('#search').val() == data[0]['barcode'] && 'product' == data[0]['object']) {
|
});
|
||||||
console.log("There is only 1 answer with barcode matching the search, so we add the product in basket");
|
}, 700); // 700ms delay
|
||||||
ClickProduct(0);
|
|
||||||
}
|
|
||||||
}
|
|
||||||
if (eventKeyCode == keyCodeForEnter){
|
|
||||||
if (data.length == 0) {
|
|
||||||
$('#search').val('<?php
|
|
||||||
$langs->load('errors');
|
|
||||||
echo dol_escape_js($langs->trans("ErrorRecordNotFound"));
|
|
||||||
?>');
|
|
||||||
$('#search').select();
|
|
||||||
}
|
|
||||||
else ClearSearch();
|
|
||||||
}
|
|
||||||
});
|
|
||||||
}
|
}
|
||||||
|
|
||||||
}
|
}
|
||||||
|
|||||||
Loading…
Reference in New Issue
Block a user