Advertisement
Webotvurci

curapil.cz - JS

May 24th, 2024
474
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
  1. if (dataLayer[0]["shoptet"]["pageType"] == "productDetail") {
  2.   let product_id = dataLayer[0]["shoptet"]["product"]["guid"];
  3.   const eshop_id = dataLayer[0]["shoptet"]["projectId"];
  4.  
  5.   fetch("https://shoptet.webotvurci.cz/eshop-endpoints/" + eshop_id + "/product-variants/setting-hash")
  6.     .then((response) => response.json())
  7.     .then((response) => {
  8.       var product_connections_setting = "https://cdn.myshoptet.com/usr/webotvurci.myshoptet.com/user/documents/product-variants/" + eshop_id + "/eshopSetting.json?" + response;
  9.       fetch(product_connections_setting)
  10.         .then((response) => response.json())
  11.         .then((json) => {
  12.           let products = json.products[product_id];
  13.           if (products !== undefined) {
  14.             products.forEach((element) => {
  15.               let product_config_id = element;
  16.               let product_config_data = json.configs[product_config_id];
  17.               WtShowProductInterconnectionsAddonCisBox(product_config_data);
  18.             });
  19.           }
  20.  
  21.         });
  22.     })
  23.     .catch((error) => {
  24.       console.log(error);
  25.     });
  26. }
  27.  
  28. function formatNumber(number) {
  29.  
  30.   const fixedNumber = number.toFixed(2);
  31.  
  32.   const formatter = new Intl.NumberFormat('cs-CZ', {
  33.     minimumFractionDigits: 2,
  34.     maximumFractionDigits: 2,
  35.   });
  36.  
  37.   return formatter.format(fixedNumber).replace('.', ',');
  38. }
  39.  
  40. function najdiCenuBezDPH(identifier) {
  41.  
  42.   const element = document.querySelector(`[data-micro-identifier="${identifier}"]`);
  43.  
  44.   if (!element) {
  45.     console.log('Element s daným identifikátorem nebyl nalezen.');
  46.     return null;
  47.   }
  48.  
  49.   const cenaBezDPHElement = element.querySelector('.price-additional');
  50.  
  51.   if (!cenaBezDPHElement) {
  52.     console.log('Element s cenou bez DPH nebyl nalezen.');
  53.     return null;
  54.   }
  55.  
  56.   var rawPriceText = cenaBezDPHElement.textContent.trim();
  57.  
  58.   var priceText = rawPriceText.replace(/[^\d,]/g, '').trim();
  59.  
  60.   var formattedPrice = priceText.replace(',', '.');
  61.  
  62.   return formattedPrice;
  63. }
  64.  
  65. function WtShowProductInterconnectionsAddonCisBox(product_config_data) {
  66.   var productData = product_config_data;
  67.  
  68.   if (dataLayer[0]["shoptet"]["pageType"] == "productDetail" && typeof productData !== 'undefined') {
  69.  
  70.     var container;
  71.     container = document.querySelector(".p-detail-info");
  72.  
  73.     if (productData.hasOwnDesign === true && productData.type === "list") {
  74.  
  75.       var customSelectBox = document.createElement('div');
  76.       customSelectBox.setAttribute('class', `c-product-interconnection-detail-params--custom is-template--${shoptet.design.template.name}`);
  77.  
  78.       var itemsContainer = document.createElement('table');
  79.       itemsContainer.setAttribute('class', 'c-product-interconnection-custom--image-select-list-dropdown');
  80.       // Vytvoření záhlaví tabulky
  81.       var headerRow = document.createElement('tr');
  82.       var headers = ["Název produktu", "Počet kusů", "Cena bez DPH", "Cena za kus", "Odkaz"];
  83.       headers.forEach(headerText => {
  84.         var header = document.createElement('th');
  85.         header.textContent = headerText;
  86.         headerRow.appendChild(header);
  87.       });
  88.       itemsContainer.appendChild(headerRow);
  89.       customSelectBox.appendChild(itemsContainer);
  90.  
  91.       let product_id = dataLayer[0]["shoptet"]["product"]["guid"];
  92.  
  93.       for (var key in productData.productsSetting) {
  94.         var item = document.createElement('tr');
  95.         item.setAttribute('class', 'c-product-interconnection-custom--image-select-list-dropdown__item');
  96.         item.dataset.link = productData.productsSetting[key].link;
  97.  
  98.         var name = productData.productsSetting[key].label;
  99.         var link = productData.productsSetting[key].link;
  100.  
  101.         var velikostBaleni;
  102.         var pocetKusu;
  103.  
  104.         if (name === "1ks") {
  105.           velikostBaleni = name;
  106.           pocetKusu = 1;
  107.         } else {
  108.           const casti = name.split("-");
  109.           velikostBaleni = casti[0].trim();
  110.  
  111.           pocetKusu = parseInt(casti[1].trim().replace('ks', ''), 10);
  112.         }
  113.  
  114.         var printPrice = "";
  115.         var printPricePerPiece = "";
  116.         if (key !== product_id) {
  117.           var cenaBezDPH = parseFloat(najdiCenuBezDPH(key));
  118.           printPricePerPiece = formatNumber(cenaBezDPH / parseFloat(pocetKusu));
  119.           printPrice = formatNumber(cenaBezDPH);
  120.  
  121.         } else {
  122.  
  123.           var priceElement = document.querySelector('.price-additional');
  124.           var rawPriceText = priceElement.textContent.trim();
  125.           var priceText = rawPriceText.replace(/[^\d,]/g, '').trim();
  126.           var formattedPrice = priceText.replace(',', '.');
  127.           var priceFloat = parseFloat(formattedPrice);
  128.           var pricePerPiece = priceFloat / pocetKusu;
  129.           printPrice = formatNumber(priceFloat);
  130.           printPricePerPiece = formatNumber(pricePerPiece);
  131.  
  132.         }
  133.  
  134.         item.innerHTML = `
  135.   <td data-label="Název produktu">${velikostBaleni}</td>
  136.   <td data-label="Počet kusů">${pocetKusu} Ks</td>
  137.   <td data-label="Cena bez DPH">${printPrice}</td>
  138.   <td data-label="Cena za kus">${printPricePerPiece}</td>
  139.   <td data-label="Odkaz"><a href="${link}">Zobrazit</a></td>
  140. `;
  141.  
  142.  
  143.         itemsContainer.appendChild(item);
  144.  
  145.       }
  146.  
  147.       if (container) {
  148.         container.parentNode.insertBefore(customSelectBox, container);
  149.       }
  150.     }
  151.   }
  152. }
  153.  
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement