import Table = require('cli-table') import { calculateColWidths } from './src/calculate-col-widths' export interface TableData { head: string[], rows: string[][] } export enum SortOrder { Ascending, Descending } export default class HorizontalTable extends Table{ constructor(data: TableData, maxWidth: number, style?: TableStyle){ const { head, rows } = data super({ head, colWidths: calculateColWidths(head, rows, maxWidth), style: style }) this.push(...rows) } sortByRow(columnIndex: number, order: SortOrder = SortOrder.Descending, map: (value: any) => number = value => value){ if(order === SortOrder.Descending){ return this.sort((a: string[], b: string[]) => map(b[columnIndex]) - map(a[columnIndex])) } return this.sort((a: string[], b: string[]) => map(a[columnIndex]) - map(b[columnIndex])) } }