var refreshIntervalId = setInterval(() => { if (window.Shopify.shop.length > 0) { render(); // kill setinterval clearInterval(refreshIntervalId); } }, 300); function render() { var host = window.Shopify.shop; var product = window.ShopifyAnalytics.meta.product; var preorder; var selectedVariant; var listOfOnVariants = []; var url = "https://stingray-app-n99th.ondigitalocean.app/getpreorder?shop=" + host + "&productid=" + product.id; fetch(url) .then((response) => response.json()) .then((result) => { preorder = result.preorder; console.log("preorder"); console.log(preorder); /* push on varines to listOfOnVariants */ preorder.selectedProducts.map((selectedProduct) => { selectedProduct.variants.map((variant) => { if (variant.toggel == true) { listOfOnVariants.push(variant.id); } }); }); console.log("listOfOnVariants"); console.log(listOfOnVariants); /* set selected varient id */ selectedVariant = document.getElementsByName("id")[0].value; /* set varient listner */ document .getElementsByName("id")[0] .addEventListener("change", updateSelectedVariant); /* render pre order */ renderPreOrder(); }); /* function update selectedvarient */ function updateSelectedVariant() { selectedVariant = this.value; console.log("selectedVariant"); console.log(selectedVariant); /* render pre order */ /* delay 1 second */ setTimeout(function () { renderPreOrder(); }, 1000); } /* function update selectedvarient */ /** function render preOrder **/ function renderPreOrder() { console.log( "include :" + listOfOnVariants.includes(Number(selectedVariant)) ); if ( listOfOnVariants.includes(Number(selectedVariant)) && preorder.show == true ) { var addToCart; for ( var i = 0; i < document.querySelectorAll('[action*="/cart/add"]').length; i++ ) { if ( document .querySelectorAll('[action*="/cart/add"]') [i].querySelectorAll('[type="submit"]')[0] != undefined ) { console.log( document .querySelectorAll('[action*="/cart/add"]') [i].querySelectorAll('[type="submit"]')[0] ); addToCart = document .querySelectorAll('[action*="/cart/add"]') [i].querySelectorAll('[type="submit"]')[0]; } } // tospitikomas-com.myshopify.com if (host == "tospitikomas-com.myshopify.com") { addToCart = document.getElementsByClassName( "c-btn c-btn--full c-btn--primary product-form__add-btn js-product-add" )[0]; } // support-1143.myshopify.com if (host == "support-1143.myshopify.com") { addToCart = document.getElementsByClassName( "btn btn-lg btn-addtocart addtocart-js" )[0]; document .getElementsByClassName("tt-row-custom-01")[0] .classList.add("tt-row-custom-1234"); } // melissa-shoes-panama.myshopify.com if (host == "melissa-shoes-panama.myshopify.com") { addToCart = document.getElementsByClassName( "button ajax-submit action_button button--add-to-cart" )[0]; } if (host == "sass-at-home.myshopify.com") { addToCart.value = preorder.buttonText; addToCart.style.padding = "0px "; } console.log("preorder"); console.log(preorder); // new methode var addToCartText = addToCart.innerText.toLocaleLowerCase(); var newElement = addToCart.innerHTML .toLocaleLowerCase() .replaceAll(addToCartText, preorder.buttonText); addToCart.innerHTML = newElement; addToCart.classList.add( "without-after-element", "without-before-element" ); addToCart.style = "background-color: " + preorder.colorBackground + "; border: " + preorder.borderWidth + "px solid " + preorder.colorBorder + "; padding-top: " + preorder.paddingTop + "px; padding-bottom: " + preorder.paddingBottom + "px; color: " + preorder.colorFont + "; border-radius: " + preorder.borderRadius + "px;"; if (host == "sass-at-home.myshopify.com") { addToCart.value = preorder.buttonText; addToCart.style.padding = "0px "; } if (preorder.preOrderPlacment == "Above") { addToCart.parentElement.innerHTML = "" + preorder.preOrderMessage + "" + addToCart.outerHTML; } if (preorder.preOrderPlacment == "Below") { addToCart.parentElement.innerHTML = addToCart.outerHTML + "" + preorder.preOrderMessage + ""; } } else { if (document.getElementById("--pix-preorder") != null) { document.getElementById("--pix-preorder").innerHTML = ""; } } } /** function render preOrder **/ }