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, } }