/
Cooolprogrammers
/
web-nodejs-labs
Обзор
Документация
Войти
/
Cooolprogrammers
/
web-nodejs-labs
Код
Запросы
0
Задачи
Пакеты
0
Релизы
0
Аналитика
Безопасность
main
public/lab9/task1/app.js
107 строк
4 KB
darkvoid6@mail.ru
ЫЫЫЫЫЫЫЫЫЫЫЫЫЫЫЫЫЫЫЫЫЫЫЫЫЫЫЫЫЫЫЫЫЫЫЫЫЫЫЫЫЫЫЫЫЫЫЫЫЫЫЫЫЫЫЫЫЫЫЫЫЫЫЫЫЫЫЫЫЫЫЫЫЫЫЫЫЫЫЫЫЫЫЫЫЫЫЫЫЫ
18 дек 2025, 07:59
18 дек 2025, 07:59
f2c4f06
Код
Авторство
О чём код?
const API_BASE = '/api/lab9'; // Форматирование цены: Копейки -> Рубли const formatPrice = (cents) => { return (cents / 100).toLocaleString('ru-RU', { style: 'currency', currency: 'RUB' }); }; // Функция для переключения отображения JSON function toggleJson(elementId) { const element = document.getElementById(elementId); element.classList.toggle('hidden'); } // Функция для красивого форматирования JSON function formatJSON(obj) { return JSON.stringify(obj, null, 2); } // Загрузка статистики склада async function loadStockStats() { try { const res = await fetch(`${API_BASE}/task1/stock`); const stats = await res.json(); // Отображаем статистику document.getElementById('totalProducts').textContent = stats.total_products; document.getElementById('totalItems').textContent = stats.total_items; document.getElementById('totalValue').textContent = formatPrice(stats.total_value); // Показываем результат document.getElementById('stockResult').classList.remove('hidden'); // Отображаем JSON document.getElementById('stockJson').textContent = formatJSON(stats); } catch (error) { alert('Ошибка при загрузке статистики'); console.error(error); } } // Загрузка всех товаров async function loadAllProducts() { try { const res = await fetch(`${API_BASE}/task1/products`); const products = await res.json(); displayProducts(products); document.getElementById('searchInput').value = ''; // Отображаем JSON document.getElementById('searchJson').textContent = formatJSON(products); } catch (error) { console.error('Ошибка при загрузке товаров:', error); document.getElementById('productsContainer').innerHTML = '<p style="color: red;">Ошибка при загрузке товаров</p>'; } } // Поиск товаров async function searchProducts() { const searchTerm = document.getElementById('searchInput').value.trim(); if (searchTerm.length < 1) { alert('Введите минимум 1 символ для поиска'); return; } try { const res = await fetch(`${API_BASE}/task1/products?q=${encodeURIComponent(searchTerm)}`); const products = await res.json(); displayProducts(products); // Отображаем JSON document.getElementById('searchJson').textContent = formatJSON(products); } catch (error) { console.error('Ошибка при поиске товаров:', error); document.getElementById('productsContainer').innerHTML = '<p style="color: red;">Ошибка при поиске товаров</p>'; } } // Отображение списка товаров function displayProducts(products) { const container = document.getElementById('productsContainer'); if (products.length === 0) { container.innerHTML = '<p>Товары не найдены</p>'; return; } container.innerHTML = products.map(product => ` <div class="product-card"> <div class="product-header"> <div class="product-title">${product.title}</div> </div> <div class="product-details"> <div class="price">${formatPrice(product.price)}</div> <div>Остаток: ${product.amount} шт.</div> <div>ID: ${product.id}</div> </div> </div> `).join(''); } // Инициализация document.addEventListener('DOMContentLoaded', function() { loadAllProducts(); });