mirror of
https://github.com/DataTables/DataTables.git
synced 2025-02-18 16:54:14 +01:00
Dev: New: _DT_RowIndex is a private parameter that is attached to all TR elements in the table now. This allows fast reverse mapping from the row index to the aoData entry (typically this will be used for getting _aData). Before we would have to loop over all rows which could be very slow, but this reverse mapping allows several new options for optimisations and future enhancements.
Dev: Updated: All fnRender calls have been put into a single point - code reuse...
This commit is contained in:
parent
e7bba4bcbe
commit
4812d1d35b
86
media/js/jquery.dataTables.js
vendored
86
media/js/jquery.dataTables.js
vendored
@ -21,7 +21,7 @@
|
|||||||
*/
|
*/
|
||||||
|
|
||||||
/*jslint evil: true, undef: true, browser: true */
|
/*jslint evil: true, undef: true, browser: true */
|
||||||
/*globals $, jQuery,_fnExternApiFunc,_fnInitialise,_fnInitComplete,_fnLanguageCompat,_fnAddColumn,_fnColumnOptions,_fnAddData,_fnCreateTr,_fnGatherData,_fnBuildHead,_fnDrawHead,_fnDraw,_fnReDraw,_fnAjaxUpdate,_fnAjaxParameters,_fnAjaxUpdateDraw,_fnServerParams,_fnAddOptionsHtml,_fnFeatureHtmlTable,_fnScrollDraw,_fnAdjustColumnSizing,_fnFeatureHtmlFilter,_fnFilterComplete,_fnFilterCustom,_fnFilterColumn,_fnFilter,_fnBuildSearchArray,_fnBuildSearchRow,_fnFilterCreateSearch,_fnDataToSearch,_fnSort,_fnSortAttachListener,_fnSortingClasses,_fnFeatureHtmlPaginate,_fnPageChange,_fnFeatureHtmlInfo,_fnUpdateInfo,_fnFeatureHtmlLength,_fnFeatureHtmlProcessing,_fnProcessingDisplay,_fnVisibleToColumnIndex,_fnColumnIndexToVisible,_fnNodeToDataIndex,_fnVisbleColumns,_fnCalculateEnd,_fnConvertToWidth,_fnCalculateColumnWidths,_fnScrollingWidthAdjust,_fnGetWidestNode,_fnGetMaxLenString,_fnStringToCss,_fnDetectType,_fnSettingsFromNode,_fnGetDataMaster,_fnGetTrNodes,_fnGetTdNodes,_fnEscapeRegex,_fnDeleteIndex,_fnReOrderIndex,_fnColumnOrdering,_fnLog,_fnClearTable,_fnSaveState,_fnLoadState,_fnCreateCookie,_fnReadCookie,_fnDetectHeader,_fnGetUniqueThs,_fnScrollBarWidth,_fnApplyToChildren,_fnMap,_fnGetRowData,_fnGetCellData,_fnSetCellData,_fnGetObjectDataFn,_fnSetObjectDataFn,_fnApplyColumnDefs,_fnBindAction,_fnCallbackReg,_fnCallbackFire,_fnJsonString*/
|
/*globals $, jQuery,_fnExternApiFunc,_fnInitialise,_fnInitComplete,_fnLanguageCompat,_fnAddColumn,_fnColumnOptions,_fnAddData,_fnCreateTr,_fnGatherData,_fnBuildHead,_fnDrawHead,_fnDraw,_fnReDraw,_fnAjaxUpdate,_fnAjaxParameters,_fnAjaxUpdateDraw,_fnServerParams,_fnAddOptionsHtml,_fnFeatureHtmlTable,_fnScrollDraw,_fnAdjustColumnSizing,_fnFeatureHtmlFilter,_fnFilterComplete,_fnFilterCustom,_fnFilterColumn,_fnFilter,_fnBuildSearchArray,_fnBuildSearchRow,_fnFilterCreateSearch,_fnDataToSearch,_fnSort,_fnSortAttachListener,_fnSortingClasses,_fnFeatureHtmlPaginate,_fnPageChange,_fnFeatureHtmlInfo,_fnUpdateInfo,_fnFeatureHtmlLength,_fnFeatureHtmlProcessing,_fnProcessingDisplay,_fnVisibleToColumnIndex,_fnColumnIndexToVisible,_fnNodeToDataIndex,_fnVisbleColumns,_fnCalculateEnd,_fnConvertToWidth,_fnCalculateColumnWidths,_fnScrollingWidthAdjust,_fnGetWidestNode,_fnGetMaxLenString,_fnStringToCss,_fnDetectType,_fnSettingsFromNode,_fnGetDataMaster,_fnGetTrNodes,_fnGetTdNodes,_fnEscapeRegex,_fnDeleteIndex,_fnReOrderIndex,_fnColumnOrdering,_fnLog,_fnClearTable,_fnSaveState,_fnLoadState,_fnCreateCookie,_fnReadCookie,_fnDetectHeader,_fnGetUniqueThs,_fnScrollBarWidth,_fnApplyToChildren,_fnMap,_fnGetRowData,_fnGetCellData,_fnSetCellData,_fnGetObjectDataFn,_fnSetObjectDataFn,_fnApplyColumnDefs,_fnBindAction,_fnCallbackReg,_fnCallbackFire,_fnJsonString,_fnRender*/
|
||||||
|
|
||||||
(/** @lends <global> */function($, window, document, undefined) {
|
(/** @lends <global> */function($, window, document, undefined) {
|
||||||
/**
|
/**
|
||||||
@ -459,13 +459,7 @@
|
|||||||
/* Use rendered data for filtering/sorting */
|
/* Use rendered data for filtering/sorting */
|
||||||
if ( typeof oCol.fnRender === 'function' && oCol.bUseRendered && oCol.mDataProp !== null )
|
if ( typeof oCol.fnRender === 'function' && oCol.bUseRendered && oCol.mDataProp !== null )
|
||||||
{
|
{
|
||||||
_fnSetCellData( oSettings, iRow, i, oCol.fnRender( {
|
_fnSetCellData( oSettings, iRow, i, _fnRender(oSettings, iRow, i) );
|
||||||
"iDataRow": iRow,
|
|
||||||
"iDataColumn": i,
|
|
||||||
"aData": oData._aData,
|
|
||||||
"oSettings": oSettings,
|
|
||||||
"mDataProp": oCol.mDataProp
|
|
||||||
}, _fnGetCellData(oSettings, iRow, i, 'display') ) );
|
|
||||||
}
|
}
|
||||||
|
|
||||||
/* See if we should auto-detect the column type */
|
/* See if we should auto-detect the column type */
|
||||||
@ -527,6 +521,7 @@
|
|||||||
if ( nTrs[i].nodeName.toUpperCase() == "TR" )
|
if ( nTrs[i].nodeName.toUpperCase() == "TR" )
|
||||||
{
|
{
|
||||||
iThisIndex = oSettings.aoData.length;
|
iThisIndex = oSettings.aoData.length;
|
||||||
|
nTrs[i]._DT_RowIndex = iThisIndex;
|
||||||
oSettings.aoData.push( $.extend( true, {}, DataTable.models.oRow, {
|
oSettings.aoData.push( $.extend( true, {}, DataTable.models.oRow, {
|
||||||
"nTr": nTrs[i]
|
"nTr": nTrs[i]
|
||||||
} ) );
|
} ) );
|
||||||
@ -616,13 +611,7 @@
|
|||||||
/* Rendering */
|
/* Rendering */
|
||||||
if ( bRender )
|
if ( bRender )
|
||||||
{
|
{
|
||||||
sRendered = oCol.fnRender( {
|
sRendered = _fnRender( oSettings, iRow, iColumn );
|
||||||
"iDataRow": iRow,
|
|
||||||
"iDataColumn": iColumn,
|
|
||||||
"aData": oData._aData,
|
|
||||||
"oSettings": oSettings,
|
|
||||||
"mDataProp": oCol.mDataProp
|
|
||||||
}, _fnGetCellData(oSettings, iRow, iColumn, 'display') );
|
|
||||||
nCell.innerHTML = sRendered;
|
nCell.innerHTML = sRendered;
|
||||||
if ( oCol.bUseRendered )
|
if ( oCol.bUseRendered )
|
||||||
{
|
{
|
||||||
@ -968,6 +957,28 @@
|
|||||||
}
|
}
|
||||||
|
|
||||||
|
|
||||||
|
/**
|
||||||
|
* Call the developer defined fnRender function for a given cell (row/column) with
|
||||||
|
* the required parameters and return the result.
|
||||||
|
* @param {object} oSettings dataTables settings object
|
||||||
|
* @param {int} iRow aoData index for the row
|
||||||
|
* @param {int} iCol aoColumns index for the column
|
||||||
|
* @returns {*} Return of the developer's fnRender function
|
||||||
|
* @memberof DataTable#oApi
|
||||||
|
*/
|
||||||
|
function _fnRender( oSettings, iRow, iCol )
|
||||||
|
{
|
||||||
|
var oCol = oSettings.aoColumns[iCol];
|
||||||
|
|
||||||
|
return oCol.fnRender( {
|
||||||
|
"iDataRow": iRow,
|
||||||
|
"iDataColumn": iCol,
|
||||||
|
"oSettings": oSettings,
|
||||||
|
"aData": oSettings.aoData[iRow]._aData,
|
||||||
|
"mDataProp": oCol.mDataProp
|
||||||
|
}, _fnGetCellData(oSettings, iRow, iCol, 'display') );
|
||||||
|
}
|
||||||
|
|
||||||
|
|
||||||
/**
|
/**
|
||||||
* Create a new TR element (and it's TD children) for a row
|
* Create a new TR element (and it's TD children) for a row
|
||||||
@ -984,6 +995,11 @@
|
|||||||
{
|
{
|
||||||
oData.nTr = document.createElement('tr');
|
oData.nTr = document.createElement('tr');
|
||||||
|
|
||||||
|
/* Use a private property on the node to allow reserve mapping from the node
|
||||||
|
* to the aoData array for fast look up
|
||||||
|
*/
|
||||||
|
oData.nTr._DT_RowIndex = iRow;
|
||||||
|
|
||||||
/* Special parameters can be given by the data source to be used on the row */
|
/* Special parameters can be given by the data source to be used on the row */
|
||||||
if ( oData._aData.DT_RowId )
|
if ( oData._aData.DT_RowId )
|
||||||
{
|
{
|
||||||
@ -1004,20 +1020,9 @@
|
|||||||
/* Render if needed - if bUseRendered is true then we already have the rendered
|
/* Render if needed - if bUseRendered is true then we already have the rendered
|
||||||
* value in the data source - so can just use that
|
* value in the data source - so can just use that
|
||||||
*/
|
*/
|
||||||
if ( typeof oCol.fnRender === 'function' && (!oCol.bUseRendered || oCol.mDataProp === null) )
|
nTd.innerHTML = (typeof oCol.fnRender === 'function' && (!oCol.bUseRendered || oCol.mDataProp === null)) ?
|
||||||
{
|
_fnRender( oSettings, iRow, i ) :
|
||||||
nTd.innerHTML = oCol.fnRender( {
|
_fnGetCellData( oSettings, iRow, i, 'display' );
|
||||||
"iDataRow": iRow,
|
|
||||||
"iDataColumn": i,
|
|
||||||
"aData": oData._aData,
|
|
||||||
"oSettings": oSettings,
|
|
||||||
"mDataProp": oCol.mDataProp
|
|
||||||
}, _fnGetCellData(oSettings, iRow, i, 'display') );
|
|
||||||
}
|
|
||||||
else
|
|
||||||
{
|
|
||||||
nTd.innerHTML = _fnGetCellData( oSettings, iRow, i, 'display' );
|
|
||||||
}
|
|
||||||
|
|
||||||
/* Add user defined class */
|
/* Add user defined class */
|
||||||
if ( oCol.sClass !== null )
|
if ( oCol.sClass !== null )
|
||||||
@ -5056,13 +5061,22 @@
|
|||||||
{
|
{
|
||||||
/* Find settings from table node */
|
/* Find settings from table node */
|
||||||
var oSettings = _fnSettingsFromNode( this[DataTable.ext.iApiIndex] );
|
var oSettings = _fnSettingsFromNode( this[DataTable.ext.iApiIndex] );
|
||||||
var i, iAODataIndex;
|
var i, iLen, iAODataIndex;
|
||||||
|
|
||||||
iAODataIndex = (typeof mTarget === 'object') ?
|
iAODataIndex = (typeof mTarget === 'object') ?
|
||||||
_fnNodeToDataIndex(oSettings, mTarget) : mTarget;
|
_fnNodeToDataIndex(oSettings, mTarget) : mTarget;
|
||||||
|
|
||||||
/* Return the data array from this row */
|
/* Return the data array from this row */
|
||||||
var oData = oSettings.aoData.splice( iAODataIndex, 1 );
|
var oData = oSettings.aoData.splice( iAODataIndex, 1 );
|
||||||
|
|
||||||
|
/* Update the _DT_RowIndex parameter */
|
||||||
|
for ( i=0, iLen=oSettings.aoData.length ; i<iLen ; i++ )
|
||||||
|
{
|
||||||
|
if ( oSettings.aoData[i].nTr !== null )
|
||||||
|
{
|
||||||
|
oSettings.aoData[i].nTr._DT_RowIndex = i;
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
/* Remove the target row from the search array */
|
/* Remove the target row from the search array */
|
||||||
var iDisplayIndex = $.inArray( iAODataIndex, oSettings.aiDisplay );
|
var iDisplayIndex = $.inArray( iAODataIndex, oSettings.aiDisplay );
|
||||||
@ -5838,14 +5852,7 @@
|
|||||||
var oCol = oSettings.aoColumns[iColumn];
|
var oCol = oSettings.aoColumns[iColumn];
|
||||||
if ( oCol.fnRender !== null )
|
if ( oCol.fnRender !== null )
|
||||||
{
|
{
|
||||||
sDisplay = oCol.fnRender( {
|
sDisplay = _fnRender( oSettings, iRow, iColumn );
|
||||||
"iDataRow": iRow,
|
|
||||||
"iDataColumn": iColumn,
|
|
||||||
"aData": oSettings.aoData[iRow]._aData,
|
|
||||||
"oSettings": oSettings,
|
|
||||||
"mDataProp": oCol.mDataProp
|
|
||||||
}, _fnGetCellData(oSettings, iRow, iColumn, 'display') );
|
|
||||||
|
|
||||||
if ( oCol.bUseRendered )
|
if ( oCol.bUseRendered )
|
||||||
{
|
{
|
||||||
_fnSetCellData( oSettings, iRow, iColumn, sDisplay );
|
_fnSetCellData( oSettings, iRow, iColumn, sDisplay );
|
||||||
@ -6010,7 +6017,8 @@
|
|||||||
"_fnExtend": _fnExtend,
|
"_fnExtend": _fnExtend,
|
||||||
"_fnCallbackReg": _fnCallbackReg,
|
"_fnCallbackReg": _fnCallbackReg,
|
||||||
"_fnCallbackFire": _fnCallbackFire,
|
"_fnCallbackFire": _fnCallbackFire,
|
||||||
"_fnJsonString": _fnJsonString
|
"_fnJsonString": _fnJsonString,
|
||||||
|
"_fnRender": _fnRender
|
||||||
};
|
};
|
||||||
|
|
||||||
$.extend( DataTable.ext.oApi, this.oApi );
|
$.extend( DataTable.ext.oApi, this.oApi );
|
||||||
|
@ -21,7 +21,7 @@
|
|||||||
*/
|
*/
|
||||||
|
|
||||||
/*jslint evil: true, undef: true, browser: true */
|
/*jslint evil: true, undef: true, browser: true */
|
||||||
/*globals $, jQuery,_fnExternApiFunc,_fnInitialise,_fnInitComplete,_fnLanguageCompat,_fnAddColumn,_fnColumnOptions,_fnAddData,_fnCreateTr,_fnGatherData,_fnBuildHead,_fnDrawHead,_fnDraw,_fnReDraw,_fnAjaxUpdate,_fnAjaxParameters,_fnAjaxUpdateDraw,_fnServerParams,_fnAddOptionsHtml,_fnFeatureHtmlTable,_fnScrollDraw,_fnAdjustColumnSizing,_fnFeatureHtmlFilter,_fnFilterComplete,_fnFilterCustom,_fnFilterColumn,_fnFilter,_fnBuildSearchArray,_fnBuildSearchRow,_fnFilterCreateSearch,_fnDataToSearch,_fnSort,_fnSortAttachListener,_fnSortingClasses,_fnFeatureHtmlPaginate,_fnPageChange,_fnFeatureHtmlInfo,_fnUpdateInfo,_fnFeatureHtmlLength,_fnFeatureHtmlProcessing,_fnProcessingDisplay,_fnVisibleToColumnIndex,_fnColumnIndexToVisible,_fnNodeToDataIndex,_fnVisbleColumns,_fnCalculateEnd,_fnConvertToWidth,_fnCalculateColumnWidths,_fnScrollingWidthAdjust,_fnGetWidestNode,_fnGetMaxLenString,_fnStringToCss,_fnDetectType,_fnSettingsFromNode,_fnGetDataMaster,_fnGetTrNodes,_fnGetTdNodes,_fnEscapeRegex,_fnDeleteIndex,_fnReOrderIndex,_fnColumnOrdering,_fnLog,_fnClearTable,_fnSaveState,_fnLoadState,_fnCreateCookie,_fnReadCookie,_fnDetectHeader,_fnGetUniqueThs,_fnScrollBarWidth,_fnApplyToChildren,_fnMap,_fnGetRowData,_fnGetCellData,_fnSetCellData,_fnGetObjectDataFn,_fnSetObjectDataFn,_fnApplyColumnDefs,_fnBindAction,_fnCallbackReg,_fnCallbackFire,_fnJsonString*/
|
/*globals $, jQuery,_fnExternApiFunc,_fnInitialise,_fnInitComplete,_fnLanguageCompat,_fnAddColumn,_fnColumnOptions,_fnAddData,_fnCreateTr,_fnGatherData,_fnBuildHead,_fnDrawHead,_fnDraw,_fnReDraw,_fnAjaxUpdate,_fnAjaxParameters,_fnAjaxUpdateDraw,_fnServerParams,_fnAddOptionsHtml,_fnFeatureHtmlTable,_fnScrollDraw,_fnAdjustColumnSizing,_fnFeatureHtmlFilter,_fnFilterComplete,_fnFilterCustom,_fnFilterColumn,_fnFilter,_fnBuildSearchArray,_fnBuildSearchRow,_fnFilterCreateSearch,_fnDataToSearch,_fnSort,_fnSortAttachListener,_fnSortingClasses,_fnFeatureHtmlPaginate,_fnPageChange,_fnFeatureHtmlInfo,_fnUpdateInfo,_fnFeatureHtmlLength,_fnFeatureHtmlProcessing,_fnProcessingDisplay,_fnVisibleToColumnIndex,_fnColumnIndexToVisible,_fnNodeToDataIndex,_fnVisbleColumns,_fnCalculateEnd,_fnConvertToWidth,_fnCalculateColumnWidths,_fnScrollingWidthAdjust,_fnGetWidestNode,_fnGetMaxLenString,_fnStringToCss,_fnDetectType,_fnSettingsFromNode,_fnGetDataMaster,_fnGetTrNodes,_fnGetTdNodes,_fnEscapeRegex,_fnDeleteIndex,_fnReOrderIndex,_fnColumnOrdering,_fnLog,_fnClearTable,_fnSaveState,_fnLoadState,_fnCreateCookie,_fnReadCookie,_fnDetectHeader,_fnGetUniqueThs,_fnScrollBarWidth,_fnApplyToChildren,_fnMap,_fnGetRowData,_fnGetCellData,_fnSetCellData,_fnGetObjectDataFn,_fnSetObjectDataFn,_fnApplyColumnDefs,_fnBindAction,_fnCallbackReg,_fnCallbackFire,_fnJsonString,_fnRender*/
|
||||||
|
|
||||||
(/** @lends <global> */function($, window, document, undefined) {
|
(/** @lends <global> */function($, window, document, undefined) {
|
||||||
/**
|
/**
|
||||||
|
@ -110,7 +110,8 @@ this.oApi = {
|
|||||||
"_fnExtend": _fnExtend,
|
"_fnExtend": _fnExtend,
|
||||||
"_fnCallbackReg": _fnCallbackReg,
|
"_fnCallbackReg": _fnCallbackReg,
|
||||||
"_fnCallbackFire": _fnCallbackFire,
|
"_fnCallbackFire": _fnCallbackFire,
|
||||||
"_fnJsonString": _fnJsonString
|
"_fnJsonString": _fnJsonString,
|
||||||
|
"_fnRender": _fnRender
|
||||||
};
|
};
|
||||||
|
|
||||||
$.extend( DataTable.ext.oApi, this.oApi );
|
$.extend( DataTable.ext.oApi, this.oApi );
|
||||||
|
@ -315,13 +315,22 @@ this.fnDeleteRow = function( mTarget, fnCallBack, bRedraw )
|
|||||||
{
|
{
|
||||||
/* Find settings from table node */
|
/* Find settings from table node */
|
||||||
var oSettings = _fnSettingsFromNode( this[DataTable.ext.iApiIndex] );
|
var oSettings = _fnSettingsFromNode( this[DataTable.ext.iApiIndex] );
|
||||||
var i, iAODataIndex;
|
var i, iLen, iAODataIndex;
|
||||||
|
|
||||||
iAODataIndex = (typeof mTarget === 'object') ?
|
iAODataIndex = (typeof mTarget === 'object') ?
|
||||||
_fnNodeToDataIndex(oSettings, mTarget) : mTarget;
|
_fnNodeToDataIndex(oSettings, mTarget) : mTarget;
|
||||||
|
|
||||||
/* Return the data array from this row */
|
/* Return the data array from this row */
|
||||||
var oData = oSettings.aoData.splice( iAODataIndex, 1 );
|
var oData = oSettings.aoData.splice( iAODataIndex, 1 );
|
||||||
|
|
||||||
|
/* Update the _DT_RowIndex parameter */
|
||||||
|
for ( i=0, iLen=oSettings.aoData.length ; i<iLen ; i++ )
|
||||||
|
{
|
||||||
|
if ( oSettings.aoData[i].nTr !== null )
|
||||||
|
{
|
||||||
|
oSettings.aoData[i].nTr._DT_RowIndex = i;
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
/* Remove the target row from the search array */
|
/* Remove the target row from the search array */
|
||||||
var iDisplayIndex = $.inArray( iAODataIndex, oSettings.aiDisplay );
|
var iDisplayIndex = $.inArray( iAODataIndex, oSettings.aiDisplay );
|
||||||
@ -1097,14 +1106,7 @@ this.fnUpdate = function( mData, mRow, iColumn, bRedraw, bAction )
|
|||||||
var oCol = oSettings.aoColumns[iColumn];
|
var oCol = oSettings.aoColumns[iColumn];
|
||||||
if ( oCol.fnRender !== null )
|
if ( oCol.fnRender !== null )
|
||||||
{
|
{
|
||||||
sDisplay = oCol.fnRender( {
|
sDisplay = _fnRender( oSettings, iRow, iColumn );
|
||||||
"iDataRow": iRow,
|
|
||||||
"iDataColumn": iColumn,
|
|
||||||
"aData": oSettings.aoData[iRow]._aData,
|
|
||||||
"oSettings": oSettings,
|
|
||||||
"mDataProp": oCol.mDataProp
|
|
||||||
}, _fnGetCellData(oSettings, iRow, iColumn, 'display') );
|
|
||||||
|
|
||||||
if ( oCol.bUseRendered )
|
if ( oCol.bUseRendered )
|
||||||
{
|
{
|
||||||
_fnSetCellData( oSettings, iRow, iColumn, sDisplay );
|
_fnSetCellData( oSettings, iRow, iColumn, sDisplay );
|
||||||
|
@ -34,13 +34,7 @@ function _fnAddData ( oSettings, aDataSupplied )
|
|||||||
/* Use rendered data for filtering/sorting */
|
/* Use rendered data for filtering/sorting */
|
||||||
if ( typeof oCol.fnRender === 'function' && oCol.bUseRendered && oCol.mDataProp !== null )
|
if ( typeof oCol.fnRender === 'function' && oCol.bUseRendered && oCol.mDataProp !== null )
|
||||||
{
|
{
|
||||||
_fnSetCellData( oSettings, iRow, i, oCol.fnRender( {
|
_fnSetCellData( oSettings, iRow, i, _fnRender(oSettings, iRow, i) );
|
||||||
"iDataRow": iRow,
|
|
||||||
"iDataColumn": i,
|
|
||||||
"aData": oData._aData,
|
|
||||||
"oSettings": oSettings,
|
|
||||||
"mDataProp": oCol.mDataProp
|
|
||||||
}, _fnGetCellData(oSettings, iRow, i, 'display') ) );
|
|
||||||
}
|
}
|
||||||
|
|
||||||
/* See if we should auto-detect the column type */
|
/* See if we should auto-detect the column type */
|
||||||
@ -102,6 +96,7 @@ function _fnGatherData( oSettings )
|
|||||||
if ( nTrs[i].nodeName.toUpperCase() == "TR" )
|
if ( nTrs[i].nodeName.toUpperCase() == "TR" )
|
||||||
{
|
{
|
||||||
iThisIndex = oSettings.aoData.length;
|
iThisIndex = oSettings.aoData.length;
|
||||||
|
nTrs[i]._DT_RowIndex = iThisIndex;
|
||||||
oSettings.aoData.push( $.extend( true, {}, DataTable.models.oRow, {
|
oSettings.aoData.push( $.extend( true, {}, DataTable.models.oRow, {
|
||||||
"nTr": nTrs[i]
|
"nTr": nTrs[i]
|
||||||
} ) );
|
} ) );
|
||||||
@ -191,13 +186,7 @@ function _fnGatherData( oSettings )
|
|||||||
/* Rendering */
|
/* Rendering */
|
||||||
if ( bRender )
|
if ( bRender )
|
||||||
{
|
{
|
||||||
sRendered = oCol.fnRender( {
|
sRendered = _fnRender( oSettings, iRow, iColumn );
|
||||||
"iDataRow": iRow,
|
|
||||||
"iDataColumn": iColumn,
|
|
||||||
"aData": oData._aData,
|
|
||||||
"oSettings": oSettings,
|
|
||||||
"mDataProp": oCol.mDataProp
|
|
||||||
}, _fnGetCellData(oSettings, iRow, iColumn, 'display') );
|
|
||||||
nCell.innerHTML = sRendered;
|
nCell.innerHTML = sRendered;
|
||||||
if ( oCol.bUseRendered )
|
if ( oCol.bUseRendered )
|
||||||
{
|
{
|
||||||
@ -542,3 +531,25 @@ function _fnDeleteIndex( a, iTarget )
|
|||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
||||||
|
/**
|
||||||
|
* Call the developer defined fnRender function for a given cell (row/column) with
|
||||||
|
* the required parameters and return the result.
|
||||||
|
* @param {object} oSettings dataTables settings object
|
||||||
|
* @param {int} iRow aoData index for the row
|
||||||
|
* @param {int} iCol aoColumns index for the column
|
||||||
|
* @returns {*} Return of the developer's fnRender function
|
||||||
|
* @memberof DataTable#oApi
|
||||||
|
*/
|
||||||
|
function _fnRender( oSettings, iRow, iCol )
|
||||||
|
{
|
||||||
|
var oCol = oSettings.aoColumns[iCol];
|
||||||
|
|
||||||
|
return oCol.fnRender( {
|
||||||
|
"iDataRow": iRow,
|
||||||
|
"iDataColumn": iCol,
|
||||||
|
"oSettings": oSettings,
|
||||||
|
"aData": oSettings.aoData[iRow]._aData,
|
||||||
|
"mDataProp": oCol.mDataProp
|
||||||
|
}, _fnGetCellData(oSettings, iRow, iCol, 'display') );
|
||||||
|
}
|
||||||
|
@ -15,6 +15,11 @@ function _fnCreateTr ( oSettings, iRow )
|
|||||||
{
|
{
|
||||||
oData.nTr = document.createElement('tr');
|
oData.nTr = document.createElement('tr');
|
||||||
|
|
||||||
|
/* Use a private property on the node to allow reserve mapping from the node
|
||||||
|
* to the aoData array for fast look up
|
||||||
|
*/
|
||||||
|
oData.nTr._DT_RowIndex = iRow;
|
||||||
|
|
||||||
/* Special parameters can be given by the data source to be used on the row */
|
/* Special parameters can be given by the data source to be used on the row */
|
||||||
if ( oData._aData.DT_RowId )
|
if ( oData._aData.DT_RowId )
|
||||||
{
|
{
|
||||||
@ -35,20 +40,9 @@ function _fnCreateTr ( oSettings, iRow )
|
|||||||
/* Render if needed - if bUseRendered is true then we already have the rendered
|
/* Render if needed - if bUseRendered is true then we already have the rendered
|
||||||
* value in the data source - so can just use that
|
* value in the data source - so can just use that
|
||||||
*/
|
*/
|
||||||
if ( typeof oCol.fnRender === 'function' && (!oCol.bUseRendered || oCol.mDataProp === null) )
|
nTd.innerHTML = (typeof oCol.fnRender === 'function' && (!oCol.bUseRendered || oCol.mDataProp === null)) ?
|
||||||
{
|
_fnRender( oSettings, iRow, i ) :
|
||||||
nTd.innerHTML = oCol.fnRender( {
|
_fnGetCellData( oSettings, iRow, i, 'display' );
|
||||||
"iDataRow": iRow,
|
|
||||||
"iDataColumn": i,
|
|
||||||
"aData": oData._aData,
|
|
||||||
"oSettings": oSettings,
|
|
||||||
"mDataProp": oCol.mDataProp
|
|
||||||
}, _fnGetCellData(oSettings, iRow, i, 'display') );
|
|
||||||
}
|
|
||||||
else
|
|
||||||
{
|
|
||||||
nTd.innerHTML = _fnGetCellData( oSettings, iRow, i, 'display' );
|
|
||||||
}
|
|
||||||
|
|
||||||
/* Add user defined class */
|
/* Add user defined class */
|
||||||
if ( oCol.sClass !== null )
|
if ( oCol.sClass !== null )
|
||||||
|
Loading…
x
Reference in New Issue
Block a user