1var site = { 2 init:function(){ 3 $('[data-toggle="tooltip"]').tooltip() 4 $(document).on('click', '.dropdown-menu', function (e) { 5 e.stopPropagation(); 6 }); 7 8 $('.input-number').focusin(function(){ 9 $(this).data('oldValue', $(this).val()); 10 }); 11 $('.input-number').change(function() { 12 minValue = parseInt($(this).attr('min')); 13 maxValue = parseInt($(this).attr('max')); 14 valueCurrent = parseInt($(this).val()); 15 name = $(this).attr('name'); 16 if(valueCurrent >= minValue) { 17 $(".btn-number[data-type='minus'][data-field='"+name+"']").removeAttr('disabled') 18 } else { 19 alert('Sorry, the minimum value was reached'); 20 $(this).val($(this).data('oldValue')); 21 } 22 23 if(valueCurrent <= maxValue) { 24 $(".btn-number[data-type='plus'][data-field='"+name+"']").removeAttr('disabled') 25 } else { 26 alert('Sorry, the maximum value was reached'); 27 $(this).val($(this).data('oldValue')); 28 } 29 }); 30 $(".input-number").keydown(function (e) { 31 // Allow: backspace, delete, tab, escape, enter and . 32 if ($.inArray(e.keyCode, [46, 8, 9, 27, 13, 190]) !== -1 || 33 // Allow: Ctrl+A 34 (e.keyCode == 65 && e.ctrlKey === true) || 35 // Allow: home, end, left, right 36 (e.keyCode >= 35 && e.keyCode <= 39)) { 37 // let it happen, don't do anything 38 return; 39 } 40 // Ensure that it is a number and stop the keypress 41 if ((e.shiftKey || (e.keyCode < 48 || e.keyCode > 57)) && (e.keyCode < 96 || e.keyCode > 105)) { 42 e.preventDefault(); 43 } 44 }); 45 site.initButtonNumber(); 46 }, 47 initButtonNumber:function(){ 48 $('.btn-number').off("click"); 49 $('.btn-number').click(function(e){ 50 e.preventDefault(); 51 fieldName = $(this).attr('data-field'); 52 type = $(this).attr('data-type'); 53 var input = $(this).parent().parent().find("input[name='"+fieldName+"']"); 54 var currentVal = parseInt(input.val()); 55 if (!isNaN(currentVal)) { 56 if(type == 'minus') { 57 58 if(currentVal > input.attr('min')) { 59 input.val(currentVal - 1).change(); 60 } 61 62 63 } else if(type == 'plus') { 64 65 if(currentVal < input.attr('max')) { 66 input.val(currentVal + 1).change(); 67 } 68 69 70 } 71 } else { 72 input.val(0); 73 } 74 }); 75 $("input[name=foto]").off("change"); 76 $("input[name=foto]").on("change",function(){ 77 var val = $(this).val().replace(/^.*[\\\/]/, ''); 78 var id = $(this).attr("id"); 79 $("label[for="+id+"]").text(val); 80 }) 81 }, 82 forgotPassword:function(){ 83 App.page.lock(''); 84 $("#frm-forgot-password").upload({ 85 extradata:false, 86 callback:function(data){ 87 App.page.unlock(); 88 var result = App.data.parseJSON(data); 89 if(!result ){ 90 bootbox.alert("server response <pre>"+data+"</pre>") 91 return; 92 } 93 bootbox.alert(result.message,function(){ 94 if(result.error){ 95 return; 96 } 97 location="/"; 98 }); 99 } 100 }); 101 }, 102 resetPassword:function(){ 103 App.page.lock(''); 104 $("#frm-reset-password").upload({ 105 extradata:false, 106 callback:function(data){ 107 App.page.unlock(); 108 var result = App.data.parseJSON(data); 109 if(!result ){ 110 bootbox.alert("server response <pre>"+data+"</pre>") 111 return; 112 } 113 bootbox.alert(result.message,function(){ 114 if(result.error){ 115 return; 116 } 117 location="/"; 118 }); 119 } 120 }); 121 }, 122 loadFaqList:function(obj,id){ 123 $(obj).parent().siblings().find("a").removeClass("selected"); 124 $("#faq-list").html("loading"); 125 App.getHtml("/ajax/faq-list",{categoryID:id},function(data){ 126 $(obj).addClass("selected"); 127 $("#faq-list").html(data); 128 }); 129 }, 130 submitcv:function(){ 131 App.uploadForm('#frmsubmitcv',function(result){ 132 bootbox.alert(result.message,function(){ 133 location.reload(); 134 }); 135 }); 136 }, 137 articleparam:{}, 138 loadArticle:function(obj,params){ 139 for(var prop in params){ 140 site.articleparam[prop] = params[prop] 141 } 142 $(obj).parent().siblings().find("a").removeClass("selected"); 143 $("#article-list").html("loading"); 144 App.getHtml("/ajax/article-list",site.articleparam,function(data){ 145 $(obj).addClass("selected"); 146 $("#article-list").html(data); 147 }); 148 }, 149 selectPaymentChannel:function(obj){ 150 var val=$(obj).val(); 151 $("[name=channel]").empty(); 152 $("[name=channel]").append($("#"+val).html()); 153 }, 154 searchArticle:function(e){ 155 if ( e.keyCode ==13){ 156 site.loadArticle(false,{q:$("[name=search]").val()}); 157 } 158 }, 159 register:function(){ 160 App.page.lock(''); 161 $("#frmsignup").upload({ 162 extradata:{city_id:$("[name=city] option:selected").attr("city_id"),province_id:$("[name=city] option:selected").attr("province_id")}, 163 callback:function(data){ 164 App.page.unlock(); 165 var result = App.data.parseJSON(data); 166 if(!result ){ 167 bootbox.alert("server response <pre>"+data+"</pre>") 168 return; 169 } 170 if(result.error){ 171 bootbox.alert(result.message); 172 return; 173 } 174 bootbox.alert(result.message,function(){ 175 location="/"; 176 }); 177 } 178 }); 179 }, 180 login:function(){ 181 App.uploadForm("#frmlogin",function(result){ 182 if(result.error){ 183 bootbox.alert(result.message); 184 return; 185 } 186 location="/"; 187 }) 188 }, 189 loginMobile:function(){ 190 App.uploadForm("#frmloginmobile",function(result){ 191 if(result.error){ 192 bootbox.alert(result.message); 193 return; 194 } 195 location="/"; 196 }) 197 }, 198 changeEmail:function(){ 199 App.uploadForm("#frmchangeemail",function(result){ 200 if(result.error){ 201 bootbox.alert(result.message); 202 return; 203 } 204 location.reload(); 205 }) 206 }, 207 changePassword:function(){ 208 App.uploadForm("#frmchangepassword",function(result){ 209 if(result.error){ 210 bootbox.alert(result.message); 211 return; 212 } 213 location.reload(); 214 }) 215 }, 216 submitConnectivity:function(){ 217 App.uploadForm("#frmsmartconnectivity",function(result){ 218 if(result.error){ 219 bootbox.alert(result.message); 220 return; 221 } 222 location.reload(); 223 }) 224 }, 225 submitTestRide:function(){ 226 App.uploadForm("#frmtestride",function(result){ 227 bootbox.alert(result.message,function(){ 228 if(!result.error){ 229 location.reload(); 230 return; 231 } 232 }); 233 goog_report_conversion(); 234 }) 235 }, 236 registerHomeService:function(){ 237 App.uploadForm("#frmregisterHomeService",function(result){ 238 if(result.error){ 239 bootbox.alert(result.message); 240 return; 241 } 242 243 bootbox.alert(result.message,function(){ 244 location.reload(); 245 }); 246 goog_report_conversion() 247 }) 248 }, 249 registerBookingService:function(){ 250 App.uploadForm("#frmregisterBookingService",function(result){ 251 if(result.error){ 252 bootbox.alert(result.message); 253 return; 254 } 255 256 // bootbox.alert(result.message,function(){ 257 // location.reload(); 258 // }); 259 goog_report_conversion() 260 window.location.href ="/success"; 261 }) 262 }, 263 264 addGarage:function(){ 265 $('#AddGarageModal').modal('hide'); 266 App.uploadForm("#frmregistersubmitGarage",function(result){ 267 if(result.error){ 268 bootbox.alert(result.message); 269 return; 270 } 271 272 // bootbox.alert(result.message,function(){ 273 // location.reload(); 274 // }); 275 goog_report_conversion() 276 window.location.reload(); 277 bootbox.alert(result.message); 278 }) 279 }, 280 281 orderSparepart:function(){ 282 App.getJSON("/api/user/isProfileCompleted",{},function(response){ 283 if(!response || !response.status || response.status !="incomplete"){ 284 App.uploadForm("#frmordersparepart",function(result){ 285 if(result.error){ 286 bootbox.alert(result.message); 287 return; 288 } 289 bootbox.alert(result.message,function(){ 290 location.reload(); 291 }); 292 goog_report_conversion(); 293 }) 294 return; 295 } 296 bootbox.alert("Mohon lengkapi data diri Anda sebelum melanjutkan pesanan",function(){ 297 location = "/profil?modal=active"; 298 }) 299 300 }) 301 302 }, 303 orderCart:function(){ 304 var orderItem = []; 305 $("[cart-id]").each(function(){ 306 orderItem.push({ 307 id:$(this).attr("cart-id"), 308 jumlah:$(this).val() 309 310 }) 311 }); 312 var orderData={} 313 if($("#address-info [name=alamat]").size()>0){ 314 if($("#address-info [name=alamat]").val==""){ 315 bootbox.alert("Mohon Lengkapi alamat"); 316 return; 317 } 318 orderData.alamat = $("#address-info [name=alamat]").val(); 319 if(!$("#address-info [name=province]").val()){ 320 bootbox.alert("Mohon Lengkapi Provinsi"); 321 return; 322 } 323 orderData.province = $("#address-info [name=province]").val(); 324 325 if(!$("#address-info [name=city]").val()){ 326 bootbox.alert("Mohon Lengkapi City"); 327 return; 328 } 329 330 orderData.province_id = $("#address-info [name=city] option:selected").attr("province_id"); 331 orderData.city = $("#address-info [name=city]").val(); 332 orderData.city_id = $("#address-info [name=city] option:selected").attr("city_id"); 333 334 } 335 if(!$("[name=metode]:checked").val()){ 336 bootbox.alert("Mohon Pilih Metode Pengiriman"); 337 return; 338 } 339 orderData.metode_pengiriman = $("[name=metode]:checked").val(); 340 orderData.ongkos_kirim = $("[name=metode]:checked").attr("data-ongkir"); 341 if(orderData.metode_pengiriman=="dealer"){ 342 if(!$("[name=cabangID]").val()){ 343 bootbox.alert("Mohon Pilih Dealer untuk pengambilan barang"); 344 return; 345 } 346 orderData.cabangID = $("[name=cabangID]").val(); 347 } 348 orderData.items = orderItem; 349 App.page.lock(''); 350 App.action("/api/order/fromCart",orderData,function(data){ 351 App.page.unlock(); 352 var result = App.data.parseJSON(data); 353 if (!result) { 354 bootbox.alert('server error returned:<pre>' + data + '</pre>'); 355 return; 356 } 357 bootbox.alert(result.message, function () { 358 if (!result.error) { 359 location="/pesanan"; 360 return; 361 } 362 }); 363 }) 364 }, 365 orderCartNew:function(){ 366 var orderItem = []; 367 $("[cart-id]").each(function(){ 368 orderItem.push({ 369 id:$(this).attr("cart-id"), 370 jumlah:$(this).val() 371 372 }) 373 }); 374 var orderData={} 375 if($("#address-info [name=alamat]").size()>0){ 376 if($("#address-info [name=alamat]").val==""){ 377 bootbox.alert("Mohon Lengkapi alamat"); 378 return; 379 } 380 orderData.alamat = $("#address-info [name=alamat]").val(); 381 if(!$("#address-info [name=province]").val()){ 382 bootbox.alert("Mohon Lengkapi Provinsi"); 383 return; 384 } 385 orderData.province = $("#address-info [name=province]").val(); 386 387 if(!$("#address-info [name=city]").val()){ 388 bootbox.alert("Mohon Lengkapi City"); 389 return; 390 } 391 392 orderData.province_id = $("#address-info [name=city] option:selected").attr("province_id"); 393 orderData.city = $("#address-info [name=city]").val(); 394 orderData.city_id = $("#address-info [name=city] option:selected").attr("city_id"); 395 396 } 397 if(!$("[name=metode]:checked").val()){ 398 bootbox.alert("Mohon Pilih Metode Pengiriman"); 399 return; 400 } 401 orderData.metode_pengiriman = $("[name=metode]:checked").val(); 402 orderData.ongkos_kirim = $("[name=metode]:checked").attr("data-ongkir"); 403 if(orderData.metode_pengiriman=="dealer"){ 404 if(!$("[name=cabangID]").val()){ 405 bootbox.alert("Mohon Pilih Dealer untuk pengambilan barang"); 406 return; 407 } 408 orderData.cabangID = $("[name=cabangID]").val(); 409 } 410 orderData.items = orderItem; 411 orderData.payment_method=$("[name=method]").val(); 412 orderData.payment_channel=$("[name=channel]").val(); 413 App.page.lock(''); 414 App.action("/api/order/fromCartNew",orderData,function(data){ 415 App.page.unlock(); 416 var result = App.data.parseJSON(data); 417 if (!result) { 418 bootbox.alert('server error returned:<pre>' + data + '</pre>'); 419 return; 420 } 421 bootbox.alert(result.message, function () { 422 if (!result.error) { 423 location="/pesanan"; 424 return; 425 } 426 }); 427 }) 428 }, 429 orderCartSnap:function(){ 430 App.getJSON("/api/user/isProfileCompleted",{},function(response){ 431 if(!response || !response.status || response.status !="incomplete"){ 432 var orderItem = []; 433 $("[cart-id]").each(function(){ 434 orderItem.push({ 435 id:$(this).attr("cart-id"), 436 jumlah:$(this).val() 437 438 }) 439 }); 440 var orderData={} 441 if($("#address-info [name=alamat]").size()>0){ 442 if($("#address-info [name=alamat]").val==""){ 443 bootbox.alert("Mohon Lengkapi alamat"); 444 return; 445 } 446 orderData.alamat = $("#address-info [name=alamat]").val(); 447 if(!$("#address-info [name=province]").val()){ 448 bootbox.alert("Mohon Lengkapi Provinsi"); 449 return; 450 } 451 orderData.province = $("#address-info [name=province]").val(); 452 453 if(!$("#address-info [name=city]").val()){ 454 bootbox.alert("Mohon Lengkapi City"); 455 return; 456 } 457 458 orderData.province_id = $("#address-info [name=city] option:selected").attr("province_id"); 459 orderData.city = $("#address-info [name=city]").val(); 460 orderData.city_id = $("#address-info [name=city] option:selected").attr("city_id"); 461 462 } 463 if(!$("[name=metode]:checked").val()){ 464 bootbox.alert("Mohon Pilih Metode Pengiriman"); 465 return; 466 } 467 orderData.metode_pengiriman = $("[name=metode]:checked").val(); 468 orderData.ongkos_kirim = $("[name=metode]:checked").attr("data-ongkir"); 469 if(orderData.metode_pengiriman=="dealer"){ 470 if(!$("[name=cabangID]").val()){ 471 bootbox.alert("Mohon Pilih Dealer untuk pengambilan barang"); 472 return; 473 } 474 orderData.cabangID = $("[name=cabangID]").val(); 475 } 476 orderData.items = orderItem; 477 orderData.kode_promo=$("[name=kode_promo]").val() 478 App.page.lock(''); 479 App.action("/api/order/fromCartSnap",orderData,function(data){ 480 App.page.unlock(); 481 var result = App.data.parseJSON(data); 482 if (!result) { 483 bootbox.alert('server error returned:<pre>' + data + '</pre>'); 484 return; 485 } 486 goog_report_conversion(); 487 if(result.redirect_url) { 488 location=result.redirect_url; 489 return; 490 } 491 bootbox.alert(result.message); 492 }) 493 return; 494 } 495 bootbox.alert("Mohon lengkapi data diri Anda sebelum melanjutkan pesanan",function(){ 496 location = "/profil?modal=active"; 497 }) 498 }) 499 }, 500 cekKodePromo:function(){ 501 var orderItem = []; 502 $("[cart-id]").each(function(){ 503 orderItem.push({ 504 id:$(this).attr("cart-id"), 505 jumlah:$(this).val() 506 507 }) 508 }); 509 var postData={ 510 kode_promo:$("[name=kode_promo]").val(), 511 items:orderItem 512 } 513 App.page.lock(''); 514 App.action("/api/kode_promo/check",postData,function(data){ 515 App.page.unlock(); 516 var result = App.data.parseJSON(data); 517 if (!result) { 518 bootbox.alert('server error returned:<pre>' + data + '</pre>'); 519 return; 520 } 521 if (result.error) { 522 bootbox.alert(result.message); 523 return; 524 } 525 $("#discount").attr("data-discount-value",result.data);
526 $("#discount").html("Rp "+ result.data.toLocaleString().replace(/,/g, '.')); 527 528 529 bootbox.alert(result.message,()=>{ 530 setTimeout(()=>{ 531 calculate(); 532 },1000) 533 }); 534 }); 535 }, 536 addToCart:function(cartData){ 537 App.page.lock(''); 538 App.action("/api/user/addToCart",cartData,function(data){ 539 App.page.unlock(); 540 var result = App.data.parseJSON(data); 541 if (!result) { 542 bootbox.alert('server error returned:<pre>' + data + '</pre>'); 543 return; 544 } 545 if (!result.error) { 546 bootbox.alert(result.message, function () { 547 location.reload(); 548 }); 549 return; 550 } 551 if(result.wishlistOption && result.wishlistData){ 552 bootbox.confirm(result.message,function(ok){ 553 if(!ok){return;} 554 site.addToWishlist(result.wishlistData); 555 }) 556 }else{ 557 bootbox.alert(result.message); 558 } 559 }) 560 }, 561 addToWishlist:function(wishlistData){ 562 App.page.lock(''); 563 App.action("/api/user/addToWishlist",wishlistData,function(data){ 564 App.page.unlock(); 565 var result = App.data.parseJSON(data); 566 if (!result) { 567 bootbox.alert('server error returned:<pre>' + data + '</pre>'); 568 return; 569 } 570 bootbox.alert(result.message); 571 }) 572 }, 573 removeWishlist:function(id){ 574 bootbox.confirm("Hapus item ini dari wishlist Anda?",function(ok){ 575 if(!ok){ 576 return; 577 } 578 App.page.lock(''); 579 App.action("/api/user/removeWishlist",{id:id},function(data){ 580 App.page.unlock(); 581 var result = App.data.parseJSON(data); 582 if (!result) { 583 bootbox.alert('server error returned:<pre>' + data + '</pre>'); 584 return; 585 } 586 bootbox.alert(result.message,function(){ 587 location.reload(); 588 }); 589 }) 590 }) 591 592 }, 593 removeFromCart:function(id){ 594 App.page.lock(''); 595 App.action("/api/user/removeFromCart",{id:id},function(data){ 596 App.page.unlock(); 597 var result = App.data.parseJSON(data); 598 if (!result) { 599 bootbox.alert('server error returned:<pre>' + data + '</pre>'); 600 return; 601 } 602 bootbox.alert(result.message, function () { 603 if (!result.error) { 604 location.reload();; 605 } 606 }); 607 }) 608 }, 609 getPartStock:function(part_number,callback){ 610 App.getJSON("/api/getStock",{part_number:part_number},function(data){ 611 callback(data); 612 }) 613 }, 614 registerChat:function(){ 615 App.uploadForm("#frmchatregister",function(result){ 616 if(result.error){ 617 bootbox.alert(result.message); 618 return; 619 } 620 location="/chat-list"; 621 }) 622 }, 623 startChat:function(){ 624 if(!$("[name=cabangID]:checked").val()){ 625 bootbox.alert("Mohon pilih cabang yang ingin Anda hubungi") 626 return; 627 } 628 App.action("/api/user/startChat",{cabangID:$("[name=cabangID]:checked").val()},function(data){ 629 App.page.unlock(); 630 var result = App.data.parseJSON(data); 631 if (!result) { 632 bootbox.alert('server error returned:<pre>' + data + '</pre>',function(){ 633 location="/hubungi-kami"; 634 }); 635 return; 636 } 637 location="/chat"; 638 }) 639 }, 640 checkChatSubmit:function(e){ 641 if ( e.keyCode ==13){ 642 site.sendChatMessage(); 643 } 644 }, 645 sendChatMessage:function(){ 646 if(!site.chatAnswered){ 647 return; 648 } 649 var msg={ 650 chatID:roomid, 651 message:$("[name=message]").val() 652 } 653 654 655 $("[name=message]").val(""); 656 $("#chat-from-self #message").text(msg.message); 657 $("#chat-log").append($("#chat-from-self").html()); 658 var tgt = $("#chat-log").find('.base_sent').last(); 659 socket.emit("message_to_room",msg,function(){ 660 $(tgt).find('.checkmark').removeClass('hidden') 661 console.log(tgt,'callback'); 662 }); 663 }, 664 pesanMotor:function(){ 665 if(!extradata || !extradata.metode_pembayaran){ 666 return; 667 } 668 if(extradata.metode_pembayaran=="kredit"){ 669 if($("#rincian-kredit").find("[name=uangmuka]").size()<1){ 670 bootbox.alert("Silakan tentukan lokasi Anda untuk mendapatkan rincian harga kredit") 671 return; 672 } 673 if(!$("#rincian-kredit").find("[name=uangmuka]").val()){ 674 bootbox.alert("Silakan tentukan jumlah uang muka"); 675 return; 676 } 677 if($("#rincian-kredit").find("[name=angsuran]").size()<1){
678 bootbox.alert("Silakan tentukan lokasi Anda untuk mendapatkan rincian harga kredit") 679 return; 680 } 681 if(!$("#rincian-kredit").find("[name=angsuran]").val()){ 682 bootbox.alert("Silakan tentukan periode kredit"); 683 return; 684 } 685 if(!$("#tab1").find("[name=agree]").prop("checked")){ 686 bootbox.alert("Mohon tandai bahwa Anda menyetujui syarat dan ketentuan dari Kami"); 687 return; 688 } 689 690 extradata.uangmuka = $("#rincian-kredit").find("[name=uangmuka]").val(); 691 extradata.tenor = $("#rincian-kredit").find("[name=angsuran]").val(); 692 extradata.angsuran = $("#rincian-kredit").find("[name=angsuran] option:selected").attr("angsuran"); 693 extradata.aksesoris=[]; 694 $("#tab1").find("[name*=aksesoris]").each(function(){ 695 if($(this).prop("checked")){ 696 extradata.aksesoris.push($(this).val()); 697 } 698 }); 699 extradata.kode_promo=$(".promo-credit-block").find("[name=kode_promo]").val(); 700 extradata.motor_code = $("#frmpesanmotor").find("[name=cabangID] option:selected").attr("data-motor-code") 701 702 } 703 if(extradata.metode_pembayaran=="cash"){ 704 if(!$("#tab2").find("[name=agree]").prop("checked")){ 705 bootbox.alert("Mohon tandai bahwa Anda menyetujui syarat dan ketentuan dari Kami"); 706 return; 707 } 708 extradata.aksesoris=[]; 709 $("#tab2").find("[name*=aksesoris]").each(function(){ 710 if($(this).prop("checked")){ 711 extradata.aksesoris.push($(this).val()); 712 } 713 }) 714 extradata.kode_promo=$(".promo-cash-block").find("[name=kode_promo]").val(); 715 extradata.motor_code = $("#frmpesanmotor").find("[name=cabangID] option:selected").attr("data-motor-code") 716 } 717 718 App.page.lock(''); 719 $("#frmpesanmotor").upload({ 720 extradata:extradata, 721 callback:function(data){ 722 App.page.unlock(); 723 var result = App.data.parseJSON(data); 724 if(!result ){ 725 bootbox.alert("server response <pre>"+data+"</pre>") 726 return; 727 } 728 if(!result.error){ 729 if(extradata.metode_pembayaran=="kredit"){ 730 goog_report_conversion_credit(); 731 } 732 if(extradata.metode_pembayaran=="cash"){ 733 goog_report_conversion_cash(); 734 } 735 } 736 bootbox.alert(result.message,function(){ 737 if(!result.error){ 738 location.reload(); 739 } 740 741 }); 742 } 743 }) 744 }, 745 cekPromoMotorCredit:function(){ 746 if(!extradata || !extradata.metode_pembayaran || extradata.metode_pembayaran!="kredit"){ 747 return; 748 } 749 var postData={ 750 metode_pembayaran:"kredit" 751 } 752 753 if($("#rincian-kredit").find("[name=uangmuka]").size()<1){ 754 bootbox.alert("Silakan tentukan lokasi Anda untuk mendapatkan rincian harga kredit") 755 return; 756 } 757 if(!$("#rincian-kredit").find("[name=uangmuka]").val()){ 758 bootbox.alert("Silakan tentukan jumlah uang muka"); 759 return; 760 } 761 if($("#rincian-kredit").find("[name=angsuran]").size()<1){ 762 bootbox.alert("Silakan tentukan lokasi Anda untuk mendapatkan rincian harga kredit") 763 return; 764 } 765 if(!$("#rincian-kredit").find("[name=angsuran]").val()){ 766 bootbox.alert("Silakan tentukan periode kredit"); 767 return; 768 } 769 770 postData.uangmuka = $("#rincian-kredit").find("[name=uangmuka]").val(); 771 postData.tenor = $("#rincian-kredit").find("[name=angsuran]").val(); 772 postData.angsuran = $("#rincian-kredit").find("[name=angsuran] option:selected").attr("angsuran"); 773 postData.productID=$("#frmpesanmotor").find("[name=productID]").val(); 774 postData.cabangID=$("#frmpesanmotor").find("[name=cabangID]").val(); 775 postData.kode_promo=$(".promo-credit-block").find("[name=kode_promo]").val(); 776 postData.motor_code = $("#frmpesanmotor").find("[name=cabangID] option:selected").attr("data-motor-code") 777 778 App.page.lock(''); 779 App.action("/api/kode_promo/cekPromoMotorCredit",postData,function(res){ 780 App.page.unlock(); 781 bootbox.alert(res.message); 782 if(!res.error){ 783 $('#rincian-kredit').find("#diskon").removeClass("hidden"); 784 $('#rincian-kredit').find("#selected-diskon").text(`Rp ${res.data.toLocaleString()}`); 785 $('#rincian-kredit').find("#total-dp").removeClass("hidden"); 786 $("#selected-dp").css({"text-decoration":"line-through"}); 787 var dp = parseFloat($("#selected-dp").attr("data-float")); 788 var dp_after_diskon = dp - parseFloat(res.data); 789 $('#rincian-kredit').find("#selected-total-dp").text(`Rp ${dp_after_diskon.toLocaleStr
789ing()}`); 790 } 791 }); 792 793 }, 794 cekPromoMotorCash:function(){ 795 if(!extradata || !extradata.metode_pembayaran || extradata.metode_pembayaran!="cash"){ 796 return; 797 } 798 var postData={ 799 metode_pembayaran:"kredit" 800 } 801 postData.productID=$("#frmpesanmotor").find("[name=productID]").val(); 802 postData.cabangID=$("#frmpesanmotor").find("[name=cabangID]").val(); 803 postData.motor_code = $("#frmpesanmotor").find("[name=cabangID] option:selected").attr("data-motor-code") 804 postData.kode_promo=$(".promo-cash-block").find("[name=kode_promo]").val(); 805 806 App.page.lock(''); 807 App.action("/api/kode_promo/cekPromoMotorCash",postData,function(res){ 808 App.page.unlock(); 809 bootbox.alert(res.message); 810 if(res.error){ 811 return; 812 } 813 $("#total-harga").css({"text-decoration": "line-through"}); 814 $(".total-cash-block").empty(); 815 $(".total-cash-block").append(` 816 <div class="col-md-4 "> 817 <h3 class="txt-bold inter-bold font-italic txt-up txt-black">Diskon</h3> 818 </div> 819 <div class="col-md-8 txt-r-to-l"> 820 <h3 class="txt-red txt-bold inter-bold font-italic txt-up" id="total-diskon" data-diskon="${res.data}">Rp ${res.data.toLocaleString().split(",").join(".")}</h3> 821 </div> 822 `); 823 var total = parseFloat($("#total-harga").attr("data-harga")); 824 var grand_total = total - res.data; 825 $(".total-cash-block").append(` 826 <div class="col-md-4 "> 827 <h3 class="txt-bold inter-bold font-italic txt-up txt-black">Grand Total</h3> 828 </div> 829 <div class="col-md-8 txt-r-to-l"> 830 <h3 class="txt-red txt-bold inter-bold font-italic txt-up" id="grand-total" data-grand-total="${grand_total}">Rp ${grand_total.toLocaleString().split(",").join(".")}</h3> 831 </div> 832 `); 833 $(".total-cash-block h3").css({"margin":0}) 834 }); 835 836 }, 837 sendChatAttachment:function(){ 838 if(!site.chatAnswered){ 839 return; 840 } 841 $("input[name=attachment]").on("change",function(){ 842 var file = $(this)[0].files[0]; 843 if(file.size > 1024 * 1024 * 25){ 844 bootbox.alert("Maaf, maksimal ukuran file adalah 25 MB"); 845 return; 846 } 847 var upload = new Upload(file); 848 var temp = $("<div />"); 849 var temp_id=new Date().getTime(); 850 $(temp).attr("id",temp_id); 851 temp_id = '#' + temp_id; 852 $(temp).html(file.name +" - 0%"); 853 $("#chat-log").append(temp[0]) 854 upload.doUpload("/api/chat/attachment", 855 function(err){ 856 bootbox.alert("Upload error, server return <pre> "+err+"</pre>",function(){ 857 $(temp_id).remove(); 858 }); 859 }, 860 function(event){ 861 var percent = 0; 862 var position = event.loaded || event.position; 863 var total = event.total; 864 if (event.lengthComputable) { 865 percent = Math.ceil(position / total * 100); 866 } 867 console.log(percent); 868 $(temp_id).html(file.name +" - "+percent+"%") 869 }, 870 function(rv){ 871 $(temp_id).remove(); 872 if(rv && rv.data && rv.data.url){ 873 var msg={ 874 chatID:roomid, 875 message:"<a href='"+rv.data.url+"' target='_blank'>"+file.name+"</a>" 876 } 877 socket.emit("message_to_room",msg); 878 $("#chat-from-self #message").html(msg.message); 879 $("#chat-log").append($("#chat-from-self").html()); 880 } 881 } 882 ); 883 $(this).off("change"); 884 }); 885 $("input[name=attachment]").trigger("click"); 886 }, 887 fblogin:function(){ 888 var win = window.open('/dialog/fblogin','Login Via Facebook','left=20,top=20,width=500,height=500,toolbar=1,resizable=0'); 889 var pollTimer = window.setInterval(function() { 890 if (win.closed !== false) { // !== is required for compatibility with Opera 891 window.clearInterval(pollTimer); 892 App.getJSON("/api/user/isProfileCompleted",{},function(response){ 893 if(!response || !response.status || response.status !="incomplete"){ 894 location.reload(); 895 return; 896 } 897 location = "/profil?modal=active"; 898 }) 899 900 } 901 }, 200); 902 }, 903 googleLogin:function(){ 904 var win = window.open('/dialog/google-login','Login Via Google','left=20,top=20,width=500,height=500,toolbar=1,resizable=0'); 905 var pollTimer = window.setInterval(function() { 906 if (win.closed !== false) { // !== is required for compatibility with Opera 907 window.clearInterval(pollTimer); 908 App.getJSON("/api/user/isProfileCompleted",{},function(response){ 909 if(!response || !response.status || response.status !="incomplete"){ 910 location.reload(); 911 return; 912 } 913 location = "/profil?modal=active"; 914 }) 915 } 916 }, 200); 917 }, 918 updateProfile:function(){ 919 App.page.lock(''); 920 $("#frmupdateprofile").upload({ 921 extradata:false, 922 callback:function(data){ 923 App.page.unlock(); 924 var result = App.data.parseJSON(data); 925 if(!result ){ 926 bootbox.alert("server response <pre>"+data+"</pre>") 927 return; 928 } 929 bootbox.alert(result.message,function(){ 930 if(!result.error){ 931 location.reload(); 932 return; 933 }
934 $("#modal-update-profile").modal(); 935 }); 936 } 937 }) 938 }, 939 semokBookingList:[], 940 findSemokByDate:function(){ 941 var tgl = $("[name=tgl]").val(); 942 var bln = $("[name=bln]").val(); 943 var thn = $("[name=thn]").val(); 944 var date=thn +"-" + bln + "-" + tgl; 945 App.getJSON("/api/semok/findScheduleByDate",{date:date},function(result){ 946 $("[name=schedule_id]").empty(); 947 $("[name=schedule_id]").append(` 948 <option selected disabled>Tidak ada jadwal</option> 949 `); 950 if(result.error){ 951 //bootbox.alert(result.message); 952 return; 953 } 954 if(!result.data || result.data.length <1){ 955 //bootbox.alert("Tidak ada jadwal semok"); 956 return; 957 } 958 site.semokBookingList = []; 959 $("[name=schedule_id]").empty(); 960 result.data.forEach(function(r){ 961 $("[name=schedule_id]").append(` 962 <option value="${r.id}">${r.name},${r.area}</option> 963 `); 964 site.semokBookingList.push({ 965 id:r.id, 966 open_pit:r.open_pit, 967 address:r.address, 968 booking:r.booking 969 }); 970 }); 971 $("[name=schedule_id]").off("change"); 972 $("[name=schedule_id]").on("change",function(){ 973 var id=$(this).val(); 974 $(".jam-list").removeClass("disabled"); 975 $(".jam-list").removeClass("selected"); 976 var sel = site.semokBookingList.filter(function(n){return n.id ==id})[0]; 977 if(!sel){ 978 return; 979 } 980 $(".address").text(sel.address); 981 var bookingList = sel.booking; 982 $(".jam-list").each(function(){ 983 var jam = $(this).text()+":00"; 984 var len = bookingList.filter(function(m){return m.jam===jam}).length; 985 if(len >=sel.open_pit){ 986 $(this).addClass("disabled"); 987 $(this).removeClass("selected"); 988 } 989 }); 990 $(".jam-list").off("click"); 991 $(".jam-list").on("click",function(){ 992 if($(this).hasClass("disabled")){ 993 return; 994 } 995 $(this).addClass("selected"); 996 $(this).parent().siblings().find(".jam-list").removeClass("selected"); 997 $("[name=jam]").val($(this).text()); 998 }) 999 }); 1000 $("[name=schedule_id]").trigger("change"); 1001 1002 }) 1003 }, 1004 findBookingSlot: function () { 1005 var date = $("[name=tgl]").val(); 1006 var branch_id = $("[name=cabangID]").val(); 1007 1008 if (!branch_id || !date) { 1009 return; 1010 } 1011 1012 $(".jam-area").empty(''); 1013 $(".jam-area").append('Loading'); 1014 1015 // Get the current client's local time 1016 var clientCurrentTime = new Date(); 1017 1018 // Subtract 2 hours from the client's local time 1019 var minBookingTime = new Date(clientCurrentTime.getTime() + (2 * 60 * 60 * 1000)); 1020 1021 App.getJSON("/app/booking/findSlot", { date: date, branch_id: branch_id }, function (result) { 1022 if (!result.data) { 1023 return; 1024 } 1025 1026 $(".jam-area").empty(); 1027 1028 result.data.forEach(function (r) { 1029 var available = parseInt(r.free_slot); 1030 var disabled = ""; 1031 1032 // Parse time strings into Date objects for comparison 1033 var slotTime = new Date(date + ' ' + r.list_hour); 1034 1035 // Compare the time slots with the calculated minimum booking time 1036 if (minBookingTime >= slotTime || available < 1) { 1037 disabled = "disabled"; 1038 } 1039 1040 $(".jam-area").append(` 1041 <div class="col-md-2 col-sm-3 col-xs-4 margin-right-10" > 1042 <p class="jam-list ${disabled}">${r.list_hour}</p> 1043 </div> 1044 `); 1045 }); 1046 1047 $(".jam-list").off("click"); 1048 $(".jam-list").on("click", function () { 1049 if ($(this).hasClass("disabled")) { 1050 return; 1051 } 1052 if ($(this).hasClass("selected")) { 1053 $(this).removeClass("selected"); 1054 return; 1055 } 1056 $(this).addClass("selected"); 1057 $(this).parent().siblings().find(".jam-list").removeClass("selected"); 1058 $("[name=jam]").val($(this).text()); 1059 }); 1060 }); 1061 }, 1062 registerSemok:function(){ 1063 App.uploadForm("#frmregisterSemokService",function(result){ 1064 if(result.error){ 1065 bootbox.alert(result.message); 1066 return; 1067 } 1068 1069 // bootbox.alert(result.message,function(){ 1070 // location.reload(); 1071 // }); 1072 goog_report_conversion() 1073 window.location.href ="/success"; 1074 }) 1075 }, 1076 submitSurveyRating:function(){ 1077 App.uploadForm("#frmSubmitSurveyRating",function(result){ 1078 if(result.error){ 1079 bootbox.alert(result.message); 1080 return; 1081 } 1082 1083 // bootbox.alert(result.message,function(){ 1084 // location.reload(); 1085 // }); 1086 goog_report_conversion() 1087 window.location.href ="/success"; 1088 bootbox.alert(result.message); 1089 }) 1090 }, 1091} 1092var Upload = function (file) { 1093 this.file = file; 1094}; 1095 1096Upload.prototype.getType = function() { 1097 return this.file.type; 1098}; 1099Upload.prototype.getSize = function() { 1100 return this.file.size; 1101}; 1102Upload.prototype.getName = function() { 1103 return this.file.name; 1104}; 1105 1106Upload.prototype.doUpload = function (url,error_handler,progress_handler,finish_handler) { 1107 var that = this; 1108 var formData = new FormData(); 1109 1110 // add assoc key values, this will be posts values 1111 formData.append("file", this.file, this.getName()); 1112 formData.append("upload_file", true); 1113 1114 $.ajax({ 1115 type: "POST", 1116 url: url, 1117 xhr: function () { 1118 var myXhr = $.ajaxSettings.xhr(); 1119 if (myXhr.upload) { 1120 myXhr.upload.addEventListener('progress', progress_handler, false); 1121 } 1122 return myXhr; 1123 }, 1124 success: function (data) { 1125 if(finish_handler && typeof finish_handler=="function"){ 1126 finish_handler(data); 1127 return; 1128 } 1129 }, 1130 error: function (data) { 1131 if(error_handler && typeof error_handler=="function"){ 1132 error_handler(data); 1133 return; 1134 } 1135 1136 }, 1137 async: true, 1138 data: formData, 1139 cache: false, 1140 contentType: false, 1141 processData: false, 1142 timeout: 60000 1143 }); 1144};
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.