{"version":3,"sources":["webpack:///C:/GitHub/Framework8_Web/Framework8/Framework8/Front/App/Modules/Shared/Comparator/import/comparator.js"],"names":["angular","module","factory","$rootScope","$timeout","$location","$uibPosition","CompareService","AppService","WindowEventsService","init","ctrl","scope","element","scrollInit","imgHeight","$imgs","$container","unwatch","unwatch2","updateProductsData","products","get","slice","maxItems","properties","reviews","count","length","showLoader","tmp","forEach","idProduct","getProduct","then","response","status","remove","isCompositionType","CompositionType","push","async","messages","getTranslate","len2","j","i","tmpReviews","product","props","Properties","prop","IsInTable","Designation","k","PropertyType","Value","Yes","No","value","split","join","ReviewsInfo","Count","l","extend","roundAverage","Math","round","Average","IDProduct","designation","checkScroll","opened","toggle","initProducts","$broadcast","setProperties","catch","error","find","removeAttr","eq","height","on","scroll","scrolltop","scrollTop","css","width","$body","$","document","body","scrollbarPadding","addClass","heightOverflow","scrollbarWidth","paddingRight","right","removeClass","resize","device","size","noScroll","listen","getNbProducts","isDefined","search","open","$onDestroy","off","$on","empty","event","stopPropagation","id"],"mappings":"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","file":"comparator.7c1907477e156dfcd464.js","sourcesContent":["import 'Modules/Shared/Comparator/import/comparator.less';\r\n\r\nexport default angular\r\n .module('import.component.comparator', [])\r\n\r\n /* @ngInject */\r\n .factory('ImportComparator', function ($rootScope, $timeout, $location, $uibPosition, CompareService, AppService, WindowEventsService) {\r\n const service = {\r\n init\r\n };\r\n return service;\r\n\r\n ////////////\r\n\r\n function init(ctrl, scope, element) {\r\n let unwatch = null;\r\n let unwatch2 = null;\r\n let scrollInit;\r\n let imgHeight;\r\n let $imgs;\r\n let $container;\r\n\r\n WindowEventsService.listen(true, 'resize', resize, 500);\r\n resize();\r\n\r\n $timeout(() => {\r\n ctrl.count = CompareService.getNbProducts();\r\n if (angular.isDefined($location.search().open)) {\r\n toggle();\r\n }\r\n }, 3000);\r\n\r\n ctrl.$onDestroy = () => {\r\n WindowEventsService.listen(false, 'resize', resize);\r\n if ($container) {\r\n $container.off();\r\n }\r\n $imgs = null;\r\n $container = null;\r\n if (unwatch !== null) {\r\n unwatch();\r\n }\r\n if (unwatch2 !== null) {\r\n unwatch2();\r\n }\r\n $(document.body).removeClass('compare-open');\r\n };\r\n\r\n unwatch = scope.$on('openComparator', () => {\r\n ctrl.toggle();\r\n });\r\n\r\n unwatch2 = $rootScope.$on('comparatorCheckboxUpdate', () => {\r\n ctrl.count = CompareService.getNbProducts();\r\n });\r\n\r\n ctrl.empty = event => {\r\n event.stopPropagation();\r\n if (ctrl.opened) {\r\n toggle();\r\n }\r\n CompareService.empty();\r\n updateProductsData();\r\n $rootScope.$broadcast('comparatorUpdate');\r\n };\r\n\r\n ctrl.remove = id => {\r\n CompareService.remove(id);\r\n updateProductsData();\r\n };\r\n\r\n ctrl.toggle = () => {\r\n if (ctrl.count < 2) return;\r\n toggle();\r\n };\r\n\r\n // Functions\r\n\r\n function updateProductsData() {\r\n const products = CompareService.get().slice(0, ctrl.maxItems);\r\n ctrl.properties = {};\r\n ctrl.reviews = {};\r\n ctrl.products = [];\r\n ctrl.count = products.length;\r\n if (!ctrl.count) return;\r\n\r\n ctrl.showLoader = true;\r\n\r\n const tmp = [];\r\n products.forEach(idProduct => {\r\n CompareService.getProduct(idProduct)\r\n .then(response => {\r\n if (response.status === 404) {\r\n CompareService.remove(idProduct);\r\n ctrl.count--;\r\n if (ctrl.count === 0) {\r\n ctrl.showLoader = false;\r\n }\r\n return;\r\n }\r\n response.isCompositionType = response.CompositionType !== 0 ? true : false;\r\n tmp.push(response);\r\n if (tmp.length === ctrl.count) {\r\n setProperties(tmp);\r\n }\r\n ctrl.showLoader = false;\r\n })\r\n .catch(error => {\r\n console.error(error);\r\n });\r\n });\r\n }\r\n\r\n async function setProperties(products) {\r\n const { messages } = await AppService.getTranslate();\r\n let len2;\r\n let i = 0;\r\n let j;\r\n\r\n const tmp = {};\r\n const tmpReviews = [];\r\n\r\n products.forEach(product => {\r\n const props = product.Properties;\r\n len2 = props.length;\r\n for (j = 0; j < len2; j++) {\r\n const prop = props[j];\r\n if (prop.IsInTable) {\r\n if (!tmp[prop.Designation]) {\r\n tmp[prop.Designation] = [];\r\n for (let k = 0; k < ctrl.count; k++) {\r\n tmp[prop.Designation][k] = prop.PropertyType === 0 || prop.Value === messages.Yes ? messages.No : '';\r\n }\r\n }\r\n let value = prop.PropertyType === 0 ? messages.Yes : prop.Value;\r\n value = prop.PropertyType === 6 ? prop.Value.split(' | ').join(', ') : value;\r\n tmp[prop.Designation][i] = value;\r\n }\r\n }\r\n\r\n // Avis\r\n if (product.ReviewsInfo.Count > 0) {\r\n if (!tmpReviews.length) {\r\n for (let l = 0; l < ctrl.count; l++) {\r\n tmpReviews.push({});\r\n }\r\n }\r\n tmpReviews[i] = angular.extend({}, product.ReviewsInfo, {\r\n roundAverage: Math.round(product.ReviewsInfo.Average),\r\n idProduct: product.IDProduct,\r\n designation: product.Designation\r\n });\r\n }\r\n\r\n i++;\r\n });\r\n ctrl.properties = tmp;\r\n ctrl.reviews = tmpReviews;\r\n ctrl.products = products;\r\n checkScroll();\r\n if (ctrl.opened) {\r\n if (ctrl.count < 2) {\r\n toggle();\r\n } else {\r\n $timeout(initProducts);\r\n }\r\n }\r\n\r\n $rootScope.$broadcast('comparatorUpdate');\r\n }\r\n\r\n function initProducts() {\r\n $container = element.find('.products-table');\r\n $imgs = element.find('.table-header').find('.visual-container').removeAttr('style');\r\n imgHeight = $imgs.eq(0).height();\r\n\r\n if (!scrollInit) {\r\n scrollInit = true;\r\n $container.on('scroll', scroll);\r\n }\r\n }\r\n\r\n function scroll() {\r\n const scrolltop = $container.scrollTop();\r\n if (scrolltop > imgHeight) {\r\n $imgs.css({\r\n width: 0\r\n });\r\n } else if (scrolltop > 0) {\r\n $imgs.css({\r\n width: imgHeight - scrolltop\r\n });\r\n } else {\r\n $imgs.css({\r\n width: imgHeight\r\n });\r\n }\r\n }\r\n\r\n function toggle() {\r\n ctrl.opened = !ctrl.opened;\r\n\r\n CompareService.toggle(ctrl.opened);\r\n\r\n const $body = $(document.body);\r\n if (ctrl.opened) {\r\n const scrollbarPadding = $uibPosition.scrollbarPadding($body.addClass('compare-open'));\r\n if (scrollbarPadding.heightOverflow && scrollbarPadding.scrollbarWidth) {\r\n $body.addClass('compare-open').css({ paddingRight: `${scrollbarPadding.right}px` });\r\n element.find('.table-header').css('width', `calc(100% - ${scrollbarPadding.right}px`);\r\n }\r\n updateProductsData();\r\n } else {\r\n $body.removeClass('compare-open').css({ paddingRight: '0' });\r\n }\r\n checkScroll();\r\n }\r\n\r\n function resize() {\r\n switch (ctrl.device.size) {\r\n case 'lg':\r\n ctrl.maxItems = 6;\r\n break;\r\n case 'md':\r\n ctrl.maxItems = 5;\r\n break;\r\n case 'sm':\r\n ctrl.maxItems = 4;\r\n break;\r\n case 'xs':\r\n ctrl.maxItems = 3;\r\n break;\r\n case 'xxs':\r\n ctrl.maxItems = 2;\r\n break;\r\n }\r\n CompareService.maxItems = ctrl.maxItems;\r\n updateProductsData();\r\n checkScroll();\r\n }\r\n\r\n function checkScroll() {\r\n $timeout(() => {\r\n ctrl.noScroll = element.find('.table-products').height() < element.find('.products-table').height();\r\n });\r\n }\r\n }\r\n });\r\n"],"sourceRoot":""}