1 $(document).ready(function () { 2 3 $("#buy-now,#add-to-cart").click(function() { 4 var qty = parseInt($('.cart-qty').val()); 5 var click_type = $(this).data('val'); 6 if(!qty){ 7 showSweetAlertError( qty_error); 8 return false; 9 } 10 var data = {product_id:product_id,qty:qty}; 11 callAjaxRequest(add_to_cart_url, 'post', data, result=>{ 12 13 if(result.status=='success'){ 14 $('#totalCartProduct').text(result.cart_quantity); 15 if(click_type=='buy-now'){ 16 window.location.href=result.url; 17 }else{ 18 $('#addToCartdiv').modal('show'); 19 } 20 21 }else{ 22 showSweetAlertError(result.msg); 23 } 24 }); 25 26 }); 27 28 $(".attribute-dropdown select").change(function() { 29 var search = $(this).val(); 30 var search = $('#searchProduct').val(); 31 var order_by = $('#order_by').val(); 32 var gender = $('#gender').val(); 33 var package_type = $('#package_type').val(); 34 var age_range = $('#age_range').val(); 35 var package_attribute = $('#package_attribute').val(); 36 var html = ''; 37 var page = 1; 38 //alert(formData); 39 $.ajaxSetup({ 40 headers: { 41 'X-CSRF-TOKEN': $('meta[name="csrf-token"]').attr('content') 42 } 43 }); 44 $.ajax({
45 type: "POST", 46 url : loadmoreUrl+'?page='+page, 47 data : {"search":search, "cat_id":cat_id, "gender":gender, "order_by":order_by, "age_range":age_range, "package_type":package_type, "package_attribute":package_attribute}, 48 success : function(response){ 49 if(response.status == 'success'){ 50 html = gethtml(response.data); 51 $('.health-product-grid').html(html); 52 $('.pagination').html(response.pagination); 53 $('.pagination1').html(response.pagination1); 54 55 } 56 57 58 }, 59 }); 60 }); 61 62 $(".filter-category a").click(function() { 63 var cat_id_temp = $(this).attr('data-cat_id'); 64 $(".filter-category a").removeClass("active"); 65 $(this).addClass("active"); 66 67 cat_id=cat_id_temp; 68 var search = $('#searchProduct').val(); 69 var order_by = $('#order_by').val(); 70 var gender = $('#gender').val(); 71 var package_type = $('#package_type').val(); 72 var age_range = $('#age_range').val(); 73 var package_attribute = $('#package_attribute').val(); 74 var html = ''; 75 var page = 1; 76 //alert(formData); 77 $.ajaxSetup({ 78 headers: { 79 'X-CSRF-TOKEN': $('meta[name="csrf-token"]').attr('content') 80 } 81 }); 82 $.ajax({
83 type: "POST", 84 url : loadmoreUrl+'?page='+page, 85 data : {"search":search, "cat_id":cat_id, "gender":gender, "order_by":order_by, "age_range":age_range, "package_type":package_type, "package_attribute":package_attribute}, 86 success : function(response){ 87 if(response.status == 'success'){ 88 html = gethtml(response.data); 89 $('.health-product-grid').html(html); 90 $('.pagination').html(response.pagination); 91 $('.pagination1').html(response.pagination1); 92 93 } 94 95 96 }, 97 }); 98 }); 99 100 101 $("select#order_by").change(function() { 102 var order_by = $(this).val(); 103 var search = $('#searchProduct').val(); 104 var gender = $('#gender').val(); 105 var package_type = $('#package_type').val(); 106 var age_range = $('#age_range').val(); 107 var package_attribute = $('#package_attribute').val(); 108 var html = ''; 109 var page = 1; 110 //alert(formData); 111 $.ajaxSetup({ 112 headers: { 113 'X-CSRF-TOKEN': $('meta[name="csrf-token"]').attr('content') 114 } 115 }); 116 $.ajax({
117 type: "POST", 118 url : loadmoreUrl+'?page='+page, 119 data : {"search":search, "cat_id":cat_id, 'order_by':order_by, "gender":gender, "age_range":age_range, "package_type":package_type, "package_attribute":package_attribute}, 120 success : function(response){ 121 if(response.status == 'success'){ 122 html = gethtml(response.data); 123 $('.health-product-grid').html(html); 124 $('.pagination').html(response.pagination); 125 $('.pagination1').html(response.pagination1); 126 127 } 128 129 130 }, 131 }); 132 }); 133 134 135 $(document).on('click', ".pagination li a", function(e) { 136 e.preventDefault(); 137 var search = $('#search-input').val(); 138 var order_by = $('.attribute-dropdown select#order_by').val(); 139 var gender = $('#gender').val(); 140 var package_type = $('#package_type').val(); 141 var age_range = $('#age_range').val(); 142 var package_attribute = $('#package_attribute').val(); 143 144 var url = $(this).attr('href'); 145 var html = ''; 146 //alert(formData); 147 $.ajaxSetup({ 148 headers: { 149 'X-CSRF-TOKEN': $('meta[name="csrf-token"]').attr('content') 150 } 151 }); 152 $.ajax({
153 type: "POST", 154 url : url, 155 data : {"search":search, "cat_id":cat_id, 'order_by':order_by, "gender":gender, "age_range":age_range, "package_type":package_type, "package_attribute":package_attribute}, 156 success : function(response){ 157 if(response.status == 'success'){ 158 html = gethtml(response.data); 159 $('.health-product-grid').html(html); 160 $('.pagination').html(response.pagination); 161 $('.pagination1').html(response.pagination1); 162 } 163 164 165 }, 166 }); 167 }); 168 169 170 function gethtml(results){ 171 var htm =''; 172 jQuery.each(results, function(index, result) { 173 htm += '<li class="product-item">'+ 174 '<div class="product-item-info">'+ 175 '<div class="prod-img">'+ 176 '<a href="health-package-detail.php">'+ 177 '<img data-original="'+result.image+'" src="'+result.image+'" alt="img" style="">'+ 178 '</a>'+ 179 '<div class="discount">ลà¸à¸£à¸²à¸à¸²</div>'+ 180 '</div>'+ 181 '<div class="product-info">'+ 182 '<h3 class="product-title">'+ 183 '<a href="'+result.url+'" class="link-product-name">'+result.name+'</a>'+ 184 '</h3>'+ 185 '<div class="price-wrap">'+ 186 '<i class="fas fa-tag"></i>'+ 187 '<span class="price-lbl">'+lang.price+'</span>'+ 188 '<span class="normal-price">'+result.price+' ฿</span>'+ 189 '</div>'; 190 if(result.date_status == '1'){ 191 htm +='<div class="date">'+ 192 '<i class="fas fa-clock"></i> '+lang.from+' '+result.date_from+' - '+result.date_to+''+ 193 '</div>'; 194 } 195 if(result.package_type == '1'){ 196 htm +='<div class="spinergroup">'+ 197 '<button class="decrease"><span class=" fas fa-minus"></span>'+ 198 '</button>'+ 199 '<input type="text" name="" class="spinNum" placeholder="1">'+ 200 '<button class="increase"><span class=" fas fa-plus"></span>'+ 201 '</button>'+ 202 '</div>'; 203 htm +='<div class="addtocart-btn">'+ 204 '<a href="#" data-toggle="modal" data-target="#loginModal" class="btn btn-primary buy">'+lang.buy_package+' </a>'+ 205 '<a href="#" class="btn btn-outline-secondary addtocart"><i class="fal fa-shopping-basket fa-fw"></i> '+lang.add_to_cart+'</a>'+ 206 '</div>'; 207 } 208 209 htm +='<div class="see-wrap"><a class="btn btn-outline-primary w-100" href="'+result.url+'">'+lang.see_details+'</a></div>'+ 210 '</div>'+ 211 '</div>'+ 212 '</li>'; 213 214 }); 215 216 return htm; 217 } 218 219 $( "#search-btn" ).trigger( "click" ); 220 221}); 222 223/*$(document).on('change', 'input.spinNum', function(){ 224 quantityHandler($(this), 'change'); 225}); 226 227$(document).on('click', '.increaseqty', function(){ 228 quantityHandler($(this), 'increase'); 229}); 230 231$(document).on('click', '.decreaseqty', function(){ 232 quantityHandler($(this), 'decrease') 233}); 234 235$(document).on('click', '.cart-remove', function(evt){ 236 quantityHandler($(this), 'removecartproduct'); 237}); 238 239function maxQuantity(qty, maxQty, flag) { 240 if(flag === 'increase' || flag === 'change') return (parseInt(qty)<=parseInt(maxQty) || false); 241 else if(flag === 'decrease') return (parseInt(qty)>1 || false); 242}; 243 244function update(data) { 245 return new Promise((resolve, reject) => { 246 callAjaxRequest(updateCart,"post",data,result=>{resolve(result)}); 247 }); 248};*/ 249 250function quantityHandler($that, flag) { 251 let $input = $that.parent('.spinergroup').find('input.spinNum'); 252 let $prd_total_price = $that.parents('ul').find('li label.prd-total-price'); 253 let $prd_unit_price = $that.parents('ul').find('li label.prd-price'); 254 let data = { 255 cart_det_Id: $that.parent('.spinergroup').data('cartid'), 256 quantity: parseInt($input.val()), 257 }; 258 data.cart_id = cart_id; 259 switch (flag) { 260 case 'increase': 261 case 'decrease': 262 case 'change' : 263 if(flag === 'increase') data.quantity = (parseInt($input.val()) + 1); 264 else if(flag === 'decrease' && $input.val() && parseInt($input.val())>1) data.quantity = (parseInt($input.val()) - 1); 265 else if(flag === 'change'){ 266 //in case user change quantiy max then allowed 267 if(parseInt($input.val())> parseInt($input.attr('max'))){ 268 var newerr = error_msg.max_quantity + ' '+$input.attr('max'); 269 270 showSweetAlertError( newerr); 271 //$input.val(1); 272 }/*in case user set quantity zero or null*/ 273 else if(!$input.val() || $input.val() == '0'){ 274 showSweetAlertError(error_msg.quantity_blank_zero); 275 $input.val(1); 276 } 277 data.quantity = parseInt($input.val()); 278 } 279 280 if(maxQuantity($input.val(), $input.attr('max'), flag)){ 281 update(data) 282 .then(resp=>{ 283 if(resp && resp.status == "success"){ 284 let val = (flag === 'increase') && (parseInt($input.val()) + 1) || (flag === 'decrease') && (parseInt($input.val()) - 1) 285 || (flag === 'change') && $input.val(); 286 $input.val(val); 287 console.log(resp); 288 $('#core_cost').text(resp.core_cost); 289 $('#final_price').text(resp.final_price); 290 resp.product_price && $prd_unit_price.text(resp.product_price); 291 }else{ 292 showSweetAlertError(resp.msg); 293 } 294 }, err=>{ 295 showSweetAlertError(error_msg.server_error); 296 }); 297 } 298 break; 299 case 'removecartproduct' : 300 let ul_id = $that.attr('id'); 301 data.cart_det_Id = ul_id.replace('cart_det_', ''); 302 data.cart_id = cart_id; 303 swal({ 304 title: error_msg.txt_delete_confirm, 305 type: "warning", 306 showCancelButton: true, 307 confirmButtonText: error_msg.yes_delete_it, 308 cancelButtonText: error_msg.txt_no, 309 closeOnConfirm: true, 310 closeOnCancel: true, 311 }).then(rep =>{ 312 callAjaxRequest(removeCart, 'post', data, result=>{ 313 if(result.status=='success'){ 314 swal(lang_success, result.msg, "success").then(function(){ 315 location.reload(); 316 }); 317 }else{ 318 showSweetAlertError(result.msg); 319 } 320 }); 321 }, er=>{ 322 //error code 323 }); 324 break; 325 } 326}; 327 328jQuery('body').on('click', '#btn_checkout', function(e){
329 //check payment method selection 330 var error_str = ''; 331 var first_name = $('input[name=first_name]').val(); 332 var last_name = $('input[name=last_name]').val(); 333 var email = $('input[name=email]').val(); 334 var ph_number = $('input[name=ph_number]').val(); 335 /*if(first_name == '' || typeof first_name == 'undefined'){ 336 $('#e_first_name').html(error_msg.first_name); 337 error_str += '<p class="error">'+error_msg.first_name+'</p>'; 338 }else{ 339 $('#e_first_name').html(''); 340 } 341 if(last_name == '' || typeof last_name == 'undefined'){ 342 $('#e_last_name').html(error_msg.last_name); 343 error_str += '<p class="error">'+error_msg.last_name+'</p>'; 344 }else{ 345 $('#e_last_name').html(''); 346 } 347 if(email == '' || typeof email == 'undefined'){ 348 $('#e_email').html(error_msg.email); 349 error_str += '<p class="error">'+error_msg.email+'</p>'; 350 }else{ 351 $('#e_email').html(''); 352 } 353 if(ph_number == '' || typeof ph_number == 'undefined'){ 354 $('#e_ph_number').html(error_msg.phone_no); 355 error_str += '<p class="error">'+error_msg.phone_no+'</p>'; 356 }else{ 357 $('#e_ph_number').html(''); 358 }*/ 359 var pay_opt = $('input[name=pay_opt]:checked').val(); 360 361 if(pay_opt == '' || typeof pay_opt == 'undefined'){ 362 $('#e_pay_opt').html(error_msg.select_payment); 363 error_str += '<p class="error">'+error_msg.select_payment+'</p>'; 364 }else{ 365 $('#e_pay_opt').html(''); 366 } 367 368 var address_id = $('input[name=address_id]:checked').val(); 369 370 if(address_id == '' || typeof address_id == 'undefined'){ 371 $('#e_address_id').html(error_msg.select_address); 372 error_str += '<p class="error">'+error_msg.select_address+'</p>'; 373 }else{ 374 $('#e_address_id').html(''); 375 } 376 377 if(error_str != ''){ 378 showSweetAlertError(error_str); 379 return false; 380 }else{ 381 $("#btn_checkout").prop("disabled", true); 382 var formAction = $('#checkout_form').attr('action'); 383 var form = $('#checkout_form').serialize(); 384 callAjaxRequest(formAction,'post',form,function(response){ 385 if(response.status == "success"){ 386 window.location.href=response.url; 387 } 388 else if(response.status == "fail"){ 389 if(response.validation == true){ 390 var error = ''; 391 $.each(response.msg, function(key,val){ 392 error +='<p class="error">'+val+'</p>' 393 $('#e_'+key).html(val); 394 }); 395 $("#btn_checkout").prop("disabled", false); 396 showSweetAlertError(error); 397 }else if(response.type=='price'){ 398 $('#cart_'+response.cart_id).css("background-color","yellow"); 399 $('#cart_'+response.cart_id+' li.price_li').append('<br><a href="javascript:;" class="update_cart_price text-primary">'+error_msg.update_price+'</a>') 400 $("#btn_checkout").prop("disabled",false); 401 showSweetAlertError(response.msg); 402 }else if(response.type=='pickup_time'){ 403 $("#btn_checkout").prop("disabled", false); 404 swal({ 405 type: 'error', 406 text: response.msg, 407 confirmButtonText: lang_ok, 408 }).then(function () { 409 location.reload(); 410 }); 411 }else{ 412 $("#btn_checkout").prop("disabled", false); 413 showSweetAlertError(response.msg); 414 } 415 }else{ 416 $("#btn_checkout").prop("disabled", false); 417 showSweetAlertError(response.msg); 418 } 419 }); 420 } 421}); 422 423$('body').on('click',"#userAddressForm",function(evt){ 424 evt.preventDefault(); 425 var formAction = $(this).closest('form').attr('action'); 426 var formId = $(this).closest('form').attr('id'); 427 var formMethod = $(this).closest('form').attr('method'); 428 var _this = $(this); 429 var form_data = new FormData($("#"+formId)[0]); 430 $('.error').text(''); 431 $('<p class="error">').remove(); 432 $.ajax({
433 url: formAction, 434 type:formMethod, 435 data:form_data, 436 processData: false, //prevent jQuery from converting your FormData into a string 437 contentType: false, //jQuery does not add a Content-Type header for you 438 beforeSend: function(){ 439 //showHideLoader('show'); 440 }, 441 success:function(result){ 442 var response = jQuery.parseJSON(result); 443 if(response.status==false){ 444 $.each(response.message, function(key,val){ 445 $('#'+formId+' input[name='+key+']').parents(".input-group").after('<p class="error">'+val+'</p>'); 446 $('#'+formId+' select[name='+key+']').after('<p class="error">'+val+'</p>'); 447 $('#'+formId+' textarea[name='+key+']').after('<p class="error">'+val+'</p>'); 448 $('#'+formId+' radio[name='+key+']').siblings('p').text(val); 449 $('#'+formId+' p[id='+key+']').text(val); 450 451 }) 452 _this.prop('disabled',false); 453 return false; 454 }else{ 455 if(response.status==true){ 456 swal({ 457 type: 'success', 458 text: response.message, 459 confirmButtonText: lang_ok, 460 }).then(function () { 461 location.reload(); 462 }); 463 } 464 } 465 } 466 }) 467 .always(function(){ 468 showHideLoader('hide'); 469 }); 470}); 471 472$('.address-radio').click(function(e){ 473 var id = $(this).val(); 474 $('.address_detail').hide(); 475 $('.open_'+id).show(); 476}); 477 478$('body').on('click',".edit_address",function(evt){ 479 var id = $(this).data('val'); 480 481 $.each(address_json, function(key, item) 482 { 483 if(item.id == id){ 484 var address = item; 485 item.isd_code = item.isd_code.replace('+',''); 486 $('#userinsertAddress input[name=first_name]').val(item.first_name); 487 $('#userinsertAddress input[name=last_name]').val(item.last_name); 488 $('#userinsertAddress input[name=email]').val(item.email); 489 $('#userinsertAddress input[name=ph_number]').val(item.ph_number); 490 $('#userinsertAddress input[name=id]').val(item.id); 491 $("#userinsertAddress .iti__selected-dial-code").text('+'+item.isd_code); 492 $("#userinsertAddress input[name='isd_code']").val(item.isd_code); 493 $('.iti__country-list li').each(function(key,val){ 494 var dial_code = val.dataset.dialCode; 495 var country_code = $(this).attr('data-country-code'); 496 var country_name = $(this).find('.iti__country-name').text(); 497 if(dial_code == item.isd_code){ 498 $(this).addClass('iti__active'); 499 $('#userinsertAddress .iti__selected-flag .iti__flag').attr('class','iti__flag iti__'+country_code); 500 $('#userinsertAddress .iti__selected-flag').attr('title',country_name); 501 return false; 502 } 503 }); 504 $('#addressModal').modal('show'); 505 return false; 506 } 507 508 }); 509});
Line numbers count LF bytes from the start of the resource, as the search results do. Vendor segments are library code the classifier recognised; they are stored but not indexed. Bytes are shown as Latin1 characters, one per byte.