A
A
Alexey Yarkov2016-03-26 09:49:07
JavaScript
Alexey Yarkov, 2016-03-26 09:49:07

How to generate table pagination buttons?

We have MongoDB and a collection in it. The mongoose-paginate plugin is used for pagination.
The response comes in this format:

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

To generate buttons, I wrote the following filter:
/*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 = [];

})();

Here are screenshots of what happened:
f57076aca2394a3c87730e1e4aa96f1a.png58bf92257fb54aebb02e0c72015ee7a2.png6fb1397221434344bf98c8b08c42e0c6.png
I can’t think of a generation logic. Can you help?

Answer the question

In order to leave comments, you need to log in

1 answer(s)
B
bromzh, 2016-03-26
@yarkov

https://angular-ui.github.io/bootstrap/#/pagination

Didn't find what you were looking for?

Ask your question

Ask a Question

731 491 924 answers to any question