Advertisement
NikolayBezay

Pelephone Carousel

Nov 14th, 2023
40
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
text 6.99 KB | None | 0 0
  1. <style>
  2. #adoric_smartbox_d8ca0d21bec2b .slider-item .title-text,
  3. #adoric_smartbox_d8ca0d21bec2b .slider-item .price-text,
  4. #adoric_smartbox_d8ca0d21bec2b .slider-item .element-image,
  5. #adoric_smartbox_d8ca0d21bec2b .slider-item .element-button {}
  6.  
  7. #adoric_smartbox_d8ca0d21bec2b .slider-item .price-text {}
  8.  
  9. #adoric_smartbox_d8ca0d21bec2b .adoric-slider-item-inner img {
  10. -webkit-border-radius: 0px !important;
  11. -moz-border-radius: 0px !important;
  12. border-radius: 0px !important;
  13. -o-object-fit: contain !important;
  14. object-fit: contain !important;
  15. }
  16. </style>
  17. <script>
  18. (async function() {
  19. var campaign = document.querySelector('.' + self.identifier + '.__ADORIC__ [tabindex]');
  20. var parser = new DOMParser();
  21. var leaveOnlyOneItemIfTitleIs = ['iphone', 'S23'];
  22. try {
  23. var url = 'https://feeds.datafeedwatch.com/89455/a1072d09c3dc02f20eeb154856c90087b240ca9f.xml';
  24. var response = await fetch(url);
  25. response = await response.text();
  26. } catch (error) {
  27. console.info(error);
  28. closeCurrentCampaign()
  29. }
  30. var feedItems = parser.parseFromString(response, 'text/html').querySelectorAll('item');
  31. if (feedItems.length === 0) {
  32. closeCurrentCampaign();
  33. }
  34. console.log('This is tablet device');
  35. if (self.device === 'tablet') {
  36. var styleElement = document.createElement('style');
  37. styleElement.classList.add('adoricCustomStyleTablet');
  38. styleElement.textContent = '@media(max-width: 1000px){ div.' + self.identifier + '>div{ width: auto !important; } div.' + self.identifier + ' .adoric_element.element-text, div.' + self.identifier + ' .adoric_element.element-slider { left: 50% !important; transform: translateX(-50%) scale(0.8, 0.8) !important; } }';
  39. document.head.append(styleElement);
  40. }
  41. var productsList = Array.from(feedItems).reduce(function(acc, item) {
  42. acc.push({
  43. img: item.getElementsByTagName('g:image_link')[0].textContent,
  44. title: item.getElementsByTagName('g:title')[0].textContent,
  45. price: item.getElementsByTagName('g:price')[0].textContent,
  46. link: item.getElementsByTagName('g:link')[0].textContent,
  47. item_group_id: item.getElementsByTagName('g:item_group_id')[0].textContent,
  48. item_id: item.getElementsByTagName('g:id')[0].textContent
  49. });
  50. return acc;
  51. }, []); /* sort items in order of best sellers(see audiance custom code) */
  52. var bestSellers = [];
  53. for (var item of window.adoricBestSellers) {
  54. for (var itemFromFeed of productsList) {
  55. if (item === itemFromFeed.item_id) {
  56. bestSellers.push(itemFromFeed);
  57. break;
  58. }
  59. }
  60. } /* Delete all duplicates from the list(leaveOnlyOneItemIfTitle) */
  61. bestSellers = leaveOneItemWithSpecificTitle(bestSellers, leaveOnlyOneItemIfTitleIs); /* leave only one item with unique item_group_id */
  62. bestSellers = leaveProductWithUniqueId(bestSellers);
  63. fillDynamicContent(bestSellers);
  64.  
  65. function fillDynamicContent(dataArray) {
  66. var carousel = campaign.querySelector('.slider-content');
  67. var carouselItems = carousel.querySelectorAll('.slider-item');
  68. for (var i = 1; i < carouselItems.length; i++) {
  69. /* change content for cloned slider */
  70. if (i == carouselItems.length - 1) {
  71. fillOneCarouselItem(0, i - 1);
  72. }
  73. fillOneCarouselItem(i, i - 1);
  74. }
  75.  
  76. function fillOneCarouselItem(carouselItem, index) {
  77. carouselItems[carouselItem].querySelector('img').src = dataArray[index]['img'];
  78. carouselItems[carouselItem].querySelector('img').setAttribute('onclick', `location.href="${dataArray[index]['link']}"`);
  79. carouselItems[carouselItem].querySelector('.title-text span').textContent = dataArray[index]['title'];
  80. carouselItems[carouselItem].querySelector('.price-text span').textContent = parseFloat(dataArray[index]['price']) + ' ₪';
  81. carouselItems[carouselItem].querySelector('button').setAttribute('onclick', `location.href="${dataArray[index]['link']}"`);
  82. }
  83. }
  84.  
  85. function closeCurrentCampaign() {
  86. adoric.lightboxes.forEach(function(item) {
  87. if (item.isShowing && item.options.campaignId === self.campaignId) {
  88. item.close(4);
  89. }
  90. });
  91. }
  92.  
  93. function leaveOneItemWithSpecificTitle(arr, productTitles) {
  94. productTitles = productTitles.map(function(item) {
  95. return item.toLowerCase();
  96. });
  97. var resultArray = [];
  98. for (var title of productTitles) {
  99. var itemBestPrice = 0;
  100. var itemToAdd;
  101. for (var item in arr) {
  102. var isTitleFromTheList = arr[item].title.toLowerCase().indexOf(title) !== -1;
  103. var itemPrice = parseFloat(arr[item].price);
  104. if (!isTitleFromTheList) {
  105. continue;
  106. }
  107. if (itemBestPrice === 0 || itemBestPrice > itemPrice) {
  108. itemBestPrice = itemPrice;
  109. itemToAdd = arr[item];
  110. }
  111. }
  112. resultArray.push(itemToAdd);
  113. }
  114. for (var item in arr) {
  115. var needToExcludeItem = productTitles.find(function(title) {
  116. if (arr[item].title.toLowerCase().indexOf(title) !== -1) {
  117. return true;
  118. }
  119. });
  120. if (needToExcludeItem) {
  121. continue;
  122. }
  123. resultArray.push(arr[item]);
  124. }
  125. return resultArray;
  126. }
  127.  
  128. function leaveProductWithUniqueId(arr) {
  129. var resultArray = [];
  130. for (var item in arr) {
  131. if (!arr[item]) {
  132. continue;
  133. }
  134. var currentGroupId = arr[item].item_group_id;
  135. var buffer = arr.filter(function(item, index) {
  136. if (!item) {
  137. return false;
  138. }
  139. if (item.item_group_id === currentGroupId) {
  140. arr[index] = undefined;
  141. return true;
  142. }
  143. });
  144. buffer = buffer.sort(function(a, b) {
  145. return parseFloat(a.price) - parseFloat(b.price);
  146. });
  147. resultArray.push(buffer[0]);
  148. }
  149. return resultArray;
  150. }
  151. })()
  152. </script>
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement