X-Git-Url: http://source.jalview.org/gitweb/?a=blobdiff_plain;f=webapp%2Fresources%2Fjs%2FDT_bootstrap.js;fp=webapp%2Fresources%2Fjs%2FDT_bootstrap.js;h=0aec924c1eeada976b05ffcf7d3528bc72b158c2;hb=9bb6ee99ca7f738fac1087190b5481b8fe6e8d9f;hp=0000000000000000000000000000000000000000;hpb=2e3f6b76be585306f1003d849831840c0adb3360;p=proteocache.git diff --git a/webapp/resources/js/DT_bootstrap.js b/webapp/resources/js/DT_bootstrap.js new file mode 100644 index 0000000..0aec924 --- /dev/null +++ b/webapp/resources/js/DT_bootstrap.js @@ -0,0 +1,168 @@ +/* Set the defaults for DataTables initialisation */ +$ + .extend( + true, + $.fn.dataTable.defaults, + { + "sDom" : "<'row-fluid'<'span6'l><'span6'f>r>t<'row-fluid'<'span6'i><'span6'p>>", + "sPaginationType" : "bootstrap", + "oLanguage" : { + "sLengthMenu" : "_MENU_ records per page" + } + }); + +/* Default class modification */ +$.extend($.fn.dataTableExt.oStdClasses, { + "sWrapper" : "dataTables_wrapper form-inline" +}); + +/* API method to get paging information */ +$.fn.dataTableExt.oApi.fnPagingInfo = function(oSettings) { + return { + "iStart" : oSettings._iDisplayStart, + "iEnd" : oSettings.fnDisplayEnd(), + "iLength" : oSettings._iDisplayLength, + "iTotal" : oSettings.fnRecordsTotal(), + "iFilteredTotal" : oSettings.fnRecordsDisplay(), + "iPage" : oSettings._iDisplayLength === -1 ? 0 : Math + .ceil(oSettings._iDisplayStart / oSettings._iDisplayLength), + "iTotalPages" : oSettings._iDisplayLength === -1 ? 0 : Math + .ceil(oSettings.fnRecordsDisplay() / oSettings._iDisplayLength) + }; +}; + +/* Bootstrap style pagination control */ +$.extend($.fn.dataTableExt.oPagination, { + "bootstrap" : { + "fnInit" : function(oSettings, nPaging, fnDraw) { + var oLang = oSettings.oLanguage.oPaginate; + var fnClickHandler = function(e) { + e.preventDefault(); + if (oSettings.oApi._fnPageChange(oSettings, e.data.action)) { + fnDraw(oSettings); + } + }; + + /* original code!!! + * $(nPaging).addClass('pagination').append( + * ''); + */ + $(nPaging).addClass('pagination').append( + '← ' + oLang.sPrevious + '' + + '   ' + oLang.sNext + ' → '); + var els = $('a', nPaging); + $(els[0]).bind('click.DT', { + action : "previous" + }, fnClickHandler); + $(els[1]).bind('click.DT', { + action : "next" + }, fnClickHandler); + }, + + "fnUpdate" : function(oSettings, fnDraw) { + //var iListLength = 5; // original code!!! + var iListLength = 0; + var oPaging = oSettings.oInstance.fnPagingInfo(); + var an = oSettings.aanFeatures.p; + var i, ien, j, sClass, iStart, iEnd, iHalf = Math.floor(iListLength / 2); + + if (oPaging.iTotalPages < iListLength) { + iStart = 1; + iEnd = oPaging.iTotalPages; + } else if (oPaging.iPage <= iHalf) { + iStart = 1; + iEnd = iListLength; + } else if (oPaging.iPage >= (oPaging.iTotalPages - iHalf)) { + iStart = oPaging.iTotalPages - iListLength + 1; + iEnd = oPaging.iTotalPages; + } else { + iStart = oPaging.iPage - iHalf + 1; + iEnd = iStart + iListLength - 1; + } + + for (i = 0, ien = an.length; i < ien; i++) { + // Remove the middle elements + $('li:gt(0)', an[i]).filter(':not(:last)').remove(); + + // Add the new list items and their event handlers + for (j = iStart; j <= iEnd; j++) { + sClass = (j == oPaging.iPage + 1) ? 'class="active"' : ''; + $('
  • ' + j + '
  • ') + .insertBefore($('li:last', an[i])[0]).bind( + 'click', + function(e) { + e.preventDefault(); + oSettings._iDisplayStart = (parseInt($( + 'a', this).text(), 10) - 1) + * oPaging.iLength; + fnDraw(oSettings); + }); + } + + // Add / remove disabled classes from the static elements + if (oPaging.iPage === 0) { + $('li:first', an[i]).addClass('disabled'); + } else { + $('li:first', an[i]).removeClass('disabled'); + } + + if (oPaging.iPage === oPaging.iTotalPages - 1 + || oPaging.iTotalPages === 0) { + $('li:last', an[i]).addClass('disabled'); + } else { + $('li:last', an[i]).removeClass('disabled'); + } + } + } + } +}); + +/* + * TableTools Bootstrap compatibility Required TableTools 2.1+ + */ +if ($.fn.DataTable.TableTools) { + // Set the classes that TableTools uses to something suitable for Bootstrap + $.extend(true, $.fn.DataTable.TableTools.classes, { + "container" : "DTTT btn-group", + "buttons" : { + "normal" : "btn", + "disabled" : "disabled" + }, + "collection" : { + "container" : "DTTT_dropdown dropdown-menu", + "buttons" : { + "normal" : "", + "disabled" : "disabled" + } + }, + "print" : { + "info" : "DTTT_print_info modal" + }, + "select" : { + "row" : "active" + } + }); + + // Have the collection use a bootstrap compatible dropdown + $.extend(true, $.fn.DataTable.TableTools.DEFAULTS.oTags, { + "collection" : { + "container" : "ul", + "button" : "li", + "liner" : "a" + } + }); +} + +/* Table initialisation */ +$(document).ready(function() { + $('#example').dataTable({ + "sDom" : "<'row'<'span6'l><'span6'f>r>t<'row'<'span6'i><'span6'p>>", + "sPaginationType" : "bootstrap", + "oLanguage" : { + "sLengthMenu" : "_MENU_ records per page" + } + }); +});