You can not select more than 25 topics
			Topics must start with a letter or number, can include dashes ('-') and can be up to 35 characters long.
		
		
		
		
		
			
		
			
				
					
					
						
							263 lines
						
					
					
						
							7.7 KiB
						
					
					
				
			
		
		
	
	
							263 lines
						
					
					
						
							7.7 KiB
						
					
					
				| /*=========================================================================================
 | |
|     File Name: datatable-api.js
 | |
|     Description: API Datatable 
 | |
|     ----------------------------------------------------------------------------------------
 | |
|     Item Name: Modern Admin - Clean Bootstrap 4 Dashboard HTML Template
 | |
|     Version: 1.0
 | |
|     Author: Pixinvent
 | |
|     Author URL: hhttp://www.themeforest.net/user/pixinvent
 | |
| ==========================================================================================*/
 | |
| 
 | |
| $(document).ready(function() {
 | |
| 
 | |
| /*****************************
 | |
| *       js of Add Row        *
 | |
| ******************************/
 | |
| 
 | |
| var t = $('.add-rows').DataTable();
 | |
| var counter = 1;
 | |
| 
 | |
| $('#addRow').on( 'click', function () {
 | |
|     t.row.add( [
 | |
|         counter +'.1',
 | |
|         counter +'.2',
 | |
|         counter +'.3',
 | |
|         counter +'.4',
 | |
|         counter +'.5'
 | |
|     ] ).draw( false );
 | |
| 
 | |
|     counter++;
 | |
| } );
 | |
| 
 | |
| /*****************************************************
 | |
| *       Automatically add a first row of data        *
 | |
| *****************************************************/
 | |
| 
 | |
| $('#addRow').trigger('click');
 | |
| 
 | |
| 
 | |
| /***************************************************************
 | |
| *       js of Individual column searching (text inputs)        *
 | |
| ***************************************************************/
 | |
| 
 | |
| // Setup - add a text input to each footer cell
 | |
| $('.text-inputs-searching tfoot th').each( function () {
 | |
|     var title = $(this).text();
 | |
|     $(this).html( '<input type="text" placeholder="Search '+title+'" />' );
 | |
| } );
 | |
| 
 | |
| // DataTable
 | |
| var tableSearching = $('.text-inputs-searching').DataTable();
 | |
| 
 | |
| // Apply the search
 | |
| tableSearching.columns().every( function () {
 | |
|     var that = this;
 | |
| 
 | |
|     $( 'input', this.footer() ).on( 'keyup change', function () {
 | |
|         if ( that.search() !== this.value ) {
 | |
|             that
 | |
|                 .search( this.value )
 | |
|                 .draw();
 | |
|         }
 | |
|     } );
 | |
| } );
 | |
| 
 | |
| 
 | |
| /*****************************************************************
 | |
| *       js of Individual column searching (select inputs)        *
 | |
| *****************************************************************/
 | |
| 
 | |
| $('.datatable-select-inputs').DataTable( {
 | |
|     initComplete: function () {
 | |
|         this.api().columns().every( function () {
 | |
|             var column = this;
 | |
|             var select = $('<select><option value="">Select option</option></select>')
 | |
|                 .appendTo( $(column.footer()).empty() )
 | |
|                 .on( 'change', function () {
 | |
|                     var val = $.fn.dataTable.util.escapeRegex(
 | |
|                         $(this).val()
 | |
|                     );
 | |
| 
 | |
|                     column
 | |
|                         .search( val ? '^'+val+'$' : '', true, false )
 | |
|                         .draw();
 | |
|                 } );
 | |
| 
 | |
|             column.data().unique().sort().each( function ( d, j ) {
 | |
|                 select.append( '<option value="'+d+'">'+d+'</option>' );
 | |
|             } );
 | |
|         } );
 | |
|     }
 | |
| } );
 | |
| 
 | |
| 
 | |
| /********************************************************************
 | |
| *       js of Child rows (show extra / detailed information)        *
 | |
| ********************************************************************/
 | |
| 
 | |
| 
 | |
| /* Formatting function for row details - modify as you need */
 | |
| function format ( d ) {
 | |
| // `d` is the original data object for the row
 | |
| return '<table cellpadding="5" cellspacing="0" border="0" style="padding-left:50px;">'+
 | |
|     '<tr>'+
 | |
|         '<td>Full name:</td>'+
 | |
|         '<td>'+d.name+'</td>'+
 | |
|     '</tr>'+
 | |
|     '<tr>'+
 | |
|         '<td>Extension number:</td>'+
 | |
|         '<td>'+d.extn+'</td>'+
 | |
|     '</tr>'+
 | |
|     '<tr>'+
 | |
|         '<td>Extra info:</td>'+
 | |
|         '<td>And any further details here (images etc)...</td>'+
 | |
|     '</tr>'+
 | |
| '</table>';
 | |
| }
 | |
| 
 | |
| // -- Child rows (show extra / detailed information) --
 | |
| 
 | |
| 
 | |
| var tableChildRows = $('.show-child-rows').DataTable( {
 | |
|     "ajax": "../../../app-assets/data/datatables/ajax-child-rows.json",
 | |
|     "columns": [
 | |
|         {
 | |
|             "className":      'details-control',
 | |
|             "orderable":      false,
 | |
|             "data":           null,
 | |
|             "defaultContent": ''
 | |
|         },
 | |
|         { "data": "name" },
 | |
|         { "data": "position" },
 | |
|         { "data": "office" },
 | |
|         { "data": "salary" }
 | |
|     ],
 | |
|     "order": [[1, 'asc']]
 | |
| } );
 | |
| 
 | |
| // Add event listener for opening and closing details
 | |
| $('.show-child-rows tbody').on('click', 'td.details-control', function () {
 | |
|     var tr = $(this).closest('tr');
 | |
|     var row = tableChildRows.row( tr );
 | |
| 
 | |
|     if ( row.child.isShown() ) {
 | |
|         // This row is already open - close it
 | |
|         row.child.hide();
 | |
|         tr.removeClass('shown');
 | |
|     }
 | |
|     else {
 | |
|         // Open this row
 | |
|         row.child( format(row.data()) ).show();
 | |
|         tr.addClass('shown');
 | |
|     }
 | |
| } );
 | |
| 
 | |
| 
 | |
| /***************************************************
 | |
| *       js of Row selection (multiple rows)        *
 | |
| ***************************************************/
 | |
| 
 | |
| 
 | |
|     var multipleRowsTable = $('.selection-multiple-rows').DataTable();
 | |
| 
 | |
|     $('.selection-multiple-rows tbody').on('click', 'tr', function() {
 | |
|         $(this).toggleClass('selected');
 | |
|     });
 | |
| 
 | |
|     $('#row-count').on('click', function() {
 | |
|         alert(multipleRowsTable.rows('.selected').data().length + ' row(s) selected');
 | |
|     });
 | |
| 
 | |
| 
 | |
| /*************************************************************
 | |
| *       js of Row selection and deletion (single row)        *
 | |
| *************************************************************/
 | |
| 
 | |
| 
 | |
|     var tableselectionDelete = $('.selection-deletion-row').DataTable();
 | |
| 
 | |
|     $('.selection-deletion-row tbody').on('click', 'tr', function() {
 | |
|         if ($(this).hasClass('selected')) {
 | |
|             $(this).removeClass('selected');
 | |
|         } else {
 | |
|             tableselectionDelete.$('tr.selected').removeClass('selected');
 | |
|             $(this).addClass('selected');
 | |
|         }
 | |
|     });
 | |
| 
 | |
|     $('#delete-row').on('click', function() {
 | |
|         tableselectionDelete.row('.selected').remove().draw(false);
 | |
|     });
 | |
| 
 | |
| 
 | |
| /*********************************
 | |
| *       js of Form inputs        *
 | |
| *********************************/
 | |
| 
 | |
| 
 | |
|     var tableFormInputs = $('.submit-form-inputs').DataTable();
 | |
| 
 | |
|     $('.inputs-submin').on('click', function() {
 | |
|         var data = tableFormInputs.$('input, select').serialize();
 | |
|         alert(
 | |
|             "The following data would have been submitted to the server: \n\n" +
 | |
|             data.substr(0, 120) + '...'
 | |
|         );
 | |
|         return false;
 | |
|     });
 | |
| 
 | |
| 
 | |
| /*****************************************************
 | |
| *       js of Show / hide columns dynamically        *
 | |
| *****************************************************/
 | |
| 
 | |
| 
 | |
|     var tableDynamically = $('.hide-columns-dynamically').DataTable({
 | |
|         "scrollY": "200px",
 | |
|         "paging": false
 | |
|     });
 | |
| 
 | |
|     $('a.toggle-vis').on('click', function(e) {
 | |
|         e.preventDefault();
 | |
| 
 | |
|         // Get the column API object
 | |
|         var column = tableDynamically.column($(this).attr('data-column'));
 | |
| 
 | |
|         // Toggle the visibility
 | |
|         column.visible(!column.visible());
 | |
|     });
 | |
| 
 | |
| /************************************************
 | |
| *       Search API (regular expressions)        *
 | |
| ************************************************/
 | |
| 
 | |
| 
 | |
|     $('.search-api').DataTable();
 | |
| 
 | |
|     $('input.global_filter_search').on('keyup click', function() {
 | |
|         filterGlobal();
 | |
|     });
 | |
| 
 | |
|     $('input.column_filter_search').on('keyup click', function() {
 | |
|         filterColumn($(this).parents('tr').attr('data-column'));
 | |
|     });
 | |
| 
 | |
| 
 | |
|     function filterGlobal() {
 | |
|         $('.search-api').DataTable().search(
 | |
|             $('#global_filter').val(),
 | |
|             $('#global_regex').prop('checked'),
 | |
|             $('#global_smart').prop('checked')
 | |
|         ).draw();
 | |
|     }
 | |
| 
 | |
|     function filterColumn(i) {
 | |
|         $('.search-api').DataTable().column(i).search(
 | |
|             $('#col' + i + '_filter').val(),
 | |
|             $('#col' + i + '_regex').prop('checked'),
 | |
|             $('#col' + i + '_smart').prop('checked')
 | |
|         ).draw();
 | |
|     }
 | |
| 
 | |
| } );
 |