Paging script

sundays·2024년 1월 12일
0

페이징 알고리즘을 구현 해 보았다. 틀리는 내용이 있으면 꼭 지적 부탁드립니다.

  • 현재 페이지(page)

  • 전체 컨텐츠 수(totalRows)

  • 한페이지 당 보여질 컨텐츠 수(perPage)

  • 전체 페이지(totalPage)

    • totalPage = totalRows % perPage > 0 ? (totalRows / perPage) + 1 : totalRows / perPage
    • 한페이지에 출력될 개수보다 조금 더 많은 경우 한페이지를 더 추가 해주는 것이다
  • 다음 페이지(nextPage)

    • nextPage = Math.min(totalPage, page + 1)
    • 전체 페이지(totalPage) 를 넘을 수가 없다
  • 이전 페이지(prevPage)

    • prevPage = Math.max(1, page - 1)
    • 1페이지보다 작을 수 없다
  • 다음 10페이지(next10Pages)

    • next10Pages = Math.min(totalPage, page + 10)
  • 이전 10페이지(prev10Pages)

    • prev10Pages = Math.max(1, page - 10)
  • 한 페이지에 보여질 10개의 페이지 인덱스 [startPage...endPage]

    • startPage = (page / 10) * 10 + 1
    • endPage = Math.min(startPage + 9, totalPage)
  • limit [1..10] 범위를 쿼리 [fromIndex..toIndex]

    • fromIndex = (page - 1) * perPage
    • toIndex = Math.min(totalRows, fromIndex + perPage)
profile
develop life

0개의 댓글