59 lines
1.2 KiB
Go
59 lines
1.2 KiB
Go
// SPDX-FileCopyrightText: Copyright The Miniflux Authors. All rights reserved.
|
|
// SPDX-License-Identifier: Apache-2.0
|
|
|
|
package ui // import "miniflux.app/v2/internal/ui"
|
|
|
|
type pagination struct {
|
|
Route string
|
|
Total int
|
|
Offset int
|
|
ItemsPerPage int
|
|
ShowNext bool
|
|
ShowLast bool
|
|
ShowFirst bool
|
|
ShowPrev bool
|
|
NextOffset int
|
|
LastOffset int
|
|
PrevOffset int
|
|
FirstOffset int
|
|
SearchQuery string
|
|
}
|
|
|
|
func getPagination(route string, total, offset, nbItemsPerPage int) pagination {
|
|
nextOffset := 0
|
|
prevOffset := 0
|
|
|
|
firstOffset := 0
|
|
lastOffset := (total / nbItemsPerPage) * nbItemsPerPage
|
|
if lastOffset == total {
|
|
lastOffset -= nbItemsPerPage
|
|
}
|
|
|
|
showNext := (total - offset) > nbItemsPerPage
|
|
showPrev := offset > 0
|
|
showLast := showNext
|
|
showFirst := showPrev
|
|
|
|
if showNext {
|
|
nextOffset = offset + nbItemsPerPage
|
|
}
|
|
|
|
if showPrev {
|
|
prevOffset = offset - nbItemsPerPage
|
|
}
|
|
|
|
return pagination{
|
|
Route: route,
|
|
Total: total,
|
|
Offset: offset,
|
|
ItemsPerPage: nbItemsPerPage,
|
|
ShowNext: showNext,
|
|
ShowLast: showLast,
|
|
NextOffset: nextOffset,
|
|
LastOffset: lastOffset,
|
|
ShowPrev: showPrev,
|
|
ShowFirst: showFirst,
|
|
PrevOffset: prevOffset,
|
|
FirstOffset: firstOffset,
|
|
}
|
|
}
|