MCPcopy Create free account
hub / github.com/HelloCSV/HelloCSV / generateCsvContent

Function generateCsvContent

src/utils/index.ts:80–116  ·  view source on GitHub ↗
(
  sheetDefinition: SheetDefinition,
  data: SheetRow[],
  enumLabelDict: EnumLabelDict,
  csvDownloadMode: CsvDownloadMode
)

Source from the content-addressed store, hash-verified

78}
79
80export function generateCsvContent(
81 sheetDefinition: SheetDefinition,
82 data: SheetRow[],
83 enumLabelDict: EnumLabelDict,
84 csvDownloadMode: CsvDownloadMode
85) {
86 const headers = sheetDefinition.columns
87 .map((column) =>
88 escapeCsvCell(csvDownloadMode === 'label' ? column.label : column.id)
89 )
90 .join(DOWNLOADED_CSV_SEPARATOR);
91
92 const rows = data.map((row) =>
93 sheetDefinition.columns
94 .map((column) => {
95 const value = row[column.id];
96 let processedValue: ImporterOutputFieldType;
97
98 if (csvDownloadMode === 'value' || value == null) {
99 processedValue = Array.isArray(value) ? value.join(', ') : value;
100 } else {
101 processedValue = getColumnDisplayValue(
102 sheetDefinition,
103 column,
104 value,
105 enumLabelDict
106 );
107 }
108
109 return escapeCsvCell(processedValue);
110 })
111 .join(DOWNLOADED_CSV_SEPARATOR)
112 );
113
114 const csv = [headers, ...rows].join('\n');
115 return new Blob([csv], { type: 'text/csv' });
116}
117
118export function downloadSheetAsCsv(
119 sheetDefinition: SheetDefinition,

Callers 3

onSubmitFunction · 0.90
getDataSizeFunction · 0.90
downloadSheetAsCsvFunction · 0.85

Calls 2

escapeCsvCellFunction · 0.85
getColumnDisplayValueFunction · 0.85

Tested by

no test coverage detected