diff --git a/appview/pages/pages.go b/appview/pages/pages.go index ed01f8eb..5e28e593 100644 --- a/appview/pages/pages.go +++ b/appview/pages/pages.go @@ -1069,6 +1069,8 @@ type RepoPullsParams struct { Stacks map[string]models.Stack Pipelines map[string]models.Pipeline LabelDefs map[string]*models.LabelDefinition + Page pagination.Page + PullCount int } func (p *Pages) RepoPulls(w io.Writer, params RepoPullsParams) error { diff --git a/appview/pages/templates/repo/pulls/pulls.html b/appview/pages/templates/repo/pulls/pulls.html index 5eacda0d..c9dbf368 100644 --- a/appview/pages/templates/repo/pulls/pulls.html +++ b/appview/pages/templates/repo/pulls/pulls.html @@ -170,6 +170,14 @@ {{ end }} + {{if gt .PullCount .Page.Limit }} + {{ template "fragments/pagination" (dict + "Page" .Page + "TotalCount" .PullCount + "BasePath" (printf "/%s/pulls" .RepoInfo.FullName) + "QueryParams" (printf "state=%s&q=%s" .FilteringBy.String .FilterQuery) + ) }} + {{ end }} {{ end }} {{ define "stackedPullList" }} diff --git a/appview/pulls/pulls.go b/appview/pulls/pulls.go index 52df44a5..9bc86fc6 100644 --- a/appview/pulls/pulls.go +++ b/appview/pulls/pulls.go @@ -567,18 +567,26 @@ func (s *Pulls) RepoPulls(w http.ResponseWriter, r *http.Request) { state = models.PullMerged } + page := pagination.FromContext(r.Context()) + f, err := s.repoResolver.Resolve(r) if err != nil { log.Println("failed to get repo and knot", err) return } - keyword := params.Get("q") - - page := pagination.Page{ - Limit: 99999, + var totalPulls int + switch state { + case models.PullOpen: + totalPulls = f.RepoStats.PullCount.Open + case models.PullMerged: + totalPulls = f.RepoStats.PullCount.Merged + case models.PullClosed: + totalPulls = f.RepoStats.PullCount.Closed } + keyword := params.Get("q") + var pulls []*models.Pull searchOpts := models.PullSearchOptions{ Keyword: keyword, @@ -593,6 +601,7 @@ func (s *Pulls) RepoPulls(w http.ResponseWriter, r *http.Request) { l.Error("failed to search for pulls", "err", err) return } + totalPulls = int(res.Total) l.Debug("searched pulls with indexer", "count", len(res.Hits)) pulls, err = db.GetPulls( @@ -700,6 +709,8 @@ func (s *Pulls) RepoPulls(w http.ResponseWriter, r *http.Request) { FilterQuery: keyword, Stacks: stacks, Pipelines: m, + Page: page, + PullCount: totalPulls, }) } diff --git a/appview/pulls/router.go b/appview/pulls/router.go index 5a4641f3..c1a0fce4 100644 --- a/appview/pulls/router.go +++ b/appview/pulls/router.go @@ -9,7 +9,7 @@ import ( func (s *Pulls) Router(mw *middleware.Middleware) http.Handler { r := chi.NewRouter() - r.Get("/", s.RepoPulls) + r.With(middleware.Paginate).Get("/", s.RepoPulls) r.With(middleware.AuthMiddleware(s.oauth)).Route("/new", func(r chi.Router) { r.Get("/", s.NewPull) r.Get("/patch-upload", s.PatchUploadFragment)