blob: 41389631ecdf6c1211f9db0dc5cce00a2b524213 (
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
50
51
52
53
54
55
56
57
58
59
60
61
62
|
package frontend
type PaginationRange struct {
Before []int
Current int
MaxPage int
After []int
}
type Notification struct {
Type string `json:"type"`
Message string `json:"message"`
}
func NewErrorNotification(message string) Notification {
return Notification{"error", message}
}
func NewNotification(message string) Notification {
return Notification{"info", message}
}
// 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,
}
}
|