{"version":3,"file":"jwsdw-jacketFinder.js","sources":["../../../../../../../temp/ngAnnotate/assets/jwsdw-jacketFinder.js"],"sourcesContent":["'use strict';\r\n\r\n(function ($, Swiper, Promise) {\r\n var $productSlider = $('#jwsdw-jacketFinder-productSlider'),\r\n $productSearchResult = $('#jwsdw-jacketFinder-searchResult'),\r\n $productDetail = $('#jwsdw-jacketFinder-productDetail'),\r\n $productSlideTemplate = $('#jwsdw-jacketFinder-productSlide-template'),\r\n $productSlidePlaceholderTemplate = $('#jwsdw-jacketFinder-placeholder-template'),\r\n $productDetailTemplate = $('#jwsdw-jacketFinder-productDetail-template'),\r\n $technologyLogoTemplate = $('#jwsdw-jacketFinder-technologyLogo-template'),\r\n $typeSelect = $('.jwsdw-jacketFinder-type'),\r\n $activitySelectWrapper = $('#jwsdw-jacketFinder-activitySelect'),\r\n $activitySelect = $('.jwsdw-jacketFinder-activity'),\r\n $functionSelectWrapper = $('#jwsdw-jacketFinder-functionSelect'),\r\n $functionSelect = $('.jwsdw-jacketFinder-function'),\r\n $attributeSelectWrapper = $('#jwsdw-jacketFinder-attributeSelect'),\r\n $attributeSelect = $('.jwsdw-jacketFinder-attribute'),\r\n $nextLinkActivity = $('.jwsdw-jacketFinder-nextLink-activity'),\r\n $nextLinkFunction = $('.jwsdw-jacketFinder-nextLink-function'),\r\n $nextLinkAttribute = $('.jwsdw-jacketFinder-nextLink-attribute'),\r\n $nextLinkResults = $('.jwsdw-jacketFinder-nextLink-results'),\r\n $searchResults = $('#jwsdw-jacketFinder-searchResult'),\r\n _cache = {},\r\n _selectedProduct,\r\n _compareWith,\r\n _disableAutoScroll = false,\r\n _productSearchHits = [],\r\n _offset = 0,\r\n sliders = {\r\n 'product': null,\r\n 'productDetail': {}\r\n },\r\n sliderOptions = {\r\n 'productSlider': {\r\n 'init': false,\r\n 'loop': false,\r\n 'freeMode': true,\r\n 'preloadImages': false,\r\n 'slidesPerView': 2,\r\n 'spaceBetween': 10,\r\n 'centerInsufficientSlides': true,\r\n // Responsive breakpoints\r\n 'breakpoints': {\r\n // when window width is >= 600px\r\n '600': {\r\n 'slidesPerView': 3,\r\n 'spaceBetween': 15\r\n },\r\n // when window width is >= 767px\r\n '767': {\r\n 'slidesPerView': 4,\r\n 'spaceBetween': 20\r\n },\r\n // when window width is >= 1200px\r\n '1200': {\r\n 'slidesPerView': 4,\r\n 'spaceBetween': 20\r\n }\r\n },\r\n 'navigation': {\r\n 'nextEl': '.swiper-button-next',\r\n 'prevEl': '.swiper-button-prev'\r\n }\r\n },\r\n 'productDetailSlider': {\r\n 'init': false,\r\n 'loop': true,\r\n 'freeMode': false,\r\n 'preloadImages': false,\r\n 'slidesPerView': 1,\r\n 'threshold': 10,\r\n 'slideThumbActiveClass': 'jwsdw-selected',\r\n 'autoScrollOffset': 1,\r\n 'navigation': {\r\n 'nextEl': '.swiper-button-next',\r\n 'prevEl': '.swiper-button-prev'\r\n }\r\n }\r\n },\r\n transforms = {\r\n 'slider': {\r\n 'scaleWidth': 360,\r\n 'format': 'jpg'\r\n },\r\n 'productDetail': {\r\n 'scaleWidth': 600,\r\n 'format': 'jpg'\r\n }\r\n },\r\n filterHitCountXhrs = [],\r\n xhrs = [];\r\n\r\n // check the category and select the appropriate one on load\r\n if (window.currentCategory) {\r\n if (window.currentCategory.split('-')[0] === \"Damen\") {\r\n $('.jwsdw-jacketFinder-type').eq(1).prop(\"checked\", true);\r\n }\r\n if (window.currentCategory.split('-')[0] === \"Herren\") {\r\n $('.jwsdw-jacketFinder-type').eq(0).prop(\"checked\", true);\r\n }\r\n }\r\n search(buildHTML, true);\r\n getFilterHitCount(deactivateEmptyRefinements, true, true, true);\r\n\r\n $('a[href^=\"#\"]').click(function(e) {\r\n var $element = $($(this).attr('href'));\r\n e.preventDefault();\r\n\r\n if ($element.length === 1) {\r\n scrollTop($element, -55);\r\n }\r\n });\r\n\r\n $('.jwsdw-productFinder-infoWrapper').click(function() {\r\n window.jwsdwMediator.publish('openPicker', 'infoPicker', {\r\n 'content': $(this).data('info')\r\n });\r\n });\r\n\r\n $nextLinkActivity.on('click', function() {\r\n if (!_disableAutoScroll) {\r\n setTimeout(function() {\r\n scrollTop($activitySelectWrapper, -55);\r\n }, 500);\r\n }\r\n });\r\n\r\n $nextLinkFunction.on('click', function() {\r\n if (!_disableAutoScroll) {\r\n setTimeout(function() {\r\n scrollTop($functionSelectWrapper, -55);\r\n }, 500);\r\n }\r\n });\r\n\r\n $nextLinkAttribute.on('click', function() {\r\n if (!_disableAutoScroll) {\r\n setTimeout(function() {\r\n scrollTop($attributeSelectWrapper, -55);\r\n }, 500);\r\n }\r\n });\r\n\r\n $nextLinkResults.on('click', function() {\r\n if (!_disableAutoScroll) {\r\n setTimeout(function() {\r\n scrollTop($searchResults, -55);\r\n }, 500);\r\n }\r\n });\r\n\r\n $typeSelect.on('click', function () {\r\n _disableAutoScroll = true;\r\n $functionSelect.prop('checked', false);\r\n $attributeSelect.prop('checked', false);\r\n $('#jwsdw-jacketFinder-activity-none').removeAttr('disabled').prop('checked', true);\r\n $('#jwsdw-jacketFinder-function-none').removeAttr('disabled').prop('checked', true);\r\n $('#jwsdw-jacketFinder-attribute-none').removeAttr('disabled').prop('checked', true);\r\n _disableAutoScroll = false;\r\n $('.jwsdw-jacketFinder-activity').attr('disabled', 'disabled');\r\n $('.jwsdw-jacketFinder-function').attr('disabled', 'disabled');\r\n $('.jwsdw-jacketFinder-attribute').attr('disabled', 'disabled');\r\n $('.jwsdw-jacketFinder-activity').next('.jwsdw-productFinder-refinementStep-tile').find('.jwsdw-spinner').removeClass('jws-hidden');\r\n $('.jwsdw-jacketFinder-function').next('.jwsdw-productFinder-refinementStep-tile').find('.jwsdw-spinner').removeClass('jws-hidden');\r\n $('.jwsdw-jacketFinder-attribute').next('.jwsdw-productFinder-refinementStep-tile').find('.jwsdw-spinner').removeClass('jws-hidden');\r\n\r\n search(buildHTML, true);\r\n getFilterHitCount(deactivateEmptyRefinements, true, true, true);\r\n window.dataLayer = window.dataLayer || [];\r\n window.dataLayer.push({\r\n 'event': 'ce.advice',\r\n 'eventCategory': 'Advice',\r\n 'eventAction': 'Jacket Finder',\r\n 'eventLabel': '1',\r\n 'eventValue': undefined,\r\n 'nonInteraction': false,\r\n 'selection': $('#jwsdw-jacketFinder-typeSelect input:checked').val()\r\n });\r\n });\r\n\r\n $activitySelect.on('click', function () {\r\n _disableAutoScroll = true;\r\n $functionSelect.prop('checked', false);\r\n $attributeSelect.prop('checked', false);\r\n $('#jwsdw-jacketFinder-function-none').removeAttr('disabled').prop('checked', true);\r\n $('#jwsdw-jacketFinder-attribute-none').removeAttr('disabled').prop('checked', true);\r\n _disableAutoScroll = false;\r\n $('.jwsdw-jacketFinder-function').attr('disabled', 'disabled');\r\n $('.jwsdw-jacketFinder-function').next('.jwsdw-productFinder-refinementStep-tile').find('.jwsdw-spinner').removeClass('jws-hidden');\r\n\r\n $('.jwsdw-jacketFinder-activity').each(function () {\r\n if ($(this).is(\":checked\")) {\r\n $(this).parent().removeClass('jwsdw-borderGrey5');\r\n } else {\r\n $(this).parent().addClass('jwsdw-borderGrey5');\r\n }\r\n });\r\n\r\n search(buildHTML, true);\r\n getFilterHitCount(deactivateEmptyRefinements, true, true, true);\r\n window.dataLayer = window.dataLayer || [];\r\n window.dataLayer.push({\r\n 'event': 'ce.advice',\r\n 'eventCategory': 'Advice',\r\n 'eventAction': 'Jacket Finder',\r\n 'eventLabel': '2',\r\n 'eventValue': undefined,\r\n 'nonInteraction': false,\r\n 'selection': $('#jwsdw-jacketFinder-activitySelect input:checked').val()\r\n });\r\n });\r\n\r\n $functionSelect.on('click', function () {\r\n $attributeSelect.prop('checked', false);\r\n $('#jwsdw-jacketFinder-attribute-none').removeAttr('disabled').prop('checked', true);\r\n if ($(this).val() === '') {\r\n $functionSelect.prop('checked', false);\r\n $(this).prop('checked', true);\r\n } else {\r\n $('#jwsdw-jacketFinder-function-none').removeAttr('disabled').prop('checked', false);\r\n }\r\n\r\n search(buildHTML, true);\r\n getFilterHitCount(deactivateEmptyRefinements, true, true, true);\r\n window.dataLayer = window.dataLayer || [];\r\n window.dataLayer.push({\r\n 'event': 'ce.advice',\r\n 'eventCategory': 'Advice',\r\n 'eventAction': 'Jacket Finder',\r\n 'eventLabel': '3',\r\n 'eventValue': undefined,\r\n 'nonInteraction': false,\r\n 'selection': $('#jwsdw-jacketFinder-functionSelect input:checked').val()\r\n });\r\n });\r\n\r\n $attributeSelect.on('click', function () {\r\n if ($(this).val() === '') {\r\n $attributeSelect.prop('checked', false);\r\n $(this).prop('checked', true);\r\n } else {\r\n $('#jwsdw-jacketFinder-attribute-none').removeAttr('disabled').prop('checked', false);\r\n }\r\n\r\n $('.jwsdw-jacketFinder-attribute').each(function () {\r\n if ($(this).is(\":checked\")) {\r\n $(this).parent().removeClass('jwsdw-borderGrey5');\r\n } else {\r\n $(this).parent().addClass('jwsdw-borderGrey5');\r\n }\r\n });\r\n\r\n search(buildHTML, true);\r\n getFilterHitCount(deactivateEmptyRefinements, true, true, true);\r\n window.dataLayer = window.dataLayer || [];\r\n window.dataLayer.push({\r\n 'event': 'ce.advice',\r\n 'eventCategory': 'Advice',\r\n 'eventAction': 'Jacket Finder',\r\n 'eventLabel': 'finished',\r\n 'eventValue': undefined,\r\n 'nonInteraction': false,\r\n 'selection': $('#jwsdw-jacketFinder-attributeSelect input:checked').val()\r\n });\r\n });\r\n\r\n $(document).on('click', '.jwsdw-product-tiles-grid-wrapper .jwsdw-productTile .jwsdw-product-variation', function(e) {\r\n e.preventDefault();\r\n _selectedProduct = $(this).attr('data-product-id');\r\n\r\n $('.jwsdw-product-tiles-grid-wrapper .jwsdw-productTile .jwsdw-product-variation').removeClass('jwsdw-selected');\r\n $(this).addClass('jwsdw-selected');\r\n\r\n $productDetail.find('.jwsdw-jacketFinder-productDetail-product').each(function(i, el) {\r\n $(el).removeClass('jws-visuallyHidden');\r\n buildProductDetail(_productSearchHits, _selectedProduct);\r\n });\r\n });\r\n\r\n $(document).on('click', '#jwsdw-jacketFinder-productSlider .jwsdw-jacketFinder-productSlide', function() {\r\n _selectedProduct = $(this).attr('data-product-id');\r\n\r\n $('#jwsdw-jacketFinder-productSlider .jwsdw-jacketFinder-productSlide').removeClass('jwsdw-selected');\r\n $(this).addClass('jwsdw-selected');\r\n\r\n buildProductDetail(_productSearchHits, _selectedProduct);\r\n $productDetail.find('.jwsdw-jacketFinder-productDetail-product').each(function(i, el) {\r\n $(el).removeClass('jws-visuallyHidden');\r\n });\r\n });\r\n\r\n $(document).on('click', '#jwsdw-jacketFinder-productSlider-prev', function() {\r\n $productSlider.find('.swiper-button-prev').click();\r\n });\r\n $(document).on('click', '#jwsdw-jacketFinder-productSlider-next', function() {\r\n $productSlider.find('.swiper-button-next').click();\r\n });\r\n\r\n\r\n $(document).on('click', '.jwsdw-jacketFinder-shopNow', function () {\r\n window.jwsdwMediator.publish('openPicker', 'productDetailPicker', {\r\n 'productId': $(this).data('product-id'),\r\n 'showRefinements': false\r\n });\r\n });\r\n\r\n $(document).on('click', '.jwsdw-jacketFinder-compare', function () {\r\n let $comparePickerContent = $('#jwsdw-jacketFinder-comparePicker-template').clone(),\r\n cgids = [],\r\n allResults;\r\n\r\n window.jwsdwMediator.publish('openPicker', 'infoPicker', {\r\n 'content': '
'\r\n });\r\n\r\n if ($('.jwsdw-jacketFinder-type:checked').val()) {\r\n cgids = [\r\n buildCategoryId(\r\n $('.jwsdw-jacketFinder-type:checked').val()\r\n )\r\n ];\r\n } else {\r\n cgids = [\r\n buildCategoryId(\r\n $('.jwsdw-jacketFinder-type').eq(0).val()\r\n ),\r\n buildCategoryId(\r\n $('.jwsdw-jacketFinder-type').eq(1).val()\r\n )\r\n ];\r\n }\r\n\r\n allResults = cgids\r\n .map(function (cgid) {\r\n let data = cgid,\r\n offsets,\r\n result,\r\n tempArr;\r\n\r\n if ($('.jwsdw-jacketFinder-activity:checked').val()) {\r\n data += '-' + $('.jwsdw-jacketFinder-activity:checked').val();\r\n }\r\n\r\n if ($('.jwsdw-jacketFinder-function:checked').val()) {\r\n tempArr = $('.jwsdw-jacketFinder-function:checked').map(function(){return $(this).val()}).get(); //eslint-disable-line\r\n for (let i = 0; i < tempArr.length; i++) {\r\n data += '-' + tempArr[i];\r\n }\r\n }\r\n\r\n if ($('.jwsdw-jacketFinder-attribute:checked').val()) {\r\n tempArr = $('.jwsdw-jacketFinder-attribute:checked').map(function(){return $(this).val()}).get(); //eslint-disable-line\r\n for (let i = 0; i < tempArr.length; i++) {\r\n data += '-' + tempArr[i];\r\n }\r\n }\r\n\r\n offsets = Array.from({ 'length': Math.floor(_offset / 10) }, (_, i) => i * 10);\r\n\r\n offsets.forEach((start) => {\r\n let currentSearch = data + (start ? '-' + start : ''),\r\n cachedSearch = _cache[currentSearch];\r\n\r\n if (cachedSearch) {\r\n if (!result) {\r\n result = Object.assign({}, cachedSearch);\r\n } else {\r\n result.productSearchHits = result.productSearchHits.concat(cachedSearch.productSearchHits);\r\n }\r\n }\r\n });\r\n\r\n return result;\r\n })\r\n .filter(Boolean);\r\n\r\n let productSearchHits;\r\n\r\n productSearchHits = allResults.reduce(function (arr, result) {\r\n if (!result.categoryId) {\r\n return arr;\r\n }\r\n return arr.concat(result.productSearchHits);\r\n }, []);\r\n\r\n productSearchHits\r\n .filter(function(product) {\r\n return product.ID !== _selectedProduct &&\r\n product.pricing.standard;\r\n })\r\n .forEach(function (product) {\r\n var $productTile = $productSlideTemplate.clone();\r\n $productTile.removeClass('jws-hidden').removeAttr('id');\r\n\r\n $productTile\r\n .attr('data-product-id', product.ID)\r\n .addClass('jws-grid-small-column-6');\r\n $productTile\r\n .find('.jwsdw-productTile-image')\r\n .attr(\r\n 'data-src',\r\n window.jwsdwUtil.urlUtils.imageUrl(product.ID, 0, transforms.slider, 'Bone5')\r\n )\r\n .attr(\r\n 'alt',\r\n product.displayedName || product.name\r\n );\r\n $productTile.find('.jwsdw-productName').text(product.displayedName || product.name);\r\n if (product.pricing.sale && product.pricing.sale < product.pricing.standard) {\r\n // has sale price\r\n $productTile.find('.jwsdw-productListPrice')\r\n .addClass('jwsdw-lineThrough jws-copy1 jws-colorGrey3')\r\n .text(window.jwsdwUtil.formatPrice(product.pricing.standard));\r\n $productTile.find('.jwsdw-productSalePrice')\r\n .removeClass('jws-hidden')\r\n .text(window.jwsdwUtil.formatPrice(product.pricing.sale));\r\n } else {\r\n $productTile.find('.jwsdw-productListPrice').text(window.jwsdwUtil.formatPrice(product.pricing.standard));\r\n }\r\n $comparePickerContent.find('.jwsdw-jacketFinder-comparePicker-products').append($productTile);\r\n });\r\n\r\n setTimeout(function() {\r\n $('.jwsdw-jacketFinder-compare-container').html($comparePickerContent.html());\r\n $('.jwsdw-jacketFinder-compare-container').scrollTop(0);\r\n }, 150);\r\n });\r\n\r\n $(document).on('click', '.jwsdw-jacketFinder-comparePicker-products .jwsdw-jacketFinder-productSlide', function() {\r\n _compareWith = $(this).attr('data-product-id');\r\n\r\n $('.jwsdw-jacketFinder-comparePicker-products .jwsdw-jacketFinder-productSlide').removeClass('jwsdw-selected');\r\n $(this).addClass('jwsdw-selected');\r\n\r\n $('.jwsdw-jacketFinder-comparePicker-compare:visible').addClass('jws-buttonYellow');\r\n $('.jwsdw-jacketFinder-comparePicker-compare:visible').removeClass('jws-buttonGrey5');\r\n $('.jwsdw-jacketFinder-comparePicker-compare:visible').removeAttr('disabled');\r\n $('.jwsdw-jacketFinder-comparePicker-compare:visible').find('span').eq(0).addClass('jws-hidden');\r\n $('.jwsdw-jacketFinder-comparePicker-compare:visible').find('span').eq(1).removeClass('jws-hidden');\r\n });\r\n\r\n $(document).on('click', '.jwsdw-jacketFinder-comparePicker-compare', function() {\r\n _productSearchHits.filter(function(product) {\r\n return product.ID === _compareWith && product.pricing.standard;\r\n }).map(function (product) {\r\n var $productDetailProduct = $productDetailTemplate.clone();\r\n\r\n $productDetailProduct.find('.jwsdw-jacketFinder-productImage').attr(\r\n 'src',\r\n window.jwsdwUtil.urlUtils.imageUrl(product.ID, 0, transforms.productDetail, 'Bone5')\r\n );\r\n\r\n $productDetailProduct.attr('data-product-id', product.ID);\r\n $productDetailProduct.attr('id', 'jwsdw-jacketFinder-productDetail-product-' + product.ID);\r\n\r\n $productDetailProduct.find('.jwsdw-productName').text(product.displayedName || product.name);\r\n $productDetailProduct.find('.jwsdw-productPrice').text(product.pricing.priceFormatted);\r\n $productDetailProduct.find('.jwsdw-jacketFinder-shopNow, .jwsdw-jacketFinder-compare, .jwsdw-jacketFinder-compare-remove').attr('data-product-id', product.ID);\r\n\r\n product.info.forEach(function (info) {\r\n $productDetailProduct.find('.jwsdw-pdp-detailList').append(\r\n $('