GithubHelp home page GithubHelp logo

bahmutov / console.table Goto Github PK

View Code? Open in Web Editor NEW
139.0 5.0 16.0 192 KB

Adds console.table method that prints an array of objects as a table in console

License: MIT License

JavaScript 85.72% HTML 14.28%
console table nodejs

console.table's Introduction

console.table

Adds console.table method for convenience

NPM

Build status dependencies devdependencies semantic-release

Install

npm install console.table --save
bower install console.table --save

Use in Node

// call once somewhere in the beginning of the app
const cTable = require('console.table');
console.table([
  {
    name: 'foo',
    age: 10
  }, {
    name: 'bar',
    age: 20
  }
]);

// prints
name  age
----  ---
foo   10
bar   20

You can pass multiple strings and arrays in a single console.table call. Each argument will be formatted and printed separately on new line

Get only table string

const table = cTable.getTable([
  {
    name: 'foo',
    age: 10
  }, {
    name: 'bar',
    age: 20
  }
]);

console.log(table);

// prints
name  age
----  ---
foo   10
bar   20

Use in browser

INCOMPLETE, PROBABLY CHROME ONLY FOR NOW

<script src="bower_components/console.table/dist/console.table.js"></script>
<script>
console.table([{name: 'foo'}, {name: 'bar'}]);
</script>

Details

Uses easy-table for printing to console.log

If first argument is a string, and a second argument is an array, prints title row

console.table('Several objects', [...]);

Several objects
---------------
name  age
----  ---
foo   10
bar   20
baz   30

Printing array with column names

You can use the given column names when printing an array of arrays. For example,

var values = [
  ['max', 20],
  ['joe', 30]
];
console.table(['name', 'age'], values);

name  age
----  ---
max   20 
joe   30

If the titles is the first item in the array, just use slice

var values = [
    ['name', 'age'],
    ['max', 20],
    ['joe', 30]
]
console.table(values[0], values.slice(1));

Small print

Author: Gleb Bahmutov © 2014

License: MIT - do anything with the code, but don't blame me if it does not work.

Spread the word: tweet, star on github, etc.

Support: if you find any problems with this module, email / tweet / open issue on Github

MIT License

Copyright (c) 2014 Gleb Bahmutov

Permission is hereby granted, free of charge, to any person obtaining a copy of this software and associated documentation files (the "Software"), to deal in the Software without restriction, including without limitation the rights to use, copy, modify, merge, publish, distribute, sublicense, and/or sell copies of the Software, and to permit persons to whom the Software is furnished to do so, subject to the following conditions:

The above copyright notice and this permission notice shall be included in all copies or substantial portions of the Software.

THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE.

console.table's People

Contributors

bahmutov avatar gcrispino avatar palortoff avatar

Stargazers

 avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar

Watchers

 avatar  avatar  avatar  avatar  avatar

console.table's Issues

Not printing table data correctly in case of mongoose JSON array response

I am trying to print mongoose json array using console.table, However I see unexpected table header. Below is my code:

const cTable = require('console.table');
const mongoose = require('mongoose');
mongoose.connect('mongodb:/host', {
	auth: {
		user: 'unm',
		password: 'pwd'
	}
});

const pairNm = 'BTC-INR-tx'



const pairModel = mongoose.model(pairNm, {}, pairNm);

pairModel.find({}, {_id: 0, trans_id: 1,
    fill_qty: 1,
    fill_price: 1,
    fill_flags: 1,
    currencyPair: 1,
    lastModifiedDate: 1}).limit(10).exec().then((d) => {
	// console.log(d);
	console.table('d', d);
});

Here is the log:

d
------------------------------------------------------
$__              isNew  errors  _doc             $init
---------------  -----  ------  ---------------  -----
[object Object]  false          [object Object]  true 
[object Object]  false          [object Object]  true 
[object Object]  false          [object Object]  true 
[object Object]  false          [object Object]  true 
[object Object]  false          [object Object]  true 
[object Object]  false          [object Object]  true 
[object Object]  false          [object Object]  true 
[object Object]  false          [object Object]  true 
[object Object]  false          [object Object]  true 
[object Object]  false          [object Object]  true

Whereas actual data look like this:

[ { trans_id: 382,
    fill_qty: 10000000,
    fill_price: 712500,
    fill_flags: 3,
    currencyPair: 'BTC-INR',
    lastModifiedDate: 1521712287144 },
  { trans_id: 384,
    fill_qty: 5000000,
    fill_price: 711800,
    fill_flags: 2,
    currencyPair: 'BTC-INR',
    lastModifiedDate: 1521714892456 },
  {},
  { trans_id: 392,
    fill_qty: 10000000,
    fill_price: 711200,
    fill_flags: 1,
    currencyPair: 'BTC-INR',
    lastModifiedDate: 1521787237696 },
  { trans_id: 393,
    fill_qty: 10000000,
    fill_price: 711200,
    fill_flags: 3,
    currencyPair: 'BTC-INR',
    lastModifiedDate: 1521787298539 },
  { trans_id: 394,
    fill_qty: 21168,
    fill_price: 715000,
    fill_flags: 2,
    currencyPair: 'BTC-INR',
    lastModifiedDate: 1521790941289 },
  { trans_id: 395,
    fill_qty: 978832,
    fill_price: 715000,
    fill_flags: 3,
    currencyPair: 'BTC-INR',
    lastModifiedDate: 1521791070426 },
  { trans_id: 399,
    fill_qty: 100000000,
    fill_price: 716000,
    fill_flags: 3,
    currencyPair: 'BTC-INR',
    lastModifiedDate: 1521798458247 },
  { trans_id: 400,
    fill_qty: 22510000,
    fill_price: 710000,
    fill_flags: 2,
    currencyPair: 'BTC-INR',
    lastModifiedDate: 1521800843473 },
  { trans_id: 400,
    fill_qty: 77490000,
    fill_price: 709000,
    fill_flags: 1,
    currencyPair: 'BTC-INR',
    lastModifiedDate: 1521800843474 } ]

Can not work with node 0.8

The dependency on versions using the "^" syntax appears to be not supported in this earlier version of npm. Mocha's dependency of ^1.28.2 could be rewritten as >=1.28.12 <2.0.0. Grunt's ^0.4.4 is the same as ~0.4.4 and >=0.4.4 <0.5. In fact, most of the dependencies you list can replace the carat with a tilde because they start with a zero.

More information: https://www.npmjs.org/doc/misc/semver.html

This issue was spurred by testing my library on Travis. See this build for more information: https://travis-ci.org/tests-always-included/complexion-js/jobs/37970872

Enhancement : rotate/pivet table

I was wondering if it would be possible to list the table in the other way,

console.table( [["a", "b", "c", "d"],["e", "f", "g", "h"]] );

current comes out

0  1  2  3
-  -  -  -
a  b  c  d
e  f  g  h

would come out

0 | a  e
1 | b  f
2 | c  g
3 | d  h

This has come about because I have few tables with lots of data, rather than lots of tables with few data. I know with the table layout above it doesn't seem that needed. But when each one of those arrays holds 43 data, but there is only 4 lots of them, it gets hard to use.

image

This is a screenshot of 2 arrays with 43.

  • Colin

Doesn't work in Node.js 8

I'm using Node.js 8.3 here, and the library doesn't work.

Calling console.table just doesn't outputs anything.

object whose properties are objects

There is an issue when printing objects whose properties are objects. For example:

function Person(firstName, lastName) {
  this.firstName = firstName;
  this.lastName = lastName;
}

var family = {};

family.mother = new Person("Jane", "Smith");
family.father = new Person("John", "Smith");
family.daughter = new Person("Emily", "Smith");

console.table(family);

Results in:

key       value          
--------  ---------------
mother    [object Object]
father    [object Object]
daughter  [object Object]

The expectation here is that there should be firstName and lastName columns.
More details can be found here: https://developer.mozilla.org/en-US/docs/Web/API/Console/table

Feature request: Right alignment

When working with numbers, usually they are better visualized with right-alignment;
Right now I have:

name           numberA             numberB     percentage
-------------  ------------------  ----------  ---------
activation     435754              440014      0.97 %
application    17768620            17928345    0.89 %

Would be nice to be configurable and/or to have number by default align to the right:

name                      numberA     numberB  percentage
-------------  ------------------  ----------  ----------
activation                 435754      440014      0.97 %
application              17768620    17928345      0.89 %

Recommend Projects

  • React photo React

    A declarative, efficient, and flexible JavaScript library for building user interfaces.

  • Vue.js photo Vue.js

    🖖 Vue.js is a progressive, incrementally-adoptable JavaScript framework for building UI on the web.

  • Typescript photo Typescript

    TypeScript is a superset of JavaScript that compiles to clean JavaScript output.

  • TensorFlow photo TensorFlow

    An Open Source Machine Learning Framework for Everyone

  • Django photo Django

    The Web framework for perfectionists with deadlines.

  • D3 photo D3

    Bring data to life with SVG, Canvas and HTML. 📊📈🎉

Recommend Topics

  • javascript

    JavaScript (JS) is a lightweight interpreted programming language with first-class functions.

  • web

    Some thing interesting about web. New door for the world.

  • server

    A server is a program made to process requests and deliver data to clients.

  • Machine learning

    Machine learning is a way of modeling and interpreting data that allows a piece of software to respond intelligently.

  • Game

    Some thing interesting about game, make everyone happy.

Recommend Org

  • Facebook photo Facebook

    We are working to build community through open source technology. NB: members must have two-factor auth.

  • Microsoft photo Microsoft

    Open source projects and samples from Microsoft.

  • Google photo Google

    Google ❤️ Open Source for everyone.

  • D3 photo D3

    Data-Driven Documents codes.