Dynamic Columns
Dynamic columns allow you to create dynamic content based on a row's cells.
Using the dynamic
option you can provide an array of column definitions. These include the column name (name
) and a function (func
). The function receives the current row
as argument which you can use to create a custom cell based on its peers. The function's return value is used as cell content.
import { Table } from 'voici.js'
const data = [
{ firstname: 'Homer', lastname: 'Simpson', age: 39 },
{ firstname: 'Marge', lastname: 'Simpson', age: 36 },
{ firstname: 'Bart', lastname: 'Simpson', age: 10 },
{ firstname: 'Lisa', lastname: 'Simpson', age: 8 },
{ firstname: 'Maggie', lastname: 'Simpson', age: 1 }
];
const config = {
header: {
dynamic: {
fullname: (row) => row['firstname'] + ' ' + row['lastname'],
adult: (row) => row['age'] >= 18
}
}
};
const table = new Table(data, config);
table.printPlain();
Output:
firstname lastname age fullname adult
===========================================================
Homer Simpson 39 Homer Simpson true
Marge Simpson 36 Marge Simpson true
Bart Simpson 10 Bart Simpson false
Lisa Simpson 8 Lisa Simpson false
Maggie Simpson 1 Maggie Simpson false
TypeScript
When using TypeScript, you have to provide the types of your dynamic columns in order to infer them. In the example from above, this would look like this:
interface IDynamicAttributes {
fullname: string;
adult: boolean;
}
const table = new Table<(typeof data)[number], IDynamicAttributes)>(data, config);
Last updated
Was this helpful?