src/pyams_skin/resources/js/myams-dataTables.js
changeset 30 a4a95e733cac
parent 0 bb4aabe07487
child 97 8337e31c9edb
--- a/src/pyams_skin/resources/js/myams-dataTables.js	Wed Mar 04 14:09:12 2015 +0100
+++ b/src/pyams_skin/resources/js/myams-dataTables.js	Wed Mar 11 12:16:52 2015 +0100
@@ -218,6 +218,83 @@
 	} );
 
 
+	/**
+	 * Bootstrap style pagination control with only previous/next buttons
+	 */
+	$.extend($.fn.dataTableExt.oPagination, {
+		"bootstrap_prevnext": {
+			"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);
+				};
+
+				$(nPaging).append(
+					'<ul class="pagination">' +
+						'<li class="first disabled"><a href="#"><i class="fa fa-fw fa-fast-backward"></i></a></li>' +
+						'<li class="prev disabled"><a href="#"><i class="fa fa-fw fa-step-backward"></i></a></li>' +
+						'<li class="next disabled"><a href="#"><i class="fa fa-fw fa-step-forward"></i></a></li>' +
+						'<li class="last disabled"><a href="#"><i class="fa fa-fw fa-fast-forward"></i></a></li>' +
+					'</ul>'
+				);
+				var els = $('a', nPaging);
+				$(els[0]).on('click.DT', { action: "first" }, fnClickHandler);
+				$(els[1]).on('click.DT', { action: "previous" }, fnClickHandler);
+				$(els[2]).on('click.DT', { action: "next" }, fnClickHandler);
+				$(els[3]).on('click.DT', { action: "last" }, fnClickHandler);
+			},
+
+			"fnUpdate": function (oSettings, fnDraw) {
+				var iListLength = 5;
+				var oPaging = oSettings.oInstance.fnPagingInfo();
+				var an = oSettings.aanFeatures.p;
+				var i,
+					j,
+					sClass,
+					iStart,
+					iEnd,
+					iLen,
+					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, iLen=an.length ; i<iLen ; i++) {
+					// Add / remove disabled classes from the static elements
+					if (oPaging.iPage === 0) {
+						$('li.first', an[i]).addClass('disabled');
+						$('li.prev', an[i]).addClass('disabled');
+					} else {
+						$('li.prev', an[i]).removeClass('disabled');
+						$('li.first', an[i]).removeClass('disabled');
+					}
+
+					if (oPaging.iPage === oPaging.iTotalPages-1 || oPaging.iTotalPages === 0) {
+						$('li.last', an[i]).addClass('disabled');
+						$('li.next', an[i]).addClass('disabled');
+					} else {
+						$('li.next', an[i]).removeClass('disabled');
+						$('li.last', an[i]).removeClass('disabled');
+					}
+				}
+			}
+		}
+	});
+
+
 	/*
 	 * TableTools Bootstrap compatibility
 	 * Required TableTools 2.1+