{"version":3,"file":"view_booklist.bundle.js","mappings":"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","sources":["webpack:///./Web.Base/Content/Source/Js/controllers/booklist.js","webpack:///./Web.Base/Content/Source/Js/misc/bootstrap-mvcform.js","webpack:///./Web.Base/Content/Source/Js/misc/membership.js","webpack:///./Web.Base/Content/Source/Js/misc/helpers.js","webpack:///./Web.Base/Content/Source/Js/controllers/page/booklist.js","webpack:///./Web.Base/Content/Source/Js/views/_booklist.js"],"sourcesContent":["require('underscore');\r\nimport Membership from \"../misc/membership\";\r\n\r\nexport default class BookListPage {\r\n constructor(studentDiscountUrl, linkCartUrl, language, membershipIsVisible, urlRouteMembershipChange, membershipFee) {\r\n if (typeof studentDiscountUrl === 'undefined' ||\r\n typeof linkCartUrl === 'undefined' ||\r\n typeof language === 'undefined' ||\r\n typeof membershipIsVisible === 'undefined' ||\r\n typeof urlRouteMembershipChange === 'undefined' ||\r\n typeof membershipFee === 'membershipFee'\r\n ) {\r\n console.warn('WARNING! Parameters missing - Could not initialize BooklistPage.'); // eslint-disable-line no-console\r\n return;\r\n }\r\n\r\n // more less toggling\r\n this.more = $('#school-description span.more');\r\n this.toggleMoreBtns = $('a.toggleMore');\r\n\r\n this.moreBtn = $('a.more');\r\n this.lessBtn = $('a.less');\r\n this.lessBtn.css('display', 'none'); // default\r\n this.more.css('display', 'none');\r\n\r\n this.toggleMoreBtns.bind('click', () => {\r\n this.toggleMore();\r\n });\r\n\r\n this.form = $('#booklist-form'); \r\n\r\n this.clickableItemRows = $('.itemlist__row--clickable');\r\n\r\n if (this.clickableItemRows.length > 0) {\r\n for (var i = 0; i <= this.clickableItemRows.length; i++) {\r\n const purchaseTypes = $(this.clickableItemRows[i]).find('.booklist__purchasetypes');\r\n if (purchaseTypes.length > 1) {\r\n purchaseTypes.bind('click', (event) => {\r\n event.stopPropagation();\r\n if (event.target.tagName.toLowerCase() == 'span' && $(event.target).hasClass('info-button')) {\r\n return;\r\n }\r\n var input = $(event.currentTarget).find('input.product-checkbox');\r\n var otherInputs = purchaseTypes.find('input.product-checkbox:checked')\r\n if (!input.prop('checked') && !input.prop('disabled')) {\r\n input.prop('checked', true).change();\r\n otherInputs.prop('checked', false).change();\r\n } else if (input.prop('checked')) {\r\n if (input.data('uncheckable') === undefined && !input.prop('disabled')) {\r\n input.prop('checked', false).change();\r\n }\r\n }\r\n })\r\n }\r\n }\r\n\r\n this.clickableItemRows.bind('click', (event) => {\r\n if (event.target.tagName.toLowerCase() == 'select' ||\r\n event.target.tagName.toLowerCase() == 'a' ||\r\n (event.target.tagName.toLowerCase() == 'span' && $(event.target).hasClass('info-button'))) {\r\n return;\r\n }\r\n\r\n var input = $(event.currentTarget).find('input.product-checkbox');\r\n var atLeastOneChecked = $(event.currentTarget).find('input.product-checkbox:checked')\r\n\r\n const inputArray = $.makeArray(input);\r\n var index = 0;\r\n\r\n let secondhandToggle = this.preferSecondHandToggle.is(':checked');\r\n if (secondhandToggle && inputArray.findIndex(element => $(element).data('sf') === 'CheckBoxSecondHand') >= 0) {\r\n index = inputArray.findIndex(element => $(element).data('sf') === 'CheckBoxSecondHand')\r\n }\r\n\r\n if (!input.prop('checked') && atLeastOneChecked.length == 0 && !$(input[index]).prop('disabled')) {\r\n $(input[index]).prop('checked', true).change();\r\n } else if (input.prop('checked') || atLeastOneChecked.length > 0) {\r\n if (input.data('uncheckable') === undefined && !input.prop('disabled')) {\r\n input.prop('checked', false).change();\r\n }\r\n }\r\n })\r\n\r\n this.clickableItemRows.find('select').bind('click', (event) => { event.stopPropagation() })\r\n }\r\n\r\n //membership discount\r\n this.urlRouteMembershipChange = urlRouteMembershipChange;\r\n this.membershipFee = membershipFee;\r\n this.membershipIsVisible = membershipIsVisible;\r\n this.membershipTypeIsJoin = false;\r\n\r\n // student discount\r\n this.studentDiscountUrl = studentDiscountUrl;\r\n this.linkCartUrl = linkCartUrl;\r\n this.language = language;\r\n\r\n this.studentDeclaration = $('[name=\\'IsStudentDiscountSelected\\']');\r\n this.studentDiscount = this.studentDeclaration.first().prop('checked');\r\n\r\n this.priceElements = $('.product-list__price.product-list__price_from-to.dutch');\r\n this.studentDeclaration.on('change', (event) => {\r\n this.toggleStudentDiscount($(event.target));\r\n });\r\n\r\n this.checkAllCheckbox = $('#check-all');\r\n this.checkAllCheckbox.bind('change', event => {\r\n this.checkAll($(event.target));\r\n });\r\n\r\n this.preferSecondHandToggle = $('#PreferSecondHand');\r\n this.preferSecondHandToggleBottom = $('#PreferSecondHandBottom');\r\n\r\n this.preferSecondHandToggle.bind('change', (event) => {\r\n // Set neccesary checkboxes\r\n this.preferSecondHand(event.target.checked);\r\n\r\n // Sync the top toggle with the bottom one\r\n this.preferSecondHandToggleBottom.prop('checked', event.target.checked);\r\n });\r\n\r\n this.preferSecondHandToggleBottom.click(event => {\r\n // Sync the bottom toggle with the top one,\r\n this.preferSecondHandToggle.prop('checked', event.target.checked).change();\r\n })\r\n\r\n // course checking\r\n this.courseCheckboxes = $('.check-course');\r\n this.courseCheckboxes.bind('change', event => {\r\n this.checkByGroup($(event.target));\r\n });\r\n\r\n this.totalItemsList = $('.list-items').length;\r\n $('#total-items').html(this.totalItemsList);\r\n\r\n // sidebar with info on the amount of selected stuff\r\n this.amountNew = 0;\r\n this.amountRequired = 0;\r\n\r\n this.selectedRequiredItems = $('#selected-required-items');\r\n\r\n // discount and cart calculations (product checkbox: data-ean, data-dutch, data-price)\r\n this.dutchBooks = 0; // dutch books amount\r\n\r\n const separators = this.getDecimalSeparators();\r\n\r\n this.subtotalBooklistContainer = $('#amount-subtotal'); // booklist subtotal without discount\r\n var booklistTotalText = this.subtotalBooklistContainer.first().text();\r\n if (!BookListPage.isNumber(booklistTotalText)) {\r\n this.booklistTotal = parseFloat(booklistTotalText.replace(separators.ToReplace, separators.ReplaceWith));\r\n } else {\r\n this.booklistTotal = parseFloat(booklistTotalText);\r\n }\r\n\r\n this.booklistDiscount = $('#booklist-discount'); // discount on booklist subtotal \r\n var booklistDiscountText = this.booklistDiscount.first().text();\r\n if (!BookListPage.isNumber(booklistDiscountText)) {\r\n this.booklistDiscount = parseFloat(booklistDiscountText.replace(separators.ToReplace, separators.ReplaceWith));\r\n } else {\r\n this.booklistDiscount = parseFloat(booklistDiscountText);\r\n }\r\n\r\n this.shippingCostsContainer = $('#shippingCosts'); // shippingCosts\r\n var shippingCostsText = this.shippingCostsContainer.first().text();\r\n if (!BookListPage.isNumber(shippingCostsText)) {\r\n this.shippingCosts = parseFloat(shippingCostsText.replace(separators.ToReplace, separators.ReplaceWith));\r\n if (isNaN(this.shippingCosts)) {\r\n this.shippingCosts = 0.0;\r\n }\r\n } else {\r\n this.shippingCosts = parseFloat(shippingCostsText);\r\n }\r\n\r\n this.totalExclVAT = 0;\r\n this.totalExclVATContainer = $('.price-total-excl-vat');\r\n this.totalLowVAT = 0;\r\n this.totalLowVATContainer = $('.total-low-vat');\r\n this.totalHighVAT = 0;\r\n this.totalHighVATContainer = $('.total-high-vat');\r\n this.totalContainer = $('.floating-cart__body .amount-wrapper');\r\n this.discount = 0;\r\n this.discountContainer = $('#discount-total .total-discount');\r\n this.amountBooklist = 0;\r\n this.quantityContainer = $('#selected-items');\r\n\r\n this.addedToPrice = [];\r\n\r\n this.products = $('.product-checkbox');\r\n\r\n this.products.bind('change', () => {\r\n this.calculateDiscounts();\r\n });\r\n\r\n this.calculateDiscounts();\r\n\r\n // booklist item specific\r\n this.itemMoreToggleBtns = $('.item-more-toggle');\r\n this.itemMoreToggleBtns.bind('click', event => {\r\n const id = $(event.target).data('item-id');\r\n const show = $(event.target).data('item-show');\r\n if (show) {\r\n $(`.item-more-toggle.item-more.${id}`).hide();\r\n $(`.collapse.${id}`).show();\r\n } else {\r\n $(`.item-more-toggle.item-more.${id}`).show();\r\n $(`.collapse.${id}`).hide();\r\n }\r\n return false;\r\n });\r\n\r\n // check for duplicate items on the list\r\n this.checkDuplicatePresence();\r\n\r\n this.products.change(event => {\r\n BookListPage.showIsNecessaryMessage($(event.target)[0], $(event.target).data('unique'));\r\n });\r\n\r\n if (typeof this.membershipIsVisible !== 'undefined' && this.membershipIsVisible === true) {\r\n //Init Membership object\r\n const membership = new Membership(this.membershipIsVisible, this.studentDiscount, this.urlRouteMembershipChange, this.linkCartUrl);\r\n\r\n const membershipRadios = $(\"input[dataMembership]\");\r\n membershipRadios.change(event => {\r\n membershipRadios.filter(`[dataMembership='${$(event.target).attr(\"dataMembership\")}']`).prop(\"checked\", true);\r\n this.membershipDiscountChange(membership, $(event.target).attr(\"dataMembership\"))\r\n });\r\n\r\n this.membershipDiscountChange(membership, $(this.initMembership(membershipRadios)).attr(\"dataMembership\"));\r\n }\r\n }\r\n\r\n initDiscount() {\r\n let el = null;\r\n $.each(this.studentDeclaration, function (key, value) {\r\n if ($(value).prop('checked')) {\r\n el = value;\r\n }\r\n });\r\n\r\n return el;\r\n }\r\n\r\n initMembership(membershipRadios) {\r\n let el = null;\r\n\r\n $.each(membershipRadios, function (key, value) {\r\n if ($(value).prop('checked')) {\r\n el = value;\r\n }\r\n });\r\n\r\n return el;\r\n }\r\n\r\n setDiscountVisualElements(discountIsActive) {\r\n if (this.membershipIsVisible) {\r\n const membership = new Membership(this.membershipIsVisible, discountIsActive, this.urlRouteMembershipChange, this.linkCartUrl);\r\n this.priceElements = membership.overridePriceElements();\r\n }\r\n\r\n if (discountIsActive) {\r\n this.priceElements.removeClass('price-override');\r\n } else {\r\n this.priceElements.addClass('price-override');\r\n }\r\n }\r\n\r\n membershipDiscountChange(membership, membershipType) {\r\n if (typeof membershipType !== 'undefined' && membershipType !== null) {\r\n $('#studentMembershipValidation').css('display', 'none');\r\n this.studentDiscount = membership.submitMembershipChange(membershipType);\r\n if (membership.membershipTypeIsJoin(membershipType)) {\r\n $('#membershipDiscount').show();\r\n this.membershipTypeIsJoin = true;\r\n } else {\r\n $('#membershipDiscount').hide();\r\n this.membershipTypeIsJoin = false;\r\n }\r\n\r\n this.setDiscountVisualElements(this.studentDiscount);\r\n this.calculateDiscounts();\r\n } else {\r\n $('#membershipDiscount').hide();\r\n this.membershipTypeIsJoin = false;\r\n }\r\n }\r\n\r\n checkDuplicatePresence() {\r\n $.each(this.products, (index, value) => {\r\n const el = $(value);\r\n const ean = el.data('ean');\r\n if (typeof ean === 'number') {\r\n if ($(`.item-presence.${ean}`).length > 1) {\r\n $(`.item-presence.${ean}`).show();\r\n }\r\n }\r\n });\r\n }\r\n\r\n getProductsByEan(ean) {\r\n const eanProducts = {\r\n elements: [],\r\n hasChecked: false\r\n };\r\n $.each(this.products, (index, value) => {\r\n const el = $(value);\r\n const productEan = el.data('ean');\r\n if (ean !== undefined && productEan === ean) {\r\n eanProducts.elements.push(el);\r\n if (el.prop('checked')) {\r\n eanProducts.hasChecked = true;\r\n }\r\n }\r\n });\r\n return eanProducts;\r\n } \r\n\r\n checkByGroup(element) {\r\n const checked = element.prop('checked');\r\n const groupId = element.data('group-id');\r\n\r\n /* eslint-disable consistent-return */\r\n $.each($(`[data-group-id=${groupId}]`), (index, value) => {\r\n const input = $(value);\r\n if (checked) {\r\n // User has to explicitly check e-books, so do not check it when clicking select all.\r\n if (input.attr('data-ebook') && input.data('ebook') === 'True') {\r\n return true;\r\n }\r\n\r\n // for financial products the ean is the same so don't add them to seen, just check them\r\n if (input.data('isfinancialservice') === 'True') {\r\n if (!input.prop('checked') && !input.prop('disabled')) {\r\n input.prop('checked', true);\r\n }\r\n\r\n BookListPage.showIsNecessaryMessage(input[0], $(input).data('unique'));\r\n } else {\r\n this.checkItem(input);\r\n }\r\n } else if (input.prop('checked')) {\r\n // Lumpsum && required article: may not be unchecked\r\n if (input.data('uncheckable') === undefined && !input.prop('disabled')) {\r\n input.prop('checked', false).change();\r\n }\r\n }\r\n });\r\n /* eslint-enable consistent-return */\r\n this.calculateDiscounts();\r\n }\r\n\r\n checkItem(input) {\r\n const ean = input.data('ean');\r\n const eanProducts = this.getProductsByEan(ean);\r\n if (eanProducts.elements.length > 1 && !$(eanProducts.elements[0]).prop('disabled')) {\r\n var index;\r\n\r\n let secondhandToggle = this.preferSecondHandToggle.is(':checked');\r\n if (secondhandToggle) {\r\n index = eanProducts.elements.findIndex(element => $(element).data('sf') === 'CheckBoxSecondHand')\r\n } else {\r\n index = eanProducts.elements.findIndex(element => $(element).data('sf') === 'CheckBoxNew')\r\n }\r\n\r\n $(eanProducts.elements[index]).prop('checked', true);\r\n\r\n if ($(eanProducts.elements[index]).hasClass('product-checkbox')) {\r\n $(eanProducts.elements[index]).change();\r\n }\r\n\r\n BookListPage.showIsNecessaryMessage(eanProducts.elements[index][0], eanProducts.elements[index].data('unique'));\r\n } else if (!input.prop('disabled')) {\r\n input.prop('checked', true);\r\n\r\n if (input.hasClass('product-checkbox')) {\r\n input.change();\r\n }\r\n }\r\n }\r\n\r\n renderRibbon(element) {\r\n $(element).append('
' + Resources.Booklist.Selected + '
');\r\n }\r\n\r\n reset() {\r\n $.each(this.products, (index, value) => {\r\n if ($(value).prop('checked')) {\r\n $(value).prop('checked', false);\r\n }\r\n });\r\n }\r\n\r\n checkAll(element) {\r\n // triggering change on .check-course calls the .check-course change handler.\r\n $('.check-course')\r\n .prop('checked', element.prop('checked'))\r\n .trigger('change');\r\n\r\n this.calculateDiscounts();\r\n }\r\n\r\n AddToBooklistTotal(price, priceExclVAT, ean) {\r\n if (!_.includes(this.addedToPrice)) {\r\n if (priceExclVAT > 0) {\r\n const vatPercentage = (price / priceExclVAT - 1) * 100;\r\n if (vatPercentage > 5 && vatPercentage < 7) {\r\n this.totalLowVAT = this.totalLowVAT + (price - priceExclVAT);\r\n } else {\r\n this.totalHighVAT = this.totalHighVAT + (price - priceExclVAT);\r\n }\r\n }\r\n this.totalExclVAT = this.totalExclVAT + priceExclVAT;\r\n this.booklistTotal = this.booklistTotal + price;\r\n this.addedToPrice.push(ean);\r\n }\r\n }\r\n\r\n calculateDiscounts() {\r\n // first count the dutchbooks\r\n this.dutchBooks = $('.product-checkbox[data-purchasetype=\"0\"][data-dutch=\"True\"]:checked').length;\r\n\r\n if (this.dutchBooks > 1) {\r\n this.form.addClass('double-dutch');\r\n } else {\r\n this.form.removeClass('double-dutch');\r\n }\r\n\r\n this.totalLowVAT = 0;\r\n this.totalHighVAT = 0;\r\n this.totalExclVAT = 0;\r\n\r\n this.booklistTotal = 0;\r\n\r\n this.amountBooklist = 0;\r\n this.discount = 0;\r\n\r\n this.addedToPrice = [];\r\n\r\n const separators = this.getDecimalSeparators();\r\n\r\n $.each(this.products, (index, value) => {\r\n const el = $(value);\r\n const productEan = el.data('ean');\r\n const productLumpsum = el.data('lumpsum') === 'True';\r\n\r\n if (el.attr('data-purchasetype') && el.data('purchasetype') === 0) {\r\n // new?\r\n if (el.prop('checked')) {\r\n // and checked?\r\n this.amountBooklist += 1;\r\n\r\n const listdiscountalreadyapplied = el.data('haslistdiscountapplied') === 'True';\r\n let priceFrom = productLumpsum ? 0 : el.data('price-from');\r\n let priceTo = productLumpsum ? 0 : el.data('price-to');\r\n\r\n // todo extract to function\r\n if (!BookListPage.isNumber(priceFrom)) {\r\n priceFrom = parseFloat(el.data('price-from').replace(separators.ToReplace, separators.ReplaceWith));\r\n } else {\r\n priceFrom = parseFloat(priceFrom);\r\n }\r\n if (!BookListPage.isNumber(priceTo)) {\r\n priceTo = parseFloat(el.data('price-to').replace(separators.ToReplace, separators.ReplaceWith));\r\n } else {\r\n priceTo = parseFloat(priceTo);\r\n }\r\n\r\n let priceToExclVAT = el.data('price-excluding-vat');\r\n if (priceToExclVAT !== undefined) {\r\n if (!BookListPage.isNumber(priceToExclVAT)) {\r\n priceToExclVAT = parseFloat(el.data('price-excluding-vat')\r\n .replace(separators.ToReplace, separators.ReplaceWith));\r\n } else {\r\n priceToExclVAT = parseFloat(priceToExclVAT);\r\n }\r\n }\r\n\r\n if (el.data('dutch') === 'True' && !listdiscountalreadyapplied) {\r\n const unique = el.data('unique');\r\n\r\n if (this.dutchBooks > 1 && this.studentDiscount) {\r\n this.togglePriceFromTo(priceFrom, priceTo, el);\r\n } else {\r\n // show price from\r\n $(`.price-from.${unique}`)\r\n .removeClass('old')\r\n .addClass('current');\r\n $(`.price-to.${unique}`)\r\n .removeClass('current')\r\n .addClass('old');\r\n }\r\n } else if (this.membershipIsVisible && this.studentDiscount && !listdiscountalreadyapplied) {\r\n this.togglePriceFromTo(priceFrom, priceTo, el);\r\n } else if (priceFrom !== priceTo && (listdiscountalreadyapplied || !this.membershipIsVisible)) {\r\n // not dutch, add the items\r\n // also add the discount\r\n this.discount += priceFrom - priceTo;\r\n }\r\n\r\n _.bind(this.AddToBooklistTotal, this, priceFrom, priceToExclVAT, productEan)();\r\n }\r\n else if (el.data('dutch') === 'True') {\r\n const isUnique = el.data('unique');\r\n $(`.price-from.${isUnique}`)\r\n .removeClass('old')\r\n .addClass('current');\r\n $(`.price-to.${isUnique}`)\r\n .removeClass('current')\r\n .addClass('old');\r\n }\r\n } else if (el.prop('checked')) {\r\n let price = productLumpsum ? 0 : el.data('price-to');\r\n try {\r\n if (!BookListPage.isNumber(price)) {\r\n price = parseFloat(price.replace(separators.ToReplace, separators.ReplaceWith));\r\n\r\n _.bind(this.AddToBooklistTotal, this, price, 0, productEan)();\r\n\r\n this.amountBooklist += 1;\r\n } else if (el.attr('data-purchasetype') && el.data('purchasetype') === 2) {\r\n this.amountBooklist += 1;\r\n }\r\n } catch (e) {\r\n // not catching anything to ignore errors?\r\n }\r\n }\r\n });\r\n\r\n this.setPrices();\r\n this.selectedRequiredItems.html($('.required-item input[type=checkbox]:checked').length);\r\n\r\n this.setDiscountVisualElements(this.studentDiscount);\r\n }\r\n\r\n static isNumber(n) {\r\n return !isNaN(parseFloat(n)) && isFinite(n);\r\n }\r\n\r\n setPrices() {\r\n const separators = this.getDecimalSeparators(this.language === 'nl');\r\n let subtotal = this.booklistTotal;\r\n let discount = this.discount;\r\n let shippingCosts = this.shippingCosts;\r\n let membershipFee = this.membershipFee;\r\n\r\n if (!BookListPage.isNumber(subtotal)) {\r\n subtotal = subtotal.toFixed(2).replace(separators.ToReplace, separators.ReplaceWith);\r\n }\r\n\r\n if (!BookListPage.isNumber(discount)) {\r\n discount = discount.toFixed(2).replace(separators.ToReplace, separators.ReplaceWith);\r\n }\r\n\r\n if (this.membershipTypeIsJoin && this.membershipIsVisible) {\r\n if (!BookListPage.isNumber(membershipFee)) {\r\n membershipFee = membershipFee.toFixed(2).replace(separators.ToReplace, separators.ReplaceWith);\r\n }\r\n } else {\r\n membershipFee = 0;\r\n }\r\n\r\n const total = (subtotal + membershipFee) + shippingCosts - discount;\r\n const totalFormatted = total.toFixed(2).replace(separators.ToReplace, separators.ReplaceWith);\r\n\r\n this.discountContainer.html(this.discount.toFixed(2).replace(separators.ToReplace, separators.ReplaceWith));\r\n this.quantityContainer.html(this.amountBooklist);\r\n\r\n this.totalHighVATContainer.html(this.totalHighVAT.toFixed(2).replace(separators.ToReplace, separators.ReplaceWith));\r\n this.totalLowVATContainer.html(this.totalLowVAT.toFixed(2).replace(separators.ToReplace, separators.ReplaceWith));\r\n this.totalExclVATContainer.html(this.totalExclVAT.toFixed(2).replace(separators.ToReplace, separators.ReplaceWith));\r\n this.subtotalBooklistContainer.html(subtotal.toFixed(2).replace(separators.ToReplace, separators.ReplaceWith));\r\n\r\n this.totalContainer.html(totalFormatted);\r\n }\r\n\r\n toggleMore() {\r\n this.more.toggle();\r\n if (this.more.css('display') === 'inline') {\r\n this.lessBtn.css('display', 'inline');\r\n this.moreBtn.css('display', 'none');\r\n } else {\r\n this.lessBtn.css('display', 'none');\r\n this.moreBtn.css('display', 'inline');\r\n }\r\n }\r\n\r\n toggleStudentDiscount(element) {\r\n const discount = element.val() === 'True' ? true : false;\r\n\r\n $.get(`${this.studentDiscountUrl}?discount=${discount}`)\r\n .done(() => {\r\n $('#link-cart').load(this.linkCartUrl);\r\n this.studentDiscount = discount;\r\n if (discount) {\r\n this.form.addClass('discount-enabled');\r\n } else {\r\n this.form.removeClass('discount-enabled');\r\n }\r\n element.prop('checked');\r\n this.calculateDiscounts();\r\n })\r\n .fail(() => {\r\n // reverse the checked since something went wrong\r\n element.prop('checked');\r\n this.studentDiscount = !discount;\r\n this.setDiscountVisualElements(this.studentDiscount);\r\n });\r\n }\r\n\r\n static showIsNecessaryMessage(element, forId) {\r\n const isChecked = element.checked;\r\n const selector = `#alert_notification-${forId}`;\r\n if (isChecked) {\r\n $(selector).hide().removeClass(\"d-flex\");\r\n } else {\r\n let otherOptionChecked = false;\r\n $(`#purchasetype-options${forId} input:checked`).each(purchasetypeOption => {\r\n if (purchasetypeOption !== element) {\r\n otherOptionChecked = true;\r\n }\r\n });\r\n if (!otherOptionChecked) {\r\n $(selector).show().addClass(\"d-flex\");\r\n }\r\n }\r\n }\r\n\r\n getDecimalSeparators(replacePoint) {\r\n if (typeof replacePoint === 'boolean' && replacePoint) {\r\n return { 'ToReplace': '.', 'ReplaceWith': ',' };\r\n } else {\r\n return { 'ToReplace': ',', 'ReplaceWith': '.' };\r\n }\r\n }\r\n\r\n togglePriceFromTo(priceFrom, priceTo, el) {\r\n const unique = el.data('unique');\r\n if (priceTo !== priceFrom) {\r\n // only toggle if prices are different from eachother\r\n $(`.price-from.${unique}`)\r\n .removeClass('current')\r\n .addClass('old');\r\n $(`.price-to.${unique}`)\r\n .removeClass('old')\r\n .addClass('current');\r\n this.discount += priceFrom - priceTo;\r\n } else {\r\n $(`.price-from.${unique}`);\r\n }\r\n }\r\n\r\n preferSecondHand(enable) {\r\n $.each($(`.booklist__product-actions_multiple`), (index, el) => {\r\n const container = $(el);\r\n\r\n // Find the inputs\r\n const newInput = container.find('input[data-purchasetype=\"0\"]');\r\n const secondHandInput = container.find('input[data-purchasetype=\"1\"]');\r\n\r\n // When enabling the feature switch the checks only when the newInput is checked\r\n if (enable && newInput.is(':checked')) {\r\n newInput.prop('checked', false);\r\n secondHandInput.prop('checked', true);\r\n }\r\n\r\n // When disabling the feature switch the checks only when the secondHandInput is checked\r\n if (!enable && secondHandInput.is(':checked')) {\r\n newInput.prop('checked', true);\r\n secondHandInput.prop('checked', false);\r\n }\r\n\r\n this.calculateDiscounts();\r\n });\r\n }\r\n}","require('jquery-validation');\r\nrequire('jquery-validation-unobtrusive');\r\n\r\nexport default class BootstrapMVCForm {\r\n constructor(scope) {\r\n if (typeof scope === 'undefined') {\r\n console.warn('WARNING! Parameters missing - Could not initialize BootstrapMVCForm.'); // eslint-disable-line no-console\r\n return;\r\n }\r\n\r\n this.$scope = scope;\r\n\r\n this.initialize();\r\n }\r\n\r\n initialize() {\r\n const formGroups = this.$scope.find('.form-group');\r\n formGroups.each((index, elem) => {\r\n const $el = $(elem);\r\n if ($el.hasClass('form-group')) {\r\n const $control = $el.find('.form-control, .form-control .selector');\r\n if ($el.find('.field-validation-error').length) {\r\n BootstrapMVCForm.addError($el);\r\n }\r\n\r\n $control.on('blur', { $parent: $el }, function (event) { // eslint-disable-line func-names\r\n if ($(this).data('removespaces')) {\r\n $(this).val((_, v) => v.replace(/\\s+/g, ''));\r\n $(this).trigger(\"change\"); // Trigger change to trigger fetching the address one more time in the postalcode validator.\r\n }\r\n BootstrapMVCForm.validate($(this), event.data.$parent, true);\r\n });\r\n\r\n $control.on('change keyup', { $parent: $el }, function (event) { // eslint-disable-line func-names\r\n if (BootstrapMVCForm.valueIsSet($(this))) {\r\n BootstrapMVCForm.validate($(this), event.data.$parent);\r\n }\r\n });\r\n } else {\r\n throw ('Scope is not properly defined'); // eslint-disable-line no-throw-literal\r\n }\r\n });\r\n\r\n const submit = this.$scope.find('input[type=\"submit\"], button[type=\"submit\"]');\r\n submit.on('click', () => {\r\n formGroups.each((index, elem) => {\r\n const $el = $(elem);\r\n const $control = $el.find('.form-control, .form-control-select');\r\n if ($control.length > 1 && $($control[0]).data('grouphug')) {\r\n BootstrapMVCForm.validateElGroup($($control[0]), $el, true, true);\r\n } else {\r\n BootstrapMVCForm.validate($control, $el, true);\r\n }\r\n });\r\n });\r\n }\r\n\r\n static addError($parent) {\r\n $parent.addClass('has-error');\r\n $parent.removeClass('has-success');\r\n $parent.find('.field-validation-error').addClass('validation-message');\r\n }\r\n\r\n static removeError($parent) {\r\n $parent.removeClass('has-error');\r\n $parent.find('.validation-message').removeClass('validation-message');\r\n }\r\n\r\n static removeSuccess($parent) {\r\n $parent.removeClass('has-success');\r\n }\r\n\r\n static addSuccess($parent) {\r\n $parent.addClass('has-success');\r\n }\r\n\r\n static validateEl($el, $parent, canAdd) {\r\n try {\r\n if ($el.valid()) {\r\n BootstrapMVCForm.removeError($parent);\r\n if (canAdd && BootstrapMVCForm.valueIsSet($el)) {\r\n BootstrapMVCForm.addSuccess($parent);\r\n }\r\n } else {\r\n BootstrapMVCForm.removeSuccess($parent);\r\n if (canAdd) {\r\n BootstrapMVCForm.addError($parent);\r\n }\r\n }\r\n } catch (e) { } // eslint-disable-line no-empty\r\n }\r\n\r\n static lastInGroup($els, $el) {\r\n const highestIndex = $els.length - 1;\r\n if ($els.index($el) === highestIndex) {\r\n return true;\r\n }\r\n return false;\r\n }\r\n\r\n static validateElGroup($el, $parent, canAdd, forceValidate) {\r\n const $els = $(`.form-control[data-grouphug='${$el.data('grouphug')}']`);\r\n let valid = true;\r\n\r\n $els.each((index, elem) => {\r\n if (!$(elem).valid()) {\r\n valid = false;\r\n }\r\n });\r\n if (valid) {\r\n BootstrapMVCForm.removeError($parent);\r\n if (canAdd) {\r\n BootstrapMVCForm.addSuccess($parent);\r\n }\r\n } else {\r\n BootstrapMVCForm.removeSuccess($parent);\r\n if (canAdd && BootstrapMVCForm.lastInGroup($els, $el)) {\r\n BootstrapMVCForm.addError($parent);\r\n }\r\n if (forceValidate) {\r\n BootstrapMVCForm.addError($parent);\r\n }\r\n }\r\n }\r\n\r\n static valueIsSet($el) {\r\n if ($el.val().split('').length > 1) {\r\n return true;\r\n }\r\n return false;\r\n }\r\n\r\n static validate($el, $parent, canAdd) {\r\n if ($el.data('grouphug')) {\r\n BootstrapMVCForm.validateElGroup($el, $parent, canAdd);\r\n } else {\r\n BootstrapMVCForm.validateEl($el, $parent, canAdd);\r\n }\r\n }\r\n\r\n scrollToFirstError() {\r\n const firstErrorEl = this.$scope.find('#IsAlternativeInvoiceEmailAddressNotification:visible').length > 0\r\n ? this.$scope.find('#IsAlternativeInvoiceEmailAddressNotification:visible')\r\n : this.$scope.find('.field-validation-error:visible');\r\n\r\n const inputEl = firstErrorEl.parent();\r\n\r\n if (!inputEl) return;\r\n\r\n const headerEl = $('header');\r\n const scrollPadding = 80;\r\n\r\n $('html, body').animate({\r\n scrollTop: inputEl.offset().top - headerEl.height() - scrollPadding\r\n }, 1000);\r\n }\r\n\r\n hasValidationErrors() {\r\n return this.$scope.find('.field-validation-error:visible').length > 0\r\n || this.$scope.find('#IsAlternativeInvoiceEmailAddressNotification:visible').length > 0;\r\n }\r\n}\r\n","export default class Membership {\r\n constructor(membershipIsVisible, studentDiscount, urlRouteMembershipChange, linkCartUrl) {\r\n this.checkoutNextButtonsSelector = $(\"#checkout-bottom, #checkout-bottom-mobile, #checkout-booklist\");\r\n this.studentDiscount = studentDiscount;\r\n this.memberShipIsVisible = membershipIsVisible;\r\n this.urlRouteMembershipChange = urlRouteMembershipChange;\r\n this.linkCartUrl = linkCartUrl\r\n\r\n function membershipOptionsChecked(clickEvent) {\r\n if (!$('input[name=\"MembershipType\"]:checked').val()) {\r\n clickEvent.preventDefault();\r\n $('#studentMembershipValidation').css('display', 'block');\r\n $(\"html, body\").animate({ scrollTop: 0 }, \"slow\");\r\n }\r\n }\r\n\r\n if ($('input[name=\"MembershipType\"]').length > 0) {\r\n this.checkoutNextButtonsSelector.on(\"click\", clickEvent => {\r\n membershipOptionsChecked(clickEvent);\r\n });\r\n }\r\n }\r\n\r\n submitMembershipChange(membershipValue) {\r\n const membershipType = membershipValue;\r\n const membership = $.get(`${this.urlRouteMembershipChange}?type=${membershipType}`).done(() => {\r\n $('#link-cart').load(this.linkCartUrl);\r\n });\r\n \r\n return this.membershipTypeIsJoin(membershipType) || membershipType.toLowerCase() === 'member';\r\n }\r\n\r\n overridePriceElements() {\r\n return $('.product-list__price.product-list__price_from-to');\r\n }\r\n\r\n membershipTypeIsJoin(membershipType) {\r\n return membershipType.toLowerCase() === 'join';\r\n }\r\n}","export function getDecimalSeparators(replacePoint) {\r\n if (typeof replacePoint === 'boolean' && replacePoint) {\r\n return { 'ToReplace': '.', 'ReplaceWith': ',' };\r\n } else {\r\n return { 'ToReplace': ',', 'ReplaceWith': '.' };\r\n }\r\n}\r\n\r\nexport function isNumber(n) {\r\n return !isNaN(parseFloat(n)) && isFinite(n);\r\n}","require('underscore');\r\nimport { getDecimalSeparators, isNumber } from '../../misc/helpers';\r\nimport Membership from \"../../misc/membership\";\r\n\r\nexport default class BookListPage {\r\n constructor(studentDiscountUrl, linkCartUrl, language, membershipIsVisible, urlRouteMembershipChange, membershipFee) {\r\n if (typeof studentDiscountUrl === 'undefined' ||\r\n typeof linkCartUrl === 'undefined' ||\r\n typeof language === 'undefined' ||\r\n typeof membershipIsVisible === 'undefined' ||\r\n typeof urlRouteMembershipChange === 'undefined' ||\r\n typeof membershipFee === 'membershipFee'\r\n ) {\r\n console.warn('WARNING! Parameters missing - Could not initialize BooklistPage.'); // eslint-disable-line no-console\r\n return;\r\n }\r\n\r\n // more less toggling\r\n this.more = $('#school-description span.more');\r\n this.toggleMoreBtns = $('a.toggleMore');\r\n\r\n this.moreBtn = $('a.more');\r\n this.lessBtn = $('a.less');\r\n this.lessBtn.css('display', 'none'); // default\r\n this.more.css('display', 'none');\r\n\r\n this.toggleMoreBtns.bind('click', () => {\r\n this.toggleMore();\r\n });\r\n\r\n this.form = $('#booklist-form');\r\n\r\n this.clickableItems = $('.booklist__item--clickable');\r\n\r\n if (this.clickableItems.length > 0) {\r\n for (var i = 0; i <= this.clickableItems.length; i++) {\r\n var purchaseTypes = $(this.clickableItems[i]).find('.booklist__purchasetypes');\r\n\r\n if (purchaseTypes.length > 1) {\r\n purchaseTypes.bind('click', (event) => {\r\n event.stopPropagation();\r\n\r\n if (event.target.tagName.toLowerCase() == 'span' && $(event.target).hasClass('info-button')) {\r\n return;\r\n }\r\n\r\n var input = $(event.currentTarget).find('input.product-checkbox');\r\n\r\n if (!input.prop('checked') && !input.prop('disabled')) {\r\n input.prop('checked', true).change();\r\n } else if (input.prop('checked')) {\r\n if (input.data('uncheckable') === undefined && !input.prop('disabled')) {\r\n input.prop('checked', false).change();\r\n }\r\n }\r\n })\r\n }\r\n }\r\n\r\n this.clickableItems.on('click', event => {\r\n if (event.target.tagName.toLowerCase() == 'select' ||\r\n event.target.tagName.toLowerCase() == 'a' ||\r\n (event.target.tagName.toLowerCase() == 'span' && $(event.target).hasClass('info-button'))) {\r\n return;\r\n }\r\n\r\n const currentTarget = $(event.currentTarget);\r\n\r\n var input = currentTarget.find('input.product-checkbox');\r\n var atLeastOneChecked = currentTarget.find('input.product-checkbox:checked')\r\n\r\n if (!input.prop('checked') && atLeastOneChecked.length == 0 && !$(input[0]).prop('disabled')) {\r\n $(input[0]).prop('checked', true).change();\r\n } else if (input.prop('checked') || atLeastOneChecked.length > 0) {\r\n if (input.data('uncheckable') === undefined && !input.prop('disabled')) {\r\n input.prop('checked', false).change();\r\n }\r\n }\r\n });\r\n\r\n this.clickableItems.find('select').bind('click', (event) => {\r\n event.stopPropagation()\r\n });\r\n }\r\n\r\n this.clickableItemRows = $('.booklist__item--clickable');\r\n\r\n if (this.clickableItemRows.length > 0) {\r\n for (var i = 0; i <= this.clickableItemRows.length; i++) {\r\n\r\n var purchaseTypes = $(this.clickableItemRows[i]).find('.product-list__purchasetypes');\r\n\r\n if (purchaseTypes.length > 1) {\r\n purchaseTypes.bind('click', (event) => {\r\n event.stopPropagation();\r\n\r\n if (event.target.tagName.toLowerCase() == 'span' && $(event.target).hasClass('info-button')) {\r\n return;\r\n }\r\n\r\n var input = $(event.currentTarget).find('input.product-checkbox');\r\n\r\n if (!input.prop('checked') && !input.prop('disabled')) {\r\n input.prop('checked', true).change();\r\n } else if (input.prop('checked')) {\r\n if (input.data('uncheckable') === undefined && !input.prop('disabled')) {\r\n input.prop('checked', false).change();\r\n }\r\n }\r\n })\r\n }\r\n }\r\n\r\n this.clickableItemRows.bind('click', (event) => {\r\n if (event.target.tagName.toLowerCase() == 'select' ||\r\n event.target.tagName.toLowerCase() == 'a' ||\r\n (event.target.tagName.toLowerCase() == 'span' && $(event.target).hasClass('info-button'))) {\r\n return;\r\n }\r\n\r\n var input = $(event.currentTarget).find('input.product-checkbox');\r\n var atLeastOneChecked = $(event.currentTarget).find('input.product-checkbox:checked')\r\n\r\n if (!input.prop('checked') && atLeastOneChecked.length == 0 && !$(input[0]).prop('disabled')) {\r\n $(input[0]).prop('checked', true).change();\r\n } else if (input.prop('checked') || atLeastOneChecked.length > 0) {\r\n if (input.data('uncheckable') === undefined && !input.prop('disabled')) {\r\n input.prop('checked', false).change();\r\n }\r\n }\r\n })\r\n\r\n this.clickableItemRows.find('select').bind('click', (event) => { event.stopPropagation() })\r\n }\r\n\r\n $('a[id^=\"product-info-\"]').on('click', event => {\r\n const currentTarget = $(event.currentTarget);\r\n var id = currentTarget.data('ean')\r\n\r\n const ean = currentTarget.data('original-ean');\r\n $('#product-info-dialog').html(`

${Resources.Global.Loading}...

`);\r\n $.get(`/product/info?ean=${ean}`)\r\n .done((data) => {\r\n $('#product-info-dialog').html(data);\r\n var btn = $(`#modal-checkbox-new-${ean}`);\r\n var checkboxBtn = $(`#CheckBoxNew-${id}`);\r\n var buttonEan = checkboxBtn.data('ean');\r\n\r\n const input = checkboxBtn.closest('.booklist__purchasetype').find(`input[data-ean=\"${buttonEan}\"]`).first();\r\n if (input.prop('checked')) {\r\n btn.removeClass('btn-new');\r\n btn.addClass('btn-new-outline');\r\n btn.html(Resources.Cart.Remove)\r\n } else {\r\n btn.addClass('btn-new');\r\n btn.removeClass('btn-new-outline');\r\n btn.html(Resources.Booklist.FloatingCartOrderBtn)\r\n }\r\n\r\n btn.bind(\"click\", () => {\r\n checkboxBtn.click();\r\n $('#product-info-modal').modal('hide');\r\n });\r\n })\r\n .fail(() => {\r\n // Give feedback\r\n $('#product-info-dialog').html(`

${Resources.Global.SomethingWentWrong}...

`);\r\n\r\n // Autohide\r\n setTimeout(() => {\r\n $('#product-info-modal').modal('hide')\r\n }, 4000);\r\n });\r\n })\r\n\r\n $('.add-to-list').on('click', event => {\r\n const target = $(event.currentTarget);\r\n const ean = target.data('ean');\r\n const input = target.closest('.booklist__purchasetype').find(`input[data-ean=\"${ean}\"]`).first();\r\n let parentContainer = $(target).closest('.booklist__purchasetype-container--multiple').first();\r\n if (parentContainer.length > 0) {\r\n let checkboxes = $(parentContainer).find('input[type=\"checkbox\"]');\r\n\r\n $.each(checkboxes, (index, checkbox) => {\r\n // If checkbox is not the same as we clicked, uncheck it\r\n if ($(checkbox).is($(input)) == false && $(checkbox).prop('checked')) {\r\n $(`#${$(checkbox).data('sf')}-${$(checkbox).data('ean')}`).addClass('btn-new');\r\n $(`#${$(checkbox).data('sf')}-${$(checkbox).data('ean')}`).removeClass('btn-new-outline');\r\n $(`#${$(checkbox).data('sf')}-${$(checkbox).data('ean')}`).html(Resources.Booklist.FloatingCartOrderBtn);\r\n $(checkbox).prop('checked', false)\r\n }\r\n });\r\n }\r\n\r\n if (input.prop('checked')) {\r\n target.addClass('btn-new');\r\n target.removeClass('btn-new-outline');\r\n target.html(Resources.Booklist.FloatingCartOrderBtn)\r\n input.prop('checked', false).change();\r\n } else {\r\n target.removeClass('btn-new');\r\n target.addClass('btn-new-outline');\r\n target.html(Resources.Cart.Remove)\r\n input.prop('checked', true).change();\r\n }\r\n })\r\n\r\n //membership discount\r\n this.urlRouteMembershipChange = urlRouteMembershipChange;\r\n this.membershipFee = membershipFee;\r\n this.membershipIsVisible = membershipIsVisible;\r\n this.membershipTypeIsJoin = false;\r\n\r\n // student discount\r\n this.studentDiscountUrl = studentDiscountUrl;\r\n this.linkCartUrl = linkCartUrl;\r\n this.language = language;\r\n\r\n this.studentDeclaration = $('[name=\\'IsStudentDiscountSelected\\']');\r\n this.studentDiscount = this.studentDeclaration.first().prop('checked');\r\n\r\n this.priceElements = $('.product-list__price.product-list__price_from-to.dutch');\r\n this.studentDeclaration.on('change', (event) => {\r\n this.toggleStudentDiscount($(event.target));\r\n });\r\n\r\n // Uncheck the other checkbox for multiple checkbox options (buy or rental)\r\n this.multipleOptionsCheckboxes = $('.booklist__purchasetype-container--multiple input[type=\"checkbox\"]');\r\n this.multipleOptionsCheckboxes.on('change', event => {\r\n this.uncheckMultipleOptions($(event.currentTarget));\r\n });\r\n\r\n this.totalItemsList = $('.list-items').length;\r\n $('#total-items').html(this.totalItemsList);\r\n\r\n // sidebar with info on the amount of selected stuff\r\n this.amountNew = 0;\r\n this.amountRequired = 0;\r\n\r\n this.selectedRequiredItems = $('#selected-required-items');\r\n\r\n // discount and cart calculations (product checkbox: data-ean, data-dutch, data-price)\r\n this.dutchBooks = 0; // dutch books amount\r\n\r\n const separators = getDecimalSeparators();\r\n\r\n this.subtotalBooklistContainer = $('#amount-subtotal'); // booklist subtotal without discount\r\n var booklistTotalText = this.subtotalBooklistContainer.first().text();\r\n if (!isNumber(booklistTotalText)) {\r\n this.booklistTotal = parseFloat(booklistTotalText.replace(separators.ToReplace, separators.ReplaceWith));\r\n } else {\r\n this.booklistTotal = parseFloat(booklistTotalText);\r\n }\r\n\r\n this.booklistDiscount = $('#booklist-discount'); // discount on booklist subtotal \r\n var booklistDiscountText = this.booklistDiscount.first().text();\r\n if (!isNumber(booklistDiscountText)) {\r\n this.booklistDiscount = parseFloat(booklistDiscountText.replace(separators.ToReplace, separators.ReplaceWith));\r\n } else {\r\n this.booklistDiscount = parseFloat(booklistDiscountText);\r\n }\r\n\r\n this.shippingCostsContainer = $('#shippingCosts'); // shippingCosts\r\n var shippingCostsText = this.shippingCostsContainer.first().text();\r\n if (!isNumber(shippingCostsText)) {\r\n this.shippingCosts = parseFloat(shippingCostsText.replace(separators.ToReplace, separators.ReplaceWith));\r\n if (isNaN(this.shippingCosts)) {\r\n this.shippingCosts = 0.0;\r\n }\r\n } else {\r\n this.shippingCosts = parseFloat(shippingCostsText);\r\n }\r\n\r\n this.totalExclVAT = 0;\r\n this.totalExclVATContainer = $('.price-total-excl-vat');\r\n this.totalLowVAT = 0;\r\n this.totalLowVATContainer = $('.total-low-vat');\r\n this.totalHighVAT = 0;\r\n this.totalHighVATContainer = $('.total-high-vat');\r\n this.totalContainer = $('.floating-cart__body .amount-wrapper');\r\n this.discount = 0;\r\n this.discountContainer = $('#discount-total .total-discount');\r\n this.amountBooklist = 0;\r\n this.quantityContainer = $('#selected-items');\r\n\r\n this.addedToPrice = [];\r\n\r\n this.products = $('.product-checkbox');\r\n\r\n this.products.bind('change', () => {\r\n this.calculateDiscounts();\r\n });\r\n\r\n this.calculateDiscounts();\r\n\r\n // booklist item specific\r\n this.itemMoreToggleBtns = $('.item-more-toggle');\r\n this.itemMoreToggleBtns.bind('click', event => {\r\n const id = $(event.target).data('item-id');\r\n const show = $(event.target).data('item-show');\r\n if (show) {\r\n $(`.item-more-toggle.item-more.${id}`).hide();\r\n $(`.collapse.${id}`).show();\r\n } else {\r\n $(`.item-more-toggle.item-more.${id}`).show();\r\n $(`.collapse.${id}`).hide();\r\n }\r\n return false;\r\n });\r\n\r\n // check for duplicate items on the list\r\n this.checkDuplicatePresence();\r\n\r\n this.products.change(event => {\r\n BookListPage.showIsNecessaryMessage($(event.target)[0], $(event.target).data('unique'));\r\n });\r\n\r\n if (typeof this.membershipIsVisible !== 'undefined' && this.membershipIsVisible === true) {\r\n //Init Membership object\r\n const membership = new Membership(this.membershipIsVisible, this.studentDiscount, this.urlRouteMembershipChange, this.linkCartUrl);\r\n\r\n const membershipRadios = $(\"input[dataMembership]\");\r\n membershipRadios.change(event => {\r\n membershipRadios.filter(`[dataMembership='${$(event.target).attr(\"dataMembership\")}']`).prop(\"checked\", true);\r\n this.membershipDiscountChange(membership, $(event.target).attr(\"dataMembership\"))\r\n });\r\n\r\n this.membershipDiscountChange(membership, $(this.initMembership(membershipRadios)).attr(\"dataMembership\"));\r\n }\r\n }\r\n\r\n initDiscount() {\r\n let el = null;\r\n $.each(this.studentDeclaration, function (key, value) {\r\n if ($(value).prop('checked')) {\r\n el = value;\r\n }\r\n });\r\n\r\n return el;\r\n }\r\n\r\n initMembership(membershipRadios) {\r\n let el = null;\r\n\r\n $.each(membershipRadios, function (key, value) {\r\n if ($(value).prop('checked')) {\r\n el = value;\r\n }\r\n });\r\n\r\n return el;\r\n }\r\n\r\n setDiscountVisualElements(discountIsActive) {\r\n if (this.membershipIsVisible) {\r\n const membership = new Membership(this.membershipIsVisible, discountIsActive, this.urlRouteMembershipChange, this.linkCartUrl);\r\n this.priceElements = membership.overridePriceElements();\r\n }\r\n\r\n if (discountIsActive) {\r\n this.priceElements.removeClass('price-override');\r\n } else {\r\n this.priceElements.addClass('price-override');\r\n }\r\n }\r\n\r\n membershipDiscountChange(membership, membershipType) {\r\n if (typeof membershipType !== 'undefined' && membershipType !== null) {\r\n $('#studentMembershipValidation').css('display', 'none');\r\n this.studentDiscount = membership.submitMembershipChange(membershipType);\r\n if (membership.membershipTypeIsJoin(membershipType)) {\r\n $('#membershipDiscount').show();\r\n this.membershipTypeIsJoin = true;\r\n } else {\r\n $('#membershipDiscount').hide();\r\n this.membershipTypeIsJoin = false;\r\n }\r\n\r\n this.setDiscountVisualElements(this.studentDiscount);\r\n this.calculateDiscounts();\r\n } else {\r\n $('#membershipDiscount').hide();\r\n this.membershipTypeIsJoin = false;\r\n }\r\n }\r\n\r\n checkDuplicatePresence() {\r\n $.each(this.products, (index, value) => {\r\n const el = $(value);\r\n const ean = el.data('ean');\r\n if (typeof ean === 'number') {\r\n if ($(`.item-presence-${ean}`).length > 1) {\r\n $(`.item-presence-${ean}`).show();\r\n }\r\n }\r\n });\r\n }\r\n\r\n getProductsByEan(ean) {\r\n const eanProducts = {\r\n elements: [],\r\n hasChecked: false\r\n };\r\n $.each(this.products, (index, value) => {\r\n const el = $(value);\r\n const productEan = el.data('ean');\r\n if (ean !== undefined && productEan === ean) {\r\n eanProducts.elements.push(el);\r\n if (el.prop('checked')) {\r\n eanProducts.hasChecked = true;\r\n }\r\n }\r\n });\r\n return eanProducts;\r\n } \r\n\r\n checkItem(input) {\r\n const ean = input.data('ean');\r\n const eanProducts = this.getProductsByEan(ean);\r\n\r\n if (eanProducts.elements.length > 1 && !$(eanProducts.elements[0]).prop('disabled')) {\r\n $(eanProducts.elements[0]).prop('checked', true);\r\n\r\n if ($(eanProducts.elements[0]).hasClass('product-checkbox')) {\r\n $(eanProducts.elements[0]).change();\r\n }\r\n\r\n BookListPage.showIsNecessaryMessage(eanProducts.elements[0][0], eanProducts.elements[0].data('unique'));\r\n }\r\n else if (!input.prop('disabled')) {\r\n input.prop('checked', true);\r\n\r\n if (input.hasClass('product-checkbox')) {\r\n input.change();\r\n }\r\n }\r\n }\r\n\r\n uncheckMultipleOptions(input) {\r\n let parent = $(input).parents('.booklist__purchasetype-container--multiple').first();\r\n let checkboxes = $(parent).find('input[type=\"checkbox\"]');\r\n\r\n $.each(checkboxes, (index, checkbox) => {\r\n // If checkbox is not the same as we clicked, uncheck it\r\n if ($(checkbox).is($(input)) == false) {\r\n $(checkbox).prop('checked', false);\r\n }\r\n });\r\n }\r\n\r\n reset() {\r\n $.each(this.products, (index, value) => {\r\n if ($(value).prop('checked')) {\r\n $(value).prop('checked', false);\r\n }\r\n });\r\n }\r\n\r\n AddToBooklistTotal(price, priceExclVAT, ean) {\r\n if (!_.includes(this.addedToPrice)) {\r\n if (priceExclVAT > 0) {\r\n const vatPercentage = (price / priceExclVAT - 1) * 100;\r\n if (vatPercentage > 5 && vatPercentage < 7) {\r\n this.totalLowVAT = this.totalLowVAT + (price - priceExclVAT);\r\n } else {\r\n this.totalHighVAT = this.totalHighVAT + (price - priceExclVAT);\r\n }\r\n }\r\n this.totalExclVAT = this.totalExclVAT + priceExclVAT;\r\n this.booklistTotal = this.booklistTotal + price;\r\n this.addedToPrice.push(ean);\r\n }\r\n }\r\n\r\n calculateDiscounts() {\r\n // first count the dutchbooks\r\n this.dutchBooks = $('.product-checkbox[data-purchasetype=\"0\"][data-dutch=\"True\"]:checked').length;\r\n\r\n if (this.dutchBooks > 1) {\r\n this.form.addClass('double-dutch');\r\n } else {\r\n this.form.removeClass('double-dutch');\r\n }\r\n\r\n this.totalLowVAT = 0;\r\n this.totalHighVAT = 0;\r\n this.totalExclVAT = 0;\r\n\r\n this.booklistTotal = 0;\r\n this.amountBooklist = 0;\r\n this.discount = 0;\r\n\r\n this.addedToPrice = [];\r\n\r\n const separators = getDecimalSeparators();\r\n\r\n $.each(this.products, (index, value) => {\r\n const el = $(value);\r\n const productEan = el.data('ean');\r\n const productLumpsum = el.data('lumpsum') === 'True';\r\n\r\n if (el.attr('data-purchasetype') && el.data('purchasetype') === 0) {\r\n // new?\r\n if (el.prop('checked')) {\r\n // and checked?\r\n this.amountBooklist += 1;\r\n\r\n const listdiscountalreadyapplied = el.data('haslistdiscountapplied') === 'True';\r\n let priceFrom = productLumpsum ? 0 : el.data('price-from');\r\n let priceTo = productLumpsum ? 0 : el.data('price-to');\r\n\r\n // todo extract to function\r\n if (!isNumber(priceFrom)) {\r\n priceFrom = parseFloat(el.data('price-from').replace(separators.ToReplace, separators.ReplaceWith));\r\n } else {\r\n priceFrom = parseFloat(priceFrom);\r\n }\r\n if (!isNumber(priceTo)) {\r\n priceTo = parseFloat(el.data('price-to').replace(separators.ToReplace, separators.ReplaceWith));\r\n } else {\r\n priceTo = parseFloat(priceTo);\r\n }\r\n\r\n let priceToExclVAT = el.data('price-excluding-vat');\r\n if (priceToExclVAT !== undefined) {\r\n if (!isNumber(priceToExclVAT)) {\r\n priceToExclVAT = parseFloat(el.data('price-excluding-vat')\r\n .replace(separators.ToReplace, separators.ReplaceWith));\r\n } else {\r\n priceToExclVAT = parseFloat(priceToExclVAT);\r\n }\r\n }\r\n\r\n if (el.data('dutch') === 'True' && !listdiscountalreadyapplied) {\r\n const unique = el.data('unique');\r\n\r\n if (this.dutchBooks > 1 && this.studentDiscount) {\r\n this.togglePriceFromTo(priceFrom, priceTo, el);\r\n } else {\r\n // show price from\r\n $(`.price-from.${unique}`)\r\n .removeClass('old')\r\n .addClass('current');\r\n $(`.price-to.${unique}`)\r\n .removeClass('current')\r\n .addClass('old');\r\n }\r\n } else if (this.membershipIsVisible && this.studentDiscount && !listdiscountalreadyapplied) {\r\n this.togglePriceFromTo(priceFrom, priceTo, el);\r\n } else if (priceFrom !== priceTo && (listdiscountalreadyapplied || !this.membershipIsVisible)) {\r\n // not dutch, add the items\r\n // also add the discount\r\n this.discount += priceFrom - priceTo;\r\n }\r\n\r\n _.bind(this.AddToBooklistTotal, this, priceFrom, priceToExclVAT, productEan)();\r\n }\r\n else if (el.data('dutch') === 'True') {\r\n const isUnique = el.data('unique');\r\n $(`.price-from.${isUnique}`)\r\n .removeClass('old')\r\n .addClass('current');\r\n $(`.price-to.${isUnique}`)\r\n .removeClass('current')\r\n .addClass('old');\r\n }\r\n } else if (el.prop('checked')) {\r\n let price = productLumpsum ? 0 : el.data('price-to');\r\n try {\r\n if (!isNumber(price)) {\r\n price = parseFloat(price.replace(separators.ToReplace, separators.ReplaceWith));\r\n\r\n _.bind(this.AddToBooklistTotal, this, price, 0, productEan)();\r\n\r\n this.amountBooklist += 1;\r\n } else if (el.attr('data-purchasetype') && el.data('purchasetype') === 2) {\r\n this.amountBooklist += 1;\r\n }\r\n } catch (e) {\r\n // not catching anything to ignore errors?\r\n }\r\n }\r\n });\r\n\r\n this.setPrices();\r\n this.selectedRequiredItems.html($('.booklist__item--required input[type=checkbox]:checked').length);\r\n\r\n this.setDiscountVisualElements(this.studentDiscount);\r\n }\r\n\r\n setPrices() {\r\n const separators = getDecimalSeparators(this.language === 'nl');\r\n let subtotal = this.booklistTotal;\r\n let discount = this.discount;\r\n let shippingCosts = this.shippingCosts;\r\n let membershipFee = this.membershipFee;\r\n\r\n if (!isNumber(subtotal)) {\r\n subtotal = subtotal.toFixed(2).replace(separators.ToReplace, separators.ReplaceWith);\r\n }\r\n\r\n if (!isNumber(discount)) {\r\n discount = discount.toFixed(2).replace(separators.ToReplace, separators.ReplaceWith);\r\n }\r\n\r\n if (this.membershipTypeIsJoin && this.membershipIsVisible) {\r\n if (!isNumber(membershipFee)) {\r\n membershipFee = membershipFee.toFixed(2).replace(separators.ToReplace, separators.ReplaceWith);\r\n }\r\n } else {\r\n membershipFee = 0;\r\n }\r\n\r\n const total = (subtotal + membershipFee) + shippingCosts - discount;\r\n const totalFormatted = total.toFixed(2).replace(separators.ToReplace, separators.ReplaceWith);\r\n\r\n this.discountContainer.html(this.discount.toFixed(2).replace(separators.ToReplace, separators.ReplaceWith));\r\n\r\n this.quantityContainer.html(this.amountBooklist);\r\n this.totalHighVATContainer.html(this.totalHighVAT.toFixed(2).replace(separators.ToReplace, separators.ReplaceWith));\r\n this.totalLowVATContainer.html(this.totalLowVAT.toFixed(2).replace(separators.ToReplace, separators.ReplaceWith));\r\n this.totalExclVATContainer.html(this.totalExclVAT.toFixed(2).replace(separators.ToReplace, separators.ReplaceWith));\r\n this.subtotalBooklistContainer.html(subtotal.toFixed(2).replace(separators.ToReplace, separators.ReplaceWith));\r\n\r\n this.totalContainer.html(totalFormatted);\r\n }\r\n\r\n toggleMore() {\r\n this.more.toggle();\r\n if (this.more.css('display') === 'inline') {\r\n this.lessBtn.css('display', 'inline');\r\n this.moreBtn.css('display', 'none');\r\n } else {\r\n this.lessBtn.css('display', 'none');\r\n this.moreBtn.css('display', 'inline');\r\n }\r\n }\r\n\r\n toggleStudentDiscount(element) {\r\n const discount = element.val() === 'True' ? true : false;\r\n\r\n $.get(`${this.studentDiscountUrl}?discount=${discount}`)\r\n .done(() => {\r\n $('#link-cart').load(this.linkCartUrl);\r\n this.studentDiscount = discount;\r\n if (discount) {\r\n this.form.addClass('discount-enabled');\r\n } else {\r\n this.form.removeClass('discount-enabled');\r\n }\r\n element.prop('checked');\r\n this.calculateDiscounts();\r\n })\r\n .fail(() => {\r\n // reverse the checked since something went wrong\r\n element.prop('checked');\r\n this.studentDiscount = !discount;\r\n this.setDiscountVisualElements(this.studentDiscount);\r\n });\r\n }\r\n\r\n static showIsNecessaryMessage(element, forId) {\r\n const isChecked = element.checked;\r\n const selector = `.required-message-${forId}`;\r\n\r\n if (isChecked) {\r\n $(selector).hide();\r\n }\r\n else {\r\n let otherOptionChecked = false;\r\n $(`#purchasetype-options${forId} input:checked`).each(purchasetypeOption => {\r\n if (purchasetypeOption !== element) {\r\n otherOptionChecked = true;\r\n }\r\n });\r\n if (!otherOptionChecked) {\r\n $(selector).show();\r\n }\r\n }\r\n }\r\n\r\n togglePriceFromTo(priceFrom, priceTo, el) {\r\n const unique = el.data('unique');\r\n if (priceTo !== priceFrom) {\r\n // only toggle if prices are different from eachother\r\n $(`.price-from.${unique}`)\r\n .removeClass('current')\r\n .addClass('old');\r\n $(`.price-to.${unique}`)\r\n .removeClass('old')\r\n .addClass('current');\r\n this.discount += priceFrom - priceTo;\r\n } else {\r\n $(`.price-from.${unique}`);\r\n }\r\n }\r\n}","/* eslint no-unused-vars: 0 */\r\nimport BootstrapMVCForm from '../misc/bootstrap-mvcform';\r\nimport BooklistPage from '../controllers/booklist';\r\nimport NewBooklistPage from '../controllers/page/booklist';\r\nimport ProductPage from '../controllers/product';\r\n\r\nconst form = document.querySelector('#booklist-form');\r\n\r\nif (window.UseNewBooklistScript) {\r\n const newBooklistPage = new NewBooklistPage(\r\n window.BookListPage_StudentDiscountUrl,\r\n window.BookListPage_LinkCartUrl,\r\n window.BookListPage_Language,\r\n window.BookListPage_MembershipIsVisble,\r\n window.BookListPage_urlRouteMembershipChange,\r\n window.BookListPage_membershipFee\r\n );\r\n} else {\r\n const booklistPage = new BooklistPage(\r\n window.BookListPage_StudentDiscountUrl,\r\n window.BookListPage_LinkCartUrl,\r\n window.BookListPage_Language,\r\n window.BookListPage_MembershipIsVisble,\r\n window.BookListPage_urlRouteMembershipChange,\r\n window.BookListPage_membershipFee\r\n );\r\n}\r\n\r\nconst contactForm = new BootstrapMVCForm($('#booklist-form'));\r\n\r\n$(() => {\r\n if (window.showSchoolWillOrderNotification) {\r\n $('#schoolorder-notification-modal').on('hidden.bs.modal', function (e) {\r\n document.location.href = \"/\";\r\n });\r\n $('#schoolorder-notification-modal').modal('show');\r\n }\r\n\r\n if (window.showBooklistPurchaseNotification) {\r\n $('#booklist-purchase-notification-modal').modal('show');\r\n }\r\n\r\n if (window.showLoginNotification) {\r\n $('#login-notification-modal').modal('show');\r\n }\r\n\r\n // Initialize tooltips\r\n $('[data-toggle=\"tooltip\"]').tooltip();\r\n});"],"names":["require","BookListPage","studentDiscountUrl","linkCartUrl","language","membershipIsVisible","urlRouteMembershipChange","membershipFee","_this","_classCallCheck","this","more","$","toggleMoreBtns","moreBtn","lessBtn","css","bind","toggleMore","form","clickableItemRows","length","_loop","purchaseTypes","i","find","event","stopPropagation","target","tagName","toLowerCase","hasClass","input","currentTarget","otherInputs","prop","undefined","data","change","atLeastOneChecked","inputArray","makeArray","index","preferSecondHandToggle","is","findIndex","element","membershipTypeIsJoin","studentDeclaration","studentDiscount","first","priceElements","on","toggleStudentDiscount","checkAllCheckbox","checkAll","preferSecondHandToggleBottom","preferSecondHand","checked","click","courseCheckboxes","checkByGroup","totalItemsList","html","amountNew","amountRequired","selectedRequiredItems","dutchBooks","separators","getDecimalSeparators","subtotalBooklistContainer","booklistTotalText","text","isNumber","booklistTotal","parseFloat","replace","ToReplace","ReplaceWith","booklistDiscount","booklistDiscountText","shippingCostsContainer","shippingCostsText","shippingCosts","isNaN","totalExclVAT","totalExclVATContainer","totalLowVAT","totalLowVATContainer","totalHighVAT","totalHighVATContainer","totalContainer","discount","discountContainer","amountBooklist","quantityContainer","addedToPrice","products","calculateDiscounts","itemMoreToggleBtns","id","concat","hide","show","checkDuplicatePresence","showIsNecessaryMessage","membership","Membership","membershipRadios","filter","attr","membershipDiscountChange","initMembership","console","warn","key","value","n","isFinite","forId","isChecked","selector","removeClass","otherOptionChecked","each","purchasetypeOption","addClass","el","discountIsActive","overridePriceElements","membershipType","submitMembershipChange","setDiscountVisualElements","ean","eanProducts","elements","hasChecked","productEan","push","_this2","groupId","checkItem","getProductsByEan","append","Resources","Booklist","Selected","trigger","price","priceExclVAT","_","includes","vatPercentage","_this3","productLumpsum","listdiscountalreadyapplied","priceFrom","priceTo","priceToExclVAT","togglePriceFromTo","unique","AddToBooklistTotal","isUnique","e","setPrices","subtotal","toFixed","totalFormatted","toggle","_this4","val","get","done","load","fail","replacePoint","enable","_this5","container","newInput","secondHandInput","BootstrapMVCForm","scope","$scope","initialize","$parent","$el","canAdd","valid","removeError","valueIsSet","addSuccess","removeSuccess","addError","$els","highestIndex","forceValidate","elem","lastInGroup","split","validateElGroup","validateEl","formGroups","$control","v","validate","inputEl","parent","headerEl","animate","scrollTop","offset","top","height","checkoutNextButtonsSelector","memberShipIsVisible","clickEvent","preventDefault","membershipOptionsChecked","membershipValue","clickableItems","Global","Loading","btn","checkboxBtn","buttonEan","closest","Cart","Remove","FloatingCartOrderBtn","modal","SomethingWentWrong","setTimeout","parentContainer","checkboxes","checkbox","multipleOptionsCheckboxes","uncheckMultipleOptions","parents","document","querySelector","window","UseNewBooklistScript","NewBooklistPage","BookListPage_StudentDiscountUrl","BookListPage_LinkCartUrl","BookListPage_Language","BookListPage_MembershipIsVisble","BookListPage_urlRouteMembershipChange","BookListPage_membershipFee","BooklistPage","showSchoolWillOrderNotification","location","href","showBooklistPurchaseNotification","showLoginNotification","tooltip"],"sourceRoot":""}