tablemodify is a javascript-plugin which boosts your html tables with awesome style and functionalities!
It is written in plain js, so no jQuery is required.
Tm is based on a core Tablemodify-object which can be extended by several modules.
There are some modules defined by default or you could even write your own if you wish to.
Browser support: supported by all major browsers (IE11, Firefox, Opera, Chrome, Safari).
the current version is 0.9.6
Intro
Demo
| first name | last name | birthday | score | favourite pet |
|---|
the demo shows the modules 'pager', 'sorter', 'filter', 'fixed' and 'columnStyles' in action.
Setup
First of all, get the sources from Github ("/dist/") and include them in your header.
what you need:
- tablemodify.js or tablemodify.min.js
- tablemodify.css
- a .css-file from the theme folder
After the document has loaded, you can initialize the Tablemodify-instance.
var tm,
options = {} // some options can be passed via this object, read more below
function init() {
tm = new Tablemodify('#myTable', options) // assume the table's selector is #myTable.
}
window.addEventListener('DOMContentLoaded', init)
options
an overview over all the options you can choose:
{
// table will be wrapped in a container. you may give it an id
containerId: 'myContainer',
// default is 'en', choose between 'en', 'de', or add own Language pack (read below)
language: 'en',
// necessary! pass your theme's name here
theme: 'default',
// pass 'fade' or null. adds a nice transition when the table data changes
transition: 'fade',
/*
This is an overview of the default modules tablemodify offers.
All modules are optional.
To run a module, add it's name to the following object. the values are js-objects again.
To run a module with default values, you can just pass an empty object, for example: "sorter: {}",
The specific module settings will be explained in the accompaniyng chapter.
*/
modules: {
columnStyles: columnStylesSettings,
filter: filterSettings,
sorter: sorterSettings,
pager: pagerSettings,
fixed: fixedSettings
}
}
Modules
All modules are optional and work independent.
Once initialized, it is possible to access them via tm.getModule(name), each provides some utilities you can use.
sorter
This module sorts the rows of your tbody, ascending or descending, sorted by a single column or even by multiple columns.
For multisort, press shift and click another head cell. Still press shift and click a selected cell again to invert the order.
For big data amounts, it is recommended to combine sorter and pager or sort via php.
var sorterSettings = {
/*
these are the defaults:
*/
initialColumn: 'firstEnabled', // initial sorting column, either a column index or the special value 'firstEnabled'
initialOrder: 'asc', // initial sorting order, either 'asc', or 'desc'
enableMultisort: true, // enable/disable multisort functionality
columns: {
all: {
enabled: true,
parser: 'intelligent' // different types of parsers: 'intelligent' (for strings and numbers combined),
// 'string', 'numeric' (integer and float), 'date' (see below)
},
/*
custom settings for single columns:
*/
0: {
enabled: false // disable sorting
},
1: {
parser: 'date', // use another parser for this column
parserOptions: { // provide parameters to the parser
preset: 'english'
}
}
},
/*
adding own parsers. Read below how it works.
*/
customParsers: customParsers
}
parsers
there are some parsers available by default:
| parsername | notice | description | parameters |
|---|---|---|---|
| "intelligent" | default | differentiates automatically between strings and numbers. recommended for mixed types. | none |
| "string" | sorts in alphabetic order. efficient, recommended for pure strings | none | |
| "numeric" | sorts numbers (also floats). efficient, recommended for numbers | none | |
| "date" | sorts by a given date format | format: A date/time format string which will be used to parse the dates preset: either 'english' or 'german', 'german' will match 'TT.MM.YYYY' and 'TT.MM.YY', 'english' will match 'YYYY-MM-DD' or 'MM/DD/YYYY'. It is recommended not to rely on the presets but rather provide your own date format string Here you can find an overview of the tokens which can be used |
A parser is simply a compare function which is passed to the Array.sort() method. here you can read more about compare functions If you want to define your own parsers, add them like this:
var customParsers = {
myParser: function(a, b) {
/*
parameters a, b: strings of two cell-contents to compare.
if a > b, return a positive number,
if a < b, return a negative number,
if a = b, return 0. (<- this is important for multisort!)
*/
// for example, this is the implementation of parser "string"
if (a > b) return 1
if (a < b) return -1
return 0
}
}
change header appearance
you can simply overwrite the default sorter styles of your table. Therefore, tm provides several css-classes.
Different order-icons:
/* default sorter icon (for no active sorting) */
.tm-container td.sortable {
background-image:url(path/to/your/icon-default.jpg);
}
/* icon for active ascending order */
.tm-container td.sortable.sort-up {
background-image:url(path/to/your/icon-up.jpg);
}
/* icon for active descending order */
.tm-container td.sortable.sort-down {
background-image:url(path/to/your/icon-down.jpg);
}
different background-color of active sorting:
/* this will set the color to yellow */
.tm-container td.sortable.sort-up, .tm-container td.sortable.sort-down {
background-color: 'yellow'
}
pager
filter
fixed
columnStyles
resizer
Themes