Scala - Algoritimo de paginação

Identificador: 11974
Autor: Ricardo Bocchi   segunda-feira, Dia 1 de maio de 2023, às 03:04:57 horas
Revisado Por: Ricardo Bocchi   sexta-feira, Dia 10 de fevereiro de 2023, às 19:36:26 horas
Visualização: Todos

Pontos: 0   Acessos: 1743




val totalPages = math.ceil(totalCount.toDouble / totalPerPage).toInt
val maxPages = math.min(5, totalPages)
val middle = maxPages / 2
val baseMin = math.max(currPage - middle, 0)
val baseMax = math.min(baseMin + maxPages, totalPages)
val rest = maxPages - (baseMax - baseMin)
val min = math.min(baseMin - rest, baseMin)
val max = math.min(baseMax + rest, totalPages)
val (nextIdx, prevIdx) = (currPage + 1, currPage - 1)
val (hasPrev, hasNext) = (prevIdx >= 0, nextIdx < totalPages)
val pages = (min to max).toSeq