jQuery DataTables plugin for rendering nested DataTables in rows. Inner tables are independent of the data and layout from the outer table.
Download the latest version and include nested.datatables.min.js file
$ npm install nested-datatables
var table = new nestedTables.TableHierarchy("example", data, settings);
table.initializeTableHierarchy();
Main NestedTables constructor.
Type: String
ID of a DOM element where will be table hierarchy rendered.
Type: Array.<Object>
Data used for building table hierarchy. Each item consists of property data
and property kids
, which represents array of child elements.
Check examples below how to define json data.
Type: Object
Settings for jQuery DataTables constructor.
Build nested table hierarchy.
Triggered when a child hierarchy is shown
// '#example' is wrapper ID for table hierarchy
var tableEle = document.querySelector("#example .table");
tableEle.addEventListener("onShowChildHierarchy", function (e) {
console.log(e);
});
Triggered when a child hierarchy is hidden
// '#example' is wrapper ID for table hierarchy
var tableEle = document.querySelector("#example .table");
tableEle.addEventListener("onHideChildHierarchy", function (e) {
console.log(e);
});
<!DOCTYPE html>
<html>
<head>
<meta charset="UTF-8" />
<script src="./dist/nested.datatables.min.js"></script>
</head>
<body>
<div id="example" class="container"></div>
<script>
var dataInJson = [
{
data: {
name: "b1",
street: "s1",
city: "c1",
departments: 10,
offices: 15,
},
kids: [
{
data: {
department: "HR",
supervisor: "Isidor Bristol",
floor: 1,
employees: 15,
},
kids: [
{
data: {
name: "Klement Nikodemos",
phone: "+938462",
hire_date: "January 1, 2010",
id: 3456,
},
kids: [],
},
{
data: {
name: "Madhava Helmuth",
phone: "+348902",
hire_date: "May 23, 2002",
id: 1234,
},
kids: [],
},
{
data: {
name: "Andria Jesse",
phone: "456123",
hire_date: "October 23, 2011",
id: 9821,
},
kids: [],
},
],
},
{
data: {
department: "development",
supervisor: "Jim Linwood",
floor: 2,
employees: 18,
},
kids: [
{
data: {
name: "Origenes Maxwell",
phone: "345892",
hire_date: "February 1, 2004",
id: 6234,
},
kids: [],
},
],
},
{
data: {
department: "testing",
supervisor: "Zekeriya Seok",
floor: 4,
employees: 11,
},
kids: [],
},
],
},
{
data: {
name: "b2",
street: "s10",
city: "c2",
departments: 3,
offices: 10,
},
kids: [
{
data: {
department: "development",
supervisor: "Gallagher Howie",
floor: 8,
employees: 24,
},
kids: [
{
data: {
name: "Wat Dakota",
},
kids: [],
},
],
},
{
data: {
department: "testing",
supervisor: "Shirley Gayle",
floor: 4,
employees: 11,
},
kids: [],
},
],
},
{
data: {
name: "b3",
street: "s3",
city: "c3",
departments: 2,
offices: 1,
},
kids: [
{
data: {
department: "development",
},
kids: [
{
data: {
name: "Wat Dakota",
},
kids: [],
},
],
},
{},
],
},
{
data: {
name: "b4",
city: "c4",
},
kids: [],
},
];
var settings = {
iDisplayLength: 20,
bLengthChange: false,
bFilter: false,
bSort: false,
bInfo: false,
};
var table = new nestedTables.TableHierarchy(
"example",
dataInJson,
settings
);
table.initializeTableHierarchy();
</script>
</body>
</html>
<!DOCTYPE html>
<html>
<head>
<meta charset="UTF-8" />
<script src="./dist/nested.datatables.min.js"></script>
</head>
<body>
<div id="example" class="container"></div>
<script>
var dataInJson2 = [
{
data: {
date: "2018-08",
},
kids: [
{
data: {
" ": '<input type="checkbox" name="exampleCheckbox" value="exampleCheckbox">',
img: "<img src=https:\/\/picsum.photos\/100\/100 width=20 \/>",
like: {
value: 47,
cellClass: "likeCell",
headerClass: "likeHeader",
},
perf: { value: 130.55555555555554, cellClass: "perf" },
date: "2018-08-30",
},
kids: [],
},
{
data: {
" ": '<input type="checkbox" name="exampleCheckbox2" value="exampleCheckbox2">',
img: "<img src=https:\/\/picsum.photos\/100\/100 width=20 \/>",
like: 24,
perf: 66.66666666666667,
date: "2018-08-31",
},
kids: [],
},
],
},
];
var settings = {
iDisplayLength: 20,
bLengthChange: false,
bFilter: false,
bSort: false,
bInfo: false,
};
var table = new nestedTables.TableHierarchy(
"example",
dataInJson,
settings
);
table.initializeTableHierarchy();
</script>
</body>
</html>
MIT © Andrej Gajdos