Merge pull request #18643 from Gecka-Apps/14-takepos-fast-product-search

TakePos - fast product search
This commit is contained in:
Laurent Destailleur 2021-09-09 03:37:52 +02:00 committed by GitHub
commit 88cd9afe84
No known key found for this signature in database
GPG Key ID: 4AEE18F83AFDEB23
2 changed files with 89 additions and 54 deletions

View File

@ -42,6 +42,7 @@ if (!defined('NOBROWSERNOTIF')) {
require '../../main.inc.php'; // Load $user and permissions require '../../main.inc.php'; // Load $user and permissions
require_once DOL_DOCUMENT_ROOT.'/categories/class/categorie.class.php'; require_once DOL_DOCUMENT_ROOT.'/categories/class/categorie.class.php';
require_once DOL_DOCUMENT_ROOT."/product/class/product.class.php";
$category = GETPOST('category', 'alphanohtml'); // Can be id of category or 'supplements' $category = GETPOST('category', 'alphanohtml'); // Can be id of category or 'supplements'
$action = GETPOST('action', 'aZ09'); $action = GETPOST('action', 'aZ09');
@ -119,6 +120,24 @@ if ($action == 'getProducts') {
if ($resql) { if ($resql) {
$rows = array(); $rows = array();
while ($obj = $db->fetch_object($resql)) { while ($obj = $db->fetch_object($resql)) {
$objProd = new Product($db);
$objProd->fetch($obj->rowid);
$image = $objProd->show_photos('product', $conf->product->multidir_output[$objProd->entity], 'small', 1);
preg_match('@src="([^"]+)"@', $image, $match);
$file = array_pop($match);
if ($file == "") {
$ig = '../public/theme/common/nophoto.png';
} else {
if (!defined('INCLUDE_PHONEPAGE_FROM_PUBLIC_PAGE')) {
$ig = $file.'&cache=1';
} else {
$ig = $file.'&cache=1&publictakepos=1&modulepart=product';
}
}
$rows[] = array( $rows[] = array(
'rowid' => $obj->rowid, 'rowid' => $obj->rowid,
'ref' => $obj->ref, 'ref' => $obj->ref,
@ -127,7 +146,8 @@ if ($action == 'getProducts') {
'tobuy' => $obj->tobuy, 'tobuy' => $obj->tobuy,
'barcode' => $obj->barcode, 'barcode' => $obj->barcode,
'price' => $obj->price, 'price' => $obj->price,
'object' => 'product' 'object' => 'product',
'img' => $ig,
//'price_formated' => price(price2num($obj->price, 'MU'), 1, $langs, 1, -1, -1, $conf->currency) //'price_formated' => price(price2num($obj->price, 'MU'), 1, $langs, 1, -1, -1, $conf->currency)
); );
} }

View File

@ -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;
@ -551,6 +552,14 @@ function Search2(keyCodeForEnter) {
} }
if (search === true) { if (search === true) {
// temporization time to give time to type
if (search2_timer) {
clearTimeout(search2_timer);
}
search2_timer = setTimeout(function(){
pageproducts = 0; pageproducts = 0;
jQuery(".wrapper2 .catwatermark").hide(); jQuery(".wrapper2 .catwatermark").hide();
$.getJSON('<?php echo DOL_URL_ROOT ?>/takepos/ajax/ajax.php?action=search&term=' + $('#search').val(), function (data) { $.getJSON('<?php echo DOL_URL_ROOT ?>/takepos/ajax/ajax.php?action=search&term=' + $('#search').val(), function (data) {
@ -579,7 +588,12 @@ function Search2(keyCodeForEnter) {
$("#proprice" + i).html(data[i]['price_formated']); $("#proprice" + i).html(data[i]['price_formated']);
} }
$("#proimg" + i).attr("title", titlestring); $("#proimg" + i).attr("title", titlestring);
if( undefined !== data[i]['img']) {
$("#proimg" + i).attr("src", data[i]['img']);
}
else {
$("#proimg" + i).attr("src", "genimg/index.php?query=pro&id=" + data[i]['rowid']); $("#proimg" + i).attr("src", "genimg/index.php?query=pro&id=" + data[i]['rowid']);
}
$("#prodiv" + i).data("rowid", data[i]['rowid']); $("#prodiv" + i).data("rowid", data[i]['rowid']);
$("#prodiv" + i).data("iscat", 0); $("#prodiv" + i).data("iscat", 0);
} }
@ -607,6 +621,7 @@ function Search2(keyCodeForEnter) {
else ClearSearch(); else ClearSearch();
} }
}); });
}, 700); // 700ms delay
} }
} }