. ========================================================================== */ (function () { 'use strict'; var KEY = 'reskupka_cart'; function read() { try { var raw = localStorage.getItem(KEY); var data = raw ? JSON.parse(raw) : []; return Array.isArray(data) ? data : []; } catch (e) { return []; } } function write(items) { try { localStorage.setItem(KEY, JSON.stringify(items)); } catch (e) { /* переполнение или приватный режим — молча пропускаем */ } } function save(items) { write(items); updateBadges(); return items; } function add(item) { if (!item || !item.id) { return read(); } var items = read(); var found = null; for (var i = 0; i < items.length; i++) { if (items[i].id === item.id) { found = items[i]; break; } } if (found) { found.qty = (found.qty || 0) + (item.qty || 1); } else { items.push({ id: item.id, slug: item.slug || '', title: item.title || '', memory: item.memory || '', color: item.color || '', condition: item.condition || '', price: Number(item.price) || 0, qty: item.qty || 1, image: item.image || '' }); } return save(items); } function remove(id) { var items = read(); var next = []; for (var i = 0; i < items.length; i++) { if (items[i].id !== id) { next.push(items[i]); } } return save(next); } function setQty(id, qty) { var items = read(); var n = Math.max(0, parseInt(qty, 10) || 0); for (var i = 0; i < items.length; i++) { if (items[i].id === id) { if (n === 0) { items.splice(i, 1); } else { items[i].qty = n; } break; } } return save(items); } function clear() { return save([]); } function count() { var items = read(); var n = 0; for (var i = 0; i < items.length; i++) { n += items[i].qty || 0; } return n; } function total() { var items = read(); var sum = 0; for (var i = 0; i < items.length; i++) { sum += (items[i].price || 0) * (items[i].qty || 0); } return sum; } function updateBadges() { var n = count(); var els = document.querySelectorAll('[data-cart-count]'); for (var i = 0; i < els.length; i++) { els[i].textContent = String(n); if (n > 0) { els[i].classList.add('is-visible'); } else { els[i].classList.remove('is-visible'); } } } window.ReskupkaCart = { KEY: KEY, read: read, add: add, remove: remove, setQty: setQty, clear: clear, count: count, total: total, updateBadges: updateBadges }; if (document.readyState === 'loading') { document.addEventListener('DOMContentLoaded', updateBadges); } else { updateBadges(); } })();

Навигация

Карта сайта

Все страницы Re:Скупка — скупка и продажа техники в Санкт-Петербурге.