aboutsummaryrefslogtreecommitdiff
path: root/server/ui/controller/pagination.go
diff options
context:
space:
mode:
Diffstat (limited to 'server/ui/controller/pagination.go')
-rw-r--r--server/ui/controller/pagination.go46
1 files changed, 46 insertions, 0 deletions
diff --git a/server/ui/controller/pagination.go b/server/ui/controller/pagination.go
new file mode 100644
index 00000000..b649d900
--- /dev/null
+++ b/server/ui/controller/pagination.go
@@ -0,0 +1,46 @@
+// Copyright 2017 Frédéric Guillot. All rights reserved.
+// Use of this source code is governed by the Apache 2.0
+// license that can be found in the LICENSE file.
+
+package controller
+
+const (
+ NbItemsPerPage = 100
+)
+
+type Pagination struct {
+ Route string
+ Total int
+ Offset int
+ ItemsPerPage int
+ ShowNext bool
+ ShowPrev bool
+ NextOffset int
+ PrevOffset int
+}
+
+func (c *Controller) getPagination(route string, total, offset int) Pagination {
+ nextOffset := 0
+ prevOffset := 0
+ showNext := (total - offset) > NbItemsPerPage
+ showPrev := offset > 0
+
+ if showNext {
+ nextOffset = offset + NbItemsPerPage
+ }
+
+ if showPrev {
+ prevOffset = offset - NbItemsPerPage
+ }
+
+ return Pagination{
+ Route: route,
+ Total: total,
+ Offset: offset,
+ ItemsPerPage: NbItemsPerPage,
+ ShowNext: showNext,
+ NextOffset: nextOffset,
+ ShowPrev: showPrev,
+ PrevOffset: prevOffset,
+ }
+}