Description
Summary
Add an optional callback function to the ColumnOptions object that can be used to perform custom formatting or additional processing of a specific columns.
Motivation
Of of the box csv-stringify only supports formatting by data type. This does not allow different formats for different types of columns. For example a column that contain dates as opposed to a column that is a date-time. The same situation occurs when you have a output that requires both numbers and currencies.
Alternative
I am currently constructing an array of functions that are applied in a ForEach() to the rows of the original input.
stringify(
rows.map(row => {
this.formatters?.forEach( fmt => fmt(row) );
return row;
}),
{
header: addHeader,
columns: this.columns
}
)
A working Sample is here:
https://stackblitz.com/edit/typescript-column-format-ks3cs3?file=report-utils/csv-utils.ts
Draft
stringify(
testData,
{
header: true,
columns: [
{key:'strVal', header: 'String'},
{key:'dVal', header: 'Date', (value) => { return value.LocaleDateString(); }},
{key:'dtVal', header: 'Date Time', (value) => { return `${value.toLocaleDateString()} ${value.toLocaleTimeString()}` }},
{key:'currVal', header: 'Currency', (value) => { return value.toFixed(2); }}
]
)
Additional context
Add any other context or screenshots about the feature request here.