1.0.2 • Published 9 years ago

infinite-table v1.0.2

Weekly downloads
1
License
MIT
Repository
github
Last release
9 years ago

infinite-table

An infinite scrolling table with editable features. No jQuery required. See the demo

Usage

Minimum required setup:

var InfiniteScroll = require('infinite-table');
new InfiniteScroll('<table element ID>', {
    url: <url to get data from>,
    fields: {
        <returned data property> : {}
    }
});

For the spinner, include

<link rel="stylesheet" href="/css/style.css"/>

Options:

new InfiniteScroll('<table element ID>', {
    url: <url to get data from>,
    fields: {
        <returned data property> : {
            data: {
                <data-attribute>: ':<returned data property>:'
                // for example:
                id: ':id:' // will create a data-attribute like data-id="1"
            },
            // setup listener, e.g. "click" listener (set as many as you wish):
            listener: [{
                handle: (e) => {alert(e.target.innerHTML)}, // callback
                on: 'click' // listen for event
            }],
            // if editable is provided, the td will be given contenteditable attribute,
            // same signature as above for listeners
            editable: [{
                handle: (e) => {alert(e.target.innerHTML)},
                on: 'blur'
            }]
        }
    },
    perPage: 20, // how many entries should be fetched per "page"
    loadTiming: 2, // when should the loading happen (defaults to the penultimate tr)
    transport: 'ajax', // possible transports: ajax/websockets,
    spinner: 0 // possible 0, 1, 2
});

An ajax (default) / websockets GET request is made whenever you hit the trigger. The signature is:

<url>?skip=<skip>&limit=<limit>

So your backend only has to GET skip and limit to query for the data. Example query

SELECT * FROM `foo` LIMIT <limit> OFFSET <skip>

If you're using sails.js you're in luck - simply create the contoller and model, everything else works out of the box.

The scroller expects json data as returned object.

INCLUDED DEPENDENCIES

lodash, bluebird
included: SpinKit from https://github.com/tobiasahlin/SpinKit

LICENSE

MIT