diff --git a/src/main/scala/app/IssuesController.scala b/src/main/scala/app/IssuesController.scala index f94f193..1aca48a 100644 --- a/src/main/scala/app/IssuesController.scala +++ b/src/main/scala/app/IssuesController.scala @@ -29,24 +29,22 @@ get("/:owner/:repository/issues"){ val owner = params("owner") val repository = params("repository") - val condition = IssueSearchCondition(request) + val sessionKey = "%s/%s/issues".format(owner, repository) - println(condition) + // retreive search condition + val condition = if(request.getQueryString == null){ + session.get(sessionKey).getOrElse(IssueSearchCondition()).asInstanceOf[IssueSearchCondition] + } else IssueSearchCondition(request) - getRepository(owner, repository, baseUrl) match { - case None => NotFound() - case Some(repositoryInfo) => { - // search condition - val closed = params.get("state") collect { - case "closed" => true - } getOrElse false + session.put(sessionKey, condition) - issues.html.issues(searchIssue(owner, repository, closed), - getLabels(owner, repository), - getMilestones(owner, repository).filter(_.closedDate.isEmpty), - condition, repositoryInfo, isWritable(owner, repository, context.loginAccount)) - } - } + getRepository(owner, repository, baseUrl).map { repositoryInfo => + issues.html.issues(searchIssue(owner, repository, condition.state == "closed"), + getLabels(owner, repository), + getMilestones(owner, repository).filter(_.closedDate.isEmpty), + condition, repositoryInfo, isWritable(owner, repository, context.loginAccount)) + + } getOrElse NotFound } get("/:owner/:repository/issues/:id"){ diff --git a/src/main/scala/service/IssuesService.scala b/src/main/scala/service/IssuesService.scala index aa1ca65..eaa536b 100644 --- a/src/main/scala/service/IssuesService.scala +++ b/src/main/scala/service/IssuesService.scala @@ -75,7 +75,13 @@ import java.net.URLEncoder import javax.servlet.http.HttpServletRequest - case class IssueSearchCondition(labels: Set[String], milestoneId: Option[Int], state: String, sort: String, direction: String){ + case class IssueSearchCondition( + labels: Set[String] = Set.empty, + milestoneId: Option[Int] = None, + state: String = "open", + sort: String = "created", + direction: String = "desc"){ + import IssueSearchCondition._ def toURL(repository: service.RepositoryService.RepositoryInfo)(implicit context: app.Context): String = { diff --git a/src/main/twirl/issues/issues.scala.html b/src/main/twirl/issues/issues.scala.html index 6109057..556907a 100644 --- a/src/main/twirl/issues/issues.scala.html +++ b/src/main/twirl/issues/issues.scala.html @@ -72,6 +72,11 @@ }
+ @if(condition.labels.nonEmpty || condition.milestoneId.isDefined){ + + Clear milestone and label filters + + }