{"version":3,"file":"1460.8a4f4b38601d724e12dc.js","mappings":"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","sources":["webpack://front-end-build-system/./src/views/productclasspage/shared/reviews.js"],"sourcesContent":["/* eslint-disable no-empty-function */\r\nimport $ from 'jquery';\r\nimport page from '../../../smartpak/page'; \r\n\r\nconst reviews = {\r\n updateBVData: function() {\r\n var $numReviews = $('.reviewStars .bv_numReviews_component_container'),\r\n $numberOfReviews = $numReviews.find('meta[itemprop=\"reviewCount\"]'),\r\n numberOfReviews = $numberOfReviews.length ? $numberOfReviews.attr('content') : 0,\r\n hasStars = numberOfReviews > 0;\r\n\r\n this._getReviewStars($numReviews, hasStars);\r\n this._getReviewSummary(hasStars, numberOfReviews);\r\n this._bindEvents();\r\n },\r\n _bindEvents: function() {\r\n $('.reviewStars')\r\n .removeClass('jsHide')\r\n .addClass('inline');\r\n\r\n \r\n $('#writeReviewCTA').on('click', '#reviewCTAButton', this._handleWriteReviewsClick.bind(this));\r\n },\r\n _getReviewSummary: function(hasStars, reviewNum) {\r\n var avgStars = $('.reviewStars .bv_avgRating_component_container').text(),\r\n formattedAvg = parseFloat(avgStars.split('out')[0]).toFixed(1),\r\n num = this._formatAvgStars(formattedAvg),\r\n starNum = num.replace(/\\./gi, '_'),\r\n imgPath = this._displayStarsImage(starNum, hasStars),\r\n reviewStr = parseInt(reviewNum) === 1 ? ' Review' : ' Reviews';\r\n\r\n $('#starAvg').html((isNaN(num) ? '0' : num) + ' out of 5');\r\n $('#reviewsOverviewStars').attr({\r\n src: imgPath,\r\n alt: ''\r\n });\r\n $('#reviewTotal').html(reviewNum + reviewStr);\r\n },\r\n _formatAvgStars: function(stars) {\r\n var starsContent = stars.replace(/\\.0/gi, '');\r\n\r\n return starsContent;\r\n },\r\n _displayStarsImage: function(num, hasStars) {\r\n var path = '/images/productClass/bigStars/',\r\n starPath = path + $.trim(num) + '.svg',\r\n noStarPath = path + '0.svg';\r\n\r\n return hasStars ? starPath : noStarPath;\r\n },\r\n _getReviewStars: function($container, hasStars) {\r\n var $reviews = $container.find('.bv_numReviews_text'),\r\n numberOfReviews = parseInt($reviews.text().replace(/\\(|\\)/gi, '')),\r\n content = numberOfReviews > 1 ? numberOfReviews : numberOfReviews;\r\n\r\n if (hasStars) {\r\n $reviews.html('(' + content + ')');\r\n } else {\r\n $reviews.html('write a review');\r\n }\r\n },\r\n _setRecommendPercent: function() {\r\n var initial = $('.bv-percent-recommend-container')\r\n .html()\r\n .split('('),\r\n percent = initial[1].split(')')[0],\r\n $recommended = $('#dRecommendedCount, #recommendPercentLine');\r\n\r\n if (this._isPercentageViewable(percent)) {\r\n $('.percentRecommend').html(percent);\r\n $recommended.removeClass('jsHide').addClass('inline');\r\n }\r\n },\r\n _isPercentageViewable: function(percent) {\r\n var percentageThreshold = 85,\r\n numPercent = parseInt(percent.replace(/%/gi, ''));\r\n\r\n return numPercent > percentageThreshold;\r\n },\r\n _formatWithCommas: function(num) {\r\n return (!num ? 0 : num).toString().replace(/(\\d)(?=(\\d{3})+(?!\\d))/g, '$1,');\r\n },\r\n _addCountToElement: function($element, countVar) {\r\n if ($element.length < 1) {\r\n return;\r\n }\r\n\r\n var elementText = $element.text(),\r\n countString = this._formatWithCommas(countVar),\r\n countElement = \"(\" + countString + ')';\r\n\r\n if (countVar < 1) {\r\n return;\r\n }\r\n if (/\\(/gi.test(elementText)) {\r\n return;\r\n }\r\n $element.html(elementText + countElement);\r\n },\r\n _handleWriteReviewsClick: function() {\r\n var $clicker = $('#writeReviewClicker'),\r\n $firstReviewButton = $('.bv-write-review-label'),\r\n $clickerElement = $(\r\n ''\r\n );\r\n\r\n if ($firstReviewButton.length) {\r\n $clicker = $('#writeReviewClicker');\r\n\r\n $clickerElement.appendTo('#reviewsTab .bv-content-placeholder');\r\n $clicker.removeClass();\r\n $clicker.addClass(\r\n 'bv-write-review-label bv-text-link bv-focusable bv-submission-button bv-fake-visited jsHide'\r\n );\r\n }\r\n\r\n if ($clicker.length < 1 && $firstReviewButton.length < 1) {\r\n $clickerElement.appendTo('#reviewsTab .bv-write-review-container');\r\n }\r\n\r\n $('#writeReviewClicker').trigger('click');\r\n },\r\n _displayQACount: function(totalQuestionCount) {\r\n $('.sectionLabel#QA').append(\" \");\r\n\r\n if (page.isMobile()) {\r\n this._addCountToElement($('#qaTotalCount'), totalQuestionCount);\r\n }\r\n },\r\n _getQACount: function() {\r\n var productClassId = window.productClassData.id,\r\n bvQaApiUrl =\r\n window.smartPak.pageData.conversationsQuestionsApiUrl.replace(/&/g, '&') +\r\n productClassId +\r\n '&Limit=100';\r\n\r\n crossDomainAjax(\r\n bvQaApiUrl,\r\n function(data) {\r\n this._displayQACount(data.TotalResults);\r\n }.bind(this)\r\n );\r\n }\r\n};\r\n\r\nfunction executeXDomainRequest(url, successCallback) {\r\n var xdr = new window.XDomainRequest();\r\n\r\n xdr.onload = function() {\r\n var dom = new window.ActiveXObject('Microsoft.XMLDOM'),\r\n responseJson = $.parseJSON(xdr.responseText);\r\n\r\n dom.async = false;\r\n successCallback(responseJson);\r\n };\r\n\r\n xdr.onprogress = function() {};\r\n\r\n xdr.onerror = function() {\r\n window._result = false;\r\n };\r\n\r\n xdr.open('get', url);\r\n xdr.send();\r\n}\r\n\r\nfunction crossDomainAjax(url, successCallback) {\r\n var dfd = new $.Deferred(),\r\n success = $.isFunction(successCallback) ? successCallback : function() {};\r\n\r\n $.ajax({\r\n url: url,\r\n cache: true,\r\n dataType: 'json',\r\n type: 'GET',\r\n async: true,\r\n success: function(data) {\r\n success(data);\r\n dfd.resolve(data);\r\n },\r\n error: function() {\r\n if (typeof window.XDomainRequest !== 'undefined') {\r\n executeXDomainRequest(url, function(data) {\r\n success(data);\r\n dfd.resolve(data);\r\n });\r\n } else if (success) {\r\n success(null);\r\n }\r\n }\r\n });\r\n\r\n return dfd.promise();\r\n}\r\n\r\nexport default reviews;"],"names":["updateBVData","$numReviews","$","$numberOfReviews","find","numberOfReviews","length","attr","hasStars","this","_getReviewStars","_getReviewSummary","_bindEvents","removeClass","addClass","on","_handleWriteReviewsClick","bind","reviewNum","avgStars","text","formattedAvg","parseFloat","split","toFixed","num","_formatAvgStars","starNum","replace","imgPath","_displayStarsImage","reviewStr","parseInt","html","isNaN","src","alt","stars","path","starPath","$container","$reviews","content","_setRecommendPercent","percent","$recommended","_isPercentageViewable","_formatWithCommas","toString","_addCountToElement","$element","countVar","elementText","countElement","test","$clicker","$firstReviewButton","$clickerElement","appendTo","trigger","_displayQACount","totalQuestionCount","append","page","isMobile","_getQACount","url","successCallback","dfd","success","productClassId","window","productClassData","id","bvQaApiUrl","smartPak","pageData","conversationsQuestionsApiUrl","data","TotalResults","cache","dataType","type","async","resolve","error","XDomainRequest","xdr","onload","dom","ActiveXObject","responseJson","responseText","onprogress","onerror","_result","open","send","executeXDomainRequest","promise"],"sourceRoot":""}