JavaScript

[JavaScript] 페이징

mart3n 2024. 10. 15. 15:05

 

const pageInfo = class{

    constructor( pageLength = 5, navLength = 10) {
        this.pageLength = pageLength;
        this.navLength = navLength;
    }

    getPageInfo(){
        this.totalPages = Math.ceil(this.total / this.pageLength);
        this.prevPage = this.currentPage - 1 > 0 ? this.currentPage > this.totalPages ? null : this.currentPage - 1 : null;
        this.nextPage = this.currentPage + 1 <= this.totalPages? this.currentPage + 1 : null;

        const pageList = [];
        const nav = Math.floor(this.currentPage / this.navLength); 
        const pageListLength = this.totalPages - (nav * this.navLength)  < this.navLength ?  this.totalPages - (nav * this.navLength) :this.navLength  ;
        this.startPage = nav == 0 ? 1 : (nav * this.navLength) + 1;
        this.endPage = this.startPage + pageListLength - 1;

        
        for(let i = this.startPage; i <= this.endPage; i++) {
            pageList.push(i);
        }

        this.pageList = pageList;

        return {
            totalPages: this.totalPages,
            currentPage: this.currentPage,
            startPage: this.startPage,
            endPage: this.endPage,
            pageList: this.pageList,
            prevPage: this.prevPage,
            nextPage: this.nextPage,
            isNot : this.pageList.length == 0 ,
        }
    }

    setPageInfo(total , currentPage = 1){
        this.total = total;
        this.currentPage = currentPage;
    }
}

 

pageLength = 한 개의 페이지 리스트 수 

navLength = 네비게이션 페이지 수

currentPage = 현재 페이지

startPage = 네비게이션 시작 페이지

endPage = 네이게이션 끝 페이지 

prevPage = 현재 페이지 기준 이전 페이지 

nextPage = 현재 페이지 기준 다음 페이지

pageList = 네비게이션 배열

isNot  = 네비게이션 비활성화

const paging1 = new pageInfo();
paging.setPageInfo(20);


const paging2 = new pageInfo();
paging.setPageInfo(200 , 14);