Fixed pager page and pages value when no items present.

This commit is contained in:
mikestefanello 2024-09-13 09:16:20 -04:00
parent 5a6cec5294
commit e4370e8ba0
2 changed files with 13 additions and 2 deletions

View file

@ -34,6 +34,7 @@ type Pager struct {
func NewPager(ctx echo.Context, itemsPerPage int) Pager { func NewPager(ctx echo.Context, itemsPerPage int) Pager {
p := Pager{ p := Pager{
ItemsPerPage: itemsPerPage, ItemsPerPage: itemsPerPage,
Pages: 1,
Page: 1, Page: 1,
} }
@ -53,7 +54,12 @@ func NewPager(ctx echo.Context, itemsPerPage int) Pager {
// This should be used rather than setting either items or pages directly. // This should be used rather than setting either items or pages directly.
func (p *Pager) SetItems(items int) { func (p *Pager) SetItems(items int) {
p.Items = items p.Items = items
p.Pages = int(math.Ceil(float64(items) / float64(p.ItemsPerPage)))
if items > 0 {
p.Pages = int(math.Ceil(float64(items) / float64(p.ItemsPerPage)))
} else {
p.Pages = 1
}
if p.Page > p.Pages { if p.Page > p.Pages {
p.Page = p.Pages p.Page = p.Pages

View file

@ -17,7 +17,7 @@ func TestNewPager(t *testing.T) {
assert.Equal(t, 10, pgr.ItemsPerPage) assert.Equal(t, 10, pgr.ItemsPerPage)
assert.Equal(t, 1, pgr.Page) assert.Equal(t, 1, pgr.Page)
assert.Equal(t, 0, pgr.Items) assert.Equal(t, 0, pgr.Items)
assert.Equal(t, 0, pgr.Pages) assert.Equal(t, 1, pgr.Pages)
ctx, _ = tests.NewContext(e, fmt.Sprintf("/abc?%s=%d", PageQueryKey, 2)) ctx, _ = tests.NewContext(e, fmt.Sprintf("/abc?%s=%d", PageQueryKey, 2))
pgr = NewPager(ctx, 10) pgr = NewPager(ctx, 10)
@ -34,6 +34,11 @@ func TestPager_SetItems(t *testing.T) {
pgr.SetItems(100) pgr.SetItems(100)
assert.Equal(t, 100, pgr.Items) assert.Equal(t, 100, pgr.Items)
assert.Equal(t, 5, pgr.Pages) assert.Equal(t, 5, pgr.Pages)
pgr.SetItems(0)
assert.Equal(t, 0, pgr.Items)
assert.Equal(t, 1, pgr.Pages)
assert.Equal(t, 1, pgr.Page)
} }
func TestPager_IsBeginning(t *testing.T) { func TestPager_IsBeginning(t *testing.T) {