// DATA_TEMPLATE: js_data oTest.fnStart( "fnFooterCallback" ); $(document).ready( function () { /* Check the default */ var oTable = $('#example').dataTable( { "aaData": gaaData } ); var oSettings = oTable.fnSettings(); var mPass; oTest.fnTest( "Default should be null", null, function () { return oSettings.fnFooterCallback == null; } ); oTest.fnTest( "Five arguments passed", function () { oSession.fnRestore(); mPass = -1; $('#example').dataTable( { "aaData": gaaData, "fnFooterCallback": function ( ) { mPass = arguments.length; } } ); }, function () { return mPass == 5; } ); oTest.fnTest( "fnRowCallback called once per draw", function () { oSession.fnRestore(); mPass = 0; $('#example').dataTable( { "aaData": gaaData, "fnFooterCallback": function ( nFoot, aasData, iStart, iEnd, aiDisplay ) { mPass++; } } ); }, function () { return mPass == 1; } ); oTest.fnTest( "fnRowCallback called on paging (i.e. another draw)", function () { $('#example_next').click(); }, function () { return mPass == 2; } ); oTest.fnTest( "fnRowCallback allows us to alter row information", function () { oSession.fnRestore(); $('#example').dataTable( { "aaData": gaaData, "fnFooterCallback": function ( nFoot, aasData, iStart, iEnd, aiDisplay ) { nFoot.getElementsByTagName('th')[0].innerHTML = "Displaying "+(iEnd-iStart)+" records"; } } ); }, function () { return $('#example tfoot th:eq(0)').html() == "Displaying 10 records"; } ); oTest.fnTest( "Data array has length matching original data", function () { oSession.fnRestore(); mPass = true; $('#example').dataTable( { "aaData": gaaData, "fnFooterCallback": function ( nFoot, aasData, iStart, iEnd, aiDisplay ) { if ( aasData.length != 57 ) { mPass = false; } } } ); }, function () { return mPass; } ); oTest.fnTest( "Data array's column lengths match original data", function () { oSession.fnRestore(); mPass = true; $('#example').dataTable( { "aaData": gaaData, "fnFooterCallback": function ( nFoot, aasData, iStart, iEnd, aiDisplay ) { for ( var i=0, iLen=aasData.length ; i