diff --git a/src/main/scala/app/DashboardController.scala b/src/main/scala/app/DashboardController.scala index 9a3c28f..4e0ffb2 100644 --- a/src/main/scala/app/DashboardController.scala +++ b/src/main/scala/app/DashboardController.scala @@ -74,29 +74,16 @@ val userName = context.loginAccount.get.userName val allRepos = getAllRepositories(userName) - val userRepos = getUserRepositories(userName, context.baseUrl, true).map(repo => repo.owner -> repo.name) val filterUser = Map(filter -> userName) val page = IssueSearchCondition.page(request) - val counts = countIssueGroupByRepository( - IssueSearchCondition().copy(state = condition.state), filterUser, true, userRepos: _*) - dashboard.html.pulls( - dashboard.html.pullslist( - searchIssue(condition, filterUser, true, (page - 1) * PullRequestLimit, PullRequestLimit, allRepos: _*), - page, - countIssue(condition.copy(state = "open" ), filterUser, true, allRepos: _*), - countIssue(condition.copy(state = "closed"), filterUser, true, allRepos: _*), - condition, - None, - false), - getAllPullRequestCountGroupByUser(condition.state == "closed", userName), - userRepos.map { case (userName, repoName) => - (userName, repoName, counts.find { x => x._1 == userName && x._2 == repoName }.map(_._3).getOrElse(0)) - }.sortBy(_._3).reverse, + searchIssue(condition, filterUser, true, (page - 1) * PullRequestLimit, PullRequestLimit, allRepos: _*), + page, + countIssue(condition.copy(state = "open" ), filterUser, true, allRepos: _*), + countIssue(condition.copy(state = "closed"), filterUser, true, allRepos: _*), condition, filter) - } diff --git a/src/main/scala/service/IssuesService.scala b/src/main/scala/service/IssuesService.scala index 5688fc7..e563b9c 100644 --- a/src/main/scala/service/IssuesService.scala +++ b/src/main/scala/service/IssuesService.scala @@ -77,28 +77,29 @@ } .toMap } - /** - * Returns list which contains issue count for each repository. - * If the issue does not exist, its repository is not included in the result. - * - * @param condition the search condition - * @param onlyPullRequest if true then returns only pull request, false then returns both of issue and pull request. - * @param repos Tuple of the repository owner and the repository name - * @return list which contains issue count for each repository - */ - def countIssueGroupByRepository( - condition: IssueSearchCondition, filterUser: Map[String, String], onlyPullRequest: Boolean, - repos: (String, String)*)(implicit s: Session): List[(String, String, Int)] = { - searchIssueQuery(repos, condition.copy(repo = None), filterUser, onlyPullRequest) - .groupBy { t => - t.userName -> t.repositoryName - } - .map { case (repo, t) => - (repo._1, repo._2, t.length) - } - .sortBy(_._3 desc) - .list - } + +// /** +// * Returns list which contains issue count for each repository. +// * If the issue does not exist, its repository is not included in the result. +// * +// * @param condition the search condition +// * @param onlyPullRequest if true then returns only pull request, false then returns both of issue and pull request. +// * @param repos Tuple of the repository owner and the repository name +// * @return list which contains issue count for each repository +// */ +// def countIssueGroupByRepository( +// condition: IssueSearchCondition, filterUser: Map[String, String], onlyPullRequest: Boolean, +// repos: (String, String)*)(implicit s: Session): List[(String, String, Int)] = { +// searchIssueQuery(repos, condition.copy(repo = None), filterUser, onlyPullRequest) +// .groupBy { t => +// t.userName -> t.repositoryName +// } +// .map { case (repo, t) => +// (repo._1, repo._2, t.length) +// } +// .sortBy(_._3 desc) +// .list +// } /** * Returns the search result against issues. @@ -181,7 +182,11 @@ (t3.byRepository(t1.userName, t1.repositoryName)) && (t3.labelName inSetBind condition.labels) } map(_.labelId))) - } exists, condition.labels.nonEmpty) + } exists, condition.labels.nonEmpty) && + (Repositories filter { t3 => + (t3.byRepository(t1.userName, t1.repositoryName)) && + (t3.isPrivate === (condition.visibility == Some("private")).bind) + } exists, condition.visibility.nonEmpty) } def createIssue(owner: String, repository: String, loginUser: String, title: String, content: Option[String], @@ -343,11 +348,12 @@ repo: Option[String] = None, state: String = "open", sort: String = "created", - direction: String = "desc"){ + direction: String = "desc", + visibility: Option[String] = None){ def isEmpty: Boolean = { labels.isEmpty && milestoneId.isEmpty && author.isEmpty && assigned.isEmpty && - state == "open" && sort == "created" && direction == "desc" + state == "open" && sort == "created" && direction == "desc" && visibility.isEmpty } def nonEmpty: Boolean = !isEmpty @@ -364,7 +370,9 @@ repo.map("for=" + urlEncode(_)), Some("state=" + urlEncode(state)), Some("sort=" + urlEncode(sort)), - Some("direction=" + urlEncode(direction))).flatten.mkString("&") + Some("direction=" + urlEncode(direction)), + visibility.map(x => "visibility=" + urlEncode(x)) + ).flatten.mkString("&") } @@ -378,7 +386,7 @@ def apply(request: HttpServletRequest): IssueSearchCondition = IssueSearchCondition( param(request, "labels").map(_.split(",").toSet).getOrElse(Set.empty), - param(request, "milestone").map{ + param(request, "milestone").map { case "none" => None case x => x.toIntOpt }, @@ -387,7 +395,9 @@ param(request, "for"), param(request, "state", Seq("open", "closed")).getOrElse("open"), param(request, "sort", Seq("created", "comments", "updated")).getOrElse("created"), - param(request, "direction", Seq("asc", "desc")).getOrElse("desc")) + param(request, "direction", Seq("asc", "desc")).getOrElse("desc"), + param(request, "visibility") + ) def page(request: HttpServletRequest) = try { val i = param(request, "page").getOrElse("1").toInt diff --git a/src/main/scala/service/PullRequestService.scala b/src/main/scala/service/PullRequestService.scala index d5bcb0b..9a3239b 100644 --- a/src/main/scala/service/PullRequestService.scala +++ b/src/main/scala/service/PullRequestService.scala @@ -36,23 +36,23 @@ .list .map { x => PullRequestCount(x._1, x._2) } - def getAllPullRequestCountGroupByUser(closed: Boolean, userName: String)(implicit s: Session): List[PullRequestCount] = - PullRequests - .innerJoin(Issues).on { (t1, t2) => t1.byPrimaryKey(t2.userName, t2.repositoryName, t2.issueId) } - .innerJoin(Repositories).on { case ((t1, t2), t3) => t2.byRepository(t3.userName, t3.repositoryName) } - .filter { case ((t1, t2), t3) => - (t2.closed === closed.bind) && - ( - (t3.isPrivate === false.bind) || - (t3.userName === userName.bind) || - (Collaborators.filter { t4 => t4.byRepository(t3.userName, t3.repositoryName) && (t4.collaboratorName === userName.bind)} exists) - ) - } - .groupBy { case ((t1, t2), t3) => t2.openedUserName } - .map { case (userName, t) => userName -> t.length } - .sortBy(_._2 desc) - .list - .map { x => PullRequestCount(x._1, x._2) } +// def getAllPullRequestCountGroupByUser(closed: Boolean, userName: String)(implicit s: Session): List[PullRequestCount] = +// PullRequests +// .innerJoin(Issues).on { (t1, t2) => t1.byPrimaryKey(t2.userName, t2.repositoryName, t2.issueId) } +// .innerJoin(Repositories).on { case ((t1, t2), t3) => t2.byRepository(t3.userName, t3.repositoryName) } +// .filter { case ((t1, t2), t3) => +// (t2.closed === closed.bind) && +// ( +// (t3.isPrivate === false.bind) || +// (t3.userName === userName.bind) || +// (Collaborators.filter { t4 => t4.byRepository(t3.userName, t3.repositoryName) && (t4.collaboratorName === userName.bind)} exists) +// ) +// } +// .groupBy { case ((t1, t2), t3) => t2.openedUserName } +// .map { case (userName, t) => userName -> t.length } +// .sortBy(_._2 desc) +// .list +// .map { x => PullRequestCount(x._1, x._2) } def createPullRequest(originUserName: String, originRepositoryName: String, issueId: Int, originBranch: String, requestUserName: String, requestRepositoryName: String, requestBranch: String, diff --git a/src/main/twirl/dashboard/issueslist.scala.html b/src/main/twirl/dashboard/issueslist.scala.html index 248f688..9e0bad8 100644 --- a/src/main/twirl/dashboard/issueslist.scala.html +++ b/src/main/twirl/dashboard/issueslist.scala.html @@ -29,7 +29,18 @@
- No pull requests to show. - | -