blob: 7c35870eed6044ef1ce81c6f8de2d0f7c06750c8 [file] [log] [blame]
app.directive('paginate', function() {
return {
restrict: 'E',
templateUrl: 'templates/directives/paginate.html',
scope: { currentPage: '=', numberOfPages: '='},
controller: function($scope) {
function setPage(currentPage, numberOfPages) {
$scope.pages = [];
if (numberOfPages < 8) {
for (var i = 0;i< numberOfPages;i++){
$scope.pages.push({text:i, cls:i == currentPage ? 'active' : null})
}
} else if (currentPage > 3 && currentPage < (numberOfPages - 4)) {
// console.log('A')
$scope.pages = $scope.pages.concat([{text:'0', cls:null},{text:'...', cls:'disabled'}]);
for (var i = currentPage -2;i<= currentPage+2;i++){
$scope.pages.push({text:i, cls:i == currentPage ? 'active' : null})
}
$scope.pages = $scope.pages.concat([{text:'...', cls:'disabled'},{text:numberOfPages ? numberOfPages-1 : '...', cls:null}]);
} else
if (currentPage < 4) {
// console.log('B')
for (var i = 0;i< 6;i++){
$scope.pages.push({text: i, cls: i == currentPage ? 'active' : null})
}
$scope.pages = $scope.pages.concat([{text:'...', cls:'disabled'},{text:numberOfPages ? numberOfPages-1 : '...', cls:null}]);
} else
if (currentPage >= numberOfPages - 4) {
// console.log('C')
$scope.pages = $scope.pages.concat([{text:'0', cls:null},{text:'...', cls:'disabled'}]);
for (var i = numberOfPages - 6;i < numberOfPages;i++){
$scope.pages.push({text: i, cls: i == currentPage ? 'active' : null})
}
}
}
$scope.$watch('numberOfPages', function(currentPage){
setPage($scope.currentPage, $scope.numberOfPages);
})
$scope.$watch('currentPage', function(currentPage){
setPage($scope.currentPage, $scope.numberOfPages);
});
}
}
})