jquery-datatables-rails 3.3.0 → 3.4.0

Sign up to get free protection for your applications and to get access to all the features.
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
+ }));