jquery-datatables-rails 1.12.2 → 2.1.10.0.0

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (36) hide show
  1. checksums.yaml +4 -4
  2. data/app/assets/images/dataTables/extras/filler.png +0 -0
  3. data/app/assets/images/dataTables/extras/loading-background.png +0 -0
  4. data/app/assets/images/dataTables/sort_asc_disabled.png +0 -0
  5. data/app/assets/javascripts/dataTables/extras/dataTables.autoFill.js +851 -0
  6. data/app/assets/javascripts/dataTables/extras/{ColReorder.js → dataTables.colReorder.js} +558 -223
  7. data/app/assets/javascripts/dataTables/extras/dataTables.colVis.js +1096 -0
  8. data/app/assets/javascripts/dataTables/extras/{FixedColumns.js → dataTables.fixedColumns.js} +163 -113
  9. data/app/assets/javascripts/dataTables/extras/{FixedHeader.js → dataTables.fixedHeader.js} +306 -219
  10. data/app/assets/javascripts/dataTables/extras/{KeyTable.js → dataTables.keyTable.js} +155 -95
  11. data/app/assets/javascripts/dataTables/extras/{Scroller.js → dataTables.scroller.js} +469 -188
  12. data/app/assets/javascripts/dataTables/extras/{TableTools.js → dataTables.tableTools.js} +949 -341
  13. data/app/assets/javascripts/dataTables/jquery.dataTables.foundation.js +4 -4
  14. data/app/assets/javascripts/dataTables/jquery.dataTables.js +10711 -8427
  15. data/app/assets/media/dataTables/extras/swf/copy_csv_xls.swf +0 -0
  16. data/app/assets/media/dataTables/extras/swf/copy_csv_xls_pdf.swf +0 -0
  17. data/app/assets/stylesheets/dataTables/extras/dataTables.autoFill.css.scss +24 -0
  18. data/app/assets/stylesheets/dataTables/extras/dataTables.colReorder.css.scss +14 -0
  19. data/app/assets/stylesheets/dataTables/extras/dataTables.colVis.css.scss +184 -0
  20. data/app/assets/stylesheets/dataTables/extras/dataTables.colvis.jqueryui.css.scss +23 -0
  21. data/app/assets/stylesheets/dataTables/extras/dataTables.fixedColumns.css.scss +24 -0
  22. data/app/assets/stylesheets/dataTables/extras/dataTables.fixedHeader.css.scss +7 -0
  23. data/app/assets/stylesheets/dataTables/extras/dataTables.keyTable.css.scss +7 -0
  24. data/app/assets/stylesheets/dataTables/extras/dataTables.scroller.css.scss +44 -0
  25. data/app/assets/stylesheets/dataTables/extras/{TableTools.css.erb → dataTables.tableTools.css.scss} +30 -15
  26. data/app/assets/stylesheets/dataTables/jquery.dataTables.bootstrap.css.scss +6 -0
  27. data/app/assets/stylesheets/dataTables/jquery.dataTables.css.scss +363 -184
  28. data/app/assets/stylesheets/dataTables/src/jquery.dataTables_themeroller.css +307 -220
  29. data/lib/jquery/datatables/rails/version.rb +1 -1
  30. metadata +42 -22
  31. data/app/assets/javascripts/dataTables/extras/AutoFill.js +0 -820
  32. data/app/assets/javascripts/dataTables/extras/ColVis.js +0 -1005
  33. data/app/assets/javascripts/dataTables/extras/TableTools.min.js +0 -77
  34. data/app/assets/stylesheets/dataTables/extras/ColReorder.css.erb +0 -21
  35. data/app/assets/stylesheets/dataTables/extras/ColVis.css +0 -76
  36. data/app/assets/stylesheets/dataTables/extras/ColVisAlt.css.erb +0 -104
@@ -1,1005 +0,0 @@
1
- /*
2
- * File: ColVis.js
3
- * Version: 1.0.8
4
- * CVS: $Id$
5
- * Description: Controls for column visiblity in DataTables
6
- * Author: Allan Jardine (www.sprymedia.co.uk)
7
- * Created: Wed Sep 15 18:23:29 BST 2010
8
- * Modified: $Date$ by $Author$
9
- * Language: Javascript
10
- * License: GPL v2 or BSD 3 point style
11
- * Project: Just a little bit of fun :-)
12
- * Contact: www.sprymedia.co.uk/contact
13
- *
14
- * Copyright 2010-2011 Allan Jardine, all rights reserved.
15
- *
16
- * This source file is free software, under either the GPL v2 license or a
17
- * BSD style license, available at:
18
- * http://datatables.net/license_gpl2
19
- * http://datatables.net/license_bsd
20
- */
21
-
22
- (function($) {
23
-
24
- /**
25
- * ColVis provides column visiblity control for DataTables
26
- * @class ColVis
27
- * @constructor
28
- * @param {object} DataTables settings object
29
- */
30
- ColVis = function( oDTSettings, oInit )
31
- {
32
- /* Santiy check that we are a new instance */
33
- if ( !this.CLASS || this.CLASS != "ColVis" )
34
- {
35
- alert( "Warning: ColVis must be initialised with the keyword 'new'" );
36
- }
37
-
38
- if ( typeof oInit == 'undefined' )
39
- {
40
- oInit = {};
41
- }
42
-
43
-
44
- /* * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * *
45
- * Public class variables
46
- * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * */
47
-
48
- /**
49
- * @namespace Settings object which contains customisable information for ColVis instance
50
- */
51
- this.s = {
52
- /**
53
- * DataTables settings object
54
- * @property dt
55
- * @type Object
56
- * @default null
57
- */
58
- "dt": null,
59
-
60
- /**
61
- * Customisation object
62
- * @property oInit
63
- * @type Object
64
- * @default passed in
65
- */
66
- "oInit": oInit,
67
-
68
- /**
69
- * Callback function to tell the user when the state has changed
70
- * @property fnStateChange
71
- * @type function
72
- * @default null
73
- */
74
- "fnStateChange": null,
75
-
76
- /**
77
- * Mode of activation. Can be 'click' or 'mouseover'
78
- * @property activate
79
- * @type String
80
- * @default click
81
- */
82
- "activate": "click",
83
-
84
- /**
85
- * Position of the collection menu when shown - align "left" or "right"
86
- * @property sAlign
87
- * @type String
88
- * @default right
89
- */
90
- "sAlign": "left",
91
-
92
- /**
93
- * Text used for the button
94
- * @property buttonText
95
- * @type String
96
- * @default Show / hide columns
97
- */
98
- "buttonText": "Show / hide columns",
99
-
100
- /**
101
- * Flag to say if the collection is hidden
102
- * @property hidden
103
- * @type boolean
104
- * @default true
105
- */
106
- "hidden": true,
107
-
108
- /**
109
- * List of columns (integers) which should be excluded from the list
110
- * @property aiExclude
111
- * @type Array
112
- * @default []
113
- */
114
- "aiExclude": [],
115
-
116
- /**
117
- * Store the original viisbility settings so they could be restored
118
- * @property abOriginal
119
- * @type Array
120
- * @default []
121
- */
122
- "abOriginal": [],
123
-
124
- /**
125
- * Show Show-All button
126
- * @property bShowAll
127
- * @type Array
128
- * @default []
129
- */
130
- "bShowAll": false,
131
-
132
- /**
133
- * Show All button text
134
- * @property sShowAll
135
- * @type String
136
- * @default Restore original
137
- */
138
- "sShowAll": "Show All",
139
-
140
- /**
141
- * Show restore button
142
- * @property bRestore
143
- * @type Array
144
- * @default []
145
- */
146
- "bRestore": false,
147
-
148
- /**
149
- * Restore button text
150
- * @property sRestore
151
- * @type String
152
- * @default Restore original
153
- */
154
- "sRestore": "Restore original",
155
-
156
- /**
157
- * Overlay animation duration in mS
158
- * @property iOverlayFade
159
- * @type Integer
160
- * @default 500
161
- */
162
- "iOverlayFade": 500,
163
-
164
- /**
165
- * Label callback for column names. Takes three parameters: 1. the column index, 2. the column
166
- * title detected by DataTables and 3. the TH node for the column
167
- * @property fnLabel
168
- * @type Function
169
- * @default null
170
- */
171
- "fnLabel": null,
172
-
173
- /**
174
- * Indicate if ColVis should automatically calculate the size of buttons or not. The default
175
- * is for it to do so. Set to "css" to disable the automatic sizing
176
- * @property sSize
177
- * @type String
178
- * @default auto
179
- */
180
- "sSize": "auto",
181
-
182
- /**
183
- * Indicate if the column list should be positioned by Javascript, visually below the button
184
- * or allow CSS to do the positioning
185
- * @property bCssPosition
186
- * @type boolean
187
- * @default false
188
- */
189
- "bCssPosition": false
190
- };
191
-
192
-
193
- /**
194
- * @namespace Common and useful DOM elements for the class instance
195
- */
196
- this.dom = {
197
- /**
198
- * Wrapper for the button - given back to DataTables as the node to insert
199
- * @property wrapper
200
- * @type Node
201
- * @default null
202
- */
203
- "wrapper": null,
204
-
205
- /**
206
- * Activation button
207
- * @property button
208
- * @type Node
209
- * @default null
210
- */
211
- "button": null,
212
-
213
- /**
214
- * Collection list node
215
- * @property collection
216
- * @type Node
217
- * @default null
218
- */
219
- "collection": null,
220
-
221
- /**
222
- * Background node used for shading the display and event capturing
223
- * @property background
224
- * @type Node
225
- * @default null
226
- */
227
- "background": null,
228
-
229
- /**
230
- * Element to position over the activation button to catch mouse events when using mouseover
231
- * @property catcher
232
- * @type Node
233
- * @default null
234
- */
235
- "catcher": null,
236
-
237
- /**
238
- * List of button elements
239
- * @property buttons
240
- * @type Array
241
- * @default []
242
- */
243
- "buttons": [],
244
-
245
- /**
246
- * Restore button
247
- * @property restore
248
- * @type Node
249
- * @default null
250
- */
251
- "restore": null
252
- };
253
-
254
- /* Store global reference */
255
- ColVis.aInstances.push( this );
256
-
257
- /* Constructor logic */
258
- this.s.dt = oDTSettings;
259
- this._fnConstruct();
260
- return this;
261
- };
262
-
263
-
264
-
265
- ColVis.prototype = {
266
- /* * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * *
267
- * Public methods
268
- * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * */
269
-
270
- /**
271
- * Rebuild the list of buttons for this instance (i.e. if there is a column header update)
272
- * @method fnRebuild
273
- * @returns void
274
- */
275
- "fnRebuild": function ()
276
- {
277
- /* Remove the old buttons */
278
- for ( var i=this.dom.buttons.length-1 ; i>=0 ; i-- )
279
- {
280
- if ( this.dom.buttons[i] !== null )
281
- {
282
- this.dom.collection.removeChild( this.dom.buttons[i] );
283
- }
284
- }
285
- this.dom.buttons.splice( 0, this.dom.buttons.length );
286
-
287
- if ( this.dom.restore )
288
- {
289
- this.dom.restore.parentNode( this.dom.restore );
290
- }
291
-
292
- /* Re-add them (this is not the optimal way of doing this, it is fast and effective) */
293
- this._fnAddButtons();
294
-
295
- /* Update the checkboxes */
296
- this._fnDrawCallback();
297
- },
298
-
299
-
300
-
301
- /* * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * *
302
- * Private methods (they are of course public in JS, but recommended as private)
303
- * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * */
304
-
305
- /**
306
- * Constructor logic
307
- * @method _fnConstruct
308
- * @returns void
309
- * @private
310
- */
311
- "_fnConstruct": function ()
312
- {
313
- this._fnApplyCustomisation();
314
-
315
- var that = this;
316
- var i, iLen;
317
- this.dom.wrapper = document.createElement('div');
318
- this.dom.wrapper.className = "ColVis TableTools";
319
-
320
- this.dom.button = this._fnDomBaseButton( this.s.buttonText );
321
- this.dom.button.className += " ColVis_MasterButton";
322
- this.dom.wrapper.appendChild( this.dom.button );
323
-
324
- this.dom.catcher = this._fnDomCatcher();
325
- this.dom.collection = this._fnDomCollection();
326
- this.dom.background = this._fnDomBackground();
327
-
328
- this._fnAddButtons();
329
-
330
- /* Store the original visbility information */
331
- for ( i=0, iLen=this.s.dt.aoColumns.length ; i<iLen ; i++ )
332
- {
333
- this.s.abOriginal.push( this.s.dt.aoColumns[i].bVisible );
334
- }
335
-
336
- /* Update on each draw */
337
- this.s.dt.aoDrawCallback.push( {
338
- "fn": function () {
339
- that._fnDrawCallback.call( that );
340
- },
341
- "sName": "ColVis"
342
- } );
343
-
344
- /* If columns are reordered, then we need to update our exclude list and
345
- * rebuild the displayed list
346
- */
347
- $(this.s.dt.oInstance).bind( 'column-reorder', function ( e, oSettings, oReorder ) {
348
- for ( i=0, iLen=that.s.aiExclude.length ; i<iLen ; i++ ) {
349
- that.s.aiExclude[i] = oReorder.aiInvertMapping[ that.s.aiExclude[i] ];
350
- }
351
-
352
- var mStore = that.s.abOriginal.splice( oReorder.iFrom, 1 )[0];
353
- that.s.abOriginal.splice( oReorder.iTo, 0, mStore );
354
-
355
- that.fnRebuild();
356
- } );
357
- },
358
-
359
-
360
- /**
361
- * Apply any customisation to the settings from the DataTables initialisation
362
- * @method _fnApplyCustomisation
363
- * @returns void
364
- * @private
365
- */
366
- "_fnApplyCustomisation": function ()
367
- {
368
- var oConfig = this.s.oInit;
369
-
370
- if ( typeof oConfig.activate != 'undefined' )
371
- {
372
- this.s.activate = oConfig.activate;
373
- }
374
-
375
- if ( typeof oConfig.buttonText != 'undefined' )
376
- {
377
- this.s.buttonText = oConfig.buttonText;
378
- }
379
-
380
- if ( typeof oConfig.aiExclude != 'undefined' )
381
- {
382
- this.s.aiExclude = oConfig.aiExclude;
383
- }
384
-
385
- if ( typeof oConfig.bRestore != 'undefined' )
386
- {
387
- this.s.bRestore = oConfig.bRestore;
388
- }
389
-
390
- if ( typeof oConfig.sRestore != 'undefined' )
391
- {
392
- this.s.sRestore = oConfig.sRestore;
393
- }
394
-
395
- if ( typeof oConfig.bShowAll != 'undefined' )
396
- {
397
- this.s.bShowAll = oConfig.bShowAll;
398
- }
399
-
400
- if ( typeof oConfig.sShowAll != 'undefined' )
401
- {
402
- this.s.sShowAll = oConfig.sShowAll;
403
- }
404
-
405
- if ( typeof oConfig.sAlign != 'undefined' )
406
- {
407
- this.s.sAlign = oConfig.sAlign;
408
- }
409
-
410
- if ( typeof oConfig.fnStateChange != 'undefined' )
411
- {
412
- this.s.fnStateChange = oConfig.fnStateChange;
413
- }
414
-
415
- if ( typeof oConfig.iOverlayFade != 'undefined' )
416
- {
417
- this.s.iOverlayFade = oConfig.iOverlayFade;
418
- }
419
-
420
- if ( typeof oConfig.fnLabel != 'undefined' )
421
- {
422
- this.s.fnLabel = oConfig.fnLabel;
423
- }
424
-
425
- if ( typeof oConfig.sSize != 'undefined' )
426
- {
427
- this.s.sSize = oConfig.sSize;
428
- }
429
-
430
- if ( typeof oConfig.bCssPosition != 'undefined' )
431
- {
432
- this.s.bCssPosition = oConfig.bCssPosition;
433
- }
434
- },
435
-
436
-
437
- /**
438
- * On each table draw, check the visibility checkboxes as needed. This allows any process to
439
- * update the table's column visibility and ColVis will still be accurate.
440
- * @method _fnDrawCallback
441
- * @returns void
442
- * @private
443
- */
444
- "_fnDrawCallback": function ()
445
- {
446
- var aoColumns = this.s.dt.aoColumns;
447
-
448
- for ( var i=0, iLen=aoColumns.length ; i<iLen ; i++ )
449
- {
450
- if ( this.dom.buttons[i] !== null )
451
- {
452
- if ( aoColumns[i].bVisible )
453
- {
454
- $('input', this.dom.buttons[i]).attr('checked','checked');
455
- }
456
- else
457
- {
458
- $('input', this.dom.buttons[i]).removeAttr('checked');
459
- }
460
- }
461
- }
462
- },
463
-
464
-
465
- /**
466
- * Loop through the columns in the table and as a new button for each one.
467
- * @method _fnAddButtons
468
- * @returns void
469
- * @private
470
- */
471
- "_fnAddButtons": function ()
472
- {
473
- var
474
- nButton,
475
- sExclude = ","+this.s.aiExclude.join(',')+",";
476
-
477
- for ( var i=0, iLen=this.s.dt.aoColumns.length ; i<iLen ; i++ )
478
- {
479
- if ( sExclude.indexOf( ","+i+"," ) == -1 )
480
- {
481
- nButton = this._fnDomColumnButton( i );
482
- this.dom.buttons.push( nButton );
483
- this.dom.collection.appendChild( nButton );
484
- }
485
- else
486
- {
487
- this.dom.buttons.push( null );
488
- }
489
- }
490
-
491
- if ( this.s.bRestore )
492
- {
493
- nButton = this._fnDomRestoreButton();
494
- nButton.className += " ColVis_Restore";
495
- this.dom.buttons.push( nButton );
496
- this.dom.collection.appendChild( nButton );
497
- }
498
-
499
- if ( this.s.bShowAll )
500
- {
501
- nButton = this._fnDomShowAllButton();
502
- nButton.className += " ColVis_ShowAll";
503
- this.dom.buttons.push( nButton );
504
- this.dom.collection.appendChild( nButton );
505
- }
506
- },
507
-
508
-
509
- /**
510
- * Create a button which allows a "restore" action
511
- * @method _fnDomRestoreButton
512
- * @returns {Node} Created button
513
- * @private
514
- */
515
- "_fnDomRestoreButton": function ()
516
- {
517
- var
518
- that = this,
519
- nButton = document.createElement('button'),
520
- nSpan = document.createElement('span');
521
-
522
- nButton.className = !this.s.dt.bJUI ? "ColVis_Button TableTools_Button" :
523
- "ColVis_Button TableTools_Button ui-button ui-state-default";
524
- nButton.appendChild( nSpan );
525
- $(nSpan).html( '<span class="ColVis_title">'+this.s.sRestore+'</span>' );
526
-
527
- $(nButton).click( function (e) {
528
- for ( var i=0, iLen=that.s.abOriginal.length ; i<iLen ; i++ )
529
- {
530
- that.s.dt.oInstance.fnSetColumnVis( i, that.s.abOriginal[i], false );
531
- }
532
- that._fnAdjustOpenRows();
533
- that.s.dt.oInstance.fnAdjustColumnSizing( false );
534
- that.s.dt.oInstance.fnDraw( false );
535
- } );
536
-
537
- return nButton;
538
- },
539
-
540
-
541
- /**
542
- * Create a button which allows a "show all" action
543
- * @method _fnDomShowAllButton
544
- * @returns {Node} Created button
545
- * @private
546
- */
547
- "_fnDomShowAllButton": function ()
548
- {
549
- var
550
- that = this,
551
- nButton = document.createElement('button'),
552
- nSpan = document.createElement('span');
553
-
554
- nButton.className = !this.s.dt.bJUI ? "ColVis_Button TableTools_Button" :
555
- "ColVis_Button TableTools_Button ui-button ui-state-default";
556
- nButton.appendChild( nSpan );
557
- $(nSpan).html( '<span class="ColVis_title">'+this.s.sShowAll+'</span>' );
558
-
559
- $(nButton).click( function (e) {
560
- for ( var i=0, iLen=that.s.abOriginal.length ; i<iLen ; i++ )
561
- {
562
- if (that.s.aiExclude.indexOf(i) === -1)
563
- {
564
- that.s.dt.oInstance.fnSetColumnVis( i, true, false );
565
- }
566
- }
567
- that._fnAdjustOpenRows();
568
- that.s.dt.oInstance.fnAdjustColumnSizing( false );
569
- that.s.dt.oInstance.fnDraw( false );
570
- } );
571
-
572
- return nButton;
573
- },
574
-
575
-
576
- /**
577
- * Create the DOM for a show / hide button
578
- * @method _fnDomColumnButton
579
- * @param {int} i Column in question
580
- * @returns {Node} Created button
581
- * @private
582
- */
583
- "_fnDomColumnButton": function ( i )
584
- {
585
- var
586
- that = this,
587
- oColumn = this.s.dt.aoColumns[i],
588
- nButton = document.createElement('button'),
589
- nSpan = document.createElement('span'),
590
- dt = this.s.dt;
591
-
592
- nButton.className = !dt.bJUI ? "ColVis_Button TableTools_Button" :
593
- "ColVis_Button TableTools_Button ui-button ui-state-default";
594
- nButton.appendChild( nSpan );
595
- var sTitle = this.s.fnLabel===null ? oColumn.sTitle : this.s.fnLabel( i, oColumn.sTitle, oColumn.nTh );
596
- $(nSpan).html(
597
- '<span class="ColVis_radio"><input type="checkbox"/></span>'+
598
- '<span class="ColVis_title">'+sTitle+'</span>' );
599
-
600
- $(nButton).click( function (e) {
601
- var showHide = !$('input', this).is(":checked");
602
- if ( e.target.nodeName.toLowerCase() == "input" )
603
- {
604
- showHide = $('input', this).is(":checked");
605
- }
606
-
607
- /* Need to consider the case where the initialiser created more than one table - change the
608
- * API index that DataTables is using
609
- */
610
- var oldIndex = $.fn.dataTableExt.iApiIndex;
611
- $.fn.dataTableExt.iApiIndex = that._fnDataTablesApiIndex.call(that);
612
-
613
- // Optimisation for server-side processing when scrolling - don't do a full redraw
614
- if ( dt.oFeatures.bServerSide && (dt.oScroll.sX !== "" || dt.oScroll.sY !== "" ) )
615
- {
616
- that.s.dt.oInstance.fnSetColumnVis( i, showHide, false );
617
- that.s.dt.oInstance.fnAdjustColumnSizing( false );
618
- that.s.dt.oInstance.oApi._fnScrollDraw( that.s.dt );
619
- that._fnDrawCallback();
620
- }
621
- else
622
- {
623
- that.s.dt.oInstance.fnSetColumnVis( i, showHide );
624
- }
625
-
626
- $.fn.dataTableExt.iApiIndex = oldIndex; /* Restore */
627
-
628
- if ( that.s.fnStateChange !== null )
629
- {
630
- that.s.fnStateChange.call( that, i, showHide );
631
- }
632
- } );
633
-
634
- return nButton;
635
- },
636
-
637
-
638
- /**
639
- * Get the position in the DataTables instance array of the table for this instance of ColVis
640
- * @method _fnDataTablesApiIndex
641
- * @returns {int} Index
642
- * @private
643
- */
644
- "_fnDataTablesApiIndex": function ()
645
- {
646
- for ( var i=0, iLen=this.s.dt.oInstance.length ; i<iLen ; i++ )
647
- {
648
- if ( this.s.dt.oInstance[i] == this.s.dt.nTable )
649
- {
650
- return i;
651
- }
652
- }
653
- return 0;
654
- },
655
-
656
-
657
- /**
658
- * Create the DOM needed for the button and apply some base properties. All buttons start here
659
- * @method _fnDomBaseButton
660
- * @param {String} text Button text
661
- * @returns {Node} DIV element for the button
662
- * @private
663
- */
664
- "_fnDomBaseButton": function ( text )
665
- {
666
- var
667
- that = this,
668
- nButton = document.createElement('button'),
669
- nSpan = document.createElement('span'),
670
- sEvent = this.s.activate=="mouseover" ? "mouseover" : "click";
671
-
672
- nButton.className = !this.s.dt.bJUI ? "ColVis_Button TableTools_Button" :
673
- "ColVis_Button TableTools_Button ui-button ui-state-default";
674
- nButton.appendChild( nSpan );
675
- nSpan.innerHTML = text;
676
-
677
- $(nButton).bind( sEvent, function (e) {
678
- that._fnCollectionShow();
679
- e.preventDefault();
680
- } );
681
-
682
- return nButton;
683
- },
684
-
685
-
686
- /**
687
- * Create the element used to contain list the columns (it is shown and hidden as needed)
688
- * @method _fnDomCollection
689
- * @returns {Node} div container for the collection
690
- * @private
691
- */
692
- "_fnDomCollection": function ()
693
- {
694
- var that = this;
695
- var nHidden = document.createElement('div');
696
- nHidden.style.display = "none";
697
- nHidden.className = !this.s.dt.bJUI ? "ColVis_collection TableTools_collection" :
698
- "ColVis_collection TableTools_collection ui-buttonset ui-buttonset-multi";
699
-
700
- if ( !this.s.bCssPosition )
701
- {
702
- nHidden.style.position = "absolute";
703
- }
704
- $(nHidden).css('opacity', 0);
705
-
706
- return nHidden;
707
- },
708
-
709
-
710
- /**
711
- * An element to be placed on top of the activate button to catch events
712
- * @method _fnDomCatcher
713
- * @returns {Node} div container for the collection
714
- * @private
715
- */
716
- "_fnDomCatcher": function ()
717
- {
718
- var
719
- that = this,
720
- nCatcher = document.createElement('div');
721
- nCatcher.className = "ColVis_catcher TableTools_catcher";
722
-
723
- $(nCatcher).click( function () {
724
- that._fnCollectionHide.call( that, null, null );
725
- } );
726
-
727
- return nCatcher;
728
- },
729
-
730
-
731
- /**
732
- * Create the element used to shade the background, and capture hide events (it is shown and
733
- * hidden as needed)
734
- * @method _fnDomBackground
735
- * @returns {Node} div container for the background
736
- * @private
737
- */
738
- "_fnDomBackground": function ()
739
- {
740
- var that = this;
741
-
742
- var nBackground = document.createElement('div');
743
- nBackground.style.position = "absolute";
744
- nBackground.style.left = "0px";
745
- nBackground.style.top = "0px";
746
- nBackground.className = "ColVis_collectionBackground TableTools_collectionBackground";
747
- $(nBackground).css('opacity', 0);
748
-
749
- $(nBackground).click( function () {
750
- that._fnCollectionHide.call( that, null, null );
751
- } );
752
-
753
- /* When considering a mouse over action for the activation, we also consider a mouse out
754
- * which is the same as a mouse over the background - without all the messing around of
755
- * bubbling events. Use the catcher element to avoid messing around with bubbling
756
- */
757
- if ( this.s.activate == "mouseover" )
758
- {
759
- $(nBackground).mouseover( function () {
760
- that.s.overcollection = false;
761
- that._fnCollectionHide.call( that, null, null );
762
- } );
763
- }
764
-
765
- return nBackground;
766
- },
767
-
768
-
769
- /**
770
- * Show the show / hide list and the background
771
- * @method _fnCollectionShow
772
- * @returns void
773
- * @private
774
- */
775
- "_fnCollectionShow": function ()
776
- {
777
- var that = this, i, iLen;
778
- var oPos = $(this.dom.button).offset();
779
- var nHidden = this.dom.collection;
780
- var nBackground = this.dom.background;
781
- var iDivX = parseInt(oPos.left, 10);
782
- var iDivY = parseInt(oPos.top + $(this.dom.button).outerHeight(), 10);
783
-
784
- if ( !this.s.bCssPosition )
785
- {
786
- nHidden.style.top = iDivY+"px";
787
- nHidden.style.left = iDivX+"px";
788
- }
789
- nHidden.style.display = "block";
790
- $(nHidden).css('opacity',0);
791
-
792
- var iWinHeight = $(window).height(), iDocHeight = $(document).height(),
793
- iWinWidth = $(window).width(), iDocWidth = $(document).width();
794
-
795
- nBackground.style.height = ((iWinHeight>iDocHeight)? iWinHeight : iDocHeight) +"px";
796
- nBackground.style.width = ((iWinWidth<iDocWidth)? iWinWidth : iDocWidth) +"px";
797
-
798
- var oStyle = this.dom.catcher.style;
799
- oStyle.height = $(this.dom.button).outerHeight()+"px";
800
- oStyle.width = $(this.dom.button).outerWidth()+"px";
801
- oStyle.top = oPos.top+"px";
802
- oStyle.left = iDivX+"px";
803
-
804
- document.body.appendChild( nBackground );
805
- document.body.appendChild( nHidden );
806
- document.body.appendChild( this.dom.catcher );
807
-
808
- /* Resize the buttons */
809
- if ( this.s.sSize == "auto" )
810
- {
811
- var aiSizes = [];
812
- this.dom.collection.style.width = "auto";
813
- for ( i=0, iLen=this.dom.buttons.length ; i<iLen ; i++ )
814
- {
815
- if ( this.dom.buttons[i] !== null )
816
- {
817
- this.dom.buttons[i].style.width = "auto";
818
- aiSizes.push( $(this.dom.buttons[i]).outerWidth() );
819
- }
820
- }
821
- iMax = Math.max.apply(window, aiSizes);
822
- for ( i=0, iLen=this.dom.buttons.length ; i<iLen ; i++ )
823
- {
824
- if ( this.dom.buttons[i] !== null )
825
- {
826
- this.dom.buttons[i].style.width = iMax+"px";
827
- }
828
- }
829
- this.dom.collection.style.width = iMax+"px";
830
- }
831
-
832
- /* Visual corrections to try and keep the collection visible */
833
- if ( !this.s.bCssPosition )
834
- {
835
- nHidden.style.left = this.s.sAlign=="left" ?
836
- iDivX+"px" : (iDivX-$(nHidden).outerWidth()+$(this.dom.button).outerWidth())+"px";
837
-
838
- var iDivWidth = $(nHidden).outerWidth();
839
- var iDivHeight = $(nHidden).outerHeight();
840
-
841
- if ( iDivX + iDivWidth > iDocWidth )
842
- {
843
- nHidden.style.left = (iDocWidth-iDivWidth)+"px";
844
- }
845
- }
846
-
847
- /* This results in a very small delay for the end user but it allows the animation to be
848
- * much smoother. If you don't want the animation, then the setTimeout can be removed
849
- */
850
- setTimeout( function () {
851
- $(nHidden).animate({"opacity": 1}, that.s.iOverlayFade);
852
- $(nBackground).animate({"opacity": 0.1}, that.s.iOverlayFade, 'linear');
853
- }, 10 );
854
-
855
- this.s.hidden = false;
856
- },
857
-
858
-
859
- /**
860
- * Hide the show / hide list and the background
861
- * @method _fnCollectionHide
862
- * @returns void
863
- * @private
864
- */
865
- "_fnCollectionHide": function ( )
866
- {
867
- var that = this;
868
-
869
- if ( !this.s.hidden && this.dom.collection !== null )
870
- {
871
- this.s.hidden = true;
872
-
873
- $(this.dom.collection).animate({"opacity": 0}, that.s.iOverlayFade, function (e) {
874
- this.style.display = "none";
875
- } );
876
-
877
- $(this.dom.background).animate({"opacity": 0}, that.s.iOverlayFade, function (e) {
878
- document.body.removeChild( that.dom.background );
879
- document.body.removeChild( that.dom.catcher );
880
- } );
881
- }
882
- },
883
-
884
-
885
- /**
886
- * Alter the colspan on any fnOpen rows
887
- */
888
- "_fnAdjustOpenRows": function ()
889
- {
890
- var aoOpen = this.s.dt.aoOpenRows;
891
- var iVisible = this.s.dt.oApi._fnVisbleColumns( this.s.dt );
892
-
893
- for ( var i=0, iLen=aoOpen.length ; i<iLen ; i++ ) {
894
- aoOpen[i].nTr.getElementsByTagName('td')[0].colSpan = iVisible;
895
- }
896
- }
897
- };
898
-
899
-
900
-
901
-
902
-
903
- /* * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * *
904
- * Static object methods
905
- * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * */
906
-
907
- /**
908
- * Rebuild the collection for a given table, or all tables if no parameter given
909
- * @method ColVis.fnRebuild
910
- * @static
911
- * @param object oTable DataTable instance to consider - optional
912
- * @returns void
913
- */
914
- ColVis.fnRebuild = function ( oTable )
915
- {
916
- var nTable = null;
917
- if ( typeof oTable != 'undefined' )
918
- {
919
- nTable = oTable.fnSettings().nTable;
920
- }
921
-
922
- for ( var i=0, iLen=ColVis.aInstances.length ; i<iLen ; i++ )
923
- {
924
- if ( typeof oTable == 'undefined' || nTable == ColVis.aInstances[i].s.dt.nTable )
925
- {
926
- ColVis.aInstances[i].fnRebuild();
927
- }
928
- }
929
- };
930
-
931
-
932
-
933
-
934
-
935
- /* * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * *
936
- * Static object properties
937
- * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * */
938
-
939
- /**
940
- * Collection of all ColVis instances
941
- * @property ColVis.aInstances
942
- * @static
943
- * @type Array
944
- * @default []
945
- */
946
- ColVis.aInstances = [];
947
-
948
-
949
-
950
-
951
-
952
- /* * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * *
953
- * Constants
954
- * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * */
955
-
956
- /**
957
- * Name of this class
958
- * @constant CLASS
959
- * @type String
960
- * @default ColVis
961
- */
962
- ColVis.prototype.CLASS = "ColVis";
963
-
964
-
965
- /**
966
- * ColVis version
967
- * @constant VERSION
968
- * @type String
969
- * @default See code
970
- */
971
- ColVis.VERSION = "1.0.8";
972
- ColVis.prototype.VERSION = ColVis.VERSION;
973
-
974
-
975
-
976
-
977
-
978
- /* * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * *
979
- * Initialisation
980
- * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * */
981
-
982
- /*
983
- * Register a new feature with DataTables
984
- */
985
- if ( typeof $.fn.dataTable == "function" &&
986
- typeof $.fn.dataTableExt.fnVersionCheck == "function" &&
987
- $.fn.dataTableExt.fnVersionCheck('1.7.0') )
988
- {
989
- $.fn.dataTableExt.aoFeatures.push( {
990
- "fnInit": function( oDTSettings ) {
991
- var init = (typeof oDTSettings.oInit.oColVis == 'undefined') ?
992
- {} : oDTSettings.oInit.oColVis;
993
- var oColvis = new ColVis( oDTSettings, init );
994
- return oColvis.dom.wrapper;
995
- },
996
- "cFeature": "C",
997
- "sFeature": "ColVis"
998
- } );
999
- }
1000
- else
1001
- {
1002
- alert( "Warning: ColVis requires DataTables 1.7 or greater - www.datatables.net/download");
1003
- }
1004
-
1005
- })(jQuery);