Widget:Droflax
🛒 Carrinho de Compras
<button id="esvaziar-carrinho" class="acao-carrinho">Esvaziar Carrinho</button> <button id="mostrar-total" class="acao-carrinho">Mostrar Total</button>
<script> // Carrinho const carrinho = {}; let receitas = {};
// Función para cargar las recetas desde el JSON async function cargarReceitas() {
try { const response = await fetch('https://wiki.gla.com.br/index.php?title=Receitas.json&action=raw'); const data = await response.json(); // Transformar la estructura del JSON al formato esperado por el código receitas = { baratie: Object.entries(data.baratie).map(([id, item]) => ({ id, nome: item.nome, preco: item.cost, img: item.thumb })), alianca: Object.entries(data.alianca).map(([id, item]) => ({ id, nome: item.nome, preco: item.cost, img: item.thumb })) }; renderizarReceitas(); } catch (error) { console.error('Error al cargar las recetas:', error); alert('No se pudieron cargar las recetas. Por favor, inténtalo más tarde.'); }
}
// Renderizar receitas function renderizarReceitas() {
renderizarSecao('baratie'); renderizarSecao('alianca');
}
function renderizarSecao(secao) {
const container = document.getElementById(`receitas-${secao}`); if (!container) return; container.innerHTML = ; receitas[secao].forEach(receita => { const card = document.createElement('div'); card.className = 'receita-card'; card.innerHTML = ` <img src="${receita.img}" width="64" height="64" />
<button onclick="adicionarAoCarrinho('${receita.id}')">➕</button> `; container.appendChild(card); });
}
// Funções do carrinho function adicionarAoCarrinho(id) {
let receita = encontrarReceita(id); if (!receita) return;
if (!carrinho[id]) { carrinho[id] = { ...receita, quantidade: 1 }; } else { carrinho[id].quantidade++; } renderizarCarrinho();
}
function encontrarReceita(id) {
for (const secao in receitas) { const receita = receitas[secao].find(r => r.id === id); if (receita) return receita; } return null;
}
function alterarQuantidade(id, alteracao) {
if (alteracao === 100) { carrinho[id].quantidade = 100; } else { carrinho[id].quantidade += alteracao; } if (carrinho[id].quantidade <= 0) { delete carrinho[id]; } renderizarCarrinho();
}
function atualizarQuantidadeManual(id, event) {
const novoValor = parseInt(event.target.value); if (!isNaN(novoValor) && novoValor >= 0) { if (novoValor === 0) { delete carrinho[id]; } else { carrinho[id].quantidade = novoValor; } renderizarCarrinho(); }
}
function esvaziarCarrinho() {
for (const id in carrinho) { delete carrinho[id]; } renderizarCarrinho();
}
function mostrarTotal() {
const total = calcularTotal(); alert(`Total atual: ${total.toLocaleString()} Berry`);
}
function calcularTotal() {
return Object.values(carrinho).reduce((sum, item) => sum + (item.preco * item.quantidade), 0);
}
function renderizarCarrinho() {
const container = document.getElementById('carrinho-container'); container.innerHTML = ; let total = 0;
for (const id in carrinho) { const item = carrinho[id]; const subtotal = item.preco * item.quantidade; total += subtotal;
const itemDiv = document.createElement('div'); itemDiv.className = 'item-carrinho'; itemDiv.innerHTML = ` <img src="${item.img}" width="40" height="40" />
<button onclick="alterarQuantidade('${id}', -1)">−</button> <input type="number" value="${item.quantidade}" min="0" onchange="atualizarQuantidadeManual('${id}', event)"> <button onclick="alterarQuantidade('${id}', 1)">+</button> <button class="btn-100" onclick="alterarQuantidade('${id}', 100)">x100</button>
<button class="remover-item" onclick="removerDoCarrinho('${id}')">🗑️</button> `; container.appendChild(itemDiv); }
document.getElementById('carrinho-total').innerText = total > 0 ? `Total: ${total.toLocaleString()} Berry` : ;
}
function removerDoCarrinho(id) {
delete carrinho[id]; renderizarCarrinho();
}
// Event listeners document.getElementById('esvaziar-carrinho').addEventListener('click', esvaziarCarrinho); document.getElementById('mostrar-total').addEventListener('click', mostrarTotal);
// Cargar las recetas al iniciar document.addEventListener('DOMContentLoaded', cargarReceitas); </script>