Skip to main content

Table Instance Methods

This section covers all methods available on Table instances for manipulating data and structure.

Row Management Methods​

addRow​

addRow(rowData: RowData, options?: RowOptions): Table​

Adds a single row to the table.

Parameters:

  • rowData: RowData - Object containing row data
  • options?: RowOptions - Optional row-specific options

Returns: Table instance (for method chaining)

Example:

const table = new Table();
table.addRow({ id: 1, name: "John", age: 25 });

With Options:

const table = new Table();
table.addRow(
{ id: 1, name: "John", age: 25 },
{ color: "green", separator: true }
);

Chaining:

const table = new Table();
table
.addRow({ id: 1, name: "John", age: 25 }, { color: "green" })
.addRow({ id: 2, name: "Jane", age: 30 }, { color: "blue" })
.addRow({ id: 3, name: "Bob", age: 35 }, { color: "red" });

addRows​

addRows(rowsData: RowData[], options?: RowOptions): Table​

Adds multiple rows to the table.

Parameters:

  • rowsData: RowData[] - Array of objects containing row data
  • options?: RowOptions - Optional options applied to all rows

Returns: Table instance (for method chaining)

Example:

const table = new Table();
table.addRows([
{ id: 1, name: "John", age: 25 },
{ id: 2, name: "Jane", age: 30 },
{ id: 3, name: "Bob", age: 35 }
]);

With Options:

const table = new Table();
table.addRows([
{ id: 1, name: "John", age: 25 },
{ id: 2, name: "Jane", age: 30 },
{ id: 3, name: "Bob", age: 35 }
], { color: "yellow" });

Mixed with Separators:

const table = new Table();

// Add first group
table.addRows([
{ category: "Fruits", item: "Apple", price: 1.0 },
{ category: "Fruits", item: "Banana", price: 0.5 }
]);

// Add separator
table.addRow({ category: "Fruits", item: "Orange", price: 0.75 }, { separator: true });

// Add second group
table.addRows([
{ category: "Vegetables", item: "Carrot", price: 0.3 },
{ category: "Vegetables", item: "Potato", price: 0.4 }
]);

clearRows​

clearRows(): Table​

Removes all rows from the table while keeping the table columns and configuration.

Use this when the table structure should stay the same, but the row data needs to be replaced or reset.

Parameters: None

Returns: Table instance (for method chaining)

Example:

const table = new Table(["id", "status"]);

table.addRows([
{ id: 1, status: "Queued" },
{ id: 2, status: "Running" }
]);

table.clearRows();
table.addRow({ id: 3, status: "Done" });
table.printTable();

Chaining:

const table = new Table(["id", "status"])
.addRows([
{ id: 1, status: "Queued" },
{ id: 2, status: "Running" }
])
.clearRows()
.addRows([{ id: 3, status: "Done" }]);

Clearing Constructor Rows:

const table = new Table({
columns: [{ name: "task" }, { name: "state" }],
rows: [
{ task: "fetch", state: "pending" },
{ task: "build", state: "running" }
]
});

table.clearRows().addRow({ task: "deploy", state: "done" });

After rows are cleared, render() and printTable() keep the existing table headers and render an empty body until new rows are added.

Column Management Methods​

addColumn​

addColumn(columnConfig: ColumnConfig): Table​

Adds a single column to the table.

Parameters:

  • columnConfig: ColumnConfig - Column configuration object

Returns: Table instance (for method chaining)

Example:

const table = new Table();
table.addColumn({
name: "age",
alignment: "right",
color: "yellow"
});

Complete Column Configuration:

const table = new Table();
table.addColumn({
name: "salary",
title: "Annual Salary",
alignment: "right",
color: "green",
maxLen: 15,
minLen: 10
});

addColumns​

addColumns(columnsConfig: ColumnConfig[]): Table​

Adds multiple columns to the table.

Parameters:

  • columnsConfig: ColumnConfig[] - Array of column configuration objects

Returns: Table instance (for method chaining)

Example:

const table = new Table();
table.addColumns([
{ name: "id", alignment: "left", color: "cyan" },
{ name: "name", alignment: "center", color: "yellow" },
{ name: "age", alignment: "right", color: "green" }
]);

Mixed Column Types:

const table = new Table();
table.addColumns([
// Simple column
{ name: "id" },

// Column with alignment
{ name: "name", alignment: "center" },

// Column with color
{ name: "status", color: "red" },

// Column with length constraints
{ name: "description", maxLen: 20, minLen: 10 },

// Column with custom title
{ name: "created_at", title: "Created Date", alignment: "right" }
]);

Output Methods​

printTable​

printTable(): void​

Prints the table to the console.

Parameters: None

Returns: void

Example:

const table = new Table();
table.addRow({ id: 1, name: "John" });
table.printTable();

Complete Workflow:

const table = new Table({
columns: [
{ name: "id", alignment: "left" },
{ name: "name", alignment: "center" },
{ name: "age", alignment: "right" }
]
});

table.addRows([
{ id: 1, name: "John", age: 25 },
{ id: 2, name: "Jane", age: 30 },
{ id: 3, name: "Bob", age: 35 }
]);

table.printTable();

render​

render(): string​

Renders the table as a string without printing it.

Parameters: None

Returns: string - The formatted table as a string

Example:

const table = new Table();
table.addRow({ id: 1, name: "John" });
const tableString = table.render();
console.log(tableString);

Advanced Usage:

const table = new Table({
title: "User Report"
// Default style will be used (omit style property for default borders)
});

table.addRows([
{ id: 1, name: "John", age: 25 },
{ id: 2, name: "Jane", age: 30 }
]);

// Get the formatted string
const report = table.render();

// Save to file
const fs = require('fs');
fs.writeFileSync('user-report.txt', report);

// Send via email
sendEmail('admin@company.com', 'User Report', report);

// Log to different console
console.error(report);

Method Chaining Examples​

Complete Table Building​

const table = new Table()
.addColumn({ name: "id", alignment: "left", color: "cyan" })
.addColumn({ name: "name", alignment: "center", color: "yellow" })
.addColumn({ name: "age", alignment: "right", color: "green" })
.addRow({ id: 1, name: "John", age: 25 }, { color: "blue" })
.addRow({ id: 2, name: "Jane", age: 30 }, { color: "red" })
.addRow({ id: 3, name: "Bob", age: 35 }, { separator: true })
.addRow({ id: 4, name: "Alice", age: 28 })
.printTable();

Dynamic Table Building​

const table = new Table();

// Add columns dynamically
const columns = ["id", "name", "email", "role"];
columns.forEach(col => {
table.addColumn({
name: col,
alignment: col === "id" ? "left" : "center"
});
});

// Add rows from API data
async function buildUserTable() {
const users = await fetchUsers();

users.forEach((user, index) => {
const options = {};

// Add color based on role
if (user.role === "admin") {
options.color = "red";
} else if (user.role === "manager") {
options.color = "yellow";
}

// Add separator after every 5 users
if ((index + 1) % 5 === 0) {
options.separator = true;
}

table.addRow(user, options);
});

table.printTable();
}

RowOptions Interface​

interface RowOptions {
// Row color
color?: Color;

// Add separator after this row
separator?: boolean;
}

ColumnConfig Interface​

interface ColumnConfig {
// Required: Column identifier
name: string;

// Optional: Display title (defaults to name)
title?: string;

// Optional: Text alignment
alignment?: Alignment;

// Optional: Text color
color?: Color;

// Optional: Maximum length
maxLen?: number;

// Optional: Minimum length
minLen?: number;
}