tty-table
A terminal table widget for nodejs and the browser.
Installation
npm install tty-table
<script src="tty-table.bundle.min.js"></script>
<script>
var Table = require('tty-table');
...
</script>
Why
- Automatic text wrapping
- Colors
- Optional callbacks on column values
- Header, body column alignment
- Padding
- Works in the browser as well as nodejs
Example Output
Terminal
Browser & Browser Console
Working example
Note that neither ASCI colors nor default borders are rendered in the browser.
An alternative border style, as shown below, can be used by setting the option:
borderStyle : 2
Example Usage
var Table = require('tty-table');
var chalk = require('chalk');
var header = [
{
value : "item",
headerColor : "cyan",
color: "yellow",
align : "left",
paddingLeft : 1,
width : 30
},
{
value : "price",
color : "red",
formatter : function(value){
var str = "$" + value.toFixed(2);
if(value > 5){
str = chalk.underline.green(str);
}
return str;
}
},
{
alias : "Is organic?",
value : "organic",
formatter : function(value){
if(value === 'yes'){
value = chalk.stripColor(value);
value = chalk.green(value);
}
else{
value = chalk.white.bgRed(value);
}
return value;
}
}
];
//Example with arrays as rows
var rows = [
["hamburger",2.50,"no"],
["el jefe's special cream sauce",0.10,"yes"],
["two tacos, rice and beans topped with cheddar cheese",9.80,"no"],
["apple slices",1.00,"yes"],
["ham sandwich",1.50,"no"],
["macaroni, ham and peruvian mozzarella",3.75,"no"]
];
var t1 = Table(header,rows,{
borderStyle : 1,
paddingBottom : 0,
headerAlign : "center",
align : "center",
color : "white"
});
//intentionally omitted var for html include
str1 = t1.render();
console.log(str1);
//Example with objects as rows
var rows = [
{
item : "hamburger",
price : 2.50,
organic : "no"
},
{
item : "el jefe's special cream sauce",
price : 0.10,
organic : "yes"
},
{
item : "two tacos, rice and beans topped with cheddar cheese",
price : 9.80,
organic : "no"
},
{
item : "apple slices",
price : 1.00,
organic : "yes"
},
{
item : "ham sandwich",
price : 1.50,
organic : "no"
},
{
item : "macaroni, ham and peruvian mozzarella",
price : 3.75,
organic : "no"
}
];
var t2 = Table(header,rows,{
borderStyle : 1,
paddingBottom : 0,
headerAlign : "center",
align : "center",
color : "white"
});
var str2 = t2.render();
console.log(str2);
API Reference
Table
Kind: global class
Param | Type | Description |
---|
header | array | |
header.column | object | Column options |
header.column.formatter | function | Runs a callback on each cell value in the parent column |
header.column.marginLeft | number | default: 0 |
header.column.marginTop | number | default: 0 |
header.column.maxWidth | number | default: 20 |
header.column.paddingBottom | number | default: 0 |
header.column.paddingLeft | number | default: 0 |
header.column.paddingRight | number | default: 0 |
header.column.paddingTop | number | default: 0 |
header.column.alias | string | Alernate header column name |
header.column.align | string | default: "center" |
header.column.color | string | default: terminal default color |
header.column.headerAlign | string | default: "center" |
header.column.headerColor | string | default: terminal default color |
rows | array | |
options | object | Table options |
options.borderStyle | number | default: 1 (0 = no border) Refers to the index of the desired character set. |
options.borderCharacters | array | |
Example
var Table = require('tty-table');
Table(header,rows,options);
Table.render() ⇒ String
Renders a table to a string
Kind: static method of Table
Example
var str = t1.render();
console.log(str); //outputs table
Running tests
grunt test
License
GPLv3 License
Copyright 2015, Tecfu.