aboutsummaryrefslogtreecommitdiffstats
path: root/dbdocs/bower/datatables.net-buttons/buttons.colVis.js
diff options
context:
space:
mode:
Diffstat (limited to 'dbdocs/bower/datatables.net-buttons/buttons.colVis.js')
-rw-r--r--dbdocs/bower/datatables.net-buttons/buttons.colVis.js206
1 files changed, 206 insertions, 0 deletions
diff --git a/dbdocs/bower/datatables.net-buttons/buttons.colVis.js b/dbdocs/bower/datatables.net-buttons/buttons.colVis.js
new file mode 100644
index 0000000..04f3ece
--- /dev/null
+++ b/dbdocs/bower/datatables.net-buttons/buttons.colVis.js
@@ -0,0 +1,206 @@
+/*!
+ * 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;
+
+ dt
+ .on( 'column-visibility.dt'+conf.namespace, function (e, settings) {
+ if ( ! settings.bDestroying ) {
+ that.active( dt.column( conf.columns ).visible() );
+ }
+ } )
+ .on( 'column-reorder.dt'+conf.namespace, function (e, settings, details) {
+ // Don't rename buttons based on column name if the button
+ // controls more than one column!
+ if ( dt.columns( conf.columns ).count() !== 1 ) {
+ return;
+ }
+
+ if ( typeof conf.columns === 'number' ) {
+ conf.columns = details.mapping[ conf.columns ];
+ }
+
+ var col = dt.column( conf.columns );
+
+ that.text( conf._columnText( dt, conf ) );
+ that.active( col.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( /<.*?>/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;
+}));