jquery-datatables-rails 3.3.0 → 3.4.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 (24) hide show
  1. checksums.yaml +4 -4
  2. data/app/assets/javascripts/dataTables/bootstrap/3/jquery.dataTables.bootstrap.js +64 -29
  3. data/app/assets/javascripts/dataTables/extras/dataTables.autoFill.js +806 -648
  4. data/app/assets/javascripts/dataTables/extras/dataTables.buttons.js +1607 -0
  5. data/app/assets/javascripts/dataTables/extras/dataTables.colReorder.js +220 -267
  6. data/app/assets/javascripts/dataTables/extras/dataTables.fixedColumns.js +164 -69
  7. data/app/assets/javascripts/dataTables/extras/dataTables.fixedHeader.js +469 -870
  8. data/app/assets/javascripts/dataTables/extras/dataTables.keyTable.js +636 -972
  9. data/app/assets/javascripts/dataTables/extras/dataTables.responsive.js +472 -187
  10. data/app/assets/javascripts/dataTables/extras/dataTables.rowReorder.js +619 -0
  11. data/app/assets/javascripts/dataTables/extras/dataTables.scroller.js +146 -111
  12. data/app/assets/javascripts/dataTables/extras/dataTables.select.js +1038 -0
  13. data/app/assets/javascripts/dataTables/jquery.dataTables.api.fnGetColumnData.js +0 -0
  14. data/app/assets/javascripts/dataTables/jquery.dataTables.api.fnReloadAjax.js +0 -0
  15. data/app/assets/javascripts/dataTables/jquery.dataTables.foundation.js +37 -61
  16. data/app/assets/javascripts/dataTables/jquery.dataTables.js +720 -387
  17. data/app/assets/javascripts/dataTables/jquery.dataTables.sorting.ipAddress.js +44 -0
  18. data/app/assets/javascripts/dataTables/jquery.dataTables.sorting.numbersHtml.js +0 -0
  19. data/app/assets/javascripts/dataTables/jquery.dataTables.typeDetection.numbersHtml.js +0 -0
  20. data/app/assets/stylesheets/dataTables/jquery.dataTables.scss +34 -66
  21. data/app/assets/stylesheets/dataTables/src/demo_table.css +1 -1
  22. data/app/assets/stylesheets/dataTables/src/demo_table_jui.css.scss +4 -4
  23. data/lib/jquery/datatables/rails/version.rb +1 -1
  24. metadata +24 -19
@@ -1,11 +1,11 @@
1
- /*! ColReorder 1.1.3
2
- * ©2010-2014 SpryMedia Ltd - datatables.net/license
1
+ /*! ColReorder 1.3.0
2
+ * ©2010-2015 SpryMedia Ltd - datatables.net/license
3
3
  */
4
4
 
5
5
  /**
6
6
  * @summary ColReorder
7
7
  * @description Provide the ability to reorder columns in a DataTable
8
- * @version 1.1.3
8
+ * @version 1.3.0
9
9
  * @file dataTables.colReorder.js
10
10
  * @author SpryMedia Ltd (www.sprymedia.co.uk)
11
11
  * @contact www.sprymedia.co.uk/contact
@@ -20,8 +20,34 @@
20
20
  *
21
21
  * For details please refer to: http://www.datatables.net
22
22
  */
23
+ (function( factory ){
24
+ if ( typeof define === 'function' && define.amd ) {
25
+ // AMD
26
+ define( ['jquery', 'datatables.net'], function ( $ ) {
27
+ return factory( $, window, document );
28
+ } );
29
+ }
30
+ else if ( typeof exports === 'object' ) {
31
+ // CommonJS
32
+ module.exports = function (root, $) {
33
+ if ( ! root ) {
34
+ root = window;
35
+ }
23
36
 
24
- (function(window, document, undefined) {
37
+ if ( ! $ || ! $.fn.dataTable ) {
38
+ $ = require('datatables.net')(root, $).$;
39
+ }
40
+
41
+ return factory( $, root, root.document );
42
+ };
43
+ }
44
+ else {
45
+ // Browser
46
+ factory( jQuery, window, document );
47
+ }
48
+ }(function( $, window, document, undefined ) {
49
+ 'use strict';
50
+ var DataTable = $.fn.dataTable;
25
51
 
26
52
 
27
53
  /**
@@ -89,10 +115,6 @@ function fnDomSwitch( nParent, iFrom, iTo )
89
115
  }
90
116
 
91
117
 
92
-
93
- var factory = function( $, DataTable ) {
94
- "use strict";
95
-
96
118
  /**
97
119
  * Plug-in for DataTables which will reorder the internal column structure by taking the column
98
120
  * from one position (iFrom) and insert it into a given point (iTo).
@@ -100,14 +122,15 @@ var factory = function( $, DataTable ) {
100
122
  * @param object oSettings DataTables settings object - automatically added by DataTables!
101
123
  * @param int iFrom Take the column to be repositioned from this point
102
124
  * @param int iTo and insert it into this point
125
+ * @param bool drop Indicate if the reorder is the final one (i.e. a drop)
126
+ * not a live reorder
103
127
  * @returns void
104
128
  */
105
- $.fn.dataTableExt.oApi.fnColReorder = function ( oSettings, iFrom, iTo )
129
+ $.fn.dataTableExt.oApi.fnColReorder = function ( oSettings, iFrom, iTo, drop )
106
130
  {
107
- var v110 = $.fn.dataTable.Api ? true : false;
108
131
  var i, iLen, j, jLen, iCols=oSettings.aoColumns.length, nTrs, oCol;
109
132
  var attrMap = function ( obj, prop, mapping ) {
110
- if ( ! obj[ prop ] ) {
133
+ if ( ! obj[ prop ] || typeof obj[ prop ] === 'function' ) {
111
134
  return;
112
135
  }
113
136
 
@@ -180,17 +203,13 @@ $.fn.dataTableExt.oApi.fnColReorder = function ( oSettings, iFrom, iTo )
180
203
  }
181
204
 
182
205
  // Update the column indexes
183
- if ( v110 ) {
184
- oCol.idx = aiInvertMapping[ oCol.idx ];
185
- }
206
+ oCol.idx = aiInvertMapping[ oCol.idx ];
186
207
  }
187
208
 
188
- if ( v110 ) {
189
- // Update 1.10 optimised sort class removal variable
190
- $.each( oSettings.aLastSort, function (i, val) {
191
- oSettings.aLastSort[i].src = aiInvertMapping[ val.src ];
192
- } );
193
- }
209
+ // Update 1.10 optimised sort class removal variable
210
+ $.each( oSettings.aLastSort, function (i, val) {
211
+ oSettings.aLastSort[i].src = aiInvertMapping[ val.src ];
212
+ } );
194
213
 
195
214
  /* Update the Get and Set functions for each column */
196
215
  for ( i=0, iLen=iCols ; i<iLen ; i++ )
@@ -276,25 +295,15 @@ $.fn.dataTableExt.oApi.fnColReorder = function ( oSettings, iFrom, iTo )
276
295
  {
277
296
  var data = oSettings.aoData[i];
278
297
 
279
- if ( v110 ) {
280
- // DataTables 1.10+
281
- if ( data.anCells ) {
282
- fnArraySwitch( data.anCells, iFrom, iTo );
283
- }
284
-
285
- // For DOM sourced data, the invalidate will reread the cell into
286
- // the data array, but for data sources as an array, they need to
287
- // be flipped
288
- if ( data.src !== 'dom' && $.isArray( data._aData ) ) {
289
- fnArraySwitch( data._aData, iFrom, iTo );
290
- }
298
+ if ( data.anCells ) {
299
+ fnArraySwitch( data.anCells, iFrom, iTo );
291
300
  }
292
- else {
293
- // DataTables 1.9-
294
- if ( $.isArray( data._aData ) ) {
295
- fnArraySwitch( data._aData, iFrom, iTo );
296
- }
297
- fnArraySwitch( data._anHidden, iFrom, iTo );
301
+
302
+ // For DOM sourced data, the invalidate will reread the cell into
303
+ // the data array, but for data sources as an array, they need to
304
+ // be flipped
305
+ if ( data.src !== 'dom' && $.isArray( data._aData ) ) {
306
+ fnArraySwitch( data._aData, iFrom, iTo );
298
307
  }
299
308
  }
300
309
 
@@ -312,11 +321,9 @@ $.fn.dataTableExt.oApi.fnColReorder = function ( oSettings, iFrom, iTo )
312
321
  }
313
322
  }
314
323
 
315
- // In 1.10 we need to invalidate row cached data for sorting, filtering etc
316
- if ( v110 ) {
317
- var api = new $.fn.dataTable.Api( oSettings );
318
- api.rows().invalidate();
319
- }
324
+ // Invalidate row cached data for sorting, filtering etc
325
+ var api = new $.fn.dataTable.Api( oSettings );
326
+ api.rows().invalidate();
320
327
 
321
328
  /*
322
329
  * Update DataTables' event handlers
@@ -331,10 +338,16 @@ $.fn.dataTableExt.oApi.fnColReorder = function ( oSettings, iFrom, iTo )
331
338
 
332
339
 
333
340
  /* Fire an event so other plug-ins can update */
334
- $(oSettings.oInstance).trigger( 'column-reorder', [ oSettings, {
335
- "iFrom": iFrom,
336
- "iTo": iTo,
337
- "aiInvertMapping": aiInvertMapping
341
+ $(oSettings.oInstance).trigger( 'column-reorder.dt', [ oSettings, {
342
+ from: iFrom,
343
+ to: iTo,
344
+ mapping: aiInvertMapping,
345
+ drop: drop,
346
+
347
+ // Old style parameters for compatibility
348
+ iFrom: iFrom,
349
+ iTo: iTo,
350
+ aiInvertMapping: aiInvertMapping
338
351
  } ] );
339
352
  };
340
353
 
@@ -348,42 +361,16 @@ $.fn.dataTableExt.oApi.fnColReorder = function ( oSettings, iFrom, iTo )
348
361
  */
349
362
  var ColReorder = function( dt, opts )
350
363
  {
351
- var oDTSettings;
364
+ var settings = new $.fn.dataTable.Api( dt ).settings()[0];
352
365
 
353
- if ( $.fn.dataTable.Api ) {
354
- oDTSettings = new $.fn.dataTable.Api( dt ).settings()[0];
355
- }
356
- // 1.9 compatibility
357
- else if ( dt.fnSettings ) {
358
- // DataTables object, convert to the settings object
359
- oDTSettings = dt.fnSettings();
360
- }
361
- else if ( typeof dt === 'string' ) {
362
- // jQuery selector
363
- if ( $.fn.dataTable.fnIsDataTable( $(dt)[0] ) ) {
364
- oDTSettings = $(dt).eq(0).dataTable().fnSettings();
365
- }
366
- }
367
- else if ( dt.nodeName && dt.nodeName.toLowerCase() === 'table' ) {
368
- // Table node
369
- if ( $.fn.dataTable.fnIsDataTable( dt.nodeName ) ) {
370
- oDTSettings = $(dt.nodeName).dataTable().fnSettings();
371
- }
372
- }
373
- else if ( dt instanceof jQuery ) {
374
- // jQuery object
375
- if ( $.fn.dataTable.fnIsDataTable( dt[0] ) ) {
376
- oDTSettings = dt.eq(0).dataTable().fnSettings();
377
- }
378
- }
379
- else {
380
- // DataTables settings object
381
- oDTSettings = dt;
366
+ // Ensure that we can't initialise on the same table twice
367
+ if ( settings._colReorder ) {
368
+ return settings._colReorder;
382
369
  }
383
370
 
384
- // Ensure that we can't initialise on the same table twice
385
- if ( oDTSettings._colReorder ) {
386
- throw "ColReorder already initialised on table #"+oDTSettings.nTable.id;
371
+ // Allow the options to be a boolean for defaults
372
+ if ( opts === true ) {
373
+ opts = {};
387
374
  }
388
375
 
389
376
  // Convert from camelCase to Hungarian, just as DataTables does
@@ -491,19 +478,16 @@ var ColReorder = function( dt, opts )
491
478
 
492
479
 
493
480
  /* Constructor logic */
494
- this.s.dt = oDTSettings;
481
+ this.s.dt = settings;
495
482
  this.s.dt._colReorder = this;
496
483
  this._fnConstruct();
497
484
 
498
- /* Add destroy callback */
499
- oDTSettings.oApi._fnCallbackReg(oDTSettings, 'aoDestroyCallback', $.proxy(this._fnDestroy, this), 'ColReorder');
500
-
501
485
  return this;
502
486
  };
503
487
 
504
488
 
505
489
 
506
- ColReorder.prototype = {
490
+ $.extend( ColReorder.prototype, {
507
491
  /* * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * *
508
492
  * Public methods
509
493
  * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * */
@@ -527,13 +511,7 @@ ColReorder.prototype = {
527
511
  */
528
512
  "fnReset": function ()
529
513
  {
530
- var a = [];
531
- for ( var i=0, iLen=this.s.dt.aoColumns.length ; i<iLen ; i++ )
532
- {
533
- a.push( this.s.dt.aoColumns[i]._ColReorder_iOrigCol );
534
- }
535
-
536
- this._fnOrderColumns( a );
514
+ this._fnOrderColumns( this.fnOrder() );
537
515
 
538
516
  return this;
539
517
  },
@@ -585,24 +563,74 @@ ColReorder.prototype = {
585
563
  * $.fn.dataTable.ColReorder( '#example' ).fnOrder().reverse()
586
564
  * );
587
565
  */
588
- "fnOrder": function ( set )
566
+ "fnOrder": function ( set, original )
589
567
  {
590
- if ( set === undefined )
591
- {
592
- var a = [];
593
- for ( var i=0, iLen=this.s.dt.aoColumns.length ; i<iLen ; i++ )
594
- {
595
- a.push( this.s.dt.aoColumns[i]._ColReorder_iOrigCol );
568
+ var a = [], i, ien, j, jen;
569
+ var columns = this.s.dt.aoColumns;
570
+
571
+ if ( set === undefined ){
572
+ for ( i=0, ien=columns.length ; i<ien ; i++ ) {
573
+ a.push( columns[i]._ColReorder_iOrigCol );
596
574
  }
575
+
597
576
  return a;
598
577
  }
599
578
 
579
+ // The order given is based on the original indexes, rather than the
580
+ // existing ones, so we need to translate from the original to current
581
+ // before then doing the order
582
+ if ( original ) {
583
+ var order = this.fnOrder();
584
+
585
+ for ( i=0, ien=set.length ; i<ien ; i++ ) {
586
+ a.push( $.inArray( set[i], order ) );
587
+ }
588
+
589
+ set = a;
590
+ }
591
+
600
592
  this._fnOrderColumns( fnInvertKeyValues( set ) );
601
593
 
602
594
  return this;
603
595
  },
604
596
 
605
597
 
598
+ /**
599
+ * Convert from the original column index, to the original
600
+ *
601
+ * @param {int|array} idx Index(es) to convert
602
+ * @param {string} dir Transpose direction - `fromOriginal` / `toCurrent`
603
+ * or `'toOriginal` / `fromCurrent`
604
+ * @return {int|array} Converted values
605
+ */
606
+ fnTranspose: function ( idx, dir )
607
+ {
608
+ if ( ! dir ) {
609
+ dir = 'toCurrent';
610
+ }
611
+
612
+ var order = this.fnOrder();
613
+ var columns = this.s.dt.aoColumns;
614
+
615
+ if ( dir === 'toCurrent' ) {
616
+ // Given an original index, want the current
617
+ return ! $.isArray( idx ) ?
618
+ $.inArray( idx, order ) :
619
+ $.map( idx, function ( index ) {
620
+ return $.inArray( index, order );
621
+ } );
622
+ }
623
+ else {
624
+ // Given a current index, want the original
625
+ return ! $.isArray( idx ) ?
626
+ columns[idx]._ColReorder_iOrigCol :
627
+ $.map( idx, function ( index ) {
628
+ return columns[index]._ColReorder_iOrigCol;
629
+ } );
630
+ }
631
+ },
632
+
633
+
606
634
  /* * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * *
607
635
  * Private methods (they are of course public in JS, but recommended as private)
608
636
  * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * */
@@ -617,6 +645,7 @@ ColReorder.prototype = {
617
645
  {
618
646
  var that = this;
619
647
  var iLen = this.s.dt.aoColumns.length;
648
+ var table = this.s.dt.nTable;
620
649
  var i;
621
650
 
622
651
  /* Columns discounted from reordering - counting left to right */
@@ -625,6 +654,11 @@ ColReorder.prototype = {
625
654
  this.s.fixed = this.s.init.iFixedColumns;
626
655
  }
627
656
 
657
+ if ( this.s.init.iFixedColumnsLeft )
658
+ {
659
+ this.s.fixed = this.s.init.iFixedColumnsLeft;
660
+ }
661
+
628
662
  /* Columns discounted from reordering - counting right to left */
629
663
  this.s.fixedRight = this.s.init.iFixedColumnsRight ?
630
664
  this.s.init.iFixedColumnsRight :
@@ -676,16 +710,13 @@ ColReorder.prototype = {
676
710
  if ( !that.s.dt._bInitComplete )
677
711
  {
678
712
  var bDone = false;
679
- this.s.dt.aoDrawCallback.push( {
680
- "fn": function () {
681
- if ( !that.s.dt._bInitComplete && !bDone )
682
- {
683
- bDone = true;
684
- var resort = fnInvertKeyValues( aiOrder );
685
- that._fnOrderColumns.call( that, resort );
686
- }
687
- },
688
- "sName": "ColReorder_Pre"
713
+ $(table).on( 'draw.dt.colReorder', function () {
714
+ if ( !that.s.dt._bInitComplete && !bDone )
715
+ {
716
+ bDone = true;
717
+ var resort = fnInvertKeyValues( aiOrder );
718
+ that._fnOrderColumns.call( that, resort );
719
+ }
689
720
  } );
690
721
  }
691
722
  else
@@ -697,6 +728,19 @@ ColReorder.prototype = {
697
728
  else {
698
729
  this._fnSetColumnIndexes();
699
730
  }
731
+
732
+ // Destroy clean up
733
+ $(table).on( 'destroy.dt.colReorder', function () {
734
+ $(table).off( 'destroy.dt.colReorder draw.dt.colReorder' );
735
+ $(that.s.dt.nTHead).find( '*' ).off( '.ColReorder' );
736
+
737
+ $.each( that.s.dt.aoColumns, function (i, column) {
738
+ $(column.nTh).removeAttr('data-column-index');
739
+ } );
740
+
741
+ that.s.dt._colReorder = null;
742
+ that.s = null;
743
+ } );
700
744
  },
701
745
 
702
746
 
@@ -709,6 +753,8 @@ ColReorder.prototype = {
709
753
  */
710
754
  "_fnOrderColumns": function ( a )
711
755
  {
756
+ var changed = false;
757
+
712
758
  if ( a.length != this.s.dt.aoColumns.length )
713
759
  {
714
760
  this.s.dt.oInstance.oApi._fnLog( this.s.dt, 1, "ColReorder - array reorder does not "+
@@ -725,10 +771,19 @@ ColReorder.prototype = {
725
771
  fnArraySwitch( a, currIndex, i );
726
772
 
727
773
  /* Do the column reorder in the table */
728
- this.s.dt.oInstance.fnColReorder( currIndex, i );
774
+ this.s.dt.oInstance.fnColReorder( currIndex, i, true );
775
+
776
+ changed = true;
729
777
  }
730
778
  }
731
779
 
780
+ this._fnSetColumnIndexes();
781
+
782
+ // Has anything actually changed? If not, then nothing else to do
783
+ if ( ! changed ) {
784
+ return;
785
+ }
786
+
732
787
  /* When scrolling we need to recalculate the column sizes to allow for the shift */
733
788
  if ( this.s.dt.oScroll.sX !== "" || this.s.dt.oScroll.sY !== "" )
734
789
  {
@@ -737,8 +792,6 @@ ColReorder.prototype = {
737
792
 
738
793
  /* Save the state */
739
794
  this.s.dt.oInstance.oApi._fnSaveState( this.s.dt );
740
-
741
- this._fnSetColumnIndexes();
742
795
 
743
796
  if ( this.s.reorderCallback !== null )
744
797
  {
@@ -930,7 +983,7 @@ ColReorder.prototype = {
930
983
 
931
984
  // Perform reordering if realtime updating is on and the column has moved
932
985
  if ( this.s.init.bRealtime && lastToIndex !== this.s.mouse.toIndex ) {
933
- this.s.dt.oInstance.fnColReorder( this.s.mouse.fromIndex, this.s.mouse.toIndex );
986
+ this.s.dt.oInstance.fnColReorder( this.s.mouse.fromIndex, this.s.mouse.toIndex, false );
934
987
  this.s.mouse.fromIndex = this.s.mouse.toIndex;
935
988
  this._fnRegions();
936
989
  }
@@ -959,7 +1012,7 @@ ColReorder.prototype = {
959
1012
  this.dom.pointer = null;
960
1013
 
961
1014
  /* Actually do the reorder */
962
- this.s.dt.oInstance.fnColReorder( this.s.mouse.fromIndex, this.s.mouse.toIndex );
1015
+ this.s.dt.oInstance.fnColReorder( this.s.mouse.fromIndex, this.s.mouse.toIndex, true );
963
1016
  this._fnSetColumnIndexes();
964
1017
 
965
1018
  /* When scrolling we need to recalculate the column sizes to allow for the shift */
@@ -998,10 +1051,12 @@ ColReorder.prototype = {
998
1051
  } );
999
1052
 
1000
1053
  var iToPoint = 0;
1054
+ var total = $(aoColumns[0].nTh).offset().left; // Offset of the first column
1055
+
1001
1056
  for ( var i=0, iLen=aoColumns.length ; i<iLen ; i++ )
1002
1057
  {
1003
1058
  /* For the column / header in question, we want it's position to remain the same if the
1004
- * position is just to it's immediate left or right, so we only incremement the counter for
1059
+ * position is just to it's immediate left or right, so we only increment the counter for
1005
1060
  * other columns
1006
1061
  */
1007
1062
  if ( i != this.s.mouse.fromIndex )
@@ -1011,8 +1066,10 @@ ColReorder.prototype = {
1011
1066
 
1012
1067
  if ( aoColumns[i].bVisible )
1013
1068
  {
1069
+ total += $(aoColumns[i].nTh).outerWidth();
1070
+
1014
1071
  this.s.aoTargets.push( {
1015
- "x": $(aoColumns[i].nTh).offset().left + $(aoColumns[i].nTh).outerWidth(),
1072
+ "x": total,
1016
1073
  "to": iToPoint
1017
1074
  } );
1018
1075
  }
@@ -1084,35 +1141,6 @@ ColReorder.prototype = {
1084
1141
  .appendTo( 'body' );
1085
1142
  },
1086
1143
 
1087
- /**
1088
- * Clean up ColReorder memory references and event handlers
1089
- * @method _fnDestroy
1090
- * @returns void
1091
- * @private
1092
- */
1093
- "_fnDestroy": function ()
1094
- {
1095
- var i, iLen;
1096
-
1097
- for ( i=0, iLen=this.s.dt.aoDrawCallback.length ; i<iLen ; i++ )
1098
- {
1099
- if ( this.s.dt.aoDrawCallback[i].sName === 'ColReorder_Pre' )
1100
- {
1101
- this.s.dt.aoDrawCallback.splice( i, 1 );
1102
- break;
1103
- }
1104
- }
1105
-
1106
- $(this.s.dt.nTHead).find( '*' ).off( '.ColReorder' );
1107
-
1108
- $.each( this.s.dt.aoColumns, function (i, column) {
1109
- $(column.nTh).removeAttr('data-column-index');
1110
- } );
1111
-
1112
- this.s.dt._colReorder = null;
1113
- this.s = null;
1114
- },
1115
-
1116
1144
 
1117
1145
  /**
1118
1146
  * Add a data attribute to the column headers, so we know the index of
@@ -1126,7 +1154,7 @@ ColReorder.prototype = {
1126
1154
  $(column.nTh).attr('data-column-index', i);
1127
1155
  } );
1128
1156
  }
1129
- };
1157
+ } );
1130
1158
 
1131
1159
 
1132
1160
 
@@ -1150,22 +1178,6 @@ ColReorder.defaults = {
1150
1178
  * @type array
1151
1179
  * @default null
1152
1180
  * @static
1153
- * @example
1154
- * // Using the `oColReorder` option in the DataTables options object
1155
- * $('#example').dataTable( {
1156
- * "sDom": 'Rlfrtip',
1157
- * "oColReorder": {
1158
- * "aiOrder": [ 4, 3, 2, 1, 0 ]
1159
- * }
1160
- * } );
1161
- *
1162
- * @example
1163
- * // Using `new` constructor
1164
- * $('#example').dataTable()
1165
- *
1166
- * new $.fn.dataTable.ColReorder( '#example', {
1167
- * "aiOrder": [ 4, 3, 2, 1, 0 ]
1168
- * } );
1169
1181
  */
1170
1182
  aiOrder: null,
1171
1183
 
@@ -1178,24 +1190,8 @@ ColReorder.defaults = {
1178
1190
  * @type boolean
1179
1191
  * @default false
1180
1192
  * @static
1181
- * @example
1182
- * // Using the `oColReorder` option in the DataTables options object
1183
- * $('#example').dataTable( {
1184
- * "sDom": 'Rlfrtip',
1185
- * "oColReorder": {
1186
- * "bRealtime": true
1187
- * }
1188
- * } );
1189
- *
1190
- * @example
1191
- * // Using `new` constructor
1192
- * $('#example').dataTable()
1193
- *
1194
- * new $.fn.dataTable.ColReorder( '#example', {
1195
- * "bRealtime": true
1196
- * } );
1197
1193
  */
1198
- bRealtime: false,
1194
+ bRealtime: true,
1199
1195
 
1200
1196
  /**
1201
1197
  * Indicate how many columns should be fixed in position (counting from the
@@ -1203,74 +1199,23 @@ ColReorder.defaults = {
1203
1199
  * @type int
1204
1200
  * @default 0
1205
1201
  * @static
1206
- * @example
1207
- * // Using the `oColReorder` option in the DataTables options object
1208
- * $('#example').dataTable( {
1209
- * "sDom": 'Rlfrtip',
1210
- * "oColReorder": {
1211
- * "iFixedColumns": 1
1212
- * }
1213
- * } );
1214
- *
1215
- * @example
1216
- * // Using `new` constructor
1217
- * $('#example').dataTable()
1218
- *
1219
- * new $.fn.dataTable.ColReorder( '#example', {
1220
- * "iFixedColumns": 1
1221
- * } );
1222
1202
  */
1223
- iFixedColumns: 0,
1203
+ iFixedColumnsLeft: 0,
1224
1204
 
1225
1205
  /**
1226
1206
  * As `iFixedColumnsRight` but counting from the right.
1227
1207
  * @type int
1228
1208
  * @default 0
1229
1209
  * @static
1230
- * @example
1231
- * // Using the `oColReorder` option in the DataTables options object
1232
- * $('#example').dataTable( {
1233
- * "sDom": 'Rlfrtip',
1234
- * "oColReorder": {
1235
- * "iFixedColumnsRight": 1
1236
- * }
1237
- * } );
1238
- *
1239
- * @example
1240
- * // Using `new` constructor
1241
- * $('#example').dataTable()
1242
- *
1243
- * new $.fn.dataTable.ColReorder( '#example', {
1244
- * "iFixedColumnsRight": 1
1245
- * } );
1246
1210
  */
1247
1211
  iFixedColumnsRight: 0,
1248
1212
 
1249
1213
  /**
1250
- * Callback function that is fired when columns are reordered
1214
+ * Callback function that is fired when columns are reordered. The `column-
1215
+ * reorder` event is preferred over this callback
1251
1216
  * @type function():void
1252
1217
  * @default null
1253
1218
  * @static
1254
- * @example
1255
- * // Using the `oColReorder` option in the DataTables options object
1256
- * $('#example').dataTable( {
1257
- * "sDom": 'Rlfrtip',
1258
- * "oColReorder": {
1259
- * "fnReorderCallback": function () {
1260
- * alert( 'Columns reordered' );
1261
- * }
1262
- * }
1263
- * } );
1264
- *
1265
- * @example
1266
- * // Using `new` constructor
1267
- * $('#example').dataTable()
1268
- *
1269
- * new $.fn.dataTable.ColReorder( '#example', {
1270
- * "fnReorderCallback": function () {
1271
- * alert( 'Columns reordered' );
1272
- * }
1273
- * } );
1274
1219
  */
1275
1220
  fnReorderCallback: null
1276
1221
  };
@@ -1287,7 +1232,7 @@ ColReorder.defaults = {
1287
1232
  * @type String
1288
1233
  * @default As code
1289
1234
  */
1290
- ColReorder.version = "1.1.3";
1235
+ ColReorder.version = "1.3.0";
1291
1236
 
1292
1237
 
1293
1238
 
@@ -1303,7 +1248,7 @@ $.fn.DataTable.ColReorder = ColReorder;
1303
1248
  // Register a new feature with DataTables
1304
1249
  if ( typeof $.fn.dataTable == "function" &&
1305
1250
  typeof $.fn.dataTableExt.fnVersionCheck == "function" &&
1306
- $.fn.dataTableExt.fnVersionCheck('1.9.3') )
1251
+ $.fn.dataTableExt.fnVersionCheck('1.10.8') )
1307
1252
  {
1308
1253
  $.fn.dataTableExt.aoFeatures.push( {
1309
1254
  "fnInit": function( settings ) {
@@ -1326,47 +1271,55 @@ if ( typeof $.fn.dataTable == "function" &&
1326
1271
  } );
1327
1272
  }
1328
1273
  else {
1329
- alert( "Warning: ColReorder requires DataTables 1.9.3 or greater - www.datatables.net/download");
1274
+ alert( "Warning: ColReorder requires DataTables 1.10.8 or greater - www.datatables.net/download");
1330
1275
  }
1331
1276
 
1332
1277
 
1333
- // API augmentation
1334
- if ( $.fn.dataTable.Api ) {
1335
- $.fn.dataTable.Api.register( 'colReorder.reset()', function () {
1336
- return this.iterator( 'table', function ( ctx ) {
1337
- ctx._colReorder.fnReset();
1338
- } );
1339
- } );
1278
+ // Attach a listener to the document which listens for DataTables initialisation
1279
+ // events so we can automatically initialise
1280
+ $(document).on( 'preInit.dt.colReorder', function (e, settings) {
1281
+ if ( e.namespace !== 'dt' ) {
1282
+ return;
1283
+ }
1340
1284
 
1341
- $.fn.dataTable.Api.register( 'colReorder.order()', function ( set ) {
1342
- if ( set ) {
1343
- return this.iterator( 'table', function ( ctx ) {
1344
- ctx._colReorder.fnOrder( set );
1345
- } );
1285
+ var init = settings.oInit.colReorder;
1286
+ var defaults = DataTable.defaults.colReorder;
1287
+
1288
+ if ( init || defaults ) {
1289
+ var opts = $.extend( {}, init, defaults );
1290
+
1291
+ if ( init !== false ) {
1292
+ new ColReorder( settings, opts );
1346
1293
  }
1294
+ }
1295
+ } );
1296
+
1347
1297
 
1348
- return this.context.length ?
1349
- this.context[0]._colReorder.fnOrder() :
1350
- null;
1298
+ // API augmentation
1299
+ $.fn.dataTable.Api.register( 'colReorder.reset()', function () {
1300
+ return this.iterator( 'table', function ( ctx ) {
1301
+ ctx._colReorder.fnReset();
1351
1302
  } );
1352
- }
1303
+ } );
1353
1304
 
1354
- return ColReorder;
1355
- }; // /factory
1305
+ $.fn.dataTable.Api.register( 'colReorder.order()', function ( set, original ) {
1306
+ if ( set ) {
1307
+ return this.iterator( 'table', function ( ctx ) {
1308
+ ctx._colReorder.fnOrder( set, original );
1309
+ } );
1310
+ }
1356
1311
 
1312
+ return this.context.length ?
1313
+ this.context[0]._colReorder.fnOrder() :
1314
+ null;
1315
+ } );
1357
1316
 
1358
- // Define as an AMD module if possible
1359
- if ( typeof define === 'function' && define.amd ) {
1360
- define( ['jquery', 'datatables'], factory );
1361
- }
1362
- else if ( typeof exports === 'object' ) {
1363
- // Node/CommonJS
1364
- factory( require('jquery'), require('datatables') );
1365
- }
1366
- else if ( jQuery && !jQuery.fn.dataTable.ColReorder ) {
1367
- // Otherwise simply initialise as normal, stopping multiple evaluation
1368
- factory( jQuery, jQuery.fn.dataTable );
1369
- }
1317
+ $.fn.dataTable.Api.register( 'colReorder.transpose()', function ( idx, dir ) {
1318
+ return this.context.length && this.context[0]._colReorder ?
1319
+ this.context[0]._colReorder.fnTranspose( idx, dir ) :
1320
+ idx;
1321
+ } );
1370
1322
 
1371
1323
 
1372
- })(window, document);
1324
+ return ColReorder;
1325
+ }));