83 lines
		
	
	
		
			2.1 KiB
		
	
	
	
		
			JavaScript
		
	
	
	
	
	
			
		
		
	
	
			83 lines
		
	
	
		
			2.1 KiB
		
	
	
	
		
			JavaScript
		
	
	
	
	
	
| /*
 | |
| Name: 			Tables / Advanced - Examples
 | |
| Written by: 	Okler Themes - (http://www.okler.net)
 | |
| Theme Version: 	2.1.1
 | |
| */
 | |
| 
 | |
| (function($) {
 | |
| 
 | |
| 	'use strict';
 | |
| 
 | |
| 	var datatableInit = function() {
 | |
| 		var $table = $('#datatable-details');
 | |
| 
 | |
| 		// format function for row details
 | |
| 		var fnFormatDetails = function( datatable, tr ) {
 | |
| 			var data = datatable.fnGetData( tr );
 | |
| 
 | |
| 			return [
 | |
| 				'<table class="table mb-0">',
 | |
| 					'<tr class="b-top-0">',
 | |
| 						'<td><label class="mb-0">Rendering engine:</label></td>',
 | |
| 						'<td>' + data[1]+ ' ' + data[4] + '</td>',
 | |
| 					'</tr>',
 | |
| 					'<tr>',
 | |
| 						'<td><label class="mb-0">Link to source:</label></td>',
 | |
| 						'<td>Could provide a link here</td>',
 | |
| 					'</tr>',
 | |
| 					'<tr>',
 | |
| 						'<td><label class="mb-0">Extra info:</label></td>',
 | |
| 						'<td>And any further details here (images etc)</td>',
 | |
| 					'</tr>',
 | |
| 				'</table>'
 | |
| 			].join('');
 | |
| 		};
 | |
| 
 | |
| 		// insert the expand/collapse column
 | |
| 		var th = document.createElement( 'th' );
 | |
| 		var td = document.createElement( 'td' );
 | |
| 		td.innerHTML = '<i data-toggle class="far fa-plus-square text-primary h5 m-0" style="cursor: pointer;"></i>';
 | |
| 		td.className = "text-center";
 | |
| 
 | |
| 		$table
 | |
| 			.find( 'thead tr' ).each(function() {
 | |
| 				this.insertBefore( th, this.childNodes[0] );
 | |
| 			});
 | |
| 
 | |
| 		$table
 | |
| 			.find( 'tbody tr' ).each(function() {
 | |
| 				this.insertBefore(  td.cloneNode( true ), this.childNodes[0] );
 | |
| 			});
 | |
| 
 | |
| 		// initialize
 | |
| 		var datatable = $table.dataTable({
 | |
| 			dom: '<"row"<"col-lg-6"l><"col-lg-6"f>><"table-responsive"t>p',
 | |
| 			aoColumnDefs: [{
 | |
| 				bSortable: false,
 | |
| 				aTargets: [ 0 ]
 | |
| 			}],
 | |
| 			aaSorting: [
 | |
| 				[1, 'asc']
 | |
| 			]
 | |
| 		});
 | |
| 
 | |
| 		// add a listener
 | |
| 		$table.on('click', 'i[data-toggle]', function() {
 | |
| 			var $this = $(this),
 | |
| 				tr = $(this).closest( 'tr' ).get(0);
 | |
| 
 | |
| 			if ( datatable.fnIsOpen(tr) ) {
 | |
| 				$this.removeClass( 'fa-minus-square' ).addClass( 'fa-plus-square' );
 | |
| 				datatable.fnClose( tr );
 | |
| 			} else {
 | |
| 				$this.removeClass( 'fa-plus-square' ).addClass( 'fa-minus-square' );
 | |
| 				datatable.fnOpen( tr, fnFormatDetails( datatable, tr), 'details' );
 | |
| 			}
 | |
| 		});
 | |
| 	};
 | |
| 
 | |
| 	$(function() {
 | |
| 		datatableInit();
 | |
| 	});
 | |
| 
 | |
| }).apply(this, [jQuery]); |