${product.name}
kr ${product.price.toFixed(2)}
${product.description}
Kategori: ${product.category}
// Holder styr på gjeldende side for navigasjonslogikk
let currentPage = 'products';
// Lokal kopi av handlekurvantall for rask oppdatering uten model-kall
let cartCount = 0;
/**
* Sentral renderingsfunksjon - alle UI-oppdateringer går gjennom denne
* Bruker switch-pattern for å håndtere forskjellige visningstyper
* data-parameter bruker default empty object for å unngå undefined errors
*/
function updateView(viewType, data = {}) {
const app = document.getElementById('app');
switch (viewType) {
case 'products':
currentPage = 'products';
// Fallback til tom array hvis products er undefined - forhindrer krasj
app.innerHTML = generateProductsPage(data.products || []);
// Fester event listeners etter hver render fordi innerHTML erstatter alt
attachEventListeners();
break;
case 'product-detail':
currentPage = 'product-detail';
app.innerHTML = generateProductDetailPage(data.product);
attachEventListeners();
break;
case 'cart':
currentPage = 'cart';
// Flere fallbacks fordi handlekurvdata kan være incomplete
app.innerHTML = generateCartPage(data.cartItems || [], data.total || 0, data.itemCount || 0);
attachEventListeners();
break;
case 'cart-count':
// Spesiell case - oppdaterer kun handlekurvteller uten full re-render
// Mer effektivt enn å regenerere hele siden
cartCount = data.count;
updateCartCountInNav();
break;
case 'notification':
// Brukernotifikasjoner håndteres separat fra hovedrendering
showNotification(data.message);
break;
}
}
// Genererer navigasjonsbar som inkluderes på alle sider
// Returnerer HTML-string istedenfor DOM-manipulering for konsistens
function generateNavbar() {
return `
Produktet ble ikke funnet
kr ${product.price.toFixed(2)}
${product.description} Kategori: ${product.category}Våre Produkter
${product.name}
Legg til noen produkter for å komme i gang!
${itemCount} ${itemCount === 1 ? 'vare' : 'varer'} i handlekurven
` : ''}kr ${product.price.toFixed(2)}
${product.description}
${item.product.price.toFixed(2)} kr per stk