nv-facutil-simple-table
- nv-facutil-simple-table simple table
- simplified version of nvdtb
- less apis but easy to use
install
- npm install nv-facutil-simple-table
usage
example
const {Stable} = require("nv-facutil-simple-table");
var tbl = new Stable(['name','class','year'])
tbl.append_row(['john','A',15])
tbl.append_row(['jane','B',12])
tbl.append_row(['dave','B',10])
/*
> tbl
name | class | year
-------------------
john | A | 15
-------------------
jane | B | 12
-------------------
dave | B | 10
-------------------
>
*/
var tbl = new Stable(['name','class','year'])
tbl.append_row({name:'john',class:'A',year:15})
tbl.append_row({name:'jane',class:'B',year:12})
tbl.append_row({name:'dave',class:'B',year:10})
tbl.srch((r)=>r.class==='B')
/*
> tbl.srch((r)=>r.class==='B')
[ [ 'jane', 'B', 12 ], [ 'dave', 'B', 10 ] ]
>
*/
/*
> tbl.cnl_
[ 'name', 'class', 'year' ]
> tbl.colnum_
3
> tbl.rownum_
3
> tbl.size_
9
> tbl.cnmirr_
SimpleMirr(6) [Map] {
0 => 'name',
'name' => 0,
1 => 'class',
'class' => 1,
2 => 'year',
'year' => 2
}
>
*/
/*
> tbl.col(1)
[ 'A', 'B', 'B' ]
> tbl.col('class')
[ 'A', 'B', 'B' ]
>
> tbl.row(1)
[ 'jane', 'B', 12 ]
>
> tbl.ele(2,'year')
10
> tbl.ele(2,'name')
'dave'
>
*/
/*
> tbl.rm_row(1)
[ 'jane', 'B', 12 ]
> tbl
name | class | year
-------------------
john | A | 15
-------------------
dave | B | 10
-------------------
>
*/
/*
> tbl.insert_row_after(0,[ 'jane', 'B', 12 ])
[ 1, [ 'jane', 'B', 12 ] ]
> tbl
name | class | year
-------------------
john | A | 15
-------------------
jane | B | 12
-------------------
dave | B | 10
-------------------
>
tbl.rm_row(1)
[ 1, [ 'jane', 'B', 12 ] ]
tbl.insert_row_after(0,{name:'jane',year:12,class:'B'})
> tbl
name | class | year
-------------------
john | A | 15
-------------------
jane | B | 12
-------------------
dave | B | 10
-------------------
>
*/
/*
> tbl.sort()
undefined
> tbl
name | class | year
-------------------
dave | B | 10
-------------------
jane | B | 12
-------------------
john | A | 15
-------------------
>
> tbl.sort(false,['year','class','name'])
undefined
> tbl
name | class | year
-------------------
dave | B | 10
-------------------
jane | B | 12
-------------------
john | A | 15
-------------------
>
*/
/*
tbl.append_col('lang',['es','en','zh'])
> tbl
name | class | year | lang
--------------------------
dave | B | 10 | es
--------------------------
jane | B | 12 | en
--------------------------
john | A | 15 | zh
--------------------------
>
*/
/*
> tbl.dump()
{
cnl: [ 'name', 'class', 'year', 'lang' ],
mat: [
[ 'dave', 'B', 10, 'es' ],
[ 'jane', 'B', 12, 'en' ],
[ 'john', 'A', 15, 'zh' ]
]
}
>
> var dtb = tbl.todtb()
[
{ name: 'dave', class: 'B', year: 10, lang: 'es' },
{ name: 'jane', class: 'B', year: 12, lang: 'en' },
{ name: 'john', class: 'A', year: 15, lang: 'zh' }
]
>
> Stable.load_from_dtb(dtb)
name | class | year | lang
--------------------------
dave | B | 10 | es
--------------------------
jane | B | 12 | en
--------------------------
john | A | 15 | zh
--------------------------
>
*/
/*
> tbl.flat_filter((ele,rowseq,cn,colseq)=>ele[0]==='j')
[ 'john', 'jane' ]
>
*/
METHODS
getter
tbl.cnl_ =>Array<any>
tbl.cnmirr_ =>SimpleMirr
tbl.colnum_ =>number
tbl.rownum_ =>number
tbl.mat_ =>Array<Array<any>>
tbl.size_ =>number
tbl.cn (col_index:number) =>string
tbl.colseq (col_name:string) =>number
tbl.col (k:number|string) =>Array<any>
tbl.row (index:number) =>Array<any>
tbl.ele (row_index:number,k:number|string) => any
operation
type Row = Array<any> | Object
type Col = Array<any>
tbl.append_row(row:Row) =>[row_index:number,Row]
tbl.append_col(col_name:string,col:Col) =>[col_index:number,Col]
tbl.prepend_row(row:Row) =>[row_index:number,Row]
tbl.prepend_col(col_name:string,col:Col) =>[col_index:number,Col]
tbl.insert_row_before(row_index:number,row:Row) =>[row_index:number,Row]
tbl.insert_row_after (row_index:number,row:Row) =>[row_index:number,Row]
tbl.insert_col_before(k:number|string, col_name:string, col:Col) =>[col_index:number,Col]
tbl.insert_col_after(k:number|string, col_name:string, col:Col) =>[col_index:number,Col]
tbl.rm_row(row_index:number) => Row
tbl.rm_col(k:number|string) => Col
tbl.swap_row(row_index0:number,row_index1:number)
tbl.swap_col(k0:number|string, k1:number|string)
query
type MatchF = (row:Object,row_index:number) =>Boolean
type SortF = (ele:any,k:string)=> 0|1|-1
type FltrF = (ele:any,row_index:number,col_name:string,colseq:number) => Boolean
tbl.srch(f:MatchF) => Array<Array<any>>
tbl.sort(
reverse:boolean,
cmp_keys:undefined|Array<string>,
cmp_funcs:undefined|Array<SortF>
)
tbl.flat_filter(f:FltrF) => Array<any>
dump
interface Dumped {
cnl: Array<string>;
mat: Array<Array<any>>;
}
type Dtb = Array<Object>;
tbl.dump() =>Dumped
tbl.todtb() => Dtb
APIS
- fac_stbl.cmmn.transpose_mat(mat:Array<Array>)
- fac_stbl.Stable.load(dumped:Dumped):Stable
- fac_stbl.Stable.load_from_dtb(dtb:Dtb):Stable
LICENSE