Advertisement
Guest User

Untitled

a guest
Nov 20th, 2018
75
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
  1. function displayNewPriceForProducts(itemsWithDiscount, productIndividualSelector, savedAmountIndividual, productTotalSelector, savedAmountTotal) {
  2.       if (productTotalSelector) {
  3.         // 1. Находим на странице все элементы, содержащие total price для всех товаров в корзине
  4.         var elementsTotal = document.querySelectorAll(htmlMarkers.selectorNotCreated(productTotalSelector));
  5.         if (elementsTotal.length) {
  6.           lib.wrList(itemsWithDiscount).forEach(function (item) {
  7.             // 2. Прокручиваем в цикле список товаров (item), для которых нужно отобразить скидку
  8.             var minSteps = 99999;
  9.             var itemElementsTotal = [];
  10.             lib.wrList(elementsTotal).forEach(function (elTotal) {
  11.               // 3. Прокручиваем элементы total price
  12.               var parent = elTotal;
  13.               var prodLink = null;
  14.               var steps = 0;
  15.               while (parent.tagName !== 'BODY' && prodLink === null) {
  16.                 // 4. От элемента total price двигаемся вверх по DOM и считаем шаги
  17.                 // 5. В каждом узле ищем ссылку на товар item.url
  18.                 // 6. Элемент total price, для которого эта ссылка будет найдена за наименьшее
  19.                 //    к-во шагов - нужный нам элемент, содержащий total price текущего товара item
  20.                 //    Если будет найдено несколько элементов на одинаковом расстоянии от ссылки,
  21.                 //    они все будут обработаны одинаково.
  22.                 steps++;
  23.                 parent = parent.parentNode;
  24.                 prodLink = parent.querySelector('a[href="' + item.url + '"], a[href$="' + item.url + '"]');
  25.               }
  26.               if (prodLink) {
  27.                 if (steps < minSteps) {
  28.                   minSteps = steps;
  29.                   itemElementsTotal = [];
  30.                 }
  31.                 if (steps <= minSteps) {
  32.                   itemElementsTotal.push(elTotal);
  33.                 }
  34.               }
  35.             });
  36.             if (itemElementsTotal.length) {
  37.               lib.wrList(itemElementsTotal).forEach(function (elementTotal) {
  38.                 displayNewPrice(
  39.                     elementTotal,
  40.                     item.total,
  41.                     item.price * item.quantity,
  42.                     savedAmountTotal,
  43.                     'total',
  44.                     item
  45.                 );
  46.               });
  47.             }
  48.           });
  49.         }
  50.       }
  51.  
  52.       if (productIndividualSelector) {
  53.         // Делаем тоже самое для individual price
  54.         var elementsIndividual = document.querySelectorAll(htmlMarkers.selectorNotCreated(productIndividualSelector));
  55.         if (elementsIndividual.length) {
  56.           lib.wrList(itemsWithDiscount).forEach(function (item) {
  57.             var minSteps = 99999;
  58.             var itemElementsIndividual = [];
  59.             lib.wrList(elementsIndividual).forEach(function (elIndividual) {
  60.               var parent = elIndividual;
  61.               var prodLink = null;
  62.               var steps = 0;
  63.               while (parent.tagName !== 'BODY' && prodLink === null) {
  64.                 steps++;
  65.                 parent = parent.parentNode;
  66.                 prodLink = parent.querySelector('a[href="' + item.url + '"], a[href$="' + item.url + '"]');
  67.               }
  68.               if (prodLink) {
  69.                 if (steps < minSteps) {
  70.                   minSteps = steps;
  71.                   itemElementsIndividual = [];
  72.                 }
  73.                 if (steps <= minSteps) {
  74.                   itemElementsIndividual.push(elIndividual);
  75.                 }
  76.               }
  77.             });
  78.             if (itemElementsIndividual.length) {
  79.               lib.wrList(itemElementsIndividual).forEach(function (elementIndividual) {
  80.                 displayNewPrice(
  81.                     elementIndividual,
  82.                     Math.round((item.total / item.quantity) * 100) / 100,
  83.                     item.price,
  84.                     savedAmountIndividual,
  85.                     'individual',
  86.                     item
  87.                 );
  88.               });
  89.             }
  90.           });
  91.         }
  92.       }
  93.     }
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement