/
kreyndelHam
/
Konstructorium
Обзор
Документация
Войти
/
kreyndelHam
/
Konstructorium
Код
Запросы
0
Задачи
Вики
Пакеты
0
Релизы
1
CI/CD
Аналитика
Безопасность
dev
frontend/src/utils/csvExport.js
48 строк
1 KB
MihahamYT
views stats and documents for legalization
17 май 2026, 10:21
17 май 2026, 10:21
5811d3d
Код
Авторство
О чём код?
/** * CSV export helpers for admin analytics tables. */ /** * Escape raw value for CSV cell. * * @param {unknown} value * @returns {string} */ export const escapeCsvField = (value) => { const normalized = value === null || value === undefined ? '' : String(value) const escaped = normalized.replace(/"/g, '""') return `"${escaped}"` } /** * Create CSV text payload from headers and rows. * * @param {string[]} headers * @param {Array<Array<unknown>>} rows * @returns {string} */ export const buildCsvContent = (headers, rows) => { const headerLine = headers.map((header) => escapeCsvField(header)).join(',') const rowLines = rows.map((row) => row.map((cell) => escapeCsvField(cell)).join(',')) return [headerLine, ...rowLines].join('\n') } /** * Trigger browser CSV download. * * @param {string} fileName * @param {string[]} headers * @param {Array<Array<unknown>>} rows */ export const downloadCsvFile = (fileName, headers, rows) => { const csvContent = buildCsvContent(headers, rows) const blob = new Blob([`\uFEFF${csvContent}`], { type: 'text/csv;charset=utf-8;' }) const url = URL.createObjectURL(blob) const link = document.createElement('a') link.href = url link.setAttribute('download', fileName) document.body.appendChild(link) link.click() document.body.removeChild(link) URL.revokeObjectURL(url) }