<div class="container">
<div id="container-products"></div>
</div>
<script>
var allProductsAvailable = [];
// Função de formatação de números em moeda brasileira
Number.prototype.formatMoney = function(c = 2, d = ".", e = ",", f = false) {
let n = this,
s = n < 0 ? "-" : "",
i = parseInt(n = Math.abs(+n || 0).toFixed(c)) + "",
j = (i.length > 3) ? i.length % 3 : 0;
let r = s + (j ? i.substr(0, j) + e : "") + i.substr(j).replace(/(\d{3})(?=\d)/g, "$1" + e) + (c ? d + Math.abs(n - i).toFixed(c).slice(2) : "");
return f ? "R$ " + r : r;
};
// Função que converte um número para o formato de Real
function toReal(valor, prefixo) {
return prefixo + " " + Number(valor).formatMoney(2, ",", ".");
}
// Função que cria a lista de produtos e insere no HTML
function createListProducts(produtos) {
console.log("Produtos:", produtos);
var container = document.getElementById("container-products");
var htmlContent = "";
produtos.forEach(function(produto) {
// Obtém a imagem primária e, se existir, a segunda imagem
var primaryImageUrl = produto.ProductImage?.[0]?.https || "";
var secondaryImageUrl = produto.ProductImage?.[1]?.https || "";
// Se não houver imagem ou se for placeholder, pula o produto
if (!primaryImageUrl || primaryImageUrl === "https://via.placeholder.com/150") {
return;
}
// Cria o HTML do produto, incluindo atributos data para as imagens
var productHTML = '<div class="product">' +
' <div class="image">' +
' <a href="{link}" class="space-image large">' +
' <img class="swiper-lazy transform product-image" src="{image}" data-original="{image}" data-secondary="{image2}" alt="{name}">' +
' </a>' +
' </div>' +
' <a href="{link}" class="info-product">' +
' <div class="product-name"><h3>{name}</h3></div>' +
' <div class="down-line">{boxPrice}</div>' +
' </a>' +
'</div>';
// Substituições de link, imagem e nome
productHTML = productHTML
.replace(/{link}/g, produto.url?.https || "#")
.replace(/{image}/g, primaryImageUrl)
.replace(/{image2}/g, secondaryImageUrl)
.replace(/{name}/g, produto.name);
// Cria o HTML de preço com base na disponibilidade e valores
var promotionalPrice = Number(produto.promotional_price);
var priceHTML = "";
if (produto.available && Number(produto.price)) {
priceHTML = '<div class="box-price">' +
'<div class="price">' +
'<div class="product-price">' +
'{before}<span class="price-off">{price}</span>' +
'</div>' +
'</div>' +
'<div class="product-payment">{payment}</div>' +
'</div>';
var beforePrice = "";
if (promotionalPrice) {
beforePrice = '<div class="price-before"><span class="line-price">{price}</span></div>'
.replace("{price}", toReal(Number(produto.price), "R$"));
}
priceHTML = priceHTML
.replace("{before}", beforePrice)
.replace("{price}", promotionalPrice ? toReal(promotionalPrice, "R$") : toReal(Number(produto.price), "R$"))
.replace("{payment}", produto.payment_option_html);
} else {
if (produto.available) {
priceHTML = '<div class="box-price"><div class="price"><div class="product-price"><p>Sob Consulta</p></div></div></div>';
} else {
priceHTML = '<div class="box-price"><div class="price"><div class="product-price"><p>Indisponível</p></div></div></div>';
}
}
productHTML = productHTML.replace("{boxPrice}", priceHTML);
htmlContent += '<div class="item swiper-slide">' + productHTML + '</div>';
});
// Insere os produtos na página
container.innerHTML = '<div class="swiper-container"><div class="swiper-wrapper list-product">' + htmlContent + '</div></div>';
}
// Função para adicionar o efeito de hover na troca de imagem
function addHoverEffect() {
var images = document.querySelectorAll('.product-image');
images.forEach(function(img) {
img.addEventListener('mouseover', function() {
var secondary = img.getAttribute('data-secondary');
if (secondary && secondary.trim() !== "") {
img.src = secondary;
}
});
img.addEventListener('mouseout', function() {
var original = img.getAttribute('data-original');
if (original) {
img.src = original;
}
});
});
}
// Função que busca os produtos na API
function fetchProducts() {
fetch("https://www.ahazeinolook.com.br/web_api/web_api/products?sort=id_desc&limit=50&available=1")
.then((response) => response.json())
.then((data) => {
console.log("Resposta da API:", data);
if (data.Products) {
data.Products.forEach((item) => {
allProductsAvailable.push(item.Product);
});
createListProducts(allProductsAvailable);
addHoverEffect(); // Adiciona o efeito de hover após renderizar os produtos
} else {
console.error("Estrutura inesperada da resposta da API", data);
}
})
.catch((error) => {
console.error("Falha ao buscar produtos", error);
});
}
// Inicia a busca dos produtos
fetchProducts();
</script>