mirror of
https://github.com/DataTables/DataTables.git
synced 2025-02-18 16:54:14 +01:00
Fix: mRender and mData now work in the same way for DOM sourced tables as they do for JS sourced table data. Generally we wouldn't really expect them to be used as much for DOM sourced tables (if you want your table formatted differently, you'd just create the HTML differently!), but it can sometimes be useful to use these options. This also brings mRender to full 'pace' ready to be used in complete preference to fnRender (alongside the other methods for cell rendeirng such an fnCellCreated etc).
This commit is contained in:
parent
898357fc84
commit
555aacfc6d
153
media/js/jquery.dataTables.js
vendored
153
media/js/jquery.dataTables.js
vendored
@ -639,10 +639,16 @@
|
||||
}
|
||||
}
|
||||
|
||||
if ( typeof oCol.mData === 'function' )
|
||||
console.log( oCol.mRender, oCol.mData );
|
||||
if ( oCol.mRender )
|
||||
{
|
||||
nCell.innerHTML = _fnGetCellData( oSettings, iRow, iColumn, 'display' );
|
||||
}
|
||||
else if ( oCol.mData !== iColumn )
|
||||
{
|
||||
console.log( '123' );
|
||||
nCell.innerHTML = _fnGetCellData( oSettings, iRow, iColumn, 'display' );
|
||||
}
|
||||
|
||||
/* Rendering */
|
||||
if ( bRender )
|
||||
@ -2454,7 +2460,6 @@
|
||||
}
|
||||
|
||||
|
||||
|
||||
/**
|
||||
* Generate the node required for the info display
|
||||
* @param {object} oSettings dataTables settings object
|
||||
@ -2505,25 +2510,20 @@
|
||||
iTotal = oSettings.fnRecordsDisplay(),
|
||||
sOut;
|
||||
|
||||
if ( iTotal === 0 && iTotal == iMax )
|
||||
if ( iTotal === 0 )
|
||||
{
|
||||
/* Empty record set */
|
||||
sOut = oLang.sInfoEmpty;
|
||||
}
|
||||
else if ( iTotal === 0 )
|
||||
{
|
||||
/* Empty record set after filtering */
|
||||
sOut = oLang.sInfoEmpty +' '+ oLang.sInfoFiltered;
|
||||
}
|
||||
else if ( iTotal == iMax )
|
||||
{
|
||||
else {
|
||||
/* Normal record set */
|
||||
sOut = oLang.sInfo;
|
||||
}
|
||||
else
|
||||
|
||||
if ( iTotal != iMax )
|
||||
{
|
||||
/* Record set after filtering */
|
||||
sOut = oLang.sInfo +' '+ oLang.sInfoFiltered;
|
||||
sOut += ' ' + oLang.sInfoFiltered;
|
||||
}
|
||||
|
||||
// Convert the macros
|
||||
@ -2564,10 +2564,10 @@
|
||||
}
|
||||
|
||||
return str.
|
||||
replace('_START_', sStart).
|
||||
replace('_END_', sEnd).
|
||||
replace('_TOTAL_', sTotal).
|
||||
replace('_MAX_', sMax);
|
||||
replace(/_START_/g, sStart).
|
||||
replace(/_END_/g, sEnd).
|
||||
replace(/_TOTAL_/g, sTotal).
|
||||
replace(/_MAX_/g, sMax);
|
||||
}
|
||||
|
||||
|
||||
@ -3008,7 +3008,6 @@
|
||||
$(oSettings.oInstance).trigger('processing', [oSettings, bShow]);
|
||||
}
|
||||
|
||||
|
||||
/**
|
||||
* Add any control elements for the table - specifically scrolling
|
||||
* @param {object} oSettings dataTables settings object
|
||||
@ -3204,7 +3203,7 @@
|
||||
nScrollFootInner = (o.nTFoot !== null) ? o.nScrollFoot.getElementsByTagName('div')[0] : null,
|
||||
nScrollFootTable = (o.nTFoot !== null) ? nScrollFootInner.getElementsByTagName('table')[0] : null,
|
||||
ie67 = o.oBrowser.bScrollOversize,
|
||||
zeroOut = function(nSizer, nToSize) {
|
||||
zeroOut = function(nSizer) {
|
||||
oStyle = nSizer.style;
|
||||
oStyle.paddingTop = "0";
|
||||
oStyle.paddingBottom = "0";
|
||||
@ -3322,19 +3321,19 @@
|
||||
|
||||
// Apply all styles in one pass. Invalidates layout only once because we don't read any
|
||||
// DOM properties.
|
||||
_fnApplyToChildren( zeroOut, anHeadSizers, anHeadToSize );
|
||||
_fnApplyToChildren( zeroOut, anHeadSizers );
|
||||
|
||||
// Read all widths in next pass. Forces layout only once because we do not change
|
||||
// any DOM properties.
|
||||
_fnApplyToChildren( function(nSizer, nToSize) {
|
||||
_fnApplyToChildren( function(nSizer) {
|
||||
aApplied.push( _fnStringToCss( $(nSizer).width() ) );
|
||||
}, anHeadSizers, anHeadToSize );
|
||||
}, anHeadSizers );
|
||||
|
||||
// Apply all widths in final pass. Invalidates layout only once because we do not
|
||||
// read any DOM properties.
|
||||
_fnApplyToChildren( function(nSizer, nToSize, i) {
|
||||
_fnApplyToChildren( function(nToSize, i) {
|
||||
nToSize.style.width = aApplied[i];
|
||||
}, anHeadSizers, anHeadToSize );
|
||||
}, anHeadToSize );
|
||||
|
||||
$(anHeadSizers).height(0);
|
||||
|
||||
@ -3344,15 +3343,15 @@
|
||||
anFootSizers = nTfootSize.getElementsByTagName('tr');
|
||||
anFootToSize = o.nTFoot.getElementsByTagName('tr');
|
||||
|
||||
_fnApplyToChildren( zeroOut, anFootSizers, anFootToSize );
|
||||
_fnApplyToChildren( zeroOut, anFootSizers );
|
||||
|
||||
_fnApplyToChildren( function(nSizer, nToSize) {
|
||||
_fnApplyToChildren( function(nSizer) {
|
||||
aAppliedFooter.push( _fnStringToCss( $(nSizer).width() ) );
|
||||
}, anFootSizers, anFootToSize );
|
||||
}, anFootSizers );
|
||||
|
||||
_fnApplyToChildren( function(nSizer, nToSize, i) {
|
||||
_fnApplyToChildren( function(nToSize, i) {
|
||||
nToSize.style.width = aAppliedFooter[i];
|
||||
}, anFootSizers, anFootToSize );
|
||||
}, anFootToSize );
|
||||
|
||||
$(anFootSizers).height(0);
|
||||
}
|
||||
@ -3396,11 +3395,11 @@
|
||||
|
||||
/* Apply the calculated minimum width to the table wrappers */
|
||||
nScrollBody.style.width = _fnStringToCss( iCorrection );
|
||||
nScrollHeadInner.parentNode.style.width = _fnStringToCss( iCorrection );
|
||||
o.nScrollHead.style.width = _fnStringToCss( iCorrection );
|
||||
|
||||
if ( o.nTFoot !== null )
|
||||
{
|
||||
nScrollFootInner.parentNode.style.width = _fnStringToCss( iCorrection );
|
||||
o.nScrollFoot.style.width = _fnStringToCss( iCorrection );
|
||||
}
|
||||
|
||||
/* And give the user a warning that we've stopped the table getting too small */
|
||||
@ -3419,11 +3418,11 @@
|
||||
else
|
||||
{
|
||||
nScrollBody.style.width = _fnStringToCss( '100%' );
|
||||
nScrollHeadInner.parentNode.style.width = _fnStringToCss( '100%' );
|
||||
o.nScrollHead.style.width = _fnStringToCss( '100%' );
|
||||
|
||||
if ( o.nTFoot !== null )
|
||||
{
|
||||
nScrollFootInner.parentNode.style.width = _fnStringToCss( '100%' );
|
||||
o.nScrollFoot.style.width = _fnStringToCss( '100%' );
|
||||
}
|
||||
}
|
||||
|
||||
@ -3521,7 +3520,6 @@
|
||||
}
|
||||
}
|
||||
|
||||
|
||||
/**
|
||||
* Convert a CSS unit width to pixels (e.g. 2em)
|
||||
* @param {string} sWidth width to be converted
|
||||
@ -3538,7 +3536,7 @@
|
||||
|
||||
if ( !nParent )
|
||||
{
|
||||
nParent = document.getElementsByTagName('body')[0];
|
||||
nParent = document.body;
|
||||
}
|
||||
|
||||
var iWidth;
|
||||
@ -3568,6 +3566,7 @@
|
||||
var i, iIndex, iCorrector, iWidth;
|
||||
var oHeaders = $('th', oSettings.nTHead);
|
||||
var widthAttr = oSettings.nTable.getAttribute('width');
|
||||
var nWrapper = oSettings.nTable.parentNode;
|
||||
|
||||
/* Convert any user input sizes into pixel sizes */
|
||||
for ( i=0 ; i<iColums ; i++ )
|
||||
@ -3579,7 +3578,7 @@
|
||||
if ( oSettings.aoColumns[i].sWidth !== null )
|
||||
{
|
||||
iTmpWidth = _fnConvertToWidth( oSettings.aoColumns[i].sWidthOrig,
|
||||
oSettings.nTable.parentNode );
|
||||
nWrapper );
|
||||
if ( iTmpWidth !== null )
|
||||
{
|
||||
oSettings.aoColumns[i].sWidth = _fnStringToCss( iTmpWidth );
|
||||
@ -3679,7 +3678,6 @@
|
||||
}
|
||||
|
||||
/* Build the table and 'display' it */
|
||||
var nWrapper = oSettings.nTable.parentNode;
|
||||
nWrapper.appendChild( nCalcTmp );
|
||||
|
||||
/* When scrolling (X or Y) we want to set the width of the table as appropriate. However,
|
||||
@ -3925,8 +3923,6 @@
|
||||
return (w1 - w2);
|
||||
}
|
||||
|
||||
|
||||
|
||||
/**
|
||||
* Change the order of the table
|
||||
* @param {object} oSettings dataTables settings object
|
||||
@ -4330,58 +4326,51 @@
|
||||
if ( oSettings.oFeatures.bSort && oSettings.oFeatures.bSortClasses )
|
||||
{
|
||||
var nTds = _fnGetTdNodes( oSettings );
|
||||
|
||||
/* Remove the old classes */
|
||||
if ( oSettings.oFeatures.bDeferRender )
|
||||
{
|
||||
$(nTds).removeClass(sClass+'1 '+sClass+'2 '+sClass+'3');
|
||||
}
|
||||
else if ( nTds.length >= iColumns )
|
||||
{
|
||||
for ( i=0 ; i<iColumns ; i++ )
|
||||
{
|
||||
if ( nTds[i].className.indexOf(sClass+"1") != -1 )
|
||||
{
|
||||
for ( j=0, jLen=(nTds.length/iColumns) ; j<jLen ; j++ )
|
||||
{
|
||||
nTds[(iColumns*j)+i].className =
|
||||
$.trim( nTds[(iColumns*j)+i].className.replace( sClass+"1", "" ) );
|
||||
}
|
||||
}
|
||||
else if ( nTds[i].className.indexOf(sClass+"2") != -1 )
|
||||
{
|
||||
for ( j=0, jLen=(nTds.length/iColumns) ; j<jLen ; j++ )
|
||||
{
|
||||
nTds[(iColumns*j)+i].className =
|
||||
$.trim( nTds[(iColumns*j)+i].className.replace( sClass+"2", "" ) );
|
||||
}
|
||||
}
|
||||
else if ( nTds[i].className.indexOf(sClass+"3") != -1 )
|
||||
{
|
||||
for ( j=0, jLen=(nTds.length/iColumns) ; j<jLen ; j++ )
|
||||
{
|
||||
nTds[(iColumns*j)+i].className =
|
||||
$.trim( nTds[(iColumns*j)+i].className.replace( " "+sClass+"3", "" ) );
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
/* Add the new classes to the table */
|
||||
var iClass = 1, iTargetCol;
|
||||
for ( i=0 ; i<aaSort.length ; i++ )
|
||||
/* Determine what the sorting class for each column should be */
|
||||
var iClass, iTargetCol;
|
||||
var asClasses = [];
|
||||
for (i = 0; i < iColumns; i++)
|
||||
{
|
||||
asClasses.push("");
|
||||
}
|
||||
for (i = 0, iClass = 1; i < aaSort.length; i++)
|
||||
{
|
||||
iTargetCol = parseInt( aaSort[i][0], 10 );
|
||||
for ( j=0, jLen=(nTds.length/iColumns) ; j<jLen ; j++ )
|
||||
{
|
||||
nTds[(iColumns*j)+iTargetCol].className += " "+sClass+iClass;
|
||||
}
|
||||
asClasses[iTargetCol] = sClass + iClass;
|
||||
|
||||
if ( iClass < 3 )
|
||||
{
|
||||
iClass++;
|
||||
}
|
||||
}
|
||||
|
||||
/* Make changes to the classes for each cell as needed */
|
||||
var reClass = new RegExp(sClass + "[123]");
|
||||
var sTmpClass, sCurrentClass, sNewClass;
|
||||
for ( i=0, iLen=nTds.length; i<iLen; i++ )
|
||||
{
|
||||
/* Determine which column we're looking at */
|
||||
iTargetCol = i % iColumns;
|
||||
|
||||
/* What is the full list of classes now */
|
||||
sCurrentClass = nTds[i].className;
|
||||
/* What sorting class should be applied? */
|
||||
sNewClass = asClasses[iTargetCol];
|
||||
/* What would the new full list be if we did a replacement? */
|
||||
sTmpClass = sCurrentClass.replace(reClass, sNewClass);
|
||||
|
||||
if ( sTmpClass != sCurrentClass )
|
||||
{
|
||||
/* We changed something */
|
||||
nTds[i].className = $.trim( sTmpClass );
|
||||
}
|
||||
else if ( sNewClass.length > 0 && sCurrentClass.indexOf(sNewClass) == -1 )
|
||||
{
|
||||
/* We need to add a class */
|
||||
nTds[i].className = sCurrentClass + " " + sNewClass;
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
@ -12134,5 +12123,5 @@
|
||||
*/
|
||||
}));
|
||||
|
||||
}( window, document, undefined));
|
||||
}( window, document));
|
||||
|
||||
|
@ -186,8 +186,16 @@ function _fnGatherData( oSettings )
|
||||
}
|
||||
}
|
||||
|
||||
if ( typeof oCol.mData === 'function' )
|
||||
if ( oCol.mRender )
|
||||
{
|
||||
// mRender has been defined, so we need to get the value and set it
|
||||
nCell.innerHTML = _fnGetCellData( oSettings, iRow, iColumn, 'display' );
|
||||
}
|
||||
else if ( oCol.mData !== iColumn )
|
||||
{
|
||||
// If mData is not the same as the column number, then we need to
|
||||
// get the dev set value. If it is the column, no point in wasting
|
||||
// time setting the value that is already there!
|
||||
nCell.innerHTML = _fnGetCellData( oSettings, iRow, iColumn, 'display' );
|
||||
}
|
||||
|
||||
|
Loading…
x
Reference in New Issue
Block a user