Project

General

Profile

Download (2.47 KB) Statistics
| Branch: | Tag: | Revision:
1

    
2
/**
3
 * Generate the node required for the info display
4
 *  @param {object} oSettings dataTables settings object
5
 *  @returns {node} Information element
6
 *  @memberof DataTable#oApi
7
 */
8
function _fnFeatureHtmlInfo ( oSettings )
9
{
10
	var nInfo = document.createElement( 'div' );
11
	nInfo.className = oSettings.oClasses.sInfo;
12
	
13
	/* Actions that are to be taken once only for this feature */
14
	if ( !oSettings.aanFeatures.i )
15
	{
16
		/* Add draw callback */
17
		oSettings.aoDrawCallback.push( {
18
			"fn": _fnUpdateInfo,
19
			"sName": "information"
20
		} );
21
		
22
		/* Add id */
23
		nInfo.id = oSettings.sTableId+'_info';
24
	}
25
	oSettings.nTable.setAttribute( 'aria-describedby', oSettings.sTableId+'_info' );
26
	
27
	return nInfo;
28
}
29

    
30

    
31
/**
32
 * Update the information elements in the display
33
 *  @param {object} oSettings dataTables settings object
34
 *  @memberof DataTable#oApi
35
 */
36
function _fnUpdateInfo ( oSettings )
37
{
38
	/* Show information about the table */
39
	if ( !oSettings.oFeatures.bInfo || oSettings.aanFeatures.i.length === 0 )
40
	{
41
		return;
42
	}
43
	
44
	var
45
		oLang = oSettings.oLanguage,
46
		iStart = oSettings._iDisplayStart+1,
47
		iEnd = oSettings.fnDisplayEnd(),
48
		iMax = oSettings.fnRecordsTotal(),
49
		iTotal = oSettings.fnRecordsDisplay(),
50
		sOut;
51
	
52
	if ( iTotal === 0 )
53
	{
54
		/* Empty record set */
55
		sOut = oLang.sInfoEmpty;
56
	}
57
	else {
58
		/* Normal record set */
59
		sOut = oLang.sInfo;
60
	}
61

    
62
	if ( iTotal != iMax )
63
	{
64
		/* Record set after filtering */
65
		sOut += ' ' + oLang.sInfoFiltered;
66
	}
67

    
68
	// Convert the macros
69
	sOut += oLang.sInfoPostFix;
70
	sOut = _fnInfoMacros( oSettings, sOut );
71
	
72
	if ( oLang.fnInfoCallback !== null )
73
	{
74
		sOut = oLang.fnInfoCallback.call( oSettings.oInstance, 
75
			oSettings, iStart, iEnd, iMax, iTotal, sOut );
76
	}
77
	
78
	var n = oSettings.aanFeatures.i;
79
	for ( var i=0, iLen=n.length ; i<iLen ; i++ )
80
	{
81
		$(n[i]).html( sOut );
82
	}
83
}
84

    
85

    
86
function _fnInfoMacros ( oSettings, str )
87
{
88
	var
89
		iStart = oSettings._iDisplayStart+1,
90
		sStart = oSettings.fnFormatNumber( iStart ),
91
		iEnd = oSettings.fnDisplayEnd(),
92
		sEnd = oSettings.fnFormatNumber( iEnd ),
93
		iTotal = oSettings.fnRecordsDisplay(),
94
		sTotal = oSettings.fnFormatNumber( iTotal ),
95
		iMax = oSettings.fnRecordsTotal(),
96
		sMax = oSettings.fnFormatNumber( iMax );
97

    
98
	// When infinite scrolling, we are always starting at 1. _iDisplayStart is used only
99
	// internally
100
	if ( oSettings.oScroll.bInfinite )
101
	{
102
		sStart = oSettings.fnFormatNumber( 1 );
103
	}
104

    
105
	return str.
106
		replace(/_START_/g, sStart).
107
		replace(/_END_/g,   sEnd).
108
		replace(/_TOTAL_/g, sTotal).
109
		replace(/_MAX_/g,   sMax);
110
}
111

    
(7-7/16)