blob: 6dbef6ad7ff2c6793d1b7631388963ebebe57333 (
plain)
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
|
package frontend
type PaginationRange struct {
Before []int
Current int
MaxPage int
After []int
}
// PaginationFromPage gibt die Seiten vor und nach der gegebenen Seite zurück. pageRange gibt an, wie viele Seiten vor und nach der aktuellen Page angezeigt werden soll.
func PaginationFromPage(pageRange, currentPage, maxPage int) PaginationRange {
var before []int
var after []int
startPage := currentPage - pageRange
endPage := currentPage + pageRange
if startPage < 1 {
endPage += -startPage + 1
startPage = 1
}
if endPage > maxPage {
startPage -= (endPage - maxPage)
endPage = maxPage
if startPage < 1 {
startPage = 1
}
}
for i := startPage; i < currentPage; i++ {
if i > maxPage {
break
}
before = append(before, i)
}
for i := currentPage + 1; i < endPage+1; i++ {
after = append(after, i)
}
return PaginationRange{
before,
currentPage,
maxPage,
after,
}
}
|