/* ------------------------------------------------------------------------------ * * # Advanced datatables * * Specific JS code additions for datatable_advanced.html page * * Version: 1.0 * Latest update: Aug 1, 2015 * * ---------------------------------------------------------------------------- */ $(function() { // Table setup // ------------------------------ // Setting datatable defaults $.extend( $.fn.dataTable.defaults, { autoWidth: false, columnDefs: [{ orderable: false, width: '100px', targets: [ 5 ] }], dom: '<"datatable-header"fl><"datatable-scroll"t><"datatable-footer"ip>', language: { search: 'Filter: _INPUT_', lengthMenu: 'Show: _MENU_', paginate: { 'first': 'First', 'last': 'Last', 'next': '→', 'previous': '←' } }, drawCallback: function () { $(this).find('tbody tr').slice(-3).find('.dropdown, .btn-group').addClass('dropup'); }, preDrawCallback: function() { $(this).find('tbody tr').slice(-3).find('.dropdown, .btn-group').removeClass('dropup'); } }); // Datatable 'length' options $('.datatable-show-all').DataTable({ lengthMenu: [[10, 25, 50, -1], [10, 25, 50, "All"]] }); // DOM positioning $('.datatable-dom-position').DataTable({ dom: '<"datatable-header length-left"lp><"datatable-scroll"t><"datatable-footer info-right"fi>', }); // Highlighting rows and columns on mouseover var lastIdx = null; var table = $('.datatable-highlight').DataTable(); $('.datatable-highlight tbody').on('mouseover', 'td', function() { var colIdx = table.cell(this).index().column; if (colIdx !== lastIdx) { $(table.cells().nodes()).removeClass('active'); $(table.column(colIdx).nodes()).addClass('active'); } }).on('mouseleave', function() { $(table.cells().nodes()).removeClass('active'); }); // Columns rendering $('.datatable-columns').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 ] } ] }); // External table additions // ------------------------------ // Add placeholder to the datatable filter option $('.dataTables_filter input[type=search]').attr('placeholder','Type to filter...'); // Enable Select2 select for the length option $('.dataTables_length select').select2({ minimumResultsForSearch: "-1" }); });