Advertisement
Guest User

Untitled

a guest
Feb 11th, 2016
59
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
text 2.85 KB | None | 0 0
  1. <script>
  2. bundles = [];
  3. {% for variant in product.variants %}{% if variant.metafields.sva.bundled %}
  4. bundles['{{ variant.id }}'] = jQuery.parseJSON('{{ variant.metafields.sva.bundled }}');
  5. {% endif %}{% endfor %}
  6.  
  7. var process = function (target, results) {
  8. var deferred = $.Deferred();
  9.  
  10. $.ajax({
  11. dataType: "json",
  12. url: "/products/" + target.handle + ".js"
  13. }).done(function (product, textStatus, jqXHR) {
  14. var multiplier = target.multiplier || 1,
  15. variants = jQuery.grep(product.variants, function (variant) { // find matching variants
  16. return jQuery.inArray(variant.id, target.variants) > -1
  17. });
  18.  
  19. jQuery.each(variants, function (i, variant) {
  20. results.push({
  21. variant: variant.id,
  22. available: (variant.inventory_quantity >= multiplier),
  23. quantity: variant.inventory_quantity,
  24. multiplier: target.multiplier
  25. })
  26. });
  27. }).fail(function (jqXHR, textStatus, errorThrown) {
  28. if (jqXHR.status == 404) {
  29. for (var i = 0; i < target.variants.length; i++) {
  30. results.push({
  31. variant: target.variants[i],
  32. available: 0,
  33. quantity: 0,
  34. multiplier: target.multiplier
  35. })
  36. }
  37. } else {
  38. console.log([jqXHR, textStatus, errorThrown]);
  39. }
  40. }).always(function () {
  41. deferred.resolve();
  42. });
  43.  
  44. return deferred.promise();
  45. }
  46.  
  47. var bundled = function (variant, callback) {
  48. var id = variant.id,
  49. targets = bundles[id],
  50. quantity = (variant.inventory_management == 'shopify' && variant.inventory_quantity) || 100;
  51.  
  52. if (targets) {
  53. var processes = [], results = [], i;
  54.  
  55. jQuery.each(targets, function (n, target) {
  56. processes.push(process(target, results));
  57. })
  58.  
  59. $.when.apply($, processes).done(function () {
  60. var available = true;
  61. for (i = 0; i < results.length; i++) {
  62. if (results[i].available == false) {
  63. available = false;
  64. quantity = 0;
  65. break;
  66. } else {
  67. if (quantity > results[i].quantity) {
  68. quantity = results[i].quantity;
  69. }
  70. }
  71. }
  72. callback({available: available, quantity: quantity});
  73. });
  74.  
  75. return true;
  76. } else {
  77. callback({available: true, quantity: quantity});
  78. return false;
  79. }
  80. }
  81. </script>
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement