Dable (pronounced 'dabble') is a simple javascript table control with filtering, sorting, paging, styles, and more!
Dable is simple and elegant. It has
zero dependencies and works in IE8+.
Here are some examples of how you can use it.
<!DOCTYPE html>
<html>
<head>
<script src="Dable.js"></script>
</head>
<body>
<div id="DefaultDable"></div>
<script type="text/javascript">
var dable = new Dable();
var data = [ [ 1, 2 ], [ 3, 4 ] ];
var columns = [ 'Odd', 'Even' ];
dable.SetDataAsRows(data);
dable.SetColumnNames(columns);
dable.BuildAll("DefaultDable");
</script>
</body>
</html>
| Odd | Even |
|---|---|
| 1 | 2 |
| 3 | 4 |
<!DOCTYPE html>
<html>
<head>
<script src="Dable.js"></script>
</head>
<body>
<div id="TableDable">
<table>
<thead>
<tr>
<th>Odd</th>
<th>Even</th>
</tr>
</thead>
<tbody>
<tr>
<td>1</td>
<td>2</td>
</tr>
<tr>
<td>3</td>
<td>4</td>
</tr>
</tbody>
</table>
</div>
<script type="text/javascript">
var dable = new Dable("TableDable");
</script>
</body>
</html>
<!DOCTYPE html>
<html>
<head>
<script src="Dable.js"></script>
<!--Include the Bootstrap CDN-->
<link href="//netdna.bootstrapcdn.com/bootstrap/3.0.0/css/bootstrap.min.css" rel="stylesheet">
</head>
<body>
<div id="BootstrapDable"></div>
<script type="text/javascript">
var dable = new Dable();
var data = [ [ 1, 2 ], [ 3, 4 ] ];
var columns = [ 'Odd', 'Even' ];
dable.SetDataAsRows(data);
dable.SetColumnNames(columns);
dable.style = 'bootstrap'; //set the style
dable.BuildAll("BootstrapDable");
</script>
</body>
</html>
<!DOCTYPE html>
<html>
<head>
<script src="Dable.js"></script>
<!--Include the JQueryUI CDN-->
<link href="http://code.jquery.com/ui/1.10.3/themes/smoothness/jquery-ui.css" rel="stylesheet">
</head>
<body>
<div id="JQueryUIDable"></div>
<script type="text/javascript">
var dable = new Dable();
var data = [ [ 1, 2 ], [ 3, 4 ] ];
var columns = [ 'Odd', 'Even' ];
dable.SetDataAsRows(data);
dable.SetColumnNames(columns);
dable.style = 'jquerui'; //set the style
dable.BuildAll("JQueryUIDable");
</script>
</body>
</html>
Dable builds cleanly each time, so we can rebuild the table with new styles anytime we want
| Odd | Even |
|---|---|
| 1 | 2 |
| 3 | 4 |
<!DOCTYPE html>
<html>
<head>
<script src="Dable.js"></script>
<!--Include the JQueryUI CDN-->
<link href="http://code.jquery.com/ui/1.10.3/themes/smoothness/jquery-ui.css" rel="stylesheet">
<!--Include the Bootstrap CDN-->
<link href="//netdna.bootstrapcdn.com/bootstrap/3.0.0/css/bootstrap.min.css" rel="stylesheet">
</head>
<body>
<div id="AlternatingDable">
<table>
<thead>
<tr>
<th>Odd</th>
<th>Even</th>
</tr>
</thead>
<tbody>
<tr>
<td>1</td>
<td>2</td>
</tr>
<tr>
<td>3</td>
<td>4</td>
</tr>
</tbody>
</table>
</div>
<script type="text/javascript">
var dable = new Dable("AlternatingDable");
setInterval(function () {
if (dable.style == "jqueryui") {
dable.style = "bootstrap";
}
else if (!dable.style == "bootstrap") {
dable.style = "clear";
}
else if (!dable.style == "clear") {
dable.style = "";
}
else {
dable.style = "jqueryui";
}
dable.UpdateStyle(document.getElementById("AlternatingDable"));
}, 3000);
</script>
</body>
</html>
Dable automatically sorts text, numbers, and simple US Dates, but if you need it to sort something else, you only need to add a custom sort function.
<!DOCTYPE html>
<html>
<head>
<script src="../js/Dable.js"></script>
<!--Include the Bootstrap CDN-->
<link href="//netdna.bootstrapcdn.com/bootstrap/3.0.0/css/bootstrap.min.css" rel="stylesheet">
</head>
<body>
<div id="SortingDable"></div>
<script type="text/javascript">
var dable = new Dable();
var data = [
[ 1, '12/1/12', 'Armadillo', 'First' ],
[ 2, '12/2/2012', 'Cat', 'Fourth' ],
[ 3, '1/1/2001', 'Porcupine', 'Second' ],
[ 4, '2/22/02', 'Bat', 'Third' ] ];
var columns = [ 'Numbers', 'Dates', 'Text', 'Custom' ];
dable.SetDataAsRows(data);
dable.SetColumnNames(columns);
dable.columnData[3].CustomSortFunc = function(columnIndex, ascending, currentRowObjects) {
var order = [ 'First', 'Second', 'Third', 'Fourth' ];
currentRowObjects.sort(function(a, b) {
var valueA = a.Row[columnIndex];
var valueB = b.Row[columnIndex];
return order.indexOf(valueA) - order.indexOf(valueB);
});
if (!ascending) {
currentRowObjects.reverse();
}
return currentRowObjects
};
dable.style = 'bootstrap';
dable.BuildAll("SortingDable");
</script>
</body>
</html>
<!DOCTYPE html>
<html>
<head>
<script src="Dable.js"></script>
<!--Include the JQueryUI CDN-->
<link href="http://code.jquery.com/ui/1.10.3/themes/smoothness/jquery-ui.css" rel="stylesheet">
</head>
<body>
<div id="PagingDable"></div>
<script type="text/javascript">
var dable = new Dable();
var data = [
[ 1, 2 ], [ 3, 4 ], [5, 6], [7, 8], [9, 10],
[ 11, 12 ], [ 13, 14 ], [15, 16], [17, 18], [19, 20],
[ 1, 2 ], [ 3, 4 ], [5, 6], [7, 8], [9, 10],
[ 11, 12 ], [ 13, 14 ], [15, 16], [17, 18], [19, 20]
];
var columns = [ 'Odd', 'Even' ];
dable.SetDataAsRows(data);
dable.SetColumnNames(columns);
dable.style = 'jquerui';
dable.pageSizes = [1, 2, 5]; //replace the page sizes
dable.pageSize = 2; //select a page size
dable.pagerSize = 5; //add 5 page buttons
//include first and last buttons
dable.pagerIncludeFirstAndLast = true;
dable.BuildAll("PagingDable");
</script>
</body>
</html>