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"
+ }
+ });
+});