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 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 } ]

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

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

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.