let orderIndex = 0; function addOrderRow(data = {}) { orderIndex++; const html = `
`; $('#order_input_wrapper').append(html); } function removeOrderRow(index) { $(`#order_input_wrapper [data-row="${index}"]`).remove(); } function renderCartList() { $("#cartSidebar").offcanvas('show') $('#floatingCartButton').addClass('d-none'); $('#menuBtn').addClass('d-none'); const cart = JSON.parse(sessionStorage.getItem('cart') || '[]'); let total = 0; const html = cart.map(item => { const hargaNum = parseInt(item.harga.replace(/[^\d]/g, '')); let pesananHTML = ''; item.pesanan.forEach((p, i) => { pesananHTML += `
`; }); const itemTotal = item.pesanan.reduce((sum, p) => sum + (p.jumlah * hargaNum), 0); total += itemTotal; return `
${item.nama_menu}
${item.harga}
${pesananHTML}
Total: Rp ${itemTotal.toLocaleString('id-ID')}
`; }).join(''); $('#cartListContainer').html(html); $('#cartTotal').text('Rp ' + total.toLocaleString('id-ID')); } function renderCartTotalOnly() { const cart = JSON.parse(sessionStorage.getItem('cart') || '[]'); let total = 0; cart.forEach(item => { const hargaNum = parseInt(item.harga.replace(/[^\d]/g, '')); const itemTotal = item.pesanan.reduce((sum, p) => sum + (p.jumlah * hargaNum), 0); total += itemTotal; }); $('#cartTotal').text('Rp ' + total.toLocaleString('id-ID')); } function updateFloatingCartButton() { const cart = JSON.parse(sessionStorage.getItem('cart') || '[]'); const totalItem = cart.reduce((sum, item) => { return sum + item.pesanan.reduce((s, p) => s + p.jumlah, 0); }, 0); const totalHarga = cart.reduce((sum, item) => { const harga = parseInt(item.harga.replace(/[^\d]/g, '')); return sum + item.pesanan.reduce((s, p) => s + (p.jumlah * harga), 0); }, 0); if (cart.length > 0) { $('#floatingCartButton').removeClass('d-none'); $('#menuBtn').removeClass('d-none'); $('#floatingCartCount').text(totalItem); $('#floatingCartTotal').text('Rp ' + totalHarga.toLocaleString('id-ID')); $('#floatingCartDesc').text(`Total pesanan dari ${cart[0].nama_menu}`); } else { $('#floatingCartButton').addClass('d-none'); } }