Publish Fast Tabler Docker image / build-and-push-fast (push) Successful in 1m34s
59 lines
1.9 KiB
JavaScript
59 lines
1.9 KiB
JavaScript
/**
|
|
* Утилиты для экспорта данных в CSV/TXT
|
|
* Устраняют дублирование кода экспорта
|
|
*/
|
|
|
|
/**
|
|
* Экспорт массива объектов в CSV
|
|
* @param {Array} items - Массив данных
|
|
* @param {Array} headers - Массив заголовков ['field1', 'field2']
|
|
* @param {string} filename - Имя файла
|
|
*/
|
|
export function exportToCSV(items, headers, filename) {
|
|
const csvContent = [
|
|
headers,
|
|
...items.map(item => headers.map(h => item[h] || ''))
|
|
]
|
|
.map(row => row.map(cell => `"${String(cell || '').replace(/"/g, '""')}"`).join(','))
|
|
.join('\n');
|
|
|
|
downloadFile(csvContent, filename, 'text/csv;charset=utf-8;');
|
|
}
|
|
|
|
/**
|
|
* Экспорт данных в текстовый файл
|
|
* @param {string} content - Текстовое содержимое
|
|
* @param {string} filename - Имя файла
|
|
*/
|
|
export function exportToText(content, filename) {
|
|
downloadFile(content, filename, 'text/plain;charset=utf-8;');
|
|
}
|
|
|
|
/**
|
|
* Скачивание файла
|
|
* @param {string} content - Содержимое
|
|
* @param {string} filename - Имя файла
|
|
* @param {string} mimeType - MIME тип
|
|
*/
|
|
function downloadFile(content, filename, mimeType) {
|
|
const blob = new Blob([content], { type: mimeType });
|
|
const url = URL.createObjectURL(blob);
|
|
const a = document.createElement('a');
|
|
a.href = url;
|
|
a.download = filename;
|
|
a.click();
|
|
URL.revokeObjectURL(url);
|
|
}
|
|
|
|
/**
|
|
* Генерация имени файла с датой
|
|
* @param {string} prefix - Префикс имени файла
|
|
* @param {string} extension - Расширение файла
|
|
* @returns {string} Имя файла с датой
|
|
*/
|
|
export function generateFilename(prefix, extension = 'csv') {
|
|
const date = new Date().toISOString().split('T')[0];
|
|
return `${prefix}_${date}.${extension}`;
|
|
}
|
|
|