Вход Регистрация
Файл: datatables/media/src/core/core.ajax.js
Строк: 261
<?php
/**
 * Update the table using an Ajax call
 *  @param {object} oSettings dataTables settings object
 *  @returns {boolean} Block the table drawing or not
 *  @memberof DataTable#oApi
 */
function _fnAjaxUpdateoSettings )
{
    if ( 
oSettings.bAjaxDataGet )
    {
        
oSettings.iDraw++;
        
_fnProcessingDisplayoSettingstrue );
        var 
iColumns oSettings.aoColumns.length;
        var 
aoData _fnAjaxParametersoSettings );
        
_fnServerParamsoSettingsaoData );
        
        
oSettings.fnServerData.calloSettings.oInstanceoSettings.sAjaxSourceaoData,
            function(
json) {
                
_fnAjaxUpdateDrawoSettingsjson );
            }, 
oSettings );
        return 
false;
    }
    else
    {
        return 
true;
    }
}


/**
 * Build up the parameters in an object needed for a server-side processing request
 *  @param {object} oSettings dataTables settings object
 *  @returns {bool} block the table drawing or not
 *  @memberof DataTable#oApi
 */
function _fnAjaxParametersoSettings )
{
    var 
iColumns oSettings.aoColumns.length;
    var 
aoData = [], mDataPropaaSortaDataSort;
    var 
ij;
    
    
aoData.push( { "name""sEcho",          "value"oSettings.iDraw } );
    
aoData.push( { "name""iColumns",       "value"iColumns } );
    
aoData.push( { "name""sColumns",       "value"_fnColumnOrdering(oSettings) } );
    
aoData.push( { "name""iDisplayStart",  "value"oSettings._iDisplayStart } );
    
aoData.push( { "name""iDisplayLength""value"oSettings.oFeatures.bPaginate !== false ?
        
oSettings._iDisplayLength : -} );
        
    for ( 
i=i<iColumns i++ )
    {
      
mDataProp oSettings.aoColumns[i].mData;
        
aoData.push( { "name""mDataProp_"+i"value"typeof(mDataProp)==="function" 'function' mDataProp } );
    }
    
    
/* Filtering */
    
if ( oSettings.oFeatures.bFilter !== false )
    {
        
aoData.push( { "name""sSearch""value"oSettings.oPreviousSearch.sSearch } );
        
aoData.push( { "name""bRegex",  "value"oSettings.oPreviousSearch.bRegex } );
        for ( 
i=i<iColumns i++ )
        {
            
aoData.push( { "name""sSearch_"+i,     "value"oSettings.aoPreSearchCols[i].sSearch } );
            
aoData.push( { "name""bRegex_"+i,      "value"oSettings.aoPreSearchCols[i].bRegex } );
            
aoData.push( { "name""bSearchable_"+i"value"oSettings.aoColumns[i].bSearchable } );
        }
    }
    
    
/* Sorting */
    
if ( oSettings.oFeatures.bSort !== false )
    {
        var 
iCounter 0;

        
aaSort = ( oSettings.aaSortingFixed !== null ) ?
            
oSettings.aaSortingFixed.concatoSettings.aaSorting ) :
            
oSettings.aaSorting.slice();
        
        for ( 
i=i<aaSort.length i++ )
        {
            
aDataSort oSettings.aoColumnsaaSort[i][0] ].aDataSort;
            
            for ( 
j=j<aDataSort.length j++ )
            {
                
aoData.push( { "name""iSortCol_"+iCounter,  "value"aDataSort[j] } );
                
aoData.push( { "name""sSortDir_"+iCounter,  "value"aaSort[i][1] } );
                
iCounter++;
            }
        }
        
aoData.push( { "name""iSortingCols",   "value"iCounter } );
        
        for ( 
i=i<iColumns i++ )
        {
            
aoData.push( { "name""bSortable_"+i,  "value"oSettings.aoColumns[i].bSortable } );
        }
    }
    
    return 
aoData;
}


/**
 * Add Ajax parameters from plug-ins
 *  @param {object} oSettings dataTables settings object
 *  @param array {objects} aoData name/value pairs to send to the server
 *  @memberof DataTable#oApi
 */
function _fnServerParamsoSettingsaoData )
{
    
_fnCallbackFireoSettings'aoServerParams''serverParams', [aoData] );
}


/**
 * Data the data from the server (nuking the old) and redraw the table
 *  @param {object} oSettings dataTables settings object
 *  @param {object} json json data return from the server.
 *  @param {string} json.sEcho Tracking flag for DataTables to match requests
 *  @param {int} json.iTotalRecords Number of records in the data set, not accounting for filtering
 *  @param {int} json.iTotalDisplayRecords Number of records in the data set, accounting for filtering
 *  @param {array} json.aaData The data to display on this page
 *  @param {string} [json.sColumns] Column ordering (sName, comma separated)
 *  @memberof DataTable#oApi
 */
function _fnAjaxUpdateDraw oSettingsjson )
{
    if ( 
json.sEcho !== undefined )
    {
        
/* Protect against old returns over-writing a new one. Possible when you get
         * very fast interaction, and later queries are completed much faster
         */
        
if ( json.sEcho*oSettings.iDraw )
        {
            return;
        }
        else
        {
            
oSettings.iDraw json.sEcho 1;
        }
    }
    
    if ( !
oSettings.oScroll.bInfinite ||
           (
oSettings.oScroll.bInfinite && (oSettings.bSorted || oSettings.bFiltered)) )
    {
        
_fnClearTableoSettings );
    }
    
oSettings._iRecordsTotal parseInt(json.iTotalRecords10);
    
oSettings._iRecordsDisplay parseInt(json.iTotalDisplayRecords10);
    
    
/* Determine if reordering is required */
    
var sOrdering _fnColumnOrdering(oSettings);
    var 
bReOrder = (json.sColumns !== undefined && sOrdering !== "" && json.sColumns != sOrdering );
    var 
aiIndex;
    if ( 
bReOrder )
    {
        
aiIndex _fnReOrderIndexoSettingsjson.sColumns );
    }
    
    var 
aData _fnGetObjectDataFnoSettings.sAjaxDataProp )( json );
    for ( var 
i=0iLen=aData.length i<iLen i++ )
    {
        if ( 
bReOrder )
        {
            
/* If we need to re-order, then create a new array with the correct order and add it */
            
var aDataSorted = [];
            for ( var 
j=0jLen=oSettings.aoColumns.length j<jLen j++ )
            {
                
aDataSorted.pushaData[i][ aiIndex[j] ] );
            }
            
_fnAddDataoSettingsaDataSorted );
        }
        else
        {
            
/* No re-order required, sever got it "right" - just straight add */
            
_fnAddDataoSettingsaData[i] );
        }
    }
    
oSettings.aiDisplay oSettings.aiDisplayMaster.slice();
    
    
oSettings.bAjaxDataGet false;
    
_fnDrawoSettings );
    
oSettings.bAjaxDataGet true;
    
_fnProcessingDisplayoSettingsfalse );
}
?>
Онлайн: 4
Реклама