Add datatables-1.9.4 and jquery-1.10.2 libraries
[proteocache.git] / webapp / resources / datatables-1.9.4 / media / src / core / core.length.js
1
2
3 /**
4  * Generate the node required for user display length changing
5  *  @param {object} oSettings dataTables settings object
6  *  @returns {node} Display length feature node
7  *  @memberof DataTable#oApi
8  */
9 function _fnFeatureHtmlLength ( oSettings )
10 {
11         if ( oSettings.oScroll.bInfinite )
12         {
13                 return null;
14         }
15         
16         /* This can be overruled by not using the _MENU_ var/macro in the language variable */
17         var sName = 'name="'+oSettings.sTableId+'_length"';
18         var sStdMenu = '<select size="1" '+sName+'>';
19         var i, iLen;
20         var aLengthMenu = oSettings.aLengthMenu;
21         
22         if ( aLengthMenu.length == 2 && typeof aLengthMenu[0] === 'object' && 
23                         typeof aLengthMenu[1] === 'object' )
24         {
25                 for ( i=0, iLen=aLengthMenu[0].length ; i<iLen ; i++ )
26                 {
27                         sStdMenu += '<option value="'+aLengthMenu[0][i]+'">'+aLengthMenu[1][i]+'</option>';
28                 }
29         }
30         else
31         {
32                 for ( i=0, iLen=aLengthMenu.length ; i<iLen ; i++ )
33                 {
34                         sStdMenu += '<option value="'+aLengthMenu[i]+'">'+aLengthMenu[i]+'</option>';
35                 }
36         }
37         sStdMenu += '</select>';
38         
39         var nLength = document.createElement( 'div' );
40         if ( !oSettings.aanFeatures.l )
41         {
42                 nLength.id = oSettings.sTableId+'_length';
43         }
44         nLength.className = oSettings.oClasses.sLength;
45         nLength.innerHTML = '<label>'+oSettings.oLanguage.sLengthMenu.replace( '_MENU_', sStdMenu )+'</label>';
46         
47         /*
48          * Set the length to the current display length - thanks to Andrea Pavlovic for this fix,
49          * and Stefan Skopnik for fixing the fix!
50          */
51         $('select option[value="'+oSettings._iDisplayLength+'"]', nLength).attr("selected", true);
52         
53         $('select', nLength).bind( 'change.DT', function(e) {
54                 var iVal = $(this).val();
55                 
56                 /* Update all other length options for the new display */
57                 var n = oSettings.aanFeatures.l;
58                 for ( i=0, iLen=n.length ; i<iLen ; i++ )
59                 {
60                         if ( n[i] != this.parentNode )
61                         {
62                                 $('select', n[i]).val( iVal );
63                         }
64                 }
65                 
66                 /* Redraw the table */
67                 oSettings._iDisplayLength = parseInt(iVal, 10);
68                 _fnCalculateEnd( oSettings );
69                 
70                 /* If we have space to show extra rows (backing up from the end point - then do so */
71                 if ( oSettings.fnDisplayEnd() == oSettings.fnRecordsDisplay() )
72                 {
73                         oSettings._iDisplayStart = oSettings.fnDisplayEnd() - oSettings._iDisplayLength;
74                         if ( oSettings._iDisplayStart < 0 )
75                         {
76                                 oSettings._iDisplayStart = 0;
77                         }
78                 }
79                 
80                 if ( oSettings._iDisplayLength == -1 )
81                 {
82                         oSettings._iDisplayStart = 0;
83                 }
84                 
85                 _fnDraw( oSettings );
86         } );
87
88
89         $('select', nLength).attr('aria-controls', oSettings.sTableId);
90         
91         return nLength;
92 }
93
94
95 /**
96  * Recalculate the end point based on the start point
97  *  @param {object} oSettings dataTables settings object
98  *  @memberof DataTable#oApi
99  */
100 function _fnCalculateEnd( oSettings )
101 {
102         if ( oSettings.oFeatures.bPaginate === false )
103         {
104                 oSettings._iDisplayEnd = oSettings.aiDisplay.length;
105         }
106         else
107         {
108                 /* Set the end point of the display - based on how many elements there are
109                  * still to display
110                  */
111                 if ( oSettings._iDisplayStart + oSettings._iDisplayLength > oSettings.aiDisplay.length ||
112                            oSettings._iDisplayLength == -1 )
113                 {
114                         oSettings._iDisplayEnd = oSettings.aiDisplay.length;
115                 }
116                 else
117                 {
118                         oSettings._iDisplayEnd = oSettings._iDisplayStart + oSettings._iDisplayLength;
119                 }
120         }
121 }
122