From 00d221a34309e005a0734453bb86c12cc8b98df7 Mon Sep 17 00:00:00 2001 From: Angie Date: Sat, 26 Jul 2025 22:48:51 +0200 Subject: [PATCH] fix: change from mock up data to backend data --- frontend/script.js | 122 ++++++++++++++++++++++++++++++++++----------- 1 file changed, 94 insertions(+), 28 deletions(-) diff --git a/frontend/script.js b/frontend/script.js index aea8bea..bd7d310 100644 --- a/frontend/script.js +++ b/frontend/script.js @@ -1336,18 +1336,20 @@ function applyReportsFilters() { const dateFrom = document.getElementById("filterDateFrom").value; const dateTo = document.getElementById("filterDateTo").value; - let filteredReports = database.reports; + let filteredReports = window.reportsList || []; if (storeFilter) { - filteredReports = filteredReports.filter((r) => r.storeId == storeFilter); + filteredReports = filteredReports.filter( + (r) => String(r.storeId) === String(storeFilter) + ); } if (dateFrom) { - filteredReports = filteredReports.filter((r) => r.date >= dateFrom); + filteredReports = filteredReports.filter((r) => r.reportDate >= dateFrom); } if (dateTo) { - filteredReports = filteredReports.filter((r) => r.date <= dateTo); + filteredReports = filteredReports.filter((r) => r.reportDate <= dateTo); } // Обновление таблицы с отфильтрованными данными @@ -1355,19 +1357,18 @@ function applyReportsFilters() { tbody.innerHTML = ""; filteredReports.forEach((report) => { - const store = database.stores.find((s) => s.id === report.storeId); - const user = database.users.find((u) => u.id === report.userId); - const profit = report.totalIncome - report.totalExpenses; + const storeName = report.storeName || report.storeId; + const username = report.username || report.userId; + const profit = + (Number(report.totalIncome) || 0) - (Number(report.totalExpenses) || 0); const row = document.createElement("tr"); row.className = "hover:bg-gray-50"; row.innerHTML = ` ${ - report.date - } - ${ - store ? store.name : "Неизвестно" + report.reportDate || report.date || "" } + ${storeName} €${report.totalIncome.toFixed( 2 )} @@ -1377,16 +1378,14 @@ function applyReportsFilters() { €${profit.toFixed(2)} - ${ - user ? user.username : "Неизвестно" - } + ${username} - ${report.verified ? "Проверен" : "Не проверен"} + ${report.isVerified ? "Проверен" : "Не проверен"} @@ -1409,31 +1408,98 @@ function applyReportsFilters() { } // Экспорт в Excel +// function exportToExcel() { +// const data = database.reports.map((report) => { +// const store = database.stores.find((s) => s.id === report.storeId); +// const user = database.users.find((u) => u.id === report.userId); +// const profit = report.totalIncome - report.totalExpenses; + +// return { +// Дата: report.date, +// Магазин: store ? store.name : "Неизвестно", +// Доход: `€${report.totalIncome.toFixed(2)}`, +// Расходы: `€${report.totalExpenses.toFixed(2)}`, +// Прибыль: `€${profit.toFixed(2)}`, +// Пользователь: user ? user.username : "Неизвестно", +// Статус: report.verified ? "Проверен" : "Не проверен", +// }; +// }); + +// // Создание CSV +// const headers = Object.keys(data[0]); +// const csvContent = [ +// headers.join(","), +// ...data.map((row) => headers.map((header) => `"${row[header]}"`).join(",")), +// ].join("\n"); + +// // Скачивание файла +// const blob = new Blob([csvContent], { +// type: "text/csv;charset=utf-8;", +// }); +// const link = document.createElement("a"); +// const url = URL.createObjectURL(blob); +// link.setAttribute("href", url); +// link.setAttribute( +// "download", +// `cash_reports_${new Date().toISOString().split("T")[0]}.csv` +// ); +// link.style.visibility = "hidden"; +// document.body.appendChild(link); +// link.click(); +// document.body.removeChild(link); + +// showNotification("Отчет экспортирован!"); +// } + function exportToExcel() { - const data = database.reports.map((report) => { - const store = database.stores.find((s) => s.id === report.storeId); - const user = database.users.find((u) => u.id === report.userId); - const profit = report.totalIncome - report.totalExpenses; + // Use backend data + const reports = window.reportsList || []; + const stores = window.storesList || []; + const users = window.usersList || []; + + if (!reports.length) { + showNotification("Нет отчетов для экспорта", "info"); + return; + } + + const data = reports.map((report) => { + // Find store and user by id + const store = + stores.find((s) => Number(s.id) === Number(report.storeId)) || {}; + const user = + users.find((u) => Number(u.id) === Number(report.userId)) || {}; + + const profit = + (Number(report.totalIncome) || 0) - (Number(report.totalExpenses) || 0); return { - Дата: report.date, - Магазин: store ? store.name : "Неизвестно", - Доход: `€${report.totalIncome.toFixed(2)}`, - Расходы: `€${report.totalExpenses.toFixed(2)}`, + Дата: report.reportDate || report.date || "", + Магазин: store.name || report.storeName || "Неизвестно", + Доход: `€${Number(report.totalIncome || 0).toFixed(2)}`, + Расходы: `€${Number(report.totalExpenses || 0).toFixed(2)}`, Прибыль: `€${profit.toFixed(2)}`, - Пользователь: user ? user.username : "Неизвестно", - Статус: report.verified ? "Проверен" : "Не проверен", + Пользователь: user.username || report.username || "Неизвестно", + Статус: report.isVerified + ? "Проверен" + : report.verified + ? "Проверен" + : "Не проверен", }; }); - // Создание CSV + if (!data.length) { + showNotification("Нет отчетов для экспорта", "info"); + return; + } + + // Create CSV const headers = Object.keys(data[0]); const csvContent = [ headers.join(","), ...data.map((row) => headers.map((header) => `"${row[header]}"`).join(",")), ].join("\n"); - // Скачивание файла + // Download file const blob = new Blob([csvContent], { type: "text/csv;charset=utf-8;", });