Skip to content

Add an optional callback to ColumnOptions to allow custom formatting at the column level #322

Open
@RonnBlack

Description

@RonnBlack

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.

Metadata

Metadata

Assignees

No one assigned

    Type

    No type

    Projects

    No projects

    Milestone

    No milestone

    Relationships

    None yet

    Development

    No branches or pull requests

    Issue actions