README.md

Универсальный пагинатор на чистом JavaScript. Версия 1.1.5 Пагинация зависит от двух параметров: от количества элементов на странице (tableSize) и от общего колличества элементов (totalItems). Следовательно пагинатор необходимо упаковать в отдельный и независимый модуль. Для независимости упаковки требуется еще условиться о формате callback функции, которая отработает при выборе занумерованного-таба:

/**  
 * Обработка активации занумерованного таба - функцию извне определяет пользователь     
 * @param {Type} callbackParams - пользовательские параметры,
 * callbackParams - этот объект передается отдельно от callback и затем происходит их совместный вызов.
 */
callback(callbackParams) {}

Получаем - три входных параметра - tableSize, totalItems и пользовательская функция callback(callbackParams)
позволяют прицепить этот пагинатор где вздумается. А кроме того функция rebuild() налету переделает paginator, если вы поменяете его настройки.
Всего этого достаточно чтобы закапсулировать пагинатор в независимый модуль.

Сейчас в модуле реализовано два пагинатора с поблочной перемоткой плюс пошаговый пагинатор. Поблочная перемотка - это перемотка сразу по несколько табов при нажатии на кнопки next или previous (пореже дергает сервер).
Можно также активировать кнопку Go (еще реже дергает сервер).
Естественно остальные чудесные пагинаторы с кучей красивых эффектов вы можете реализовать самостоятельно - достаточно форкнуть проект.

Пример создания и использования пагинатора:

    let testTable = new TestsTable("one-ellipsis-test-table");

    testTable.paginator = PaginatorFactory.createOneEllipsisBlockPaginator({
        containerId: "one-ellipsis-pagination",            
        totalItems: testTable.getDataMap().size,
        callback: testTable.callbackForPaginator,
        callbackParams: {table: testTable},
        tableSize: 5, /*необязательный параметр*/
        maxVisibleTabs: 5, /*необязательный параметр*/
        enableGo: true /*необязательный параметр*/});

    class TestsTable {

        callbackForPaginator(callbackParams) {
            let linkToPaginator = this; //this - здесь получается это указатель на Paginator

            console.log("tabNumber=" + linkToPaginator.currentTab + " rangeStart=" + linkToPaginator.rangeStart() +
                    " rangeEnd=" + linkToPaginator.rangeEnd() + " tableSize=" + linkToPaginator.tableSize +
                    " totalItems=" + linkToPaginator.totalItems);
            callbackParams.table.refresh(linkToPaginator.rangeStart(), linkToPaginator.rangeEnd());
        }

        refresh(rangeStart, rangeEnd) { }
    }  

Лицензия: свободная.

Описание

js-paginator инкапсулированный в отдельный модуль на чистом JavaScript

Конвейеры
0 успешных
0 с ошибкой