feat: Оптимизация маршрутов для получения данных из S3 с использованием вспомогательных функций getS3JsonWithHeaders и getS3TextWithHeaders для улучшения читаемости и обработки ошибок. Упрощение кода и улучшение обработки конфигураций серверов и фильтров.
Publish Fast Tabler Docker image / build-and-push-fast (push) Successful in 1m34s
Publish Fast Tabler Docker image / build-and-push-fast (push) Successful in 1m34s
This commit is contained in:
@@ -0,0 +1,58 @@
|
||||
/**
|
||||
* Утилиты для экспорта данных в 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}`;
|
||||
}
|
||||
|
||||
Reference in New Issue
Block a user