CLIENT GUI Framework
[vnfsdk/refrepo.git] / openo-portal / portal-common / src / main / webapp / common / thirdparty / data-tables / DT_bootstrap.js
1 /* Set the defaults for DataTables initialisation */\r
2 \r
3 $.extend( true, $.fn.dataTable.defaults, {\r
4         "sDom": "<'row'<'col-md-6 col-sm-12'l><'col-md-6 col-sm-12'f>r><'table-scrollable't><'row'<'col-md-5 col-sm-12'i><'col-md-7 col-sm-12'p>>", // horizobtal scrollable datatable\r
5         //"sDom": "<'row'<'col-md-6 col-sm-12'l><'col-md-6 col-sm-12'f>r>t<'row'<'col-md-5 col-sm-12'i><'col-md-7 col-sm-12'p>>", // defaukt datatable without  horizobtal scroll\r
6         "sPaginationType": "bootstrap",\r
7         "oLanguage": {\r
8                 "sLengthMenu": " _MENU_ records ",\r
9         }\r
10 } );\r
11 \r
12 \r
13 /* Default class modification */\r
14 \r
15 $.extend( $.fn.dataTableExt.oStdClasses, {\r
16         "sWrapper": "dataTables_wrapper"\r
17 } );\r
18 \r
19 \r
20 /* API method to get paging information */\r
21 \r
22 $.fn.dataTableExt.oApi.fnPagingInfo = function ( oSettings )\r
23 {\r
24         return {\r
25                 "iStart":         oSettings._iDisplayStart,\r
26                 "iEnd":           oSettings.fnDisplayEnd(),\r
27                 "iLength":        oSettings._iDisplayLength,\r
28                 "iTotal":         oSettings.fnRecordsTotal(),\r
29                 "iFilteredTotal": oSettings.fnRecordsDisplay(),\r
30                 "iPage":          Math.ceil( oSettings._iDisplayStart / oSettings._iDisplayLength ),\r
31                 "iTotalPages":    Math.ceil( oSettings.fnRecordsDisplay() / oSettings._iDisplayLength )\r
32         };\r
33 };\r
34 \r
35 \r
36 /* Bootstrap style pagination control */\r
37 $.extend( $.fn.dataTableExt.oPagination, {\r
38         "bootstrap": {\r
39                 "fnInit": function( oSettings, nPaging, fnDraw ) {\r
40                         var oLang = oSettings.oLanguage.oPaginate;\r
41                         var fnClickHandler = function ( e ) {\r
42                                 e.preventDefault();\r
43                                 if ( oSettings.oApi._fnPageChange(oSettings, e.data.action) ) {\r
44                                         fnDraw( oSettings );\r
45                                 }\r
46                         };\r
47 \r
48                         // pagination with prev, next link icons\r
49                         $(nPaging).append(\r
50                                 '<ul class="pagination">'+\r
51                                         '<li class="prev disabled"><a href="#" title="'+oLang.sPrevious+'"><i class="fa fa-angle-left"></i></a></li>'+\r
52                                         '<li class="next disabled"><a href="#" title="'+oLang.sNext+'"><i class="fa fa-angle-right"></i></a></li>'+\r
53                                 '</ul>'\r
54                         );\r
55 \r
56                         var els = $('a', nPaging);\r
57                         $(els[0]).bind( 'click.DT', { action: "previous" }, fnClickHandler );\r
58                         $(els[1]).bind( 'click.DT', { action: "next" }, fnClickHandler );\r
59                 },\r
60 \r
61                 "fnUpdate": function ( oSettings, fnDraw ) {\r
62                         var iListLength = 5;\r
63                         var oPaging = oSettings.oInstance.fnPagingInfo();\r
64                         var an = oSettings.aanFeatures.p;\r
65                         var i, j, sClass, iStart, iEnd, iHalf=Math.floor(iListLength/2);\r
66 \r
67                         if ( oPaging.iTotalPages < iListLength) {\r
68                                 iStart = 1;\r
69                                 iEnd = oPaging.iTotalPages;\r
70                         }\r
71                         else if ( oPaging.iPage <= iHalf ) {\r
72                                 iStart = 1;\r
73                                 iEnd = iListLength;\r
74                         } else if ( oPaging.iPage >= (oPaging.iTotalPages-iHalf) ) {\r
75                                 iStart = oPaging.iTotalPages - iListLength + 1;\r
76                                 iEnd = oPaging.iTotalPages;\r
77                         } else {\r
78                                 iStart = oPaging.iPage - iHalf + 1;\r
79                                 iEnd = iStart + iListLength - 1;\r
80                         }\r
81 \r
82                         for ( i=0, iLen=an.length ; i<iLen ; i++ ) {\r
83 \r
84                 if (oPaging.iTotalPages < 0) {\r
85                     $('.pagination', an[i]).css('visibility', 'hidden');\r
86                 } else {\r
87                     $('.pagination', an[i]).css('visibility', 'visible');\r
88                 }\r
89 \r
90                                 // Remove the middle elements\r
91                                 $('li:gt(0)', an[i]).filter(':not(:last)').remove();\r
92 \r
93                                 // Add the new list items and their event handlers\r
94                                 for ( j=iStart ; j<=iEnd ; j++ ) {\r
95                                         sClass = (j==oPaging.iPage+1) ? 'class="active"' : '';\r
96                                         $('<li '+sClass+'><a href="#">'+j+'</a></li>')\r
97                                                 .insertBefore( $('li:last', an[i])[0] )\r
98                                                 .bind('click', function (e) {\r
99                                                         e.preventDefault();\r
100                                                         oSettings._iDisplayStart = (parseInt($('a', this).text(),10)-1) * oPaging.iLength;\r
101                                                         fnDraw( oSettings );\r
102                                                 } );\r
103                                 }\r
104 \r
105                                 // Add / remove disabled classes from the static elements\r
106                                 if ( oPaging.iPage === 0 ) {\r
107                                         $('li:first', an[i]).addClass('disabled');\r
108                                 } else {\r
109                                         $('li:first', an[i]).removeClass('disabled');\r
110                                 }\r
111 \r
112                                 if ( oPaging.iPage === oPaging.iTotalPages-1 || oPaging.iTotalPages === 0 ) {\r
113                                         $('li:last', an[i]).addClass('disabled');\r
114                                 } else {\r
115                                         $('li:last', an[i]).removeClass('disabled');\r
116                                 }\r
117                         }\r
118                 }\r
119         }\r
120 } );\r
121 \r
122 /* Bootstrap style full number pagination control */\r
123 $.extend( $.fn.dataTableExt.oPagination, {\r
124     "bootstrap_full_number": {\r
125         "fnInit": function( oSettings, nPaging, fnDraw ) {\r
126             var oLang = oSettings.oLanguage.oPaginate;\r
127             var fnClickHandler = function ( e ) {\r
128                 e.preventDefault();\r
129                 if ( oSettings.oApi._fnPageChange(oSettings, e.data.action) ) {\r
130                     fnDraw( oSettings );\r
131                 }\r
132             };\r
133  \r
134             $(nPaging).append(\r
135                 '<ul class="pagination">' +\r
136                     '<li class="prev disabled"><a href="#" title="' + oLang.sFirst + '"><i class="fa fa-angle-double-left"></i></a></li>' +\r
137                     '<li class="prev disabled"><a href="#" title="' + oLang.sPrevious + '"><i class="fa fa-angle-left"></i></a></li>'+\r
138                     '<li class="next disabled"><a href="#" title="' + oLang.sNext + '"><i class="fa fa-angle-right"></i></a></li>' +\r
139                     '<li class="next disabled"><a href="#" title="' + oLang.sLast + '"><i class="fa fa-angle-double-right"></i></a></li>' +\r
140                 '</ul>'\r
141             );\r
142             var els = $('a', nPaging);\r
143             $(els[0]).bind('click.DT', { action: "first" }, fnClickHandler);\r
144             $(els[1]).bind( 'click.DT', { action: "previous" }, fnClickHandler );\r
145             $(els[2]).bind('click.DT', { action: "next" }, fnClickHandler);\r
146             $(els[3]).bind('click.DT', { action: "last" }, fnClickHandler);\r
147         },\r
148  \r
149         "fnUpdate": function ( oSettings, fnDraw ) {\r
150             var iListLength = 5;\r
151             var oPaging = oSettings.oInstance.fnPagingInfo();\r
152             var an = oSettings.aanFeatures.p;\r
153             var i, j, sClass, iStart, iEnd, iHalf=Math.floor(iListLength/2);\r
154  \r
155             if ( oPaging.iTotalPages < iListLength) {\r
156                 iStart = 1;\r
157                 iEnd = oPaging.iTotalPages;\r
158             }\r
159             else if ( oPaging.iPage <= iHalf ) {\r
160                 iStart = 1;\r
161                 iEnd = iListLength;\r
162             } else if ( oPaging.iPage >= (oPaging.iTotalPages-iHalf) ) {\r
163                 iStart = oPaging.iTotalPages - iListLength + 1;\r
164                 iEnd = oPaging.iTotalPages;\r
165             } else {\r
166                 iStart = oPaging.iPage - iHalf + 1;\r
167                 iEnd = iStart + iListLength - 1;\r
168             }\r
169  \r
170             \r
171  \r
172             for ( i=0, iLen=an.length ; i<iLen ; i++ ) {\r
173                 if (oPaging.iTotalPages < 0) {\r
174                     $('.pagination', an[i]).css('visibility', 'hidden');\r
175                 } else {\r
176                     $('.pagination', an[i]).css('visibility', 'visible');\r
177                 }\r
178 \r
179                 // Remove the middle elements\r
180                 $('li:gt(1)', an[i]).filter(':not(.next)').remove();\r
181  \r
182                 // Add the new list items and their event handlers\r
183                 for ( j=iStart ; j<=iEnd ; j++ ) {\r
184                  sClass = (j==oPaging.iPage+1) ? 'class="active"' : '';\r
185                     $('<li '+sClass+'><a href="#">'+j+'</a></li>')\r
186                         .insertBefore( $('li.next:first', an[i])[0] )\r
187                         .bind('click', function (e) {\r
188                             e.preventDefault();\r
189                             oSettings._iDisplayStart = (parseInt($('a', this).text(),10)-1) * oPaging.iLength;\r
190                             fnDraw( oSettings );\r
191                         } );\r
192                 }\r
193  \r
194                 // Add / remove disabled classes from the static elements\r
195                 if ( oPaging.iPage === 0 ) {\r
196                     $('li.prev', an[i]).addClass('disabled');\r
197                 } else {\r
198                     $('li.prev', an[i]).removeClass('disabled');\r
199                 }\r
200  \r
201                 if ( oPaging.iPage === oPaging.iTotalPages-1 || oPaging.iTotalPages === 0 ) {\r
202                     $('li.next', an[i]).addClass('disabled');\r
203                 } else {\r
204                     $('li.next', an[i]).removeClass('disabled');\r
205                 }\r
206             }\r
207         }\r
208     }\r
209 } );\r
210 \r
211 /* Bootstrap style full number pagination control */\r
212 $.extend( $.fn.dataTableExt.oPagination, {\r
213     "bootstrap_extended": {\r
214         "fnInit": function( oSettings, nPaging, fnDraw ) {\r
215             var oLang = oSettings.oLanguage.oPaginate;\r
216             var oPaging = oSettings.oInstance.fnPagingInfo();\r
217 \r
218             var fnClickHandler = function ( e ) {\r
219                 e.preventDefault();\r
220                 if ( oSettings.oApi._fnPageChange(oSettings, e.data.action) ) {\r
221                     fnDraw( oSettings );\r
222                 }\r
223             };\r
224  \r
225             $(nPaging).append(\r
226                 '<div class="pagination-panel"> ' + oLang.sPage + ' ' +\r
227                 '<a href="#" class="btn btn-sm default prev disabled" title="' + oLang.sPrevious + '"><i class="fa fa-angle-left"></i></a>' +\r
228                 '<input type="text" class="pagination-panel-input form-control input-mini input-inline input-sm" maxlenght="5" style="text-align:center; margin: 0 5px;">' + \r
229                 '<a href="#" class="btn btn-sm default next disabled" title="' + oLang.sNext + '"><i class="fa fa-angle-right"></i></a> ' +\r
230                 oLang.sPageOf + ' <span class="pagination-panel-total"></span>' +\r
231                 '</div>'\r
232             );\r
233 \r
234             var els = $('a', nPaging);\r
235             \r
236             $(els[0]).bind('click.DT', { action: "previous" }, fnClickHandler );\r
237             $(els[1]).bind('click.DT', { action: "next" }, fnClickHandler);\r
238 \r
239             $('.pagination-panel-input', nPaging).bind('change.DT', function(e) {\r
240                 var oPaging = oSettings.oInstance.fnPagingInfo();\r
241                 e.preventDefault();\r
242                 var page = parseInt($(this).val());\r
243                 if (page > 0 && page < oPaging.iTotalPages) {\r
244                         if ( oSettings.oApi._fnPageChange(oSettings, page-1) ) {\r
245                                fnDraw( oSettings );\r
246                             }\r
247                 } else {\r
248                                         $(this).val(oPaging.iPage + 1);\r
249                 }\r
250             });\r
251 \r
252             $('.pagination-panel-input', nPaging).bind('keypress.DT', function(e) {\r
253                 var oPaging = oSettings.oInstance.fnPagingInfo();\r
254                 if (e.which == 13) {\r
255                         var page = parseInt($(this).val());\r
256                         if (page > 0 && page < oSettings.oInstance.fnPagingInfo().iTotalPages) {\r
257                                 if ( oSettings.oApi._fnPageChange(oSettings, page-1) ) {\r
258                                     fnDraw( oSettings );\r
259                                 }\r
260                         } else {\r
261                                 $(this).val(oPaging.iPage + 1);\r
262                         }\r
263                         e.preventDefault();       \r
264                 }                       \r
265             });\r
266         },\r
267  \r
268         "fnUpdate": function ( oSettings, fnDraw ) {\r
269             var iListLength = 5;\r
270             var oPaging = oSettings.oInstance.fnPagingInfo();\r
271             var an = oSettings.aanFeatures.p;\r
272             var i, j, sClass, iStart, iEnd, iHalf=Math.floor(iListLength/2);\r
273  \r
274             if ( oPaging.iTotalPages < iListLength) {\r
275                 iStart = 1;\r
276                 iEnd = oPaging.iTotalPages;\r
277             }\r
278             else if ( oPaging.iPage <= iHalf ) {\r
279                 iStart = 1;\r
280                 iEnd = iListLength;\r
281             } else if ( oPaging.iPage >= (oPaging.iTotalPages-iHalf) ) {\r
282                 iStart = oPaging.iTotalPages - iListLength + 1;\r
283                 iEnd = oPaging.iTotalPages;\r
284             } else {\r
285                 iStart = oPaging.iPage - iHalf + 1;\r
286                 iEnd = iStart + iListLength - 1;\r
287             }\r
288 \r
289 \r
290             for ( i=0, iLen=an.length ; i<iLen ; i++ ) {\r
291                 var wrapper = $(an[i]).parents(".dataTables_wrapper");\r
292 \r
293                 if (oPaging.iTotalPages <= 0) {\r
294                     $('.pagination-panel, .dataTables_length', wrapper).hide();\r
295                 } else {\r
296                     $('.pagination-panel, .dataTables_length', wrapper).show();\r
297                 }\r
298  \r
299                 $('.pagination-panel-total', an[i]).html(oPaging.iTotalPages);\r
300                 $('.pagination-panel-input', an[i]).val(oPaging.iPage + 1);\r
301  \r
302                  // Remove the middle elements\r
303                 $('li:gt(1)', an[i]).filter(':not(.next)').remove();\r
304  \r
305                 // Add the new list items and their event handlers\r
306                 for ( j=iStart ; j<=iEnd ; j++ ) {\r
307                  sClass = (j==oPaging.iPage+1) ? 'class="active"' : '';\r
308                     $('<li '+sClass+'><a href="#">'+j+'</a></li>')\r
309                         .insertBefore( $('li.next:first', an[i])[0] )\r
310                         .bind('click', function (e) {\r
311                             e.preventDefault();\r
312                             oSettings._iDisplayStart = (parseInt($('a', this).text(),10)-1) * oPaging.iLength;\r
313                             fnDraw( oSettings );\r
314                         } );\r
315                 }\r
316  \r
317                 // Add / remove disabled classes from the static elements\r
318                 if ( oPaging.iPage === 0 ) {\r
319                     $('a.prev', an[i]).addClass('disabled');\r
320                 } else {\r
321                     $('a.prev', an[i]).removeClass('disabled');\r
322                 }\r
323  \r
324                 if ( oPaging.iPage === oPaging.iTotalPages-1 || oPaging.iTotalPages === 0 ) {\r
325                     $('a.next', an[i]).addClass('disabled');\r
326                 } else {\r
327                     $('a.next', an[i]).removeClass('disabled');\r
328                 }\r
329             }\r
330         }\r
331     }\r
332 } );\r
333 \r
334 /*\r
335  * TableTools Bootstrap compatibility\r
336  * Required TableTools 2.1+\r
337  */\r
338 if ( $.fn.DataTable.TableTools ) {\r
339         // Set the classes that TableTools uses to something suitable for Bootstrap\r
340         $.extend( true, $.fn.DataTable.TableTools.classes, {\r
341                 "container": "btn-group",\r
342                 "buttons": {\r
343                         "normal": "btn default",\r
344                         "disabled": "btn disabled"\r
345                 },\r
346                 "collection": {\r
347                         "container": "DTTT_dropdown dropdown-menu",\r
348                         "buttons": {\r
349                                 "normal": "",\r
350                                 "disabled": "disabled"\r
351                         }\r
352                 }\r
353         } );\r
354 \r
355         // Have the collection use a bootstrap compatible dropdown\r
356         $.extend( true, $.fn.DataTable.TableTools.DEFAULTS.oTags, {\r
357                 "collection": {\r
358                         "container": "ul",\r
359                         "button": "li",\r
360                         "liner": "a"\r
361                 }\r
362         } );\r
363 }