Вход Регистрация
Файл: datatables/media/src/core/core.columns.js
Строк: 489
<?php
/**
 * Add a column to the list used for the table with default values
 *  @param {object} oSettings dataTables settings object
 *  @param {node} nTh The th element for this column
 *  @memberof DataTable#oApi
 */
function _fnAddColumnoSettingsnTh )
{
    var 
oDefaults DataTable.defaults.columns;
    var 
iCol oSettings.aoColumns.length;
    var 
oCol = $.extend( {}, DataTable.models.oColumnoDefaults, {
        
"sSortingClass"oSettings.oClasses.sSortable,
        
"sSortingClassJUI"oSettings.oClasses.sSortJUI,
        
"nTh"nTh nTh document.createElement('th'),
        
"sTitle":    oDefaults.sTitle    oDefaults.sTitle    nTh nTh.innerHTML '',
        
"aDataSort"oDefaults.aDataSort oDefaults.aDataSort : [iCol],
        
"mData"oDefaults.mData oDefaults.oDefaults iCol
    
} );
    
oSettings.aoColumns.pushoCol );
    
    
/* Add a column specific filter */
    
if ( oSettings.aoPreSearchColsiCol ] === undefined || oSettings.aoPreSearchColsiCol ] === null )
    {
        
oSettings.aoPreSearchColsiCol ] = $.extend( {}, DataTable.models.oSearch );
    }
    else
    {
        var 
oPre oSettings.aoPreSearchColsiCol ];
        
        
/* Don't require that the user must specify bRegex, bSmart or bCaseInsensitive */
        
if ( oPre.bRegex === undefined )
        {
            
oPre.bRegex true;
        }
        
        if ( 
oPre.bSmart === undefined )
        {
            
oPre.bSmart true;
        }
        
        if ( 
oPre.bCaseInsensitive === undefined )
        {
            
oPre.bCaseInsensitive true;
        }
    }
    
    
/* Use the column options function to initialise classes etc */
    
_fnColumnOptionsoSettingsiColnull );
}


/**
 * Apply options for a column
 *  @param {object} oSettings dataTables settings object
 *  @param {int} iCol column index to consider
 *  @param {object} oOptions object with sType, bVisible and bSearchable etc
 *  @memberof DataTable#oApi
 */
function _fnColumnOptionsoSettingsiColoOptions )
{
    var 
oCol oSettings.aoColumnsiCol ];
    
    
/* User specified column options */
    
if ( oOptions !== undefined && oOptions !== null )
    {
        
/* Backwards compatibility for mDataProp */
        
if ( oOptions.mDataProp && !oOptions.mData )
        {
            
oOptions.mData oOptions.mDataProp;
        }

        if ( 
oOptions.sType !== undefined )
        {
            
oCol.sType oOptions.sType;
            
oCol._bAutoType false;
        }
        
        $.
extendoColoOptions );
        
_fnMapoColoOptions"sWidth""sWidthOrig" );

        
/* iDataSort to be applied (backwards compatibility), but aDataSort will take
         * priority if defined
         */
        
if ( oOptions.iDataSort !== undefined )
        {
            
oCol.aDataSort = [ oOptions.iDataSort ];
        }
        
_fnMapoColoOptions"aDataSort" );
    }

    
/* Cache the data get and set functions for speed */
    
var mRender oCol.mRender _fnGetObjectDataFnoCol.mRender ) : null;
    var 
mData _fnGetObjectDataFnoCol.mData );

    
oCol.fnGetData = function (oDatasSpecific) {
        var 
innerData mDataoDatasSpecific );

        if ( 
oCol.mRender && (sSpecific && sSpecific !== '') )
        {
            return 
mRenderinnerDatasSpecificoData );
        }
        return 
innerData;
    };
    
oCol.fnSetData _fnSetObjectDataFnoCol.mData );
    
    
/* Feature sorting overrides column specific when off */
    
if ( !oSettings.oFeatures.bSort )
    {
        
oCol.bSortable false;
    }
    
    
/* Check that the class assignment is correct for sorting */
    
if ( !oCol.bSortable ||
         ($.
inArray('asc'oCol.asSorting) == -&& $.inArray('desc'oCol.asSorting) == -1) )
    {
        
oCol.sSortingClass oSettings.oClasses.sSortableNone;
        
oCol.sSortingClassJUI "";
    }
    else if ( $.
inArray('asc'oCol.asSorting) == -&& $.inArray('desc'oCol.asSorting) == -)
    {
        
oCol.sSortingClass oSettings.oClasses.sSortable;
        
oCol.sSortingClassJUI oSettings.oClasses.sSortJUI;
    }
    else if ( $.
inArray('asc'oCol.asSorting) != -&& $.inArray('desc'oCol.asSorting) == -)
    {
        
oCol.sSortingClass oSettings.oClasses.sSortableAsc;
        
oCol.sSortingClassJUI oSettings.oClasses.sSortJUIAscAllowed;
    }
    else if ( $.
inArray('asc'oCol.asSorting) == -&& $.inArray('desc'oCol.asSorting) != -)
    {
        
oCol.sSortingClass oSettings.oClasses.sSortableDesc;
        
oCol.sSortingClassJUI oSettings.oClasses.sSortJUIDescAllowed;
    }
}


/**
 * Adjust the table column widths for new data. Note: you would probably want to 
 * do a redraw after calling this function!
 *  @param {object} oSettings dataTables settings object
 *  @memberof DataTable#oApi
 */
function _fnAdjustColumnSizing oSettings )
{
    
/* Not interested in doing column width calculation if auto-width is disabled */
    
if ( oSettings.oFeatures.bAutoWidth === false )
    {
        return 
false;
    }
    
    
_fnCalculateColumnWidthsoSettings );
    for ( var 
i=iLen=oSettings.aoColumns.length i<iLen i++ )
    {
        
oSettings.aoColumns[i].nTh.style.width oSettings.aoColumns[i].sWidth;
    }
}


/**
 * Covert the index of a visible column to the index in the data array (take account
 * of hidden columns)
 *  @param {object} oSettings dataTables settings object
 *  @param {int} iMatch Visible column index to lookup
 *  @returns {int} i the data index
 *  @memberof DataTable#oApi
 */
function _fnVisibleToColumnIndexoSettingsiMatch )
{
    var 
aiVis _fnGetColumnsoSettings'bVisible' );

    return 
typeof aiVis[iMatch] === 'number' ?
        
aiVis[iMatch] :
        
null;
}


/**
 * Covert the index of an index in the data array and convert it to the visible
 *   column index (take account of hidden columns)
 *  @param {int} iMatch Column index to lookup
 *  @param {object} oSettings dataTables settings object
 *  @returns {int} i the data index
 *  @memberof DataTable#oApi
 */
function _fnColumnIndexToVisibleoSettingsiMatch )
{
    var 
aiVis _fnGetColumnsoSettings'bVisible' );
    var 
iPos = $.inArrayiMatchaiVis );

    return 
iPos !== -iPos null;
}


/**
 * Get the number of visible columns
 *  @param {object} oSettings dataTables settings object
 *  @returns {int} i the number of visible columns
 *  @memberof DataTable#oApi
 */
function _fnVisbleColumnsoSettings )
{
    return 
_fnGetColumnsoSettings'bVisible' ).length;
}


/**
 * Get an array of column indexes that match a given property
 *  @param {object} oSettings dataTables settings object
 *  @param {string} sParam Parameter in aoColumns to look for - typically 
 *    bVisible or bSearchable
 *  @returns {array} Array of indexes with matched properties
 *  @memberof DataTable#oApi
 */
function _fnGetColumnsoSettingssParam )
{
    var 
= [];

    $.
mapoSettings.aoColumns, function(vali) {
        if ( 
val[sParam] ) {
            
a.push);
        }
    } );

    return 
a;
}


/**
 * Get the sort type based on an input string
 *  @param {string} sData data we wish to know the type of
 *  @returns {string} type (defaults to 'string' if no type can be detected)
 *  @memberof DataTable#oApi
 */
function _fnDetectTypesData )
{
    var 
aTypes DataTable.ext.aTypes;
    var 
iLen aTypes.length;
    
    for ( var 
i=i<iLen i++ )
    {
        var 
sType aTypes[i]( sData );
        if ( 
sType !== null )
        {
            return 
sType;
        }
    }
    
    return 
'string';
}


/**
 * Figure out how to reorder a display list
 *  @param {object} oSettings dataTables settings object
 *  @returns array {int} aiReturn index list for reordering
 *  @memberof DataTable#oApi
 */
function _fnReOrderIndex oSettingssColumns )
{
    var 
aColumns sColumns.split(',');
    var 
aiReturn = [];
    
    for ( var 
i=0iLen=oSettings.aoColumns.length i<iLen i++ )
    {
        for ( var 
j=j<iLen j++ )
        {
            if ( 
oSettings.aoColumns[i].sName == aColumns[j] )
            {
                
aiReturn.push);
                break;
            }
        }
    }
    
    return 
aiReturn;
}


/**
 * Get the column ordering that DataTables expects
 *  @param {object} oSettings dataTables settings object
 *  @returns {string} comma separated list of names
 *  @memberof DataTable#oApi
 */
function _fnColumnOrdering oSettings )
{
    var 
sNames '';
    for ( var 
i=0iLen=oSettings.aoColumns.length i<iLen i++ )
    {
        
sNames += oSettings.aoColumns[i].sName+',';
    }
    if ( 
sNames.length == iLen )
    {
        return 
"";
    }
    return 
sNames.slice(0, -1);
}


/**
 * Take the column definitions and static columns arrays and calculate how
 * they relate to column indexes. The callback function will then apply the
 * definition found for a column to a suitable configuration object.
 *  @param {object} oSettings dataTables settings object
 *  @param {array} aoColDefs The aoColumnDefs array that is to be applied
 *  @param {array} aoCols The aoColumns array that defines columns individually
 *  @param {function} fn Callback function - takes two parameters, the calculated
 *    column index and the definition for that column.
 *  @memberof DataTable#oApi
 */
function _fnApplyColumnDefsoSettingsaoColDefsaoCols, fn )
{
    var 
iiLenjjLenkkLen;

    
// Column definitions with aTargets
    
if ( aoColDefs )
    {
        
/* Loop over the definitions array - loop in reverse so first instance has priority */
        
for ( i=aoColDefs.length-i>=i-- )
        {
            
/* Each definition can target multiple columns, as it is an array */
            
var aTargets aoColDefs[i].aTargets;
            if ( !$.
isArrayaTargets ) )
            {
                
_fnLogoSettings1'aTargets must be an array of targets, not a '+(typeof aTargets) );
            }

            for ( 
j=0jLen=aTargets.length j<jLen j++ )
            {
                if ( 
typeof aTargets[j] === 'number' && aTargets[j] >= )
                {
                    
/* Add columns that we don't yet know about */
                    
while( oSettings.aoColumns.length <= aTargets[j] )
                    {
                        
_fnAddColumnoSettings );
                    }

                    
/* Integer, basic index */
                    
fn( aTargets[j], aoColDefs[i] );
                }
                else if ( 
typeof aTargets[j] === 'number' && aTargets[j] < )
                {
                    
/* Negative integer, right to left column counting */
                    
fn( oSettings.aoColumns.length+aTargets[j], aoColDefs[i] );
                }
                else if ( 
typeof aTargets[j] === 'string' )
                {
                    
/* Class name matching on TH element */
                    
for ( k=0kLen=oSettings.aoColumns.length k<kLen k++ )
                    {
                        if ( 
aTargets[j] == "_all" ||
                             $(
oSettings.aoColumns[k].nTh).hasClassaTargets[j] ) )
                        {
                            fn( 
kaoColDefs[i] );
                        }
                    }
                }
            }
        }
    }

    
// Statically defined columns array
    
if ( aoCols )
    {
        for ( 
i=0iLen=aoCols.length i<iLen i++ )
        {
            fn( 
iaoCols[i] );
        }
    }
}
?>
Онлайн: 1
Реклама