mirror of
				https://github.com/gitbucket/gitbucket.git
				synced 2025-11-03 20:15:59 +01:00 
			
		
		
		
	(refs #2)Add opened user filter and count to the pull request list.
This commit is contained in:
		@@ -386,10 +386,12 @@ trait PullRequestsControllerBase extends ControllerBase {
 | 
			
		||||
 | 
			
		||||
    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))
 | 
			
		||||
 
 | 
			
		||||
@@ -6,6 +6,8 @@ import Database.threadLocalSession
 | 
			
		||||
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 @@ trait PullRequestService { self: IssuesService =>
 | 
			
		||||
    } 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 @@ trait PullRequestService { self: IssuesService =>
 | 
			
		||||
}
 | 
			
		||||
 | 
			
		||||
object PullRequestService {
 | 
			
		||||
 | 
			
		||||
  val PullRequestLimit = 25
 | 
			
		||||
 | 
			
		||||
  case class PullRequestCount(userName: String, count: Int)
 | 
			
		||||
 | 
			
		||||
}
 | 
			
		||||
@@ -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 @@
 | 
			
		||||
      <ul class="nav nav-pills nav-stacked">
 | 
			
		||||
        <li@if(filter.isEmpty){ class="active"}>
 | 
			
		||||
          <a href="@url(repository)/pulls">
 | 
			
		||||
            <span class="count-right">@(openCount + closedCount)</span>
 | 
			
		||||
            <span class="count-right">@allCount</span>
 | 
			
		||||
            All Requests
 | 
			
		||||
          </a>
 | 
			
		||||
        </li>
 | 
			
		||||
        @if(loginAccount.isDefined){
 | 
			
		||||
        <li@if(filter.isDefined && filter.get == loginAccount.get.userName){ class="active"}>
 | 
			
		||||
        <li@if(filter.map(_ == loginAccount.get.userName).getOrElse(false)){ class="active"}>
 | 
			
		||||
          <a href="@url(repository)/pulls/@loginAccount.map(_.userName)">
 | 
			
		||||
            <span class="count-right">0</span>
 | 
			
		||||
            <span class="count-right">@counts.find(_.userName == loginAccount.get.userName).map(_.count)</span>
 | 
			
		||||
            Yours
 | 
			
		||||
          </a>
 | 
			
		||||
        </li>
 | 
			
		||||
        }
 | 
			
		||||
      </ul>
 | 
			
		||||
      <hr>
 | 
			
		||||
      <ul class="nav nav-pills nav-stacked small">
 | 
			
		||||
      @counts.map { user =>
 | 
			
		||||
        @if(loginAccount.isEmpty || loginAccount.get.userName != user.userName){
 | 
			
		||||
        <li@if(filter.map(_ == user.userName).getOrElse(false)){ class="active"}>
 | 
			
		||||
          <a href="@url(repository)/pulls/@user.userName">
 | 
			
		||||
           <span class="count-right">@user.count</span>
 | 
			
		||||
            @user.userName
 | 
			
		||||
          </a>
 | 
			
		||||
        </li>
 | 
			
		||||
        }
 | 
			
		||||
      }
 | 
			
		||||
      </ul>
 | 
			
		||||
    </div>
 | 
			
		||||
    <div class="span9">
 | 
			
		||||
      @if(hasWritePermission){
 | 
			
		||||
 
 | 
			
		||||
		Reference in New Issue
	
	Block a user