Not a member of Pastebin yet?
Sign Up,
it unlocks many cool features!
- document.addEventListener('DOMContentLoaded', function() {
- if (!window.dataLayer || !window.dataLayer[0] || !window.dataLayer[0].shoptet || !window.dataLayer[0].shoptet.product || !window.dataLayer[0].shoptet.product.guid) {
- return;
- }
- const productId = window.dataLayer[0].shoptet.product.guid;
- const eshopId = window.dataLayer[0].shoptet.projectId;
- let customButtonsData = null;
- fetch(`https://shoptet.webotvurci.cz/eshop-endpoints/${eshopId}/product-variants/setting-hash`)
- .then(response => response.json())
- .then(response => {
- const settingUrl = `https://cdn.myshoptet.com/usr/webotvurci.myshoptet.com/user/documents/product-variants/${eshopId}/eshopSetting.json?${response}`;
- return fetch(settingUrl);
- })
- .then(response => response.json())
- .then(json => {
- customButtonsData = parseCustomButtonsFromNotes();
- const products = json.products[productId];
- if (products) {
- products.forEach(configId => {
- const configData = json.configs[configId];
- renderButtons(configData);
- });
- }
- })
- .catch(error => console.error('Error:', error));
- function renderButtons(configData) {
- const container = document.querySelector('.detail-parameters');
- if (!container) return;
- const existingRow = Array.from(container.querySelectorAll('tr')).find(row =>
- row.querySelector('th .row-header-label').textContent.trim().replace(':', '') === configData.title
- );
- let row, th, td;
- if (existingRow) {
- row = existingRow;
- th = row.querySelector('th');
- td = row.querySelector('td');
- td.innerHTML = '';
- } else {
- row = document.createElement('tr');
- th = document.createElement('th');
- th.innerHTML = `<span class="row-header-label">${configData.title}<span class="row-header-label-colon">:</span></span>`;
- td = document.createElement('td');
- row.appendChild(th);
- row.appendChild(td);
- container.appendChild(row);
- }
- const buttonContainer = document.createElement('div');
- buttonContainer.className = 'variant-buttons';
- let buttons = [];
- for (const [key, value] of Object.entries(configData.productsSetting)) {
- const button = document.createElement('button');
- button.className = 'variant-button';
- button.textContent = value.number || value.label;
- button.dataset.link = value.link;
- if (key === productId) {
- button.classList.add('active');
- } else {
- button.classList.add('clickable');
- button.addEventListener('click', function() {
- window.location.href = this.dataset.link;
- });
- }
- buttons.push(button);
- }
- if (customButtonsData && customButtonsData[configData.title]) {
- customButtonsData[configData.title].forEach(value => {
- const button = document.createElement('button');
- button.className = 'variant-button disable';
- button.textContent = value;
- buttons.push(button);
- });
- }
- buttons.sort((a, b) => {
- const aValue = parseFloat(a.textContent.replace(/[^\d,]/g, '').replace(',', '.'));
- const bValue = parseFloat(b.textContent.replace(/[^\d,]/g, '').replace(',', '.'));
- return aValue - bValue;
- });
- buttons.forEach(button => buttonContainer.appendChild(button));
- td.appendChild(buttonContainer);
- }
- function parseCustomButtonsFromNotes() {
- const container = document.querySelector('.extended-description .detail-parameters');
- if (!container) return null;
- const customButtonsRow = Array.from(container.querySelectorAll('tr')).find(row => {
- const label = row.querySelector('th .row-header-label');
- return label && label.textContent.trim().toLowerCase().startsWith('wt_custombuttons');
- });
- if (!customButtonsRow) return null;
- const customButtonsData = customButtonsRow.querySelector('td').textContent.trim();
- try {
- const unescapedData = customButtonsData.replace(/"/g, '"');
- const parsedData = JSON.parse(unescapedData);
- customButtonsRow.style.display = 'none';
- return parsedData;
- } catch (e) {
- console.error('Error parsing custom buttons data:', e);
- return null;
- }
- }
- });
Advertisement
Add Comment
Please, Sign In to add comment