Advertisement
Guest User

Untitled

a guest
Nov 16th, 2015
102
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
jQuery 3.44 KB | None | 0 0
  1. ( function( window, document, $, undefined ) {
  2.     $( document ).on('init.dt', function(e, settings) {
  3.         var _Api        = new $.fn.dataTable.Api( settings );
  4.        
  5.         var _api_registerPlural = function ( pluralName, singularName, val ) {
  6.             $.fn.dataTable.Api.register( pluralName, val );
  7.  
  8.             $.fn.dataTable.Api.register( singularName, function () {
  9.                 var ret = val.apply( this, arguments );
  10.  
  11.                 if ( ret === this ) {
  12.                     // Returned item is the API instance that was passed in, return it
  13.                     return this;
  14.                 }
  15.                 else if ( ret instanceof _Api ) {
  16.                     // New API instance returned, want the value from the first item
  17.                     // in the returned array for the singular result.
  18.                     return ret.length ?
  19.                         $.isArray( ret[0] ) ?
  20.                             new _Api( ret.context, ret[0] ) : // Array results are 'enhanced'
  21.                             ret[0] :
  22.                         undefined;
  23.                 }
  24.  
  25.                 // Non-API return - just fire it back
  26.                 return ret;
  27.             } );
  28.         };
  29.  
  30.  
  31.         _api_registerPlural( 'rows().remove()', 'row().remove()', function () {
  32.            
  33.             var that = this;
  34.  
  35.             this.iterator( 'row', function ( settings, row, thatIdx ) {
  36.                 var $row = $(_Api.row(thatIdx).node());
  37.                 //var $row = $('#example > tbody > tr:('+thatIdx+')');
  38.                
  39.                 $row.css('background-color', '#ff0000');
  40.                
  41.                 $row.fadeOut( "slow", function() {
  42.                     var data = settings.aoData;
  43.  
  44.                     data.splice( row, 1 );
  45.  
  46.                     // Update the _DT_RowIndex parameter on all rows in the table
  47.                     for ( var i=0, ien=data.length ; i<ien ; i++ ) {
  48.                         if ( data[i].nTr !== null ) {
  49.                             data[i].nTr._DT_RowIndex = i;
  50.                         }
  51.                     }
  52.  
  53.                     // Delete from the display arrays
  54.                     settings.oApi._fnDeleteIndex( settings.aiDisplayMaster, row );
  55.                     settings.oApi._fnDeleteIndex( settings.aiDisplay, row );
  56.                     settings.oApi._fnDeleteIndex( that[ thatIdx ], row, false ); // maintain local indexes
  57.  
  58.                     // Check for an 'overflow' they case for displaying the table
  59.                     settings.oApi._fnLengthOverflow( settings );
  60.                 });
  61.                
  62.                
  63.             } );
  64.  
  65.             this.iterator( 'table', function ( settings ) {
  66.                 for ( var i=0, ien=settings.aoData.length ; i<ien ; i++ ) {
  67.                     settings.aoData[i].idx = i;
  68.                 }
  69.             } );
  70.  
  71.             return this;
  72.         } );
  73.      
  74.       $.fn.dataTable.Api.register( 'row().data()', function ( data ) {
  75.            
  76.             console.log('UPDATING ROW');
  77.             var ctx = this.context;
  78.  
  79.             if ( data === undefined ) {
  80.                 // Get
  81.                 return ctx.length && this.length ?
  82.                     ctx[0].aoData[ this[0] ]._aData :
  83.                     undefined;
  84.             }
  85.  
  86.             // Set
  87.             ctx[0].aoData[ this[0] ]._aData = data;
  88.  
  89.             // Automatically invalidate
  90.             settings.oApi._fnInvalidate( ctx[0], this[0], 'data' );
  91.  
  92.             return this;
  93.         } );
  94.        
  95.     });
  96. })( window, document, jQuery );
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement