| 123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174175176177178179180181182183184185186187188189190191192193194195196197198199200201202203204205206 | 
							- /*!
 
-  * Column visibility buttons for Buttons and DataTables.
 
-  * 2016 SpryMedia Ltd - datatables.net/license
 
-  */
 
- (function( factory ){
 
- 	if ( typeof define === 'function' && define.amd ) {
 
- 		// AMD
 
- 		define( ['jquery', 'datatables.net', 'datatables.net-buttons'], function ( $ ) {
 
- 			return factory( $, window, document );
 
- 		} );
 
- 	}
 
- 	else if ( typeof exports === 'object' ) {
 
- 		// CommonJS
 
- 		module.exports = function (root, $) {
 
- 			if ( ! root ) {
 
- 				root = window;
 
- 			}
 
- 			if ( ! $ || ! $.fn.dataTable ) {
 
- 				$ = require('datatables.net')(root, $).$;
 
- 			}
 
- 			if ( ! $.fn.dataTable.Buttons ) {
 
- 				require('datatables.net-buttons')(root, $);
 
- 			}
 
- 			return factory( $, root, root.document );
 
- 		};
 
- 	}
 
- 	else {
 
- 		// Browser
 
- 		factory( jQuery, window, document );
 
- 	}
 
- }(function( $, window, document, undefined ) {
 
- 'use strict';
 
- var DataTable = $.fn.dataTable;
 
- $.extend( DataTable.ext.buttons, {
 
- 	// A collection of column visibility buttons
 
- 	colvis: function ( dt, conf ) {
 
- 		return {
 
- 			extend: 'collection',
 
- 			text: function ( dt ) {
 
- 				return dt.i18n( 'buttons.colvis', 'Column visibility' );
 
- 			},
 
- 			className: 'buttons-colvis',
 
- 			buttons: [ {
 
- 				extend: 'columnsToggle',
 
- 				columns: conf.columns,
 
- 				columnText: conf.columnText
 
- 			} ]
 
- 		};
 
- 	},
 
- 	// Selected columns with individual buttons - toggle column visibility
 
- 	columnsToggle: function ( dt, conf ) {
 
- 		var columns = dt.columns( conf.columns ).indexes().map( function ( idx ) {
 
- 			return {
 
- 				extend: 'columnToggle',
 
- 				columns: idx,
 
- 				columnText: conf.columnText
 
- 			};
 
- 		} ).toArray();
 
- 		return columns;
 
- 	},
 
- 	// Single button to toggle column visibility
 
- 	columnToggle: function ( dt, conf ) {
 
- 		return {
 
- 			extend: 'columnVisibility',
 
- 			columns: conf.columns,
 
- 			columnText: conf.columnText
 
- 		};
 
- 	},
 
- 	// Selected columns with individual buttons - set column visibility
 
- 	columnsVisibility: function ( dt, conf ) {
 
- 		var columns = dt.columns( conf.columns ).indexes().map( function ( idx ) {
 
- 			return {
 
- 				extend: 'columnVisibility',
 
- 				columns: idx,
 
- 				visibility: conf.visibility,
 
- 				columnText: conf.columnText
 
- 			};
 
- 		} ).toArray();
 
- 		return columns;
 
- 	},
 
- 	// Single button to set column visibility
 
- 	columnVisibility: {
 
- 		columns: undefined, // column selector
 
- 		text: function ( dt, button, conf ) {
 
- 			return conf._columnText( dt, conf );
 
- 		},
 
- 		className: 'buttons-columnVisibility',
 
- 		action: function ( e, dt, button, conf ) {
 
- 			var col = dt.columns( conf.columns );
 
- 			var curr = col.visible();
 
- 			col.visible( conf.visibility !== undefined ?
 
- 				conf.visibility :
 
- 				! (curr.length ? curr[0] : false )
 
- 			);
 
- 		},
 
- 		init: function ( dt, button, conf ) {
 
- 			var that = this;
 
- 			button.attr( 'data-cv-idx', conf.columns );
 
- 			dt
 
- 				.on( 'column-visibility.dt'+conf.namespace, function (e, settings) {
 
- 					if ( ! settings.bDestroying && settings.nTable == dt.settings()[0].nTable ) {
 
- 						that.active( dt.column( conf.columns ).visible() );
 
- 					}
 
- 				} )
 
- 				.on( 'column-reorder.dt'+conf.namespace, function (e, settings, details) {
 
- 					if ( dt.columns( conf.columns ).count() !== 1 ) {
 
- 						return;
 
- 					}
 
- 					// This button controls the same column index but the text for the column has
 
- 					// changed
 
- 					that.text( conf._columnText( dt, conf ) );
 
- 					// Since its a different column, we need to check its visibility
 
- 					that.active( dt.column( conf.columns ).visible() );
 
- 				} );
 
- 			this.active( dt.column( conf.columns ).visible() );
 
- 		},
 
- 		destroy: function ( dt, button, conf ) {
 
- 			dt
 
- 				.off( 'column-visibility.dt'+conf.namespace )
 
- 				.off( 'column-reorder.dt'+conf.namespace );
 
- 		},
 
- 		_columnText: function ( dt, conf ) {
 
- 			// Use DataTables' internal data structure until this is presented
 
- 			// is a public API. The other option is to use
 
- 			// `$( column(col).node() ).text()` but the node might not have been
 
- 			// populated when Buttons is constructed.
 
- 			var idx = dt.column( conf.columns ).index();
 
- 			var title = dt.settings()[0].aoColumns[ idx ].sTitle
 
- 				.replace(/\n/g," ")        // remove new lines
 
- 				.replace(/<br\s*\/?>/gi, " ")  // replace line breaks with spaces
 
- 				.replace(/<select(.*?)<\/select>/g, "") // remove select tags, including options text
 
- 				.replace(/<!\-\-.*?\-\->/g, "") // strip HTML comments
 
- 				.replace(/<.*?>/g, "")   // strip HTML
 
- 				.replace(/^\s+|\s+$/g,""); // trim
 
- 			return conf.columnText ?
 
- 				conf.columnText( dt, idx, title ) :
 
- 				title;
 
- 		}
 
- 	},
 
- 	colvisRestore: {
 
- 		className: 'buttons-colvisRestore',
 
- 		text: function ( dt ) {
 
- 			return dt.i18n( 'buttons.colvisRestore', 'Restore visibility' );
 
- 		},
 
- 		init: function ( dt, button, conf ) {
 
- 			conf._visOriginal = dt.columns().indexes().map( function ( idx ) {
 
- 				return dt.column( idx ).visible();
 
- 			} ).toArray();
 
- 		},
 
- 		action: function ( e, dt, button, conf ) {
 
- 			dt.columns().every( function ( i ) {
 
- 				// Take into account that ColReorder might have disrupted our
 
- 				// indexes
 
- 				var idx = dt.colReorder && dt.colReorder.transpose ?
 
- 					dt.colReorder.transpose( i, 'toOriginal' ) :
 
- 					i;
 
- 				this.visible( conf._visOriginal[ idx ] );
 
- 			} );
 
- 		}
 
- 	},
 
- 	colvisGroup: {
 
- 		className: 'buttons-colvisGroup',
 
- 		action: function ( e, dt, button, conf ) {
 
- 			dt.columns( conf.show ).visible( true, false );
 
- 			dt.columns( conf.hide ).visible( false, false );
 
- 			dt.columns.adjust();
 
- 		},
 
- 		show: [],
 
- 		hide: []
 
- 	}
 
- } );
 
- return DataTable.Buttons;
 
- }));
 
 
  |