1 angular.module('ui.bootstrap.pagination', [])
3 .directive('pagination', function() {
13 templateUrl: 'template/pagination/pagination.html',
15 link: function(scope) {
16 scope.$watch('numPages + currentPage + maxSize', function() {
19 //set the default maxSize to numPages
20 var maxSize = ( scope.maxSize && scope.maxSize < scope.numPages ) ? scope.maxSize : scope.numPages;
21 var startPage = scope.currentPage - Math.floor(maxSize/2);
23 //adjust the startPage within boundary
27 if ((startPage + maxSize - 1) > scope.numPages) {
28 startPage = startPage - ((startPage + maxSize - 1) - scope.numPages );
31 for(var i=0; i < maxSize && i < scope.numPages ;i++) {
32 scope.pages.push(startPage + i);
34 if ( scope.currentPage > scope.numPages ) {
35 scope.selectPage(scope.numPages);
38 scope.noPrevious = function() {
39 return scope.currentPage === 1;
41 scope.noNext = function() {
42 return scope.currentPage === scope.numPages;
44 scope.isActive = function(page) {
45 return scope.currentPage === page;
48 scope.selectPage = function(page) {
49 if ( ! scope.isActive(page) ) {
50 scope.currentPage = page;
51 scope.onSelectPage({ page: page });
55 scope.selectPrevious = function() {
56 if ( !scope.noPrevious() ) {
57 scope.selectPage(scope.currentPage-1);
60 scope.selectNext = function() {
61 if ( !scope.noNext() ) {
62 scope.selectPage(scope.currentPage+1);