yarkov
@yarkov
Помог ответ? Отметь решением.

Как генерировать кнопки пагинации таблицы?

Имеем MongoDB и коллекцию в ней. Используется плагин mongoose-paginate для постраничной выборки.
Ответ приходит такого формата:
{
    docs:Array[10],  // массив документов с нужной страницы
    limit:10,  // количество элементов на странице
    page:1,  // номер страницы
    pages:9,  // количество страниц
    total:88  // всего записей соответствующих критериям выборки
}

Для генерации кнопок написал такой фильтр:
/*global angular*/
// /src/js/filters/range.filter.js

(function () {
	'use strict';

	angular
		.module('App')
		.filter('range', range);

	/**
	 * Фильтр Angular
	 *
	 * @constructor
	 * @name range
	 *
	 * @return {Function} Вернет фильтр для массива
	 */
	function range() {
		/**
		 * Фильтр создает из входного массива input массив чисел длиной total
		 *
		 * @method
		 *
		 * @param  {Array} input Пустой массив
		 * @param  {Number} total Количество страниц
		 * @param  {Number} current Текущая страница
		 * @param  {Number} max Количество кнопок для показа
		 *
		 * @return {Array} Массив с числовыми элементами длиной max
		 *
		 * @example
		 * <li ng-repeat="num in [] | range:88:2:5">{{num}}</li>
		 * // создаст массив для вывода кнопок переключения страницы
		 */
		return function(input, total, current, max) {
			console.log("total, current, max:", total, current, max);
			var total = parseInt(total);
			var current = parseInt(current);
			var max = parseInt(max);

			if(current > (total-max)){
				current = current-max;
			}

			for (var i=current; i<=(current+max); i++) {
				if(i <= total){
					input.push(i);
				}
			}

			return input;
		};
	}

	//range.$inject = [];

})();

Привожу скрины того что вышло:
f57076aca2394a3c87730e1e4aa96f1a.png58bf92257fb54aebb02e0c72015ee7a2.png6fb1397221434344bf98c8b08c42e0c6.png

Че то не могу придумать логику генерации. Поможете?
  • Вопрос задан
  • 439 просмотров
Решения вопроса 1
Пригласить эксперта
Ваш ответ на вопрос

Войдите, чтобы написать ответ

Похожие вопросы
22 нояб. 2024, в 22:26
3500 руб./за проект
22 нояб. 2024, в 21:47
3000 руб./за проект
22 нояб. 2024, в 21:44
50000 руб./за проект