added new files for demo
[myslice.git] / third-party / datatables-1.9.4 / js / datatables-bs3.js
1 /* Set the defaults for DataTables initialisation */
2 $.extend( true, $.fn.dataTable.defaults, {
3         "sDom": "<'row'<'col-sm-12'<'pull-right'f><'pull-left'l>r<'clearfix'>>>t<'row'<'col-sm-12'<'pull-left'i><'pull-right'p><'clearfix'>>>",
4     "sPaginationType": "bs_normal",
5     "oLanguage": {
6         "sLengthMenu": "Show _MENU_ Rows",
7         "sSearch": ""
8     }
9 } );
10
11 /* Default class modification */
12 $.extend( $.fn.dataTableExt.oStdClasses, {
13         "sWrapper": "dataTables_wrapper form-inline"
14 } );
15
16 /* API method to get paging information */
17 $.fn.dataTableExt.oApi.fnPagingInfo = function ( oSettings )
18 {
19         return {
20                 "iStart":         oSettings._iDisplayStart,
21                 "iEnd":           oSettings.fnDisplayEnd(),
22                 "iLength":        oSettings._iDisplayLength,
23                 "iTotal":         oSettings.fnRecordsTotal(),
24                 "iFilteredTotal": oSettings.fnRecordsDisplay(),
25                 "iPage":          oSettings._iDisplayLength === -1 ?
26                         0 : Math.ceil( oSettings._iDisplayStart / oSettings._iDisplayLength ),
27                 "iTotalPages":    oSettings._iDisplayLength === -1 ?
28                         0 : Math.ceil( oSettings.fnRecordsDisplay() / oSettings._iDisplayLength )
29         };
30 };
31
32 /* Bootstrap style pagination control */
33 $.extend( $.fn.dataTableExt.oPagination, {
34         "bs_normal": {
35                 "fnInit": function( oSettings, nPaging, fnDraw ) {
36                         var oLang = oSettings.oLanguage.oPaginate;
37                         var fnClickHandler = function ( e ) {
38                                 e.preventDefault();
39                                 if ( oSettings.oApi._fnPageChange(oSettings, e.data.action) ) {
40                                         fnDraw( oSettings );
41                                 }
42                         };
43                         $(nPaging).append(
44                                 '<ul class="pagination">'+
45                                         '<li class="prev disabled"><a href="#"><span class="glyphicon glyphicon-chevron-left"></span>&nbsp;'+oLang.sPrevious+'</a></li>'+
46                                         '<li class="next disabled"><a href="#">'+oLang.sNext+'&nbsp;<span class="glyphicon glyphicon-chevron-right"></span></a></li>'+
47                                 '</ul>'
48                         );
49                         var els = $('a', nPaging);
50                         $(els[0]).bind( 'click.DT', { action: "previous" }, fnClickHandler );
51                         $(els[1]).bind( 'click.DT', { action: "next" }, fnClickHandler );
52                 },
53                 "fnUpdate": function ( oSettings, fnDraw ) {
54                         var iListLength = 5;
55                         var oPaging = oSettings.oInstance.fnPagingInfo();
56                         var an = oSettings.aanFeatures.p;
57                         var i, ien, j, sClass, iStart, iEnd, iHalf=Math.floor(iListLength/2);
58                         if ( oPaging.iTotalPages < iListLength) {
59                                 iStart = 1;
60                                 iEnd = oPaging.iTotalPages;
61                         }
62                         else if ( oPaging.iPage <= iHalf ) {
63                                 iStart = 1;
64                                 iEnd = iListLength;
65                         } else if ( oPaging.iPage >= (oPaging.iTotalPages-iHalf) ) {
66                                 iStart = oPaging.iTotalPages - iListLength + 1;
67                                 iEnd = oPaging.iTotalPages;
68                         } else {
69                                 iStart = oPaging.iPage - iHalf + 1;
70                                 iEnd = iStart + iListLength - 1;
71                         }
72                         for ( i=0, ien=an.length ; i<ien ; i++ ) {
73                                 $('li:gt(0)', an[i]).filter(':not(:last)').remove();
74                                 for ( j=iStart ; j<=iEnd ; j++ ) {
75                                         sClass = (j==oPaging.iPage+1) ? 'class="active"' : '';
76                                         $('<li '+sClass+'><a href="#">'+j+'</a></li>')
77                                                 .insertBefore( $('li:last', an[i])[0] )
78                                                 .bind('click', function (e) {
79                                                         e.preventDefault();
80                                                         oSettings._iDisplayStart = (parseInt($('a', this).text(),10)-1) * oPaging.iLength;
81                                                         fnDraw( oSettings );
82                                                 } );
83                                 }
84                                 if ( oPaging.iPage === 0 ) {
85                                         $('li:first', an[i]).addClass('disabled');
86                                 } else {
87                                         $('li:first', an[i]).removeClass('disabled');
88                                 }
89
90                                 if ( oPaging.iPage === oPaging.iTotalPages-1 || oPaging.iTotalPages === 0 ) {
91                                         $('li:last', an[i]).addClass('disabled');
92                                 } else {
93                                         $('li:last', an[i]).removeClass('disabled');
94                                 }
95                         }
96                 }
97         },      
98         "bs_two_button": {
99                 "fnInit": function ( oSettings, nPaging, fnCallbackDraw )
100                 {
101                         var oLang = oSettings.oLanguage.oPaginate;
102                         var oClasses = oSettings.oClasses;
103                         var fnClickHandler = function ( e ) {
104                                 if ( oSettings.oApi._fnPageChange( oSettings, e.data.action ) )
105                                 {
106                                         fnCallbackDraw( oSettings );
107                                 }
108                         };
109                         var sAppend = '<ul class="pagination">'+
110                                 '<li class="prev"><a class="'+oSettings.oClasses.sPagePrevDisabled+'" tabindex="'+oSettings.iTabIndex+'" role="button"><span class="glyphicon glyphicon-chevron-left"></span>&nbsp;'+oLang.sPrevious+'</a></li>'+
111                                 '<li class="next"><a class="'+oSettings.oClasses.sPageNextDisabled+'" tabindex="'+oSettings.iTabIndex+'" role="button">'+oLang.sNext+'&nbsp;<span class="glyphicon glyphicon-chevron-right"></span></a></li>'+
112                                 '</ul>';
113                         $(nPaging).append( sAppend );
114                         var els = $('a', nPaging);
115                         var nPrevious = els[0],
116                                 nNext = els[1];
117                         oSettings.oApi._fnBindAction( nPrevious, {action: "previous"}, fnClickHandler );
118                         oSettings.oApi._fnBindAction( nNext,     {action: "next"},     fnClickHandler );
119                         if ( !oSettings.aanFeatures.p )
120                         {
121                                 nPaging.id = oSettings.sTableId+'_paginate';
122                                 nPrevious.id = oSettings.sTableId+'_previous';
123                                 nNext.id = oSettings.sTableId+'_next';
124                                 nPrevious.setAttribute('aria-controls', oSettings.sTableId);
125                                 nNext.setAttribute('aria-controls', oSettings.sTableId);
126                         }
127                 },
128                 "fnUpdate": function ( oSettings, fnCallbackDraw )
129                 {
130                         if ( !oSettings.aanFeatures.p )
131                         {
132                                 return;
133                         }
134                         var oPaging = oSettings.oInstance.fnPagingInfo();
135                         var oClasses = oSettings.oClasses;
136                         var an = oSettings.aanFeatures.p;
137                         var nNode;
138                         for ( var i=0, iLen=an.length ; i<iLen ; i++ )
139                         {
140                                 if ( oPaging.iPage === 0 ) {
141                                         $('li:first', an[i]).addClass('disabled');
142                                 } else {
143                                         $('li:first', an[i]).removeClass('disabled');
144                                 }
145
146                                 if ( oPaging.iPage === oPaging.iTotalPages-1 || oPaging.iTotalPages === 0 ) {
147                                         $('li:last', an[i]).addClass('disabled');
148                                 } else {
149                                         $('li:last', an[i]).removeClass('disabled');
150                                 }
151                         }
152                 }
153         },
154         "bs_four_button": {
155                 "fnInit": function ( oSettings, nPaging, fnCallbackDraw )
156                         {
157                                 var oLang = oSettings.oLanguage.oPaginate;
158                                 var oClasses = oSettings.oClasses;
159                                 var fnClickHandler = function ( e ) {
160                                         if ( oSettings.oApi._fnPageChange( oSettings, e.data.action ) )
161                                         {
162                                                 fnCallbackDraw( oSettings );
163                                         }
164                                 };
165                                 $(nPaging).append(
166                                         '<ul class="pagination">'+
167                                         '<li class="disabled"><a  tabindex="'+oSettings.iTabIndex+'" class="'+oClasses.sPageButton+" "+oClasses.sPageFirst+'"><span class="glyphicon glyphicon-backward"></span>&nbsp;'+oLang.sFirst+'</a></li>'+
168                                         '<li class="disabled"><a  tabindex="'+oSettings.iTabIndex+'" class="'+oClasses.sPageButton+" "+oClasses.sPagePrevious+'"><span class="glyphicon glyphicon-chevron-left"></span>&nbsp;'+oLang.sPrevious+'</a></li>'+
169                                         '<li><a tabindex="'+oSettings.iTabIndex+'" class="'+oClasses.sPageButton+" "+oClasses.sPageNext+'">'+oLang.sNext+'&nbsp;<span class="glyphicon glyphicon-chevron-right"></span></a></li>'+
170                                         '<li><a tabindex="'+oSettings.iTabIndex+'" class="'+oClasses.sPageButton+" "+oClasses.sPageLast+'">'+oLang.sLast+'&nbsp;<span class="glyphicon glyphicon-forward"></span></a></li>'+
171                                         '</ul>'
172                                 );
173                                 var els = $('a', nPaging);
174                                 var nFirst = els[0],
175                                         nPrev = els[1],
176                                         nNext = els[2],
177                                         nLast = els[3];
178                                 oSettings.oApi._fnBindAction( nFirst, {action: "first"},    fnClickHandler );
179                                 oSettings.oApi._fnBindAction( nPrev,  {action: "previous"}, fnClickHandler );
180                                 oSettings.oApi._fnBindAction( nNext,  {action: "next"},     fnClickHandler );
181                                 oSettings.oApi._fnBindAction( nLast,  {action: "last"},     fnClickHandler );
182                                 if ( !oSettings.aanFeatures.p )
183                                 {
184                                         nPaging.id = oSettings.sTableId+'_paginate';
185                                         nFirst.id =oSettings.sTableId+'_first';
186                                         nPrev.id =oSettings.sTableId+'_previous';
187                                         nNext.id =oSettings.sTableId+'_next';
188                                         nLast.id =oSettings.sTableId+'_last';
189                                 }
190                         },
191                 "fnUpdate": function ( oSettings, fnCallbackDraw )
192                         {
193                                 if ( !oSettings.aanFeatures.p )
194                                 {
195                                         return;
196                                 }
197                                 var oPaging = oSettings.oInstance.fnPagingInfo();
198                                 var oClasses = oSettings.oClasses;
199                                 var an = oSettings.aanFeatures.p;
200                                 var nNode;
201                                 for ( var i=0, iLen=an.length ; i<iLen ; i++ )
202                                 {
203                                         if ( oPaging.iPage === 0 ) {
204                                                 $('li:eq(0)', an[i]).addClass('disabled');
205                                                 $('li:eq(1)', an[i]).addClass('disabled');
206                                         } else {
207                                                 $('li:eq(0)', an[i]).removeClass('disabled');
208                                                 $('li:eq(1)', an[i]).removeClass('disabled');
209                                         }
210
211                                         if ( oPaging.iPage === oPaging.iTotalPages-1 || oPaging.iTotalPages === 0 ) {
212                                                 $('li:eq(2)', an[i]).addClass('disabled');
213                                                 $('li:eq(3)', an[i]).addClass('disabled');
214                                         } else {
215                                                 $('li:eq(2)', an[i]).removeClass('disabled');
216                                                 $('li:eq(3)', an[i]).removeClass('disabled');
217                                         }
218                                 }
219                         }
220         },
221         "bs_full": {
222                 "fnInit": function ( oSettings, nPaging, fnCallbackDraw )
223                         {
224                                 var oLang = oSettings.oLanguage.oPaginate;
225                                 var oClasses = oSettings.oClasses;
226                                 var fnClickHandler = function ( e ) {
227                                         if ( oSettings.oApi._fnPageChange( oSettings, e.data.action ) )
228                                         {
229                                                 fnCallbackDraw( oSettings );
230                                         }
231                                 };
232                                 $(nPaging).append(
233                                         '<ul class="pagination">'+
234                                         '<li class="disabled"><a  tabindex="'+oSettings.iTabIndex+'" class="'+oClasses.sPageButton+" "+oClasses.sPageFirst+'">'+oLang.sFirst+'</a></li>'+
235                                         '<li class="disabled"><a  tabindex="'+oSettings.iTabIndex+'" class="'+oClasses.sPageButton+" "+oClasses.sPagePrevious+'">'+oLang.sPrevious+'</a></li>'+
236                                         '<li><a tabindex="'+oSettings.iTabIndex+'" class="'+oClasses.sPageButton+" "+oClasses.sPageNext+'">'+oLang.sNext+'</a></li>'+
237                                         '<li><a tabindex="'+oSettings.iTabIndex+'" class="'+oClasses.sPageButton+" "+oClasses.sPageLast+'">'+oLang.sLast+'</a></li>'+
238                                         '</ul>'
239                                 );
240                                 var els = $('a', nPaging);
241                                 var nFirst = els[0],
242                                         nPrev = els[1],
243                                         nNext = els[2],
244                                         nLast = els[3];
245                                 oSettings.oApi._fnBindAction( nFirst, {action: "first"},    fnClickHandler );
246                                 oSettings.oApi._fnBindAction( nPrev,  {action: "previous"}, fnClickHandler );
247                                 oSettings.oApi._fnBindAction( nNext,  {action: "next"},     fnClickHandler );
248                                 oSettings.oApi._fnBindAction( nLast,  {action: "last"},     fnClickHandler );
249                                 if ( !oSettings.aanFeatures.p )
250                                 {
251                                         nPaging.id = oSettings.sTableId+'_paginate';
252                                         nFirst.id =oSettings.sTableId+'_first';
253                                         nPrev.id =oSettings.sTableId+'_previous';
254                                         nNext.id =oSettings.sTableId+'_next';
255                                         nLast.id =oSettings.sTableId+'_last';
256                                 }
257                         },
258                 "fnUpdate": function ( oSettings, fnCallbackDraw )
259                         {
260                                 if ( !oSettings.aanFeatures.p )
261                                 {
262                                         return;
263                                 }
264                                 var oPaging = oSettings.oInstance.fnPagingInfo();
265                                 var iPageCount = $.fn.dataTableExt.oPagination.iFullNumbersShowPages;
266                                 var iPageCountHalf = Math.floor(iPageCount / 2);
267                                 var iPages = Math.ceil((oSettings.fnRecordsDisplay()) / oSettings._iDisplayLength);
268                                 var iCurrentPage = Math.ceil(oSettings._iDisplayStart / oSettings._iDisplayLength) + 1;
269                                 var sList = "";
270                                 var iStartButton, iEndButton, i, iLen;
271                                 var oClasses = oSettings.oClasses;
272                                 var anButtons, anStatic, nPaginateList, nNode;
273                                 var an = oSettings.aanFeatures.p;
274                                 var fnBind = function (j) {
275                                         oSettings.oApi._fnBindAction( this, {"page": j+iStartButton-1}, function(e) {
276                                                 oSettings.oApi._fnPageChange( oSettings, e.data.page );
277                                                 fnCallbackDraw( oSettings );
278                                                 e.preventDefault();
279                                         } );
280                                 };
281                                 if ( oSettings._iDisplayLength === -1 )
282                                 {
283                                         iStartButton = 1;
284                                         iEndButton = 1;
285                                         iCurrentPage = 1;
286                                 }
287                                 else if (iPages < iPageCount)
288                                 {
289                                         iStartButton = 1;
290                                         iEndButton = iPages;
291                                 }
292                                 else if (iCurrentPage <= iPageCountHalf)
293                                 {
294                                         iStartButton = 1;
295                                         iEndButton = iPageCount;
296                                 }
297                                 else if (iCurrentPage >= (iPages - iPageCountHalf))
298                                 {
299                                         iStartButton = iPages - iPageCount + 1;
300                                         iEndButton = iPages;
301                                 }
302                                 else
303                                 {
304                                         iStartButton = iCurrentPage - Math.ceil(iPageCount / 2) + 1;
305                                         iEndButton = iStartButton + iPageCount - 1;
306                                 }
307                                 for ( i=iStartButton ; i<=iEndButton ; i++ )
308                                 {
309                                         sList += (iCurrentPage !== i) ?
310                                                 '<li><a tabindex="'+oSettings.iTabIndex+'">'+oSettings.fnFormatNumber(i)+'</a></li>' :
311                                                 '<li class="active"><a tabindex="'+oSettings.iTabIndex+'">'+oSettings.fnFormatNumber(i)+'</a></li>';
312                                 }
313                                 for ( i=0, iLen=an.length ; i<iLen ; i++ )
314                                 {
315                                         nNode = an[i];
316                                         if ( !nNode.hasChildNodes() )
317                                         {
318                                                 continue;
319                                         }
320                                         $('li:gt(1)', an[i]).filter(':not(li:eq(-2))').filter(':not(li:eq(-1))').remove();
321                                         if ( oPaging.iPage === 0 ) {
322                                                 $('li:eq(0)', an[i]).addClass('disabled');
323                                                 $('li:eq(1)', an[i]).addClass('disabled');
324                                         } else {
325                                                 $('li:eq(0)', an[i]).removeClass('disabled');
326                                                 $('li:eq(1)', an[i]).removeClass('disabled');
327                                         }
328                                         if ( oPaging.iPage === oPaging.iTotalPages-1 || oPaging.iTotalPages === 0 ) {
329                                                 $('li:eq(-1)', an[i]).addClass('disabled');
330                                                 $('li:eq(-2)', an[i]).addClass('disabled');
331                                         } else {
332                                                 $('li:eq(-1)', an[i]).removeClass('disabled');
333                                                 $('li:eq(-2)', an[i]).removeClass('disabled');
334                                         }
335                                         $(sList)
336                                                 .insertBefore('li:eq(-2)', an[i])
337                                                 .bind('click', function (e) {
338                                                         e.preventDefault();
339                                                         oSettings._iDisplayStart = (parseInt($('a', this).text(),10)-1) * oPaging.iLength;
340                                                         fnCallbackDraw( oSettings );
341                                                 });
342                                 }
343                         }
344         }       
345 } );
346
347
348 /*
349  * TableTools Bootstrap compatibility
350  * Required TableTools 2.1+
351  */
352 if ( $.fn.DataTable.TableTools ) {
353         // Set the classes that TableTools uses to something suitable for Bootstrap
354         $.extend( true, $.fn.DataTable.TableTools.classes, {
355                 "container": "DTTT btn-group",
356                 "buttons": {
357                         "normal": "btn",
358                         "disabled": "disabled"
359                 },
360                 "collection": {
361                         "container": "DTTT_dropdown dropdown-menu",
362                         "buttons": {
363                                 "normal": "",
364                                 "disabled": "disabled"
365                         }
366                 },
367                 "print": {
368                         "info": "DTTT_print_info modal"
369                 },
370                 "select": {
371                         "row": "active"
372                 }
373         } );
374
375         // Have the collection use a bootstrap compatible dropdown
376         $.extend( true, $.fn.DataTable.TableTools.DEFAULTS.oTags, {
377                 "collection": {
378                         "container": "ul",
379                         "button": "li",
380                         "liner": "a"
381                 }
382         } );
383 }