Cart (0)
Cart (0)
  • HOME
  • STORY
    • About The Brand
    • Manifesto
    • About The Product
    • Crasqi Sisters
    • About the Collection
    • Videos
  • SHOP
    • MEN
    • ACCESSORIES
  • LOOKBOOK
  • CRASQICREW
  • FIND US
  • Facebook
  • Instagram

Bulk Order

Share
  • Facebook
  • Twitter
  • GooglePlus
  • Email
Add Line Item
Total:  |  [cart]['item_count'] [CDATA][
 -  [lineItem.searchResult]['sku'] ['price']"> Unit price: [lineItem.searchResult]['price'] | shopifyMoneyFormat[numVariants()][1000 + 2 * index + 1][CDATA][', '').replace('// ]; $scope.cart = null; $scope.hasChanges = false; $http.get('/cart.js').success(function(response) { $scope.cart = response; }); $scope.addLineItem = function(opt_initial) { $scope.lineItems.push({ searchResult: null, expanded: false, quantity: null }); if (!opt_initial) { $scope.hasChanges = true; } }; // Initialize the first empty line item in a timeout. // Certain themes look for number inputs at page load time // and replace them with custom widgets. $timeout(function() { $scope.addLineItem(true); }); $scope.updateCart = function() { $http.post('/cart/update.js', { 'updates': _.reduce($scope.lineItems, function(obj, lineItem) { if (lineItem.searchResult && _.isNumber(lineItem.quantity)) { obj[lineItem.searchResult]['variant_id']; $scope.hasChanges = false; }); }; $scope.$on('quantity-changed', function() { $scope.hasChanges = true; }); $scope.$on('delete-line-item', function(event, lineItem) { var idx = $scope.lineItems.indexOf(lineItem); if (idx != -1) { $scope.lineItems.splice(idx, 1); } }); $scope.$on('expand-all-variants', function(event, lineItem) { var idx = $scope.lineItems.indexOf(lineItem); if (idx != -1) { var args = [idx, 1]; angular.forEach(lineItem.searchResult['product']['variants'], function(variant) { var imageUrl = ''; if (variant['featured_image']['featured_image']['src']) { imageUrl = variant['featured_image']['src'] } else if (lineItem.searchResult['product']['featured_image']) { imageUrl = lineItem.searchResult['product']['featured_image']; } args.push({ quantity: lineItem.searchResult['variant_id'] == variant['id'] ? lineItem.quantity : null, expanded: true, searchResult: { 'product_title': lineItem.searchResult['product_title'], 'variant_title': variant['title'], 'variant_id': variant['id'], 'sku': variant['sku'], 'price': variant['price'], 'url': variant['url'], 'product': lineItem.searchResult['product'], 'thumbnail_url': shopifyImageUrl(imageUrl, 'thumb') } }); }); Array.prototype.splice.apply($scope.lineItems, args); } }); } function boLineItem() { return { scope: { lineItem: '=', index: '=', allLineItems: '=' }, templateUrl: 'line-item-template', controller: function($scope) { $scope.showLineItemAlreadyExistsMsg = false; $scope.selectResult = function(result) { $scope.showLineItemAlreadyExistsMsg = false; if ($scope.variantLineItemAlreadyExists(result.originalObject['variant_id']['variant_id'] == variantId) { exists = true; } }); return exists; }; $scope.quantityChanged = function() { $scope.$emit('quantity-changed'); }; $scope.deleteLineItem = function() { if (_.isNumber($scope.lineItem.quantity)) { $scope.lineItem.quantity = 0; $scope.quantityChanged(); } else { $scope.$emit('delete-line-item', $scope.lineItem); } }; $scope.numVariants = function() { return $scope.lineItem.searchResult['product']['variants'].length; }; $scope.expandAllVariants = function() { $scope.$emit('expand-all-variants', $scope.lineItem); }; } }; } function boConfigureAngucomplete($timeout) { return { restrict: 'A', link: function(scope, element, attrs) { var input = element.find('input'); input.attr('tabindex', attrs.boTabindex); $timeout(function() { input.focus(); }); } }; } function shopifyImageUrl(url, imageType) { if (url.indexOf('_' + imageType + '.') != -1) { return url; } var dotIdx = url.lastIndexOf('.'); return [url.slice(0, dotIdx), '_', imageType, url.slice(dotIdx, url.length)].join(''); } function shopifyMoneyFormat($shopifyMoneyFormatString, $sce) { return function(cents) { return $sce.trustAsHtml(Shopify.formatMoney(cents, $shopifyMoneyFormatString)); }; } function interpolator($interpolateProvider) { $interpolateProvider.startSymbol('['); $interpolateProvider.endSymbol(']['Shopify']['Shopify'] = {}; } if (!Shopify.formatMoney) { Shopify.formatMoney = function(cents, format) { if (typeof cents == 'string') cents = cents.replace('.',''); var value = ''; var patt = /\{\{\s*(\w+)\s*\}\}/; var formatString = (format || this.money_format); function addCommas(moneyString) { return moneyString.replace(/(\d+)(\d{3}[\.,]?)/,'$1,$2'); } switch(formatString.match(patt)[1]) { case 'amount': value = addCommas(floatToString(cents/100.0, 2)); break; case 'amount_no_decimals': value = addCommas(floatToString(cents/100.0, 0)); break; case 'amount_with_comma_separator': value = floatToString(cents/100.0, 2).replace(/\./, ','); break; case 'amount_no_decimals_with_comma_separator': value = addCommas(floatToString(cents/100.0, 0)).replace(/\./, ','); break; } return formatString.replace(patt, value); }; if (!window['floatToString']['floatToString'] = function(numeric, decimals) { var amount = numeric.toFixed(decimals).toString(); if(amount.match(/^\.\d+/)) {return "0"+amount; } else { return amount; } } } } } polyfillShopifyBuiltins(); angular.module('bulkOrderAppModule', ['angucomplete-alt'], interpolator) .controller('BulkOrderRootCtrl', BulkOrderRootCtrl) .directive('boLineItem', boLineItem) .directive('boConfigureAngucomplete', boConfigureAngucomplete) .filter('shopifyMoneyFormat', shopifyMoneyFormat) .value('$shopifyMoneyFormatString', BO_MONEY_FORMAT); })();
  • Contact us
  • Return Policy
  • Shipping Policy
  • Terms of use and Privacy Policy
  • Facebook
  • Instagram
© 2018 Crasqi.