datatables.net 2.0.4 → 2.0.6

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.
package/js/dataTables.js CHANGED
@@ -1,11 +1,11 @@
1
- /*! DataTables 2.0.4
1
+ /*! DataTables 2.0.6
2
2
  * © SpryMedia Ltd - datatables.net/license
3
3
  */
4
4
 
5
5
  /**
6
6
  * @summary DataTables
7
7
  * @description Paginate, search and order HTML tables
8
- * @version 2.0.4
8
+ * @version 2.0.6
9
9
  * @author SpryMedia Ltd
10
10
  * @contact www.datatables.net
11
11
  * @copyright SpryMedia Ltd.
@@ -2645,9 +2645,15 @@
2645
2645
  type = 'sort';
2646
2646
  }
2647
2647
 
2648
+ var row = settings.aoData[rowIdx];
2649
+
2650
+ if (! row) {
2651
+ return undefined;
2652
+ }
2653
+
2648
2654
  var draw = settings.iDraw;
2649
2655
  var col = settings.aoColumns[colIdx];
2650
- var rowData = settings.aoData[rowIdx]._aData;
2656
+ var rowData = row._aData;
2651
2657
  var defaultContent = col.sDefaultContent;
2652
2658
  var cellData = col.fnGetData( rowData, type, {
2653
2659
  settings: settings,
@@ -4416,6 +4422,7 @@
4416
4422
  }
4417
4423
 
4418
4424
  var i = 0;
4425
+ var matched = [];
4419
4426
 
4420
4427
  // Search term can be a function, regex or string - if a string we apply our
4421
4428
  // smart filtering regex (assuming the options require that)
@@ -4427,18 +4434,22 @@
4427
4434
  : _fnFilterCreateSearch( input, options );
4428
4435
 
4429
4436
  // Then for each row, does the test pass. If not, lop the row from the array
4430
- while (i < searchRows.length) {
4437
+ for (i=0 ; i<searchRows.length ; i++) {
4431
4438
  var row = settings.aoData[ searchRows[i] ];
4432
4439
  var data = column === undefined
4433
4440
  ? row._sFilterRow
4434
4441
  : row._aFilterData[ column ];
4435
4442
 
4436
- if ( (searchFunc && ! searchFunc(data, row._aData, searchRows[i], column)) || (rpSearch && ! rpSearch.test(data)) ) {
4437
- searchRows.splice(i, 1);
4438
- i--;
4443
+ if ( (searchFunc && searchFunc(data, row._aData, searchRows[i], column)) || (rpSearch && rpSearch.test(data)) ) {
4444
+ matched.push(searchRows[i]);
4439
4445
  }
4446
+ }
4440
4447
 
4441
- i++;
4448
+ // Mutate the searchRows array
4449
+ searchRows.length = matched.length;
4450
+
4451
+ for (i=0 ; i<matched.length ; i++) {
4452
+ searchRows[i] = matched[i];
4442
4453
  }
4443
4454
  }
4444
4455
 
@@ -4806,6 +4817,7 @@
4806
4817
  function _processingHtml ( settings )
4807
4818
  {
4808
4819
  var table = settings.nTable;
4820
+ var scrolling = settings.oScroll.sX !== '' || settings.oScroll.sY !== '';
4809
4821
 
4810
4822
  if ( settings.oFeatures.bProcessing ) {
4811
4823
  var n = $('<div/>', {
@@ -4814,9 +4826,16 @@
4814
4826
  'role': 'status'
4815
4827
  } )
4816
4828
  .html( settings.oLanguage.sProcessing )
4817
- .append('<div><div></div><div></div><div></div><div></div></div>')
4818
- .insertBefore( table );
4819
-
4829
+ .append('<div><div></div><div></div><div></div><div></div></div>');
4830
+
4831
+ // Different positioning depending on if scrolling is enabled or not
4832
+ if (scrolling) {
4833
+ n.prependTo( 'div.dt-scroll', settings.nTableWrapper );
4834
+ }
4835
+ else {
4836
+ n.insertBefore( table );
4837
+ }
4838
+
4820
4839
  $(table).on( 'processing.dt.DT', function (e, s, show) {
4821
4840
  n.css( 'display', show ? 'block' : 'none' );
4822
4841
  } );
@@ -5060,7 +5079,7 @@
5060
5079
  // of the indexes out.
5061
5080
  if (settings.aiDisplay.length) {
5062
5081
  // Get the column sizes from the first row in the table
5063
- var colSizes = table.find('tbody tr').eq(0).find('th, td').map(function (vis) {
5082
+ var colSizes = table.children('tbody > tr').eq(0).children('th, td').map(function (vis) {
5064
5083
  return {
5065
5084
  idx: _fnVisibleToColumnIndex(settings, vis),
5066
5085
  width: $(this).outerWidth()
@@ -5504,6 +5523,10 @@
5504
5523
  * @param {*} settings
5505
5524
  */
5506
5525
  function _fnSortDisplay(settings, display) {
5526
+ if (display.length < 2) {
5527
+ return;
5528
+ }
5529
+
5507
5530
  var master = settings.aiDisplayMaster;
5508
5531
  var masterMap = {};
5509
5532
  var map = {};
@@ -7806,11 +7829,6 @@
7806
7829
  settings.aiDisplayMaster.splice(idx, 1);
7807
7830
  }
7808
7831
 
7809
- idx = settings.aiDisplay.indexOf(row);
7810
- if (idx !== -1) {
7811
- settings.aiDisplay.splice(idx, 1);
7812
- }
7813
-
7814
7832
  // For server-side processing tables - subtract the deleted row from the count
7815
7833
  if ( settings._iRecordsDisplay > 0 ) {
7816
7834
  settings._iRecordsDisplay--;
@@ -7900,9 +7918,15 @@
7900
7918
  _api_register( 'row().node()', function () {
7901
7919
  var ctx = this.context;
7902
7920
 
7903
- return ctx.length && this.length && this[0].length ?
7904
- ctx[0].aoData[ this[0] ].nTr || null :
7905
- null;
7921
+ if (ctx.length && this.length && this[0].length) {
7922
+ var row = ctx[0].aoData[ this[0] ];
7923
+
7924
+ if (row && row.nTr) {
7925
+ return row.nTr;
7926
+ }
7927
+ }
7928
+
7929
+ return null;
7906
7930
  } );
7907
7931
 
7908
7932
 
@@ -7961,8 +7985,9 @@
7961
7985
  if ( state && state.childRows ) {
7962
7986
  api
7963
7987
  .rows( state.childRows.map(function (id) {
7964
- // Escape any `:` characters from the row id, unless previously escaped
7965
- return id.replace(/(?<!\\):/g, '\\:');
7988
+ // Escape any `:` characters from the row id. Accounts for
7989
+ // already escaped characters.
7990
+ return id.replace(/([^:\\]*(?:\\.[^:\\]*)*):/g, "$1\\:");
7966
7991
  }) )
7967
7992
  .every( function () {
7968
7993
  _fnCallbackFire( api.settings()[0], null, 'requestChild', [ this ] )
@@ -9586,7 +9611,7 @@
9586
9611
  * @type string
9587
9612
  * @default Version number
9588
9613
  */
9589
- DataTable.version = "2.0.4";
9614
+ DataTable.version = "2.0.6";
9590
9615
 
9591
9616
  /**
9592
9617
  * Private data store, containing all of the settings objects that are