mirror of
https://github.com/gitbucket/gitbucket.git
synced 2025-11-08 06:25:51 +01:00
Improve issue pagination.
This commit is contained in:
50
src/main/scala/view/Pagination.scala
Normal file
50
src/main/scala/view/Pagination.scala
Normal file
@@ -0,0 +1,50 @@
|
||||
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)
|
||||
}
|
||||
}
|
||||
}
|
||||
Reference in New Issue
Block a user