Waktu: ${td[1]}
function checkUID(m = "") {
const userData = JSON.parse(localStorage.getItem("userData")) || {};
const urlNow = window.location.href;
const isNotValidUID = userData.length > 0 && !userData.uid;
const message =
m === "addToCart"
? "Silakan masuk terlebih dahulu untuk menambahkan produk ke keranjang."
: isNotValidUID
? "Sesi Anda telah habis. Silakan masuk kembali untuk melanjutkan."
: m === "jelajah"
? "Anda telah menjelajah selama 5 detik. Silakan masuk terlebih dahulu untuk mendapatkan pengalaman yang lebih baik."
: null;
if (
(Object.keys(userData).length === 0 || isNotValidUID) &&
!urlNow.includes("profile")
) {
localStorage.clear();
window.location.href =
`profile.html?redirect=${urlNow}` +
(message ? `&message=${message}` : "");
}
}
setTimeout(() => {
checkUID("jelajah");
}, 5000);
function formatRupiah(number) {
return "Rp " + number.toLocaleString("id-ID");
}
async function loadProducts() {
const products = await fetchProductsData();
const productList = document.getElementById("product-list");
if (!productList) return;
productList.innerHTML = "";
products.forEach((product) => {
const col = document.createElement("div");
col.className = "col-lg-3 col-md-4 col-sm-6";
const card = document.createElement("div");
card.className = "card h-100";
let thumbnail = "assets/";
if (product.files && product.files.length > 0) {
thumbnail += product.files[0];
}
let thumbHTML = "";
if (thumbnail.match(/\.(jpg|jpeg|png|gif)$/i)) {
thumbHTML = ``;
} else {
thumbHTML = `
`;
}
const cardBody = document.createElement("div");
cardBody.className = "card-body d-flex flex-column";
const title = document.createElement("h5");
title.className = "card-title";
title.innerText = product.name;
const desc = document.createElement("p");
desc.className = "card-text";
desc.innerText = product.description;
const price = document.createElement("p");
price.className = "card-text fw-bold";
price.innerText = formatRupiah(product.price);
const detailLink = document.createElement("a");
detailLink.href = "product.html?id=" + product.id;
detailLink.className = "btn btn-primary btn-lg mt-auto";
detailLink.innerText = "Lihat Detail";
const cartBtn = document.createElement("button");
cartBtn.className = "btn btn-success btn-lg mt-2";
cartBtn.innerText = "Tambah Keranjang";
cartBtn.onclick = async function () {
await promptQuantityAndAdd(product.id);
};
card.innerHTML = thumbHTML;
cardBody.appendChild(title);
cardBody.appendChild(desc);
cardBody.appendChild(price);
cardBody.appendChild(detailLink);
cardBody.appendChild(cartBtn);
card.appendChild(cardBody);
col.appendChild(card);
productList.appendChild(col);
});
}
async function loadProductDetail() {
const params = new URLSearchParams(window.location.search);
const productId = parseInt(params.get("id"));
const container = document.getElementById("product-detail");
if (!container) return;
if (!productId) {
container.innerText = "Produk tidak ditemukan.";
return;
}
const products = await fetchProductsData();
const product = products.find((p) => p.id === productId);
if (!product) {
container.innerText = "Produk tidak ditemukan.";
return;
}
let carouselHTML = "";
if (product.files && product.files.length > 0) {
carouselHTML += `
${product.description}
Anda belum melakukan transaksi apapun. Silahkan beli produk terlebih dahulu.
"; alert("Anda belum melakukan transaksi apapun. Silahkan beli produk terlebih dahulu.", false) return; } const transactionList = document.getElementById("transaction-list"); if (!transactionList) return; transactionList.innerHTML = ""; Object.entries(transactions) .sort((a, b) => { const parseDateFromKey = (key) => { const [year, month, day, hour, minute, second, ms] = key.split("_"); return new Date(year, month - 1, day, hour, minute, second, ms); }; return parseDateFromKey(b[0]) - parseDateFromKey(a[0]); }) .forEach(([transactionKey, transaction]) => { let total = 0; transaction.products.forEach((product) => { total += product.price * product.total; }); let paymentIcon = ""; switch (transaction.payment_method) { case "bank": paymentIcon = "bi-building"; break; case "qr": paymentIcon = "bi-qr-code"; break; case "card": paymentIcon = "bi-credit-card"; break; default: paymentIcon = "bi-currency-dollar"; } const col = document.createElement("div"); col.className = "transactions-body col-lg-4 col-md-6 col-sm-12 mt-4"; const card = document.createElement("div"); card.className = "card h-100"; const cardBody = document.createElement("div"); cardBody.className = "card-body d-flex flex-column"; cardBody.style.position = "relative"; const td = formatTransactionDate(transactionKey); cardBody.innerHTML = `Transaksi tidak ditemukan.
"; return; } const userData = await getUserData(); if (!userData.transactions || !userData.transactions[transactionKey]) { mainElement.innerHTML = "Transaksi tidak ditemukan.
"; return; } const transaction = userData.transactions[transactionKey]; const td = formatTransactionDate(transactionKey); let total = 0; transaction.products.forEach((prod) => { total += prod.price * prod.total; }); let html = `Sidoarjo
Telp: 0896-6804-1554
Tanggal: ${td[0]} ${td[1]}
No | Produk | Harga | Qty | Subtotal |
---|---|---|---|---|
${index + 1} | ${prod.name} | ${formatRupiah(prod.price)} | ${qty} | ${formatRupiah(subtotal)} |
Total | ${formatRupiah(total)} |