<div ng-if="ctrl.items.length == 0">Нет данных. <span ng-if="search.inUse">Измените параметры поиска.</span></div>
<div class="row" ng-if="pagination.lastPage > 1">
<div class="col-md-5">
<div>Страница <span ng-bind="pagination.page"></span> из <span ng-bind="pagination.lastPage"></span></div>
</div>
<div class="col-md-7">
<div class="btn-group pull-right">
<button type="button" class="btn btn-default" ng-class="{disabled : pagination.page == 1}" ng-click="pagination.getItems(1)">«</button>
<button type="button" class="btn btn-default" ng-class="{disabled : pagination.page == 1}" ng-click="pagination.getItems(pagination.page - 1)">‹</button>
<button type="button" class="btn btn-default" ng-repeat="page in pagination.range" ng-bind="::page" ng-class="{active : pagination.page == page}" ng-click="pagination.getItems(page)"></button>
<button type="button" class="btn btn-default" ng-class="{disabled : pagination.page == pagination.lastPage}" ng-click="pagination.getItems(pagination.page + 1)">›</button>
<button type="button" class="btn btn-default" ng-class="{disabled : pagination.page == pagination.lastPage}" ng-click="pagination.getItems(pagination.lastPage)">»</button>
</div>
</div>
</div>
module.factory('Pagination', function () {
var Pagination = {
page: 1,
pageToOpen: 1,
lastPage: 1,
range: [1],
maxRange: 5,
callback: function () {}
};
Pagination.reset = function (data) {
Pagination.page = data.current_page;
Pagination.lastPage = data.last_page;
var pages = [],
rangeStart = Pagination.page - 2,
rangeFinish = rangeStart + Pagination.maxRange - 1;
if (rangeStart < 1) {
rangeFinish += 1 - rangeStart;
rangeStart = 1;
} else if (rangeFinish > Pagination.lastPage) {
rangeStart -= rangeFinish - Pagination.lastPage;
rangeFinish = Pagination.lastPage;
}
if (rangeStart < 1) {
rangeStart = 1;
}
if (rangeFinish > Pagination.lastPage) {
rangeFinish = Pagination.lastPage;
}
for (var i = rangeStart; i <= rangeFinish; i++) {
pages.push(i);
}
Pagination.range = pages;
return data.data;
};
Pagination.getItems = function (page) {
if (page < 1 || page > Pagination.lastPage || page == Pagination.page) {
return false;
}
Pagination.pageToOpen = page;
Pagination.callback();
Pagination.pageToOpen = 1;
resizeBar.resizebar('down');
};
return Pagination;
});
// Получение массива записей
$scope.getItems = function () {
AccrualResource.get({
page: Pagination.pageToOpen,
search: Search.params,
order_column: Ordering.column,
order_desc: Ordering.desc,
select: Select.enabled,
select_id: !Select.shown ? Select.selectId : null
}, function(response) {
vm.currentItem = angular.copy(emptyItem);
vm.items = Pagination.reset(response);
if (!Select.shown) {
Select.shown = true;
for (var i in vm.items) {
var currentValue = vm.items[i][Ordering.column.split('.').pop()];
if (currentValue !== undefined && currentValue == Select.selectId)
vm.edit(vm.items[i])
}
}
}, function() {
notify.error('Неизвестная ошибка, перезагрузите страницу.');
});
};
// Инициализация колбэков
Pagination.callback = $scope.getItems;