mirror of
https://github.com/gitbucket/gitbucket.git
synced 2025-11-08 22:45:51 +01:00
51 lines
1.2 KiB
Scala
51 lines
1.2 KiB
Scala
package view
|
|
|
|
/**
|
|
* Provides control information for pagination.
|
|
* This class is used by paginator.scala.html.
|
|
*
|
|
* @param page the current page number
|
|
* @param count the total record count
|
|
* @param limit the limit record count per one page
|
|
* @param width the width (number of cells) of the paginator
|
|
*/
|
|
case class Pagination(page: Int, count: Int, limit: Int, width: Int){
|
|
|
|
/**
|
|
* max page number
|
|
*/
|
|
val max = (count - 1) / limit + 1
|
|
|
|
/**
|
|
* whether to omit the left side
|
|
*/
|
|
val omitLeft = width / 2 < page
|
|
|
|
/**
|
|
* whether to omit the right side
|
|
*/
|
|
val omitRight = max - width / 2 > page
|
|
|
|
/**
|
|
* Returns true if given page number is visible.
|
|
*/
|
|
def visibleFor(i: Int): Boolean = {
|
|
if(i == 1 || i == max){
|
|
true
|
|
} else {
|
|
val leftRange = page - width / 2 + (if(omitLeft) 2 else 0)
|
|
val rightRange = page + width / 2 - (if(omitRight) 2 else 0)
|
|
|
|
val fixedRange = if(leftRange < 1){
|
|
(1, rightRange + (leftRange * -1) + 1)
|
|
} else if(rightRange > max){
|
|
(leftRange - (rightRange - max), max)
|
|
} else {
|
|
(leftRange, rightRange)
|
|
}
|
|
|
|
(i >= fixedRange._1 && i <= fixedRange._2)
|
|
}
|
|
}
|
|
}
|