var paginationApp = angular.module('paginationApp', ["commonsApp"]); paginationApp.controller('paginationController',['$scope', function($scope) { }]); paginationApp.directive('tablePagination',['Constants', function(Constants) { return { restrict: "E", templateUrl: Constants.cdnFullPath + 'scripts/angular/commons/modules/pagination/pagination.html', replace: true, scope: { startRow:'=', endRow : '=', totalRows : '=', currentPage : '=', lastPage : '=', pageSizeList : '=', pageSize : '=', change : '=' }, link:function(scope, iElm, attrs) { scope.getFirstPage = function() { if(scope.startRow == 1) { return; } scope.startRow = 1; scope.currentPage = 1; scope.endRow = scope.startRow + scope.pageSize - 1; scope.change = true; }; scope.getPreviousPage = function() { if (scope.startRow <= 1) { return; } if(scope.currentPage != 1) { scope.currentPage--; } scope.startRow = scope.pageSize * (scope.currentPage - 1) + 1; scope.endRow = scope.startRow + scope.pageSize - 1; scope.change = true; }; scope.getNextPage = function() { if (scope.endRow >= scope.totalRows) { return; } scope.currentPage++; scope.startRow = scope.pageSize * (scope.currentPage - 1) + 1; scope.endRow = scope.startRow + scope.pageSize - 1; scope.change = true; }; scope.getLastPage = function() { if(scope.endRow >= scope.totalRows) { return; } scope.currentPage = Math.floor(scope.totalRows/scope.pageSize); if(scope.totalRows % scope.pageSize > 0 ) { scope.currentPage += 1; } scope.startRow = scope.pageSize * (scope.currentPage - 1) + 1; scope.endRow = scope.totalRows; scope.change = true; }; scope.gotoPage = function(event) { if(event.keyCode != 13) { return; } else if(!(!isNaN(scope.currentPageTemp) && parseInt(Number(scope.currentPageTemp)) && scope.currentPageTemp <= scope.lastPage)) { scope.currentPageTemp = scope.currentPage; return; } else { scope.currentPage = scope.currentPageTemp; scope.startRow = (scope.currentPage - 1) * scope.pageSize + 1; scope.endRow = scope.startRow + scope.pageSize - 1; if(scope.endRow > scope.totalRows) { scope.endRow = scope.totalRows; } scope.change = true; } }; scope.$watch('pageSize', function(newValue, oldValue) { if(isNaN(newValue) || isNaN(oldValue)) { return; } if (scope.pageSize >= scope.totalRows) { scope.startRow = 1; } else { scope.startRow = Math.floor((scope.startRow/scope.pageSize)) * scope.pageSize + 1; } scope.endRow = scope.startRow + scope.pageSize - 1; scope.currentPage = Math.floor(scope.startRow / scope.pageSize)+1; scope.lastPage = Math.ceil(scope.totalRows/scope.pageSize); scope.change = true; }); } }; }]);