From 9ab495abeec5e316adc2da4ac1afbd16d35826df Mon Sep 17 00:00:00 2001 From: jan Date: Wed, 30 Dec 2015 09:27:55 +0100 Subject: krasse paginationberechnung (patent pending) diff --git a/frontend/utility.go b/frontend/utility.go new file mode 100644 index 0000000..28e7db1 --- /dev/null +++ b/frontend/utility.go @@ -0,0 +1,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 + 1 + + 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; i++ { + after = append(after, i) + } + + return PaginationRange{ + before, + currentPage, + maxPage, + after, + } +} diff --git a/main.go b/main.go index 04db8d6..850f0f9 100644 --- a/main.go +++ b/main.go @@ -44,6 +44,10 @@ func main() { log.Println("database connection established") + for i := 0; i < 10; i++ { + log.Println(frontend.PaginationFromPage(10, i, 3)) + } + renderer := frontend.New("views") login := charakterin.New(db) login.UseRenderer(renderer) diff --git a/modules/tags/tags.go b/modules/tags/tags.go index 527d1d9..650fa4e 100644 --- a/modules/tags/tags.go +++ b/modules/tags/tags.go @@ -122,7 +122,6 @@ func (m *Module) viewTagPage(w http.ResponseWriter, r *http.Request, p httproute data["user"] = user data["tag"] = tag data["cards"] = cards - data["currentPage"] = pageNumber - data["pageCount"] = pageCount + data["pagination"] = frontend.PaginationFromPage(3, pageNumber, pageCount) m.g.Renderer.RenderPage("tag", w, data) } diff --git a/views/tag.html b/views/tag.html index 3e89a7b..bc21fc3 100644 --- a/views/tag.html +++ b/views/tag.html @@ -1,4 +1,5 @@ {{ define "tag" }} +{{ $tagBaseURI := printf "/tag/%s/" .tag }} {{ template "materialize" }} @@ -17,9 +18,15 @@ {{ end }} -- cgit v0.10.1