May 20, 2019

521 words 3 mins read

piecioshka/simple-data-table

piecioshka/simple-data-table

:hammer: Lightweight and simple data table with no dependencies

repo name piecioshka/simple-data-table
repo link https://github.com/piecioshka/simple-data-table
homepage https://piecioshka.github.io/simple-data-table/demo/
language JavaScript
size (curr.) 201 kB
stars (curr.) 162
created 2018-07-23
license

simple-data-table

npm version downloads count travis coveralls

:hammer: Lightweight and simple data table with no dependencies

Features

  • :white_check_mark: Display data (array with objects) in simple table
  • :white_check_mark: Lazy loading of data (you can load data whenever you can)
  • :white_check_mark: Support custom skins
  • :white_check_mark: Small size of package
  • :white_check_mark: No dependencies
  • :white_check_mark: Support custom events (update, add, remove)
  • :white_check_mark: Fluent API
  • :white_check_mark: API: Find cells with content
  • :white_check_mark: API: Highlight cells
  • :white_check_mark: API: Support put value into single cell
  • :white_check_mark: API: Sorting by a concrete cell with a given function

Installation

npm install simple-data-table
<link rel="stylesheet" href="src/skins/default.css"/>
<script src="src/index.js"></script>
const $container = document.querySelector('#place-to-render');
const d = new SimpleDataTable($container, options);
d.load([
    {
        column1: 'Cell 1',
        column2: 'Cell 2',
        column3: 'Cell 3'
    },
    {
        column1: 'Cell 1 (row 2)',
        column2: 'Cell 2 (row 2)',
        column3: 'Cell 3 (row 2)'
    }
]);
d.render();

Examples

More examples: https://piecioshka.github.io/simple-data-table/demo/

Options

addButtonLabel (Default: ‘✚’)

Change value od button which add new row.

Example:

const d = new SimpleDataTable($container, {
    addButtonLabel: 'New record'
});
d.load(...);
d.render();

defaultColumnPrefix (Default: ‘column’)

Define what “name” should have cells in new added columns.

Example:

const d = new SimpleDataTable($container, {
    defaultColumnPrefix: 'random'
});
d.load(...);
d.render();

defaultColumnNumber (Default: 3)

Define how much columns should contain row in empty table.

Example:

const d = new SimpleDataTable($container, {
    defaultColumnNumber: '7'
});
d.load(...);
d.render();

defaultHighlightedCellClass (Default: ‘highlighted-cell’)

Define class of highlighted cell.Example:

const d = new SimpleDataTable($container, {
    defaultHighlightedCellClass: 'my-highlight'
});
d.load(...);
d.render();

API

render(): SimpleDataTable

Render table into DOM.

getRowsCount(): number

Get number of rows.

findCellsByContent(...content): Array<{ rowIndex: number, cellIndex: number }>

Get list of cell positions which contains passed strings.

getCell( rowIndex: number , cellIndex: number ): HTMLElement || null

Get DOM reference of concrete cell.

highlightCell( rowIndex: number, cellIndex: number )

Add class to concrete cell.

clearHighlightedCells()

Remove CSS class of all highlighted cells.

setInputCellContent( rowIndex: number, cellIndex: number, content: string )

Put content into input in concrete cell.

load( data: Array )

Loading data into table component.

emit( name: string, payload: any )

Trigger event on SimpleDataTable instance.

on( name: string, handler: Function )

Listen on events.

sortByColumn( cellIndex : number, comparingFunction : Function )

Sorts data and triggers DATA_SORTED event. By default takes cellIndex=0 and sorts as String.prototype.localeCompare.

Events

SimpleDataTable.EVENTS.UPDATE

Event is dispatching when you change any of input in table.

Example:

const d = new SimpleDataTable($container);
d.on(SimpleDataTable.EVENTS.UPDATE, (data) => {
    // do some stuff with the updated data...
});

SimpleDataTable.EVENTS.ROW_ADDED

Event is dispatching when you add new record.

Example:

const d = new SimpleDataTable($container);
d.on(SimpleDataTable.EVENTS.ROW_ADDED, () => {
    // do some stuff...
});

SimpleDataTable.EVENTS.ROW_REMOVED

Event is dispatching when you remove any record.

Example:

const d = new SimpleDataTable($container);
d.on(SimpleDataTable.EVENTS.ROW_REMOVED, () => {
    // do some stuff...
});

SimpleDataTable.EVENTS.DATA_SORTED

Event is dispatching after data is sorted with sortByColumn function.

Example:

const d = new SimpleDataTable($container);
d.on(SimpleDataTable.EVENTS.DATA_SORTED, () => {
    // do some stuff...
});

Tested browsers

  • Safari v10.1.2
  • Firefox v61.0.1
  • Chrome v67.0.3396.99
  • Opera v51.0.2830.40

Unit tests

npm test

Code coverage

npm run coverage

License

The MIT License @ 2018

comments powered by Disqus