I'm using the RowGrouping add-on, all the rows are correctly grouped as shown below:
This is my implementation:
HTML
<html>
<head>
<script src="https://code.jquery.com/jquery-3.4.1.min.js"></script>
<link href="https://nightly.datatables.net/css/jquery.dataTables.css" rel="stylesheet" type="text/css" />
<script src="https://nightly.datatables.net/js/jquery.dataTables.js"></script>
<link href="https://cdn.datatables.net/rowgroup/1.1.2/css/rowGroup.dataTables.css" rel="stylesheet" type="text/css" />
<script src="https://cdn.datatables.net/rowgroup/1.1.2/js/dataTables.rowGroup.js"></script>
<meta charset=utf-8 />
<title>DataTables - JS Bin</title>
</head>
<body>
<div class="container">
<table id="example" class="display" width="100%">
<thead>
<tr>
<th>Name</th>
<th>Position</th>
<th>Office</th>
<th>Extn</th>
<th>Start date</th>
<th>Salary</th>
</tr>
</thead>
<tfoot>
<tr>
<th>Name</th>
<th>Position</th>
<th>Office</th>
<th>Extn</th>
<th>Start date</th>
<th>Salary</th>
</tr>
</tfoot>
</table>
</div>
</body>
</html>
JS
$(document).ready(function() {
var collapsedGroups = {};
var table = $('#example').DataTable({
ajax: "/ajax/objects.txt",
order: [[ 2, "desc" ]],
columns: [
{ "data": "name" },
{ "data": "position" },
{ "data": "office" },
{ "data": "extn" },
{ "data": "start_date" },
{ "data": "salary" }
],
rowGroup: {
dataSrc: 'office',
startRender: function ( rows, group ) {
var collapsed = !!collapsedGroups[group];
rows.nodes().each(function (r) {
r.style.display = collapsed ? 'none' : '';
});
return $('<tr/>')
.append('<td colspan="8">' + group + ' (' + rows.count() + ')</td>')
.attr('data-name', group)
.toggleClass('collapsed', collapsed);
},
},
});
$('#example tbody tr.group-start').each(function() {
var name = $(this).data('name');
collapsedGroups[name] = !collapsedGroups[name];
});
table.draw(false);
$('#example tbody').on('click', 'tr.group-start', function () {
var name = $(this).data('name');
collapsedGroups[name] = !collapsedGroups[name];
table.draw(false);
});
});
This is the data structure of each object:
{
extn: "5421",
name: "Tiger Nixon",
office: "Sidney",
position: "System Architect",
salary: "$320,800",
start_date: "2011/04/25",
country: {
id: "1",
flag: "https://media.api-sports.io/flags/au.svg"
}
}
I'm trying to display the flag of the country of each employee near the name of the city, but unfortunately I doesn't have access to the current row.
I tried to use rows.data().eq(0), but this actually return all the rows of the group.
Could someone give me an hand?
