// ==================================== // ShoppingCart.js // ==================================== var ShoppingCart = { init: function(){ // init }, isInCart: function(productId){ if(typeof(productId) === 'undefined'){ console.error('productId is undefined'); return false; } var cartItem = leStorage.get('leCart'); var found = false; // data if(!cartItem){ // not found }else{ $.each(cartItem, function(i,el){ if(el.product_id == productId){ found = true; return false; } }); } return found; }, addToCart: function(itemOb, message, callback){ // check requirements if(typeof(itemOb.productId) === 'undefined'){ console.error('itemOb.productId is undefined'); return false; }else if(typeof(itemOb.quantity) === 'undefined'){ console.error('itemOb.quantity is undefined'); return false; }else if(typeof(itemOb.name) === 'undefined'){ console.error('itemOb.name is undefined'); return false; }else if(typeof(itemOb.price) === 'undefined'){ console.error('itemOb.price is undefined'); return false; }else if(typeof(itemOb.currency) === 'undefined'){ console.error('itemOb.currency is undefined'); return false; }else if(typeof(itemOb.imageUrl) === 'undefined'){ console.error('itemOb.imageUrl is undefined'); return false; } var cartItem = leStorage.get('leCart'); var itemQuantityInCart = false; // data if(!cartItem){ cartItem = [ { product_id: itemOb.productId, quantity: itemOb.quantity, name: itemOb.name, price: itemOb.price, currency: itemOb.currency, image_url: itemOb.imageUrl } ]; itemQuantityInCart = itemOb.quantity; }else{ var found = false; $.each(cartItem, function(i,el){ if(el.product_id == itemOb.productId){ cartItem[i].quantity = cartItem[i].quantity + itemOb.quantity; found = true; itemQuantityInCart = cartItem[i].quantity; } }); if(!found){ cartItem.push({ product_id: itemOb.productId, quantity: itemOb.quantity, name: itemOb.name, price: itemOb.price, currency: itemOb.currency, image_url: itemOb.imageUrl }); itemQuantityInCart = itemOb.quantity; } } // item can add to cart leStorage.set('leCart',cartItem); if(!!message){ ShoppingCart.showToast(message); } if(!!callback){ callback(); } }, removeFromCart: function(itemOb, message, callback){ // check requirements if(typeof(itemOb.productId) === 'undefined'){ console.error('itemOb.productId is undefined'); return false; }else if(typeof(itemOb.quantity) === 'undefined'){ console.error('itemOb.quantity is undefined'); return false; } var cartItem = leStorage.get('leCart'); // data var itemQuantityInCart = false; var toDelKey = false; $.each(cartItem, function(i,el){ if(el.product_id == itemOb.productId){ cartItem[i].quantity = cartItem[i].quantity - itemOb.quantity; itemQuantityInCart = cartItem[i].quantity; if(itemQuantityInCart == 0){ toDelKey = i; } } }); if(toDelKey !== false){ cartItem.splice(toDelKey,1); } // item can add to cart leStorage.set('leCart',cartItem); if(!!message){ ShoppingCart.showToast(message); } if(!!callback){ callback(); } }, getCart: function(){ return leStorage.get('leCart'); }, clearCart: function(callback){ leStorage.clear('leCart'); if(!!callback){ callback(); } }, showToast: function(msg, errorFlag){ var template = $('#le_toaster_template').clone(); template.removeAttr('id').appendTo('#le_toaster_container').text(msg); var width = template.outerWidth(); template.css({ left: width + 50 }).removeClass('imGone').addClass('trans5'); if(!!errorFlag){ template.css('background-color','red'); } setTimeout(function(){ template.css('left',0); setTimeout(function(){ template.css('left',width+50); setTimeout(function(){ template.remove(); },600); },3000); },50); } } $(document).ready(function(){ ShoppingCart.init(); });