163 lines
6.1 KiB
JavaScript
163 lines
6.1 KiB
JavaScript
(function ($) {
|
|
"use strict";
|
|
var tableAdvanced = {
|
|
initialize: function () {
|
|
this.domjQueryEvents();
|
|
this.dataTablesEvents();
|
|
this.columnRendering();
|
|
this.pageLengthOptions();
|
|
this.multipleTableControlElements();
|
|
this.complexHeadersWithColumnVisibility();
|
|
this.languageFile();
|
|
this.settingDefaults();
|
|
this.rowCreatedCallback();
|
|
this.rowGrouping();
|
|
this.customToolbarElements();
|
|
this.orderDirectionSequenceControl();
|
|
},
|
|
domjQueryEvents: function () {
|
|
var table = $('.dom-jQuery-events').DataTable();
|
|
$('.dom-jQuery-events tbody').on('click', 'tr', function () {
|
|
var data = table.row(this).data();
|
|
alert('You clicked on ' + data[0] + '\'s row');
|
|
});
|
|
},
|
|
dataTablesEvents: function () {
|
|
var eventFired = function (type) {
|
|
var n = $('#demo_info')[0];
|
|
n.innerHTML += '<div>' + type + ' event - ' + new Date().getTime() + '</div>';
|
|
n.scrollTop = n.scrollHeight;
|
|
};
|
|
$('.data-tables-events')
|
|
.on('order.dt', function () {
|
|
eventFired('Order');
|
|
})
|
|
.on('search.dt', function () {
|
|
eventFired('Search');
|
|
})
|
|
.on('page.dt', function () {
|
|
eventFired('Page');
|
|
})
|
|
.DataTable();
|
|
},
|
|
columnRendering: function () {
|
|
$('.column-rendering').DataTable({
|
|
"columnDefs": [
|
|
{
|
|
// The `data` parameter refers to the data for the cell (defined by the
|
|
// `data` option, which defaults to the column being worked with, in
|
|
// this case `data: 0`.
|
|
"render": function (data, type, row) {
|
|
return data + ' (' + row[3] + ')';
|
|
},
|
|
"targets": 0
|
|
},
|
|
{"visible": false, "targets": [3]}
|
|
]
|
|
});
|
|
},
|
|
pageLengthOptions: function () {
|
|
$('.page-length-options').DataTable({
|
|
"lengthMenu": [[10, 25, 50, -1], [10, 25, 50, "All"]]
|
|
});
|
|
},
|
|
multipleTableControlElements: function () {
|
|
$(document).ready(function () {
|
|
$('.multiple-table-control-elements').DataTable({
|
|
"dom": '<"top"iflp<"clear">>rt<"bottom"iflp<"clear">>'
|
|
});
|
|
});
|
|
},
|
|
complexHeadersWithColumnVisibility: function () {
|
|
$('.complex-headers-with-column-visibility').DataTable({
|
|
"columnDefs": [{
|
|
"visible": false,
|
|
"targets": -1
|
|
}]
|
|
});
|
|
},
|
|
languageFile: function () {
|
|
$('.language-file').DataTable({
|
|
"language": {
|
|
"url": "//cdn.datatables.net/plug-ins/9dcbecd42ad/i18n/German.json"
|
|
}
|
|
});
|
|
},
|
|
settingDefaults: function () {
|
|
$.extend(true, $.fn.dataTable.defaults, {
|
|
"searching": false,
|
|
"ordering": false
|
|
});
|
|
$(document).ready(function () {
|
|
$('.setting-defaults').DataTable();
|
|
});
|
|
},
|
|
rowCreatedCallback: function () {
|
|
$('.row-created-callback').DataTable({
|
|
"createdRow": function (row, data, index) {
|
|
if (data[5].replace(/[\$,]/g, '') * 1 > 150000) {
|
|
$('td', row).eq(5).addClass('highlight');
|
|
}
|
|
}
|
|
});
|
|
},
|
|
rowGrouping: function () {
|
|
var groupColumn = 2;
|
|
var table = $('.row-grouping').DataTable({
|
|
"columnDefs": [
|
|
{"visible": false, "targets": groupColumn}
|
|
],
|
|
"order": [[groupColumn, 'asc']],
|
|
"displayLength": 25,
|
|
"drawCallback": function (settings) {
|
|
var api = this.api();
|
|
var rows = api.rows({page: 'current'}).nodes();
|
|
var last = null;
|
|
|
|
api.column(groupColumn, {page: 'current'}).data().each(function (group, i) {
|
|
if (last !== group) {
|
|
$(rows).eq(i).before(
|
|
'<tr class="group"><td colspan="5">' + group + '</td></tr>'
|
|
);
|
|
|
|
last = group;
|
|
}
|
|
});
|
|
}
|
|
});
|
|
// Order by the grouping
|
|
$('.row-grouping tbody').on('click', 'tr.group', function () {
|
|
var currentOrder = table.order()[0];
|
|
if (currentOrder[0] === groupColumn && currentOrder[1] === 'asc') {
|
|
table.order([groupColumn, 'desc']).draw();
|
|
} else {
|
|
table.order([groupColumn, 'asc']).draw();
|
|
}
|
|
});
|
|
},
|
|
customToolbarElements: function () {
|
|
$('.custom-toolbar-elements').DataTable({
|
|
"dom": '<"toolbar">frtip'
|
|
});
|
|
$("div.toolbar").html('<b>Custom tool bar! Text/images etc.</b>');
|
|
},
|
|
orderDirectionSequenceControl: function () {
|
|
$('.order-direction-sequence-control').DataTable({
|
|
"aoColumns": [
|
|
null,
|
|
null,
|
|
{"orderSequence": ["asc"]},
|
|
{"orderSequence": ["desc", "asc", "asc"]},
|
|
{"orderSequence": ["desc"]},
|
|
null
|
|
]
|
|
});
|
|
},
|
|
};
|
|
// Initialize
|
|
$(document).ready(function () {
|
|
"use strict"; // Start of use strict
|
|
tableAdvanced.initialize();
|
|
});
|
|
|
|
}(jQuery)); |