説明なし
選択できるのは25トピックまでです。 トピックは、先頭が英数字で、英数字とダッシュ('-')を使用した35文字以内のものにしてください。

addtocart.js 4.9KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174175176177178179180181182183184185186187188189190191192193194195196197198199200201202203204205206207208
  1. const CART_DATA = 'CART_DATA';
  2. let cartLength = 0;
  3. const CART_ADD = 'CART_ADD';
  4. function getCartData(){
  5. const data = localStorage.getItem(CART_DATA);
  6. if(data) return JSON.parse(data);
  7. return null;
  8. }
  9. function removeCartData(){
  10. localStorage.removeItem(CART_DATA);
  11. }
  12. function setCartData(data){
  13. localStorage.setItem(CART_DATA,JSON.stringify(data));
  14. }
  15. function setLengthCart(){
  16. const data = getCartData();
  17. if(!data) return;
  18. let length = 0;
  19. for(let item in data){
  20. let curr = data[item];
  21. length += parseInt(curr.quantity);
  22. }
  23. if(length>0){
  24. $('.cartnumcount').removeClass('d-none').html(length);
  25. }else{
  26. $('.cartnumcount').addClass('d-none').html(0);
  27. }
  28. }
  29. function getQuantityById(id){
  30. const data = getCartData();
  31. if(!data) return;
  32. for(let item in data){
  33. if(id == item){
  34. $('#quantity').val(products[item].quantity);
  35. }
  36. }
  37. }
  38. function updateCartQuantity(id,val){
  39. const data = getCartData();
  40. if(!data) return;
  41. data[id].quantity = val;
  42. setCartData(data);
  43. updateSummaryPriceAdd();
  44. }
  45. function removeCartItem(id){
  46. debugger;
  47. let data = getCartData();
  48. if(!data) return;
  49. let newdata = {};
  50. for(let item in data){
  51. if(item != id){
  52. newdata[item] = data[item];
  53. }
  54. }
  55. setCartData(newdata);
  56. updateSummaryPriceAdd();
  57. return Object.keys(newdata).length;
  58. }
  59. function updateSummaryPriceAdd(){
  60. let data = getCartData();
  61. let totalSummaryPrice = $('.totalSummaryPrice');
  62. let totalPrice = $('.totalPrice');
  63. let currecy = $('.currecy');
  64. let noofitems = $('.noofitems');
  65. if(!data) return;
  66. let len = 0;
  67. let totalAmt = 0;
  68. for(let item in data) {
  69. let {price,quantity} = data[item];
  70. totalAmt += parseInt(price*quantity);
  71. len += parseInt(quantity);
  72. }
  73. const [currencySymbol,amount] = getCurrencySymbol(totalAmt);
  74. noofitems.html(len);
  75. totalSummaryPrice.html(amount);
  76. totalPrice.html(amount);
  77. currecy.html(currencySymbol);
  78. }
  79. function initAddToCart(){
  80. addEventListeners();
  81. function addToCartFun(){
  82. const data = getCartData();
  83. let id = window.location.search.split('=')[1];
  84. if(!data){
  85. let cartObj = {};
  86. debugger;
  87. cartObj[$('#skudetailitem').val()] = {
  88. name:$('.productname').html(),
  89. price:$('.price').html(),
  90. quantity:$('#quantity').val(),
  91. img:$('.productDetailsMain img').attr('src'),
  92. sku:$('#skudetailitem').val()
  93. }
  94. addtoCart(cartObj);
  95. //$('.cartnumcount').removeClass('d-none').html(1);
  96. setLengthCart();
  97. }else{
  98. //if(!data[id]) data['length']++;
  99. let name = $('.productname').html();
  100. let price = $('.price').html();
  101. let quantity = $('#quantity').val();
  102. let img = $('.productDetailsMain img').attr('src');
  103. let sku = $('#skudetailitem').val();
  104. if(data[$('#skudetailitem').val()]){
  105. data[$('#skudetailitem').val()] = {
  106. name:name,
  107. price:price,
  108. quantity: parseInt(data[sku].quantity)+parseInt(quantity),
  109. img:img,
  110. sku:sku
  111. }
  112. addtoCart(data);
  113. }else{
  114. data[$('#skudetailitem').val()] = {
  115. name:name,
  116. price:price,
  117. quantity:parseInt(quantity),
  118. img:img,
  119. sku:sku
  120. }
  121. addtoCart(data);
  122. }
  123. }
  124. setLengthCart();
  125. }
  126. function addEventListeners(){
  127. $('#addtocart').html('Add to cart')
  128. $('#addtocart').off().click((e)=>{
  129. debugger
  130. $('#addtocart').off().click(function (el){
  131. window.location.href = '/shopping-cart.html';
  132. });
  133. addToCartFun();
  134. debugger;
  135. toasterHelper('success',"Item added to cart");
  136. $('#addtocart').html('Go to cart');
  137. });
  138. $('.buynow').off('click').click(async (e)=>{
  139. addToCartFun();
  140. const res = await COOKIE_HELPER.validateToken();
  141. if(!res.response){
  142. localStorage.setItem(CART_ADD,true);
  143. window.location.href = '/login.html';
  144. $('.checkoutbtn').find('span').removeClass('d-none');
  145. $('.checkoutbtn').find('div').addClass('d-none');
  146. return;
  147. }
  148. window.location.href = '/selectdelivery.html';
  149. });
  150. }
  151. function addtoCart(data){
  152. const currData = getCartData();
  153. let newData = {...currData,...data};
  154. setCartData(newData);
  155. }
  156. }
  157. initAddToCart();