-
-
Save stevomccormack/a97856cc5fa85dec8466039d664d5871 to your computer and use it in GitHub Desktop.
| /*! | |
| Theme Name: Kase Shopify Development | |
| Author URI: https://mwebsolutions.com.au | |
| Description: Developed by Steve McCormack for MWeb Solutions | |
| Version: 1.1 | |
| Author: Steve McCormack | |
| */ | |
| // IIFE - Immediately Invoked Function Expression | |
| (function(library) { | |
| library(window.jQuery, window, document); | |
| }(function($, window, document) { | |
| /*--------------------------------------------------------------------------- | |
| Cart Functions | |
| -----------------------------------------------------------------------------*/ | |
| var validateQty = function(qty) { | |
| if((parseFloat(qty) == parseInt(qty)) && !isNaN(qty) && parseInt(qty) > 0) { | |
| return qty; | |
| } | |
| else if (parseInt(qty) <= 0){ | |
| return 0; | |
| } | |
| else { | |
| return 1; | |
| } | |
| }; | |
| var ajaxUpdateCart = function(lineId, quantity, $parent) { | |
| var qty = validateQty(quantity); | |
| var params = { quantity: qty, line: lineId }; | |
| $.ajax({ | |
| url: '/cart/change.js', | |
| dataType: 'json', | |
| type: 'post', | |
| data: params, | |
| success: function (cart) { | |
| if (qty === 0){ | |
| var lineIndex = parseInt(lineId) - 1; | |
| $('form[action="/cart"] .cart-table tbody tr:eq(' + lineIndex +')').remove(); | |
| } | |
| refreshCart(cart); | |
| } | |
| }); | |
| } | |
| var refreshCart = function(cart) { | |
| var $cartForm = $('form[action="/cart"]'); | |
| var $cartEmptyContainer = $('#cart-empty-container'); | |
| var $cartBtn = $('#cart-link .cart_count'); | |
| var cartBtnText = $cartBtn.text() || '0'; | |
| var cart_subtotal_html = ''; | |
| var discounted_price_total = 0; | |
| var total_savings = 0; | |
| $cartBtn.text(cartBtnText.replace(/[0-9]+/, cart.item_count)); | |
| if (cart.item_count == 0) | |
| { | |
| $cartForm.addClass('hidden').fadeOut().hide(); | |
| $cartEmptyContainer.removeClass('hidden'); | |
| } | |
| else | |
| { | |
| $cartForm.removeClass('hidden').fadeIn().show(); | |
| $cartEmptyContainer.addClass('hidden'); | |
| $.each(cart.items, function(index, item) | |
| { | |
| $.ajax({ | |
| dataType: "json", | |
| async: false, | |
| url: "/products/" + item.handle + ".js", | |
| success: function(data) | |
| { | |
| var variant_id = item.variant_id; | |
| var variant = $.grep(data.variants, function(v) | |
| { | |
| return v.id == variant_id; | |
| }); | |
| if(variant[0] && variant[0].compare_at_price > item.price) | |
| { | |
| discounted_price_total += item.price * item.quantity; | |
| total_savings += variant[0].compare_at_price * item.quantity; | |
| } | |
| var lineTotal = item.price * item.quantity; | |
| var lineHtml = Shopify.formatMoney(lineTotal, $cartForm.data('money-format'));// | |
| $cartForm.find('.cart-table tbody tr:eq(' + index +') td[data-label="{{ 'cart.label.total' | t }}"] .cart-item__total').html(lineHtml); | |
| } | |
| }); | |
| //update line id | |
| $cartForm.find('.cart-table tbody tr:eq(' + index +') td[data-label="{{ 'cart.label.quantity' | t }}"] input[data-line-id]').data('line-id', index + 1); | |
| }); | |
| cart_subtotal_html = Shopify.formatMoney(cart.total_price, $cartForm.data('money-format')); | |
| if( total_savings > 0 ) | |
| { | |
| //data-money-format="<span class=money>${{amount}} AUD</span> | |
| //cart_savings_html = '{{ 'cart.general.savings_html' | t | escape }}' + Shopify.formatMoney(total_savings - discounted_price_total, $cartForm.data('money-format')); | |
| cart_savings_html = 'Your saving ' + Shopify.formatMoney(total_savings - discounted_price_total, $cartForm.data('money-format')); | |
| } | |
| else | |
| { | |
| cart_savings_html = ''; | |
| } | |
| } | |
| $('.cart-container .cart__subtotal').html(cart_subtotal_html); | |
| $('.cart-container .cart-subtotal__savings').html(cart_savings_html); | |
| {% comment %} {% if settings.show_multiple_currencies %} | |
| convertCurrencies(); | |
| {% endif %} {% endcomment %} | |
| if (typeof BOLD.common.eventEmitter === "object") | |
| BOLD.common.eventEmitter.emit('BOLD_CURRENCY_double_check'); | |
| } | |
| var initCart = function() | |
| { | |
| $(document).on('change', 'form[action="/cart"] input[type="number"]', function(e) | |
| { | |
| var $self = $(e.currentTarget); | |
| var lineId = $self.data('line-id'); | |
| var qty = $self.val(); | |
| var $cartForm = $self.closest('form[action="/cart"]'); | |
| ajaxUpdateCart( lineId, qty, $cartForm ); | |
| return false; | |
| }); | |
| $(document).on('click', 'form[action="/cart"] .number-input button', function(e) | |
| { | |
| var $self = $(e.currentTarget); | |
| var $numberInput = $self.closest('.number-input').find('input[type="number"]'); | |
| var lineId = $numberInput.data('line-id'); | |
| var qty = $numberInput.val(); | |
| var $cartForm = $self.closest('form[action="/cart"]'); | |
| ajaxUpdateCart( lineId, qty, $cartForm ); | |
| return false; | |
| }); | |
| } | |
| //-------------------------------------------------------------- | |
| // --- Window Scoping | |
| //-------------------------------------------------------------- | |
| window.initCart = initCart(); | |
| //-------------------------------------------------------------- | |
| // --- Init | |
| //-------------------------------------------------------------- | |
| var init = function() { | |
| //cart ajax | |
| initCart(); | |
| }; | |
| //-------------------------------------------------------------- | |
| // --- Dom Ready | |
| //-------------------------------------------------------------- | |
| $(function() { | |
| //dom is ready! | |
| var pageInit = function() { | |
| init(); | |
| }(); | |
| }); | |
| })); |
{% for image in product.images %} <img class="lazyload blur-up" src="{{ image.src | img_url: '100x' }}" data-src="{{ image.src | img_url: '2000x' }}" data-srcset="{{ image | img_url: '300x' }} 300w, {{ image | img_url: '400x' }} 400w, {{ image | img_url: '500x' }} 500w, {{ image | img_url: '600x' }} 600w, {{ image | img_url: '700x' }} 700w, {{ image | img_url: '800x' }} 800w, {{ image | img_url: '900x' }} 900w, {{ image | img_url: '1000x' }} 1000w, {{ image | img_url: '1100x' }} 1100w, {{ image | img_url: '1200x' }} 1200w, {{ image | img_url: '1300x' }} 1300w, {{ image | img_url: '1400x' }} 1400w, {{ image | img_url: '1500x' }} 1500w, {{ image | img_url: '1600x' }} 1600w, {{ image | img_url: '1700x' }} 1700w, {{ image | img_url: '1800x' }} 1800w, {{ image | img_url: '1900x' }} 1900w, {{ image | img_url: '2000x' }} 2000w, {{ image | img_url: '2048x' }} 2048w" data-widths="[180, 360, 540, 720, 900, 1080, 1296, 1512, 1728, 2048]" data-aspectratio="{{ image.aspect_ratio }}" data-sizes="auto" alt="{{ image.alt | escape }}" /> {% break %} {% endfor %}
KASE.com
https://kase.com
After working with a Cronulla agency, Jack from KASE.com required a higher level of programming expertise and was referred to me.
Other cool things on website: