<html>
<script src="https://code.jquery.com/jquery-1.11.1.min.js"></script>
<link href="https://cdn.datatables.net/v/dt/dt-2.1.8/r-3.0.3/datatables.min.css" rel="stylesheet">
<link href="https://cdn.datatables.net/responsive/3.0.3/css/responsive.dataTables.css" rel="stylesheet">
<script src="https://cdn.datatables.net/2.1.8/js/dataTables.js"></script>
<script src="https://cdn.datatables.net/responsive/3.0.3/js/dataTables.responsive.js"></script>
<script src="https://cdn.datatables.net/responsive/3.0.3/js/responsive.dataTables.js"></script>
<script src="https://cdn.datatables.net/buttons/3.2.0/js/dataTables.buttons.js"></script>
<script src="https://cdn.datatables.net/buttons/3.2.0/js/buttons.dataTables.js"></script>
<script src="https://cdn.datatables.net/buttons/3.2.0/js/buttons.html5.min.js"></script>
<script src="https://cdnjs.cloudflare.com/ajax/libs/jszip/3.10.1/jszip.min.js"></script>
<script src="https://itpmo.mativ.com/assets/js/jquery-ui.js"></script>
<script src="https://itpmo.mativ.com/global_assets/js/plugins/ui/moment/moment.min.js"></script>
<script src="https://itpmo.mativ.com/global_assets/js/plugins/pickers/daterangepicker.js"></script>
<script src="//cdn.rawgit.com/ashl1/datatables-rowsgroup/v1.0.0/dataTables.rowsGroup.js"></script>
<meta charset=utf-8 />
<title>DataTables - JS Bin</title>
<body>
<div class="container">
<table id="main-table" class="table datatable-responsive" width="100%">
<thead>
<tr>
<th>
Business Unit
</th>
<th>
Project Name
</th>
<th>
Overall Status
</th>
<th>
Scope Status
</th>
<th>
Timeline Status
</th>
<th>
Budget Status
</th>
<th>
Phase
</th>
<th>
Business Sponsor
</th>
<th>
Proj Lead
</th>
<th>
Delivery Lead
</th>
<th>
IT Capabilities
</th>
<th>
Capex
</th>
<th>
Last Update
</th>
<th>
Completion Date
</th>
<th>
Action
</th>
<th></th>
</tr>
</thead>
<tbody>
<tr>
<td> Sustainable & Adhesive Solutions</td>
<td>Nixon</td>
<td>On Track </td>
<td>On Track </td>
<td>On Track </td>
<td>On Track </td>
<td> Initiation</td>
<td>Test Name 1</td>
<td>Test Name 2</td>
<td>Test Name 3</td>
<td>Support Digital Brand</td>
<td>Yes</td>
<td>12/12/2023</td>
<td>12/12/2023</td>
<td><a href="#"><i class="icon-pencil5 mr-3"></i></a></td>
<td></td>
</tr>
<tr>
<td> Sustainable & Adhesive Solutions</td>
<td>Garrett</td>
<td>On Track </td>
<td>On Track </td>
<td>On Track </td>
<td>On Track </td>
<td> Initiation</td>
<td>Test Name 1</td>
<td>Test Name 2</td>
<td>Test Name 3</td>
<td>Support Digital Brand</td>
<td>Yes</td>
<td>12/12/2023</td>
<td>12/12/2023</td>
<td><a href="#"><i class="icon-pencil5 mr-3"></i></a></td>
<td></td>
</tr>
<tr>
<td> Sustainable & Adhesive Solutions</td>
<td>Ashton</td>
<td>On Track </td>
<td>On Track </td>
<td>On Track </td>
<td>On Track </td>
<td> Initiation</td>
<td>Test Name 1</td>
<td>Test Name 2</td>
<td>Test Name 3</td>
<td>Support Digital Brand</td>
<td>Yes</td>
<td>12/12/2023</td>
<td>12/12/2023</td>
<td><a href="#"><i class="icon-pencil5 mr-3"></i></a></td>
<td></td>
</tr>
<tr>
<td>Supply Chain + Operations</td>
<td>Ashton</td>
<td>On Track </td>
<td>On Track </td>
<td>On Track </td>
<td>On Track </td>
<td> Initiation</td>
<td>Test Name 1</td>
<td>Test Name 2</td>
<td>Test Name 3</td>
<td>Support Digital Brand</td>
<td>Yes</td>
<td>12/12/2023</td>
<td>12/12/2023</td>
<td><a href="#"><i class="icon-pencil5 mr-3"></i></a></td>
<td></td>
</tr>
<tr>
<td>Supply Chain + Operations</td>
<td>Cedric</td>
<td>On Track </td>
<td>On Track </td>
<td>On Track </td>
<td>On Track </td>
<td> Initiation</td>
<td>Test Name 1</td>
<td>Test Name 2</td>
<td>Test Name 3</td>
<td>Support Digital Brand</td>
<td>Yes</td>
<td>12/12/2023</td>
<td>12/12/2023</td>
<td><a href="#"><i class="icon-pencil5 mr-3"></i></a></td>
<td></td>
</tr>
<tr>
<td>Finance</td>
<td>Cedric</td>
<td>On Track </td>
<td>On Track </td>
<td>On Track </td>
<td>On Track </td>
<td> Initiation</td>
<td>Test Name 1</td>
<td>Test Name 2</td>
<td>Test Name 3</td>
<td>Support Digital Brand</td>
<td>Yes</td>
<td>12/12/2023</td>
<td>12/12/2023</td>
<td><a href="#"><i class="icon-pencil5 mr-3"></i></a></td>
<td></td>
</tr>
<tr>
<td>Finance</td>
<td>Airi</td>
<td>On Track </td>
<td>On Track </td>
<td>On Track </td>
<td>On Track </td>
<td> Initiation</td>
<td>Test Name 1</td>
<td>Test Name 2</td>
<td>Test Name 3</td>
<td>Support Digital Brand</td>
<td>Yes</td>
<td>12/12/2023</td>
<td>12/12/2023</td>
<td><a href="#"><i class="icon-pencil5 mr-3"></i></a></td>
<td></td>
</tr>
<tr>
<td>IT Internal</td>
<td>Brielle</td>
<td>On Track </td>
<td>On Track </td>
<td>On Track </td>
<td>On Track </td>
<td> Initiation</td>
<td>Test Name 1</td>
<td>Test Name 2</td>
<td>Test Name 3</td>
<td>Support Digital Brand</td>
<td>Yes</td>
<td>12/12/2023</td>
<td>12/12/2023</td>
<td><a href="#"><i class="icon-pencil5 mr-3"></i></a></td>
<td></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;
}
.ui-datepicker-trigger {
position: absolute;
top: 15px;
left: 130px;
z-index: 4;
padding: 6px;
cursor: pointer;
}
.dt-search {
float: right !important;
margin: 1.5rem 1.5rem 1.25rem 1.25rem !important
}
var groupColumn = 0;
$(document).ready(function () {
let toolbar = document.createElement('div');
toolbar.innerHTML = '<div class="filter-date-range-picker"><input class="form-control form-control-sm" id="date_range" type="text" placeholder="Select dates" style="width: 230px; margin-right: 10px;"></div>';
$('#main-table thead tr')
.clone(true)
.addClass('filters')
.appendTo('#main-table thead');
//Generate filter inputs and apply filter.
var table = $('#main-table').DataTable({
columnDefs: [
{
className: 'dtr-control arrow-right',
orderable: false,
target: -1
}
],
responsive: {
details: {
type: 'column',
target: -1
}
},
orderCellsTop: true,
fixedHeader: true,
pageLength: 50,
layout: {
topStart: 'buttons',
topEnd: [ toolbar, 'search' ]
},
rowsGroup: [
0,
],
buttons: {
dom: {
button: {
className: 'dt-button button-page-length btn btn-secondary'
}
},
buttons: [
{
extend: 'excelHtml5',
className: 'btn btn-secondary',
exportOptions: {
columns: [14, 0, 1, 2, 3, 4, 5, 6, 7, 8, 9, 10, 11, 12]
},
title: "",
filename: "All Projects List"
},
'pageLength'
]
},
"order": [[groupColumn, "asc"]],
"oLanguage": {
"sEmptyTable": "No data available."
},
initComplete: function () {
var api = this.api();
$("th").removeClass('sorting_asc'); //remove sorting_asc class that gets stuck on first column
// For each column
api
.columns()
.eq(0)
.each(function (colIdx) {
// Set the header cell to contain the input element
var cell = $('.filters th').eq(
$(api.column(colIdx).header()).index()
);
var title = $(cell).text();
if ($(api.column(colIdx).header()).index() >= 0) {
$(cell).html('<input type="text" class="form-control" style="font-size:12px;" placeholder="Search" />');
}
// On every keypress in this input
$(
'input',
$('.filters th').eq($(api.column(colIdx).header()).index())
)
.off('keyup change')
.on('change', function (e) {
// Get the search value
$(this).attr('title', $(this).val());
var regexr = '({search})'; //$(this).parents('th').find('select').val();
var cursorPosition = this.selectionStart;
// Search the column for that value
api
.column(colIdx)
.search(
this.value != ''
? regexr.replace('{search}', '(((' + this.value + ')))')
: '',
this.value != '',
this.value == ''
)
.draw();
})
.on('keyup', function (e) {
e.stopPropagation();
$(this).trigger('change');
//$(this).focus()[0];
//.setSelectionRange(cursorPosition, cursorPosition);
});
});
}
});
var dateRangeStart, dateRangeEnd;
//$("#dt-search").prepend('<div class="filter-date-range-picker"><input class="form-control form-control-sm" id="date_range" type="text" placeholder="Select dates" style="width: 230px; margin-right: 10px;"></div>');
$("#date_range").daterangepicker({
autoUpdateInput: false,
locale: {
"format": "MM/DD/YYYY",
"cancelLabel": "Clear",
}
});
$("#date_range").on('apply.daterangepicker', function (ev, picker) {
dateRangeStart = moment(picker.startDate.format('MM/DD/YYYY'), 'MM/DD/YYYY');
dateRangeEnd = moment(picker.endDate.format('MM/DD/YYYY'), 'MM/DD/YYYY');
$(this).val(dateRangeStart.format('MM/DD/YYYY') + ' to ' + dateRangeEnd.format('MM/DD/YYYY'));
$.fn.dataTable.ext.search.push(function (settings, data, dataIndex) {
let min = dateRangeStart;
let max = dateRangeEnd;
let date = new Date(data[4]);
if (
(min === null && max === null) ||
(min === null && date <= max) ||
(min <= date && max === null) ||
(min <= date && date <= max)
) {
return true;
}
return false;
});
table.draw();
});
$("#date_range").on('cancel.daterangepicker', function (ev, picker) {
dateRangeStart = dateRangeEnd = null;
$(this).val('');
table.draw();
});
$('#range').on('change', table.draw);
$('#range').change();
table.buttons().container()
.appendTo('#datatable-buttons_wrapper .col-md-6:eq(0)');
$(".dataTables_length select").addClass('form-select form-select-sm');
//Set datepicker
$(".datepicker").datepicker({
format: 'MM/dd/yyyy'
});
//Open calander when click on icon.
$('.date-icon').on('click', function () {
$('.datepicker').focus();
});
});
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. |