<html>
<head>
<script src="https://code.jquery.com/jquery-1.11.3.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.0.2/css/rowGroup.dataTables.min.css" rel="stylesheet" type="text/css" />
<script src="https://cdn.datatables.net/rowgroup/1.0.2/js/dataTables.rowGroup.min.js"></script>
<meta charset=utf-8 />
<title>DataTables - JS Bin</title>
</head>
<body>
<div class="container-scroller">
<button id="expandAll">Expand All</button>
<button id="collapseAll">Collapse All</button>
<table id="projects_table" class="display" style="width:100%">
<thead>
<tr>
<th></th>
<th></th>
<th style="font-weight: 400;">Project No</th>
<th style="font-weight: 400;">Title</th>
<th style="font-weight: 400;">Created</th>
</tr>
</thead>
<tbody>
<tr class='table-row' data-href='page.php?projNo=1&pageNo=001'>
<td style="max-width: 1px;" class="invisible">1</td>
<td style="max-width: 1px;" class="invisible">Darren Test 1</td>
<td>001</td>
<td>New Page</td>
<td>06/08/2021</td> </tr>
<tr class='table-row' data-href='page.php?projNo=1&pageNo=002'>
<td style="max-width: 1px;" class="invisible">1</td>
<td style="max-width: 1px;" class="invisible">Darren Test 1</td>
<td>002</td>
<td>5tywyw54y54</td>
<td>06/08/2021</td> </tr>
<tr class='table-row' data-href='page.php?projNo=1&pageNo=003'>
<td style="max-width: 1px;" class="invisible">1</td>
<td style="max-width: 1px;" class="invisible">Darren Test 1</td>
<td>003</td>
<td>6u5u</td>
<td>06/08/2021</td> </tr>
<tr class='table-row' data-href='page.php?projNo=1&pageNo=004'>
<td style="max-width: 1px;" class="invisible">1</td>
<td style="max-width: 1px;" class="invisible">Darren Test 1</td>
<td>004</td>
<td>65u65u</td>
<td>06/08/2021</td> </tr>
<tr class='table-row' data-href='page.php?projNo=1&pageNo=005'>
<td style="max-width: 1px;" class="invisible">1</td>
<td style="max-width: 1px;" class="invisible">Darren Test 1</td>
<td>005</td>
<td>ytuyt</td>
<td>06/08/2021</td> </tr>
<tr class='table-row' data-href='page.php?projNo=1&pageNo=006'>
<td style="max-width: 1px;" class="invisible">1</td>
<td style="max-width: 1px;" class="invisible">Darren Test 1</td>
<td>006</td>
<td>eytuytu</td>
<td>06/08/2021</td> </tr>
<tr class='table-row' data-href='page.php?projNo=1&pageNo=007'>
<td style="max-width: 1px;" class="invisible">1</td>
<td style="max-width: 1px;" class="invisible">Darren Test 1</td>
<td>007</td>
<td>eytuyt</td>
<td>06/08/2021</td> </tr>
<tr class='table-row' data-href='page.php?projNo=1&pageNo=008'>
<td style="max-width: 1px;" class="invisible">1</td>
<td style="max-width: 1px;" class="invisible">Darren Test 1</td>
<td>008</td>
<td>w445</td>
<td>06/08/2021</td> </tr>
<tr class='table-row' data-href='page.php?projNo=12ee&pageNo=001'>
<td style="max-width: 1px;" class="invisible">12ee</td>
<td style="max-width: 1px;" class="invisible">ytjytjytj</td>
<td>001</td>
<td>New Page</td>
<td>Not Set</td> </tr>
<tr class='table-row' data-href='page.php?projNo=12ee&pageNo=002'>
<td style="max-width: 1px;" class="invisible">12ee</td>
<td style="max-width: 1px;" class="invisible">ytjytjytj</td>
<td>002</td>
<td>rtywy</td>
<td>06/08/2021</td> </tr>
<tr class='table-row' data-href='page.php?projNo=12ee&pageNo=003'>
<td style="max-width: 1px;" class="invisible">12ee</td>
<td style="max-width: 1px;" class="invisible">ytjytjytj</td>
<td>003</td>
<td>rty</td>
<td>06/08/2021</td> </tr>
<tr class='table-row' data-href='page.php?projNo=2&pageNo=001'>
<td style="max-width: 1px;" class="invisible">2</td>
<td style="max-width: 1px;" class="invisible">Darren 2</td>
<td>001</td>
<td>New Page</td>
<td>Not Set</td> </tr>
<tr class='table-row' data-href='page.php?projNo=222tg&pageNo=001'>
<td style="max-width: 1px;" class="invisible">222tg</td>
<td style="max-width: 1px;" class="invisible">546hyhwhth</td>
<td>001</td>
<td>New Page</td>
<td>Not Set</td> </tr>
<tr class='table-row' data-href='page.php?projNo=342&pageNo=001'>
<td style="max-width: 1px;" class="invisible">342</td>
<td style="max-width: 1px;" class="invisible">thrtwhth</td>
<td>001</td>
<td>New Page</td>
<td>Not Set</td> </tr>
<tr class='table-row' data-href='page.php?projNo=344&pageNo=001'>
<td style="max-width: 1px;" class="invisible">344</td>
<td style="max-width: 1px;" class="invisible">hgjeyjy</td>
<td>001</td>
<td>New Page</td>
<td>Not Set</td> </tr>
<tr class='table-row' data-href='page.php?projNo=6&pageNo=001'>
<td style="max-width: 1px;" class="invisible">6</td>
<td style="max-width: 1px;" class="invisible">43563</td>
<td>001</td>
<td>New Page</td>
<td>06/08/2021</td> </tr>
<tr class='table-row' data-href='page.php?projNo=677&pageNo=001'>
<td style="max-width: 1px;" class="invisible">677</td>
<td style="max-width: 1px;" class="invisible">66767</td>
<td>001</td>
<td>New Page</td>
<td>Not Set</td> </tr>
<tr class='table-row' data-href='page.php?projNo=Fixed&pageNo=001'>
<td style="max-width: 1px;" class="invisible">Fixed</td>
<td style="max-width: 1px;" class="invisible">Fixed</td>
<td>001</td>
<td>New Page</td>
<td>09/08/2021</td> </tr>
<tr class='table-row' data-href='page.php?projNo=ree&pageNo=001'>
<td style="max-width: 1px;" class="invisible">ree</td>
<td style="max-width: 1px;" class="invisible">regqerg</td>
<td>001</td>
<td>New Page</td>
<td>06/08/2021</td> </tr>
</tbody>
</table>
</div>
</body>
</html>
body {
font: 90%/1.45em "Helvetica Neue", HelveticaNeue, Verdana, Arial, Helvetica, sans-serif;
margin: 0;
padding: 0;
color: #333;
background-color: #fff;
}
$(document).ready(function() {
var collapsedGroups = {};
var scrollY;
var table = $('#projects_table').DataTable({
"scrollY": 400,
"fixedHeader": true,
"bSort": false,
"searching": false,
"scrollCollapse": true,
"pageLength": -1,
"stateSave": true,
"bInfo": false,
"bPaginate": false,
stateSaveParams: function (settings, data) {
data.collapsedGroups = collapsedGroups;
var scrollPosition = $('#projects_table_wrapper .dataTables_scrollBody').scrollTop();
console.log('Saving scroll position: ', scrollPosition);
data.scrollY = scrollPosition;
},
stateLoadParams: function (settings, data) {
collapsedGroups = data.collapsedGroups !== undefined ? data.collapsedGroups : {};
scrollY = data.scrollY; // save scrollY value globally
},
initComplete: function () {
$('#projects_table_wrapper .dataTables_scrollBody').scrollTop( scrollY );
},
order: [[0, 'asc']],
rowGroup: {
// Uses the 'row group' plugin
dataSrc: 0,
startRender: function (rows, group) {
var collapsed = !!collapsedGroups[group];
rows.nodes().each(function (r) {
r.style.display = collapsed ? 'none' : '';
});
var projTitle = rows.data()[0][1];
// Add category name to the <tr>. NOTE: Hardcoded colspan
return $('<tr/>')
.append('<td colspan="2"><a href="project.php?projNo='+group+'" data-toggle="tooltip" data-placement="top" title="View Project" class="btn btn-info btn-xs mdi mdi-magnify mr-1"></a><a href="add_page.php?projNo='+group+'" data-toggle="tooltip" data-placement="top" title="Add New Page" class="btn btn-success btn-xs mdi mdi-plus-circle-outline"></a></td><td colspan="1"> ' + group + '</td><td colspan="4">' + projTitle +'</td>' )
//.append('<td colspan="8">' + group + ' (' + rows.count() + ') ' + XXX + '</td>')
.attr('data-name', group)
.toggleClass('collapsed', collapsed);
}
}
});
$('#projects_table tbody').on('click', 'tr.group-start', function (e) {
console.log('tbody click')
var name = $(this).data('name');
collapsedGroups[name] = !collapsedGroups[name];
var scrollPosition = $('#projects_table_wrapper .dataTables_scrollBody').scrollTop();
table.draw(false);
$('#projects_table_wrapper .dataTables_scrollBody').scrollTop( scrollPosition );
});
/*
// Start with all groups collapsed
table.column(2).data().unique().each( function ( d, j ) {
collapsedGroups[d] = !collapsedGroups[d];
} );
table.draw(false);
// End of Start with all groups collapsed
*/
$('#expandAll').on('click', function () {
// Start with all groups collapsed
table.column(0).data().unique().each( function ( d, j ) {
collapsedGroups[d] = false;
} );
table.draw(false);
// End of Start with all groups collapsed
});
$('#collapseAll').on('click', function () {
table.column(0).data().unique().each( function ( d, j ) {
collapsedGroups[d] = true;
} );
table.draw(false);
});
// Save the state when scrolling
$( "#projects_table_wrapper .dataTables_scrollBody" ).scroll(function() {
console.log('scroll')
table.state.save();
});
});
You can jump to the latest bin by adding /latest
to your URL
Shortcut | Action |
---|---|
ctrl + [num] | Toggle nth panel |
ctrl + 0 | Close focused panel |
ctrl + enter | Re-render output. If console visible: run JS in console |
Ctrl + l | Clear the console |
ctrl + / | Toggle comment on selected lines |
ctrl + [ | Indents selected lines |
ctrl + ] | Unindents selected lines |
tab | Code complete & Emmet expand |
ctrl + s | Save & lock current Bin from further changes |
ctrl + shift + s | Clone Bin |
ctrl + y | Archive Bin |
Complete list of JS Bin shortcuts |
URL | Action |
---|---|
/ | Show the full rendered output. This content will update in real time as it's updated from the /edit url. |
/edit | Edit the current bin |
/watch | Follow a Code Casting session |
/embed | Create an embeddable version of the bin |
/latest | Load the very latest bin (/latest goes in place of the revision) |
/[username]/last | View the last edited bin for this user |
/[username]/last/edit | Edit the last edited bin for this user |
/[username]/last/watch | Follow the Code Casting session for the latest bin for this user |
/quiet | Remove analytics and edit button from rendered output |
.js | Load only the JavaScript for a bin |
.css | Load only the CSS for a bin |
Except for username prefixed urls, the url may start with http://jsbin.com/abc and the url fragments can be added to the url to view it differently. |