From 94ffe5104bb0e66a8877ef8fc591c85c3d24bcab Mon Sep 17 00:00:00 2001 From: pgaca Date: Wed, 15 Oct 2025 11:07:38 +0200 Subject: [PATCH] Delete 2funkcje.js --- 2funkcje.js | 321 ---------------------------------------------------- 1 file changed, 321 deletions(-) delete mode 100644 2funkcje.js diff --git a/2funkcje.js b/2funkcje.js deleted file mode 100644 index a75c734..0000000 --- a/2funkcje.js +++ /dev/null @@ -1,321 +0,0 @@ -//////////////////////////////////////////////////////////////////////////\\\\\\\\\\\\ -// IDOSELL omnibus details - -// omnibusDetailsTxt - nadpisać na własny obiekt - -app_shop.fn.idmGetOmnibusDetails = (options) => { - const { - productData, sizeId, priceType = app_shop.vars.priceType, - } = options || {}; - if (!productData) return false; - const sizeData = productData.sizes.find((size) => size.id === sizeId) || productData; - if (!sizeData?.price) return false; - const classes = { - add: [], - remove: ['--omnibus', '--omnibus-short', '--omnibus-code', '--omnibus-code-short', '--omnibus-new-price', '--omnibus-higher'], - }; - const activeLabel = {}; - - const omnibusPrice = sizeData.price?.omnibusPriceDetails?.unit?.[priceType]?.formatted || sizeData.price.omnibusPrice[priceType]?.formatted; - if (!omnibusPrice) { - return { - classes, - }; - } - // Omnibus - classes.add.push('--omnibus'); - classes.remove = classes.remove.filter((item) => item !== '--omnibus'); - - const sellBy = productData?.unit?.sellBy; - - const unitMaxPrice = sizeData?.price?.unit?.[priceType]?.formatted && sizeData.price.max?.[priceType]?.value ? format_price(parseFloat(sizeData.price.max?.[priceType]?.value) * parseFloat(sellBy), { - mask: app_shop.vars.currency_format, - currency: app_shop.vars?.currency?.symbol, - currency_space: app_shop.vars.currency_space, - currency_before_price: app_shop.vars.currency_before_value, - }) : false; - - const maxPrice = unitMaxPrice || sizeData.price.max?.[priceType]?.formatted; - // Skrócona wersja omnibusa - if (!maxPrice || maxPrice === omnibusPrice) { - classes.add.push('--omnibus-short'); - classes.remove = classes.remove.filter((item) => item !== '--omnibus-short'); - } - // Aktywny kod rabatowy - if (app_shop.vars.omnibus?.rebateCodeActivate && sizeData.price?.rebateCodeActive) { - classes.add.push('--omnibus-code'); - activeLabel.rebateCodeActive = `${idmHotspotTextObject["Kod rabatowy"]}`; - classes.remove = classes.remove.filter((item) => item !== '--omnibus-code'); - } - // Skrócona wersja omnibusa, gdy aktywny kod rabatowy - const beforeRebatePrice = sizeData.price.beforeRebateDetails?.unit?.[priceType]?.formatted || sizeData.price.beforeRebate[priceType]?.formatted; - if (app_shop.vars.omnibus?.rebateCodeActivate && beforeRebatePrice === omnibusPrice && sizeData.price?.rebateCodeActive) { - classes.add.push('--omnibus-code-short'); - classes.remove = classes.remove.filter((item) => item !== '--omnibus-code-short'); - } - // Nadchodząca cena - const newDate = sizeData.price.omnibusPriceDetails?.newPriceEffectiveUntil?.formatted; - if (newDate && maxPrice) { - classes.add.push('--omnibus-new-price'); - classes.remove = classes.remove.filter((item) => item !== '--omnibus-new-price'); - } - // Cena omnibusa wyższa niż cena sprzedaży - const higher = sizeData.price.omnibusPriceDetails?.omnibusPriceIsHigherThanSellingPrice; - if (higher) { - classes.add.push('--omnibus-higher'); - classes.remove = classes.remove.filter((item) => item !== '--omnibus-higher'); - } - // label okazja - if ((!higher || newDate) && !activeLabel?.rebateCodeActive) { - activeLabel.bargain = `${idmHotspotTextObject["Okazja"]}`; - } - // label promocja - if (Object.keys(activeLabel)?.length === 0) { - activeLabel.bargain = `${idmHotspotTextObject["Promocja"]}`; - } - - // labele zones - if(productData.zones.find(zone => zone ==="bestseller")) activeLabel.bestseller = `${idmHotspotTextObject["Bestseller"]}`; - if(productData.zones.find(zone => zone ==="news")) activeLabel.news = `${idmHotspotTextObject["Nowość"]}`; - - - - let omnibusPercentSign = ''; - if (higher) { - omnibusPercentSign = '-'; - } else if (sizeData.price.omnibusPriceDetails?.youSavePercent !== 0) { - omnibusPercentSign = '+'; - } - const omnibusPercent = `${omnibusPercentSign}${sizeData.price.omnibusPriceDetails?.youSavePercent}%`; - const omnibus = { - price: omnibusPrice, - visible: true, - percent: omnibusPercent, - html: `${idmHotspotTextObject['Najniższa cena produktu w okresie 30 dni przed wprowadzeniem obniżki']}: ${omnibusPrice}${omnibusPercent}`, - }; - - const max = (maxPrice) ? { - max: { - price: maxPrice, - visible: true, - percent: `-${sizeData.price.youSavePercent}%`, - html: `${idmHotspotTextObject['Cena regularna']}: - ${maxPrice}-${sizeData.price.youSavePercent}%`, - }, - } : {}; - - const beforeRebate = (beforeRebatePrice) ? { - beforeRebate: { - price: beforeRebatePrice, - visible: !!classes.add.includes('--omnibus-code'), - percent: `-${sizeData.price.beforeRebateDetails?.youSavePercent}%`, - html: `${idmHotspotTextObject['Cena bez kodu']}: - ${beforeRebatePrice} - -${sizeData.price.beforeRebateDetails?.youSavePercent}%`, - }, - } : {}; - - const newPriceEffectiveUntil = (newDate) ? { - newPriceEffectiveUntil: { - date: newDate, - price: maxPrice, - visible: !!classes.add.includes('--omnibus-new-price'), - html: `${idmHotspotTextObject['Cena nadchodząca od']} - ${newDate}: - ${maxPrice}`, - }, - } : {}; - - - return { - classes, - omnibus, - ...max, - ...beforeRebate, - ...newPriceEffectiveUntil, - activeLabel, - }; -}; - -////////////////////////////////////////////////////////////////////////// -// EVENTY -// dodawanie do koszyka -async function idmHandleAddToBasket(e){ - const formEl = e.target.closest("form.add_to_basket"); - if(!formEl) return; - try{ - // pobieranie danych i elementów - formEl.classList.add("--loading") - const buttonEl = formEl.querySelector(".add_to_basket__button"); - e.preventDefault(); - - const id = formEl.querySelector("input[name='product']")?.value; - const size = formEl.querySelector("input[type='hidden'][name='size']")?.value; - const number = formEl.querySelector("input[name='number']")?.value; - - // dodanie do koszyka - const res = await fetch(`/graphql/v1/`, { - method: "POST", - headers: { - "Content-Type": "application/json", - }, - body: IDM_HOTSPOT_ADD_TO_BASKET(id, size, number) - }); - const data = await res.json(); - - // Błąd - if(data?.data?.addProductsToBasket?.status !== "success") throw new Error(data); - else{ - // Obsługiwanie sukcesu - app_shop.graphql.trackingEvents(res); - buttonEl.classList.add("--success"); - - // Dodawanie do koszyka na stronie basketedit.php będzie wymagał innego indywidualnego kodu!!!!! - buttonEl.innerHTML = `${buttonEl.dataset.success}`; - setTimeout(()=>{ - buttonEl.innerHTML = `${buttonEl.dataset.text}`; - app_shop.fn?.menu_basket_cache?.(); - buttonEl.classList.remove("--success"); - }, 3000); - } - }catch(err){ - console.error(err); - Alertek.Error(idmHotspotTextObject["Coś poszło nie tak podczas dodawania do koszyka. Spróbuj ponownie lub odśwież stronę"]); - buttonEl.innerHTML = `${buttonEl.dataset.error}`; - buttonEl.classList.add("--error") - setTimeout(()=>{ - buttonEl.classList.remove("--error") - buttonEl.innerHTML = `${buttonEl.dataset.text}`; - }, 3000); - }finally{ - formEl.classList.remove("--loading") - } -} - -///qty -const idmRangeMaxAlert = (max)=> Alertek.Error(`${idmHotspotTextObject["Maksymalna liczba sztuk tego towaru które możesz dodać do koszyka to:"]} ${max}`) -const idmRangeMinAlert = (min)=> Alertek.Error(`${idmHotspotTextObject["Minimalna liczba sztuk tego towaru które możesz dodać do koszyka to:"]} ${min}`) - -function idmQuantityButtonClick(e){ - if(e.target.classList.contains("idm-products-banner__qty-input")) return e.target.select(); - const wrapper = e.target.closest(".idm-products-banner__qty"); - - const input = wrapper.querySelector(".idm-products-banner__qty-input"); - const step = parseFloat(wrapper.dataset.sellBy || "1"); - const precision = parseInt(wrapper.dataset.precision || "0"); - const max = parseFloat(wrapper.dataset.max || "999999"); - let current = parseFloat(input.value) || 0; - - if (e.target.classList.contains("idm-products-banner__qty-increase")) { - current += step; - if (current > max){ - current = max; - idmRangeMaxAlert(max) - } - } else if (e.target.classList.contains("idm-products-banner__qty-decrease")) { - current -= step; - if (current < step){ - current = step; - idmRangeMinAlert(step) - } - } - input.value = current.toFixed(precision); -} -function idmQuantityInputChange(e){ - if(e.target.value > +e.target.max){ - idmRangeMaxAlert(e.target.max) - e.target.value = +e.target.max - } - if(e.target.value < +e.target.min){ - idmRangeMinAlert(e.target.min) - e.target.value = +e.target.min; - } -} - -////////////////////////////////////////////// -// DANE -// dwie funkcje zamiast jednej -async function idmGetHotspotData(query, graphFn){ - try{ - const res = await fetch(`/graphql/v1/`, { - method: "POST", - headers: { - "Content-Type": "application/json", - }, - body: graphFn ? graphFn(query) : IDM_PRODUCTS_GQL(query) - }); - const data = await res.json(); - const products = graphFn === IDM_HOTSPOTS_GQL ? data?.hotspots?.products : data?.data?.products?.products; - if(!products) throw new Error(idmHotspotTextObject["Nie znaleziono produktów"]); - - console.log(data); - return products; - }catch(err){ - console.error(idmHotspotTextObject["Błąd przy pobieraniu danych"], err); - return null; - } -} - - -function idmGetQueryData({ - productsID, - productsMenu, - hotspotsType -}){ - let graphFn, query; - - if(productsID){ - graphFn = IDM_PRODUCTS_GQL; - query = `searchInput: {productsId: [${productsID}]}`; - }else if(productsMenu){ - graphFn = IDM_PRODUCTS_GQL; - query = `searchInput: {navigation: ${productsMenu}}`; - }else if(hotspotsType){ - graphFn = IDM_HOTSPOTS_GQL; - query = `searchInput: {hotspot: ${hotspotsType}, limit: 16}`; - } - - return {graphFn, query} -} - -////////////////////////////////////////////// -// LAZY LOADING -function idmObserveOnce(element, callback, options = { root: null, rootMargin: "0px", threshold: 0.1 }) { - if (!element) return; - - const observer = new IntersectionObserver((entries, obs) => { - entries.forEach(entry => { - if (entry.isIntersecting) { - callback(entry); // run your callback - obs.disconnect(); // stop observing after first trigger - } - }); - }, options); - - observer.observe(element); -} - - -//////////////////////////////////////////////// -// IDM SET HEIGHT -app_shop.fn.idmSetHeight = options => { - const { selector, selectors, container } = options || {} - if ((!selector && !selectors) || !container) return - - const containerElement = document.querySelector(container) - if (!containerElement) return - - const adjustAllHeights = itemSelector => { - const targets = containerElement.querySelectorAll(itemSelector) - if (!targets.length) return - - targets.forEach(el => (el.style.minHeight = '')) - - const max = Math.max(...[...targets].map(el => el.offsetHeight || 0)) - - targets.forEach(el => (el.style.minHeight = `${max}px`)) - } - - if (selector) adjustAllHeights(selector) - if (selectors?.length) selectors.forEach(adjustAllHeights) -} \ No newline at end of file