diff --git a/src/main/scala/app/PullRequestsController.scala b/src/main/scala/app/PullRequestsController.scala index d302fa1..4598669 100644 --- a/src/main/scala/app/PullRequestsController.scala +++ b/src/main/scala/app/PullRequestsController.scala @@ -386,10 +386,12 @@ pulls.html.list( searchIssue(condition, filterUser, true, (page - 1) * PullRequestLimit, PullRequestLimit, owner -> repoName), + getPullRequestCount(condition.state == "closed", Some(owner, repoName)), userName, page, countIssue(condition.copy(state = "open"), filterUser, true, owner -> repoName), countIssue(condition.copy(state = "closed"), filterUser, true, owner -> repoName), + countIssue(condition, Map.empty, true, owner -> repoName), condition, repository, hasWritePermission(owner, repoName, context.loginAccount)) diff --git a/src/main/scala/service/PullRequestService.scala b/src/main/scala/service/PullRequestService.scala index 5a532d3..1ca6c0b 100644 --- a/src/main/scala/service/PullRequestService.scala +++ b/src/main/scala/service/PullRequestService.scala @@ -6,6 +6,8 @@ import model._ trait PullRequestService { self: IssuesService => + import PullRequestService._ +// implicit val getPullRequestCount = GetResult(r => PullRequestCount(r.<<, r.<<)) def getPullRequest(owner: String, repository: String, issueId: Int): Option[(Issue, PullRequest)] = { val issue = getIssue(owner, repository, issueId.toString) @@ -17,6 +19,27 @@ } else None } + def getPullRequestCount(closed: Boolean, repository: Option[(String, String)]): List[PullRequestCount] = { + Query(PullRequests) + .innerJoin(Issues).on { (t1, t2) => t1.byPrimaryKey(t2.userName, t2.repositoryName, t2.issueId) } + .filter { case (t1, t2) => + (t2.closed is closed.bind) && + (t1.userName is repository.get._1, repository.isDefined) && + (t1.repositoryName is repository.get._2, repository.isDefined) + } + .groupBy { case (t1, t2) => + t2.openedUserName + } + .map { case (userName, t) => + userName ~ t.length + } + .list + .map { x => + PullRequestCount(x._1, x._2) + } + .sortBy(_.count).reverse + } + def createPullRequest(originUserName: String, originRepositoryName: String, issueId: Int, originBranch: String, requestUserName: String, requestRepositoryName: String, requestBranch: String, commitIdFrom: String, commitIdTo: String): Unit = @@ -34,5 +57,9 @@ } object PullRequestService { + val PullRequestLimit = 25 + + case class PullRequestCount(userName: String, count: Int) + } \ No newline at end of file diff --git a/src/main/twirl/pulls/list.scala.html b/src/main/twirl/pulls/list.scala.html index 3f4ee10..079ad20 100644 --- a/src/main/twirl/pulls/list.scala.html +++ b/src/main/twirl/pulls/list.scala.html @@ -1,8 +1,10 @@ @(issues: List[(model.Issue, List[model.Label], Int)], + counts: List[service.PullRequestService.PullRequestCount], filter: Option[String], page: Int, openCount: Int, closedCount: Int, + allCount: Int, condition: service.IssuesService.IssueSearchCondition, repository: service.RepositoryService.RepositoryInfo, hasWritePermission: Boolean)(implicit context: app.Context) @@ -15,19 +17,32 @@ +
+
@if(hasWritePermission){