Add link to clear issue filter.

This commit is contained in:
takezoe
2013-06-25 16:13:29 +09:00
parent aae5bfd184
commit 0bbdb77d05
3 changed files with 32 additions and 16 deletions

View File

@@ -29,24 +29,22 @@ trait IssuesControllerBase extends ControllerBase {
get("/:owner/:repository/issues"){ get("/:owner/:repository/issues"){
val owner = params("owner") val owner = params("owner")
val repository = params("repository") 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 { session.put(sessionKey, condition)
case None => NotFound()
case Some(repositoryInfo) => {
// search condition
val closed = params.get("state") collect {
case "closed" => true
} getOrElse false
issues.html.issues(searchIssue(owner, repository, closed), getRepository(owner, repository, baseUrl).map { repositoryInfo =>
getLabels(owner, repository), issues.html.issues(searchIssue(owner, repository, condition.state == "closed"),
getMilestones(owner, repository).filter(_.closedDate.isEmpty), getLabels(owner, repository),
condition, repositoryInfo, isWritable(owner, repository, context.loginAccount)) getMilestones(owner, repository).filter(_.closedDate.isEmpty),
} condition, repositoryInfo, isWritable(owner, repository, context.loginAccount))
}
} getOrElse NotFound
} }
get("/:owner/:repository/issues/:id"){ get("/:owner/:repository/issues/:id"){

View File

@@ -75,7 +75,13 @@ object IssuesService {
import java.net.URLEncoder import java.net.URLEncoder
import javax.servlet.http.HttpServletRequest 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._ import IssueSearchCondition._
def toURL(repository: service.RepositoryService.RepositoryInfo)(implicit context: app.Context): String = { def toURL(repository: service.RepositoryService.RepositoryInfo)(implicit context: app.Context): String = {

View File

@@ -72,6 +72,11 @@
} }
</div> </div>
<div class="span9"> <div class="span9">
@if(condition.labels.nonEmpty || condition.milestoneId.isDefined){
<a href="@(new service.IssuesService.IssueSearchCondition().toURL(repository))" id="clear-filter">
<i class="icon-remove-circle"></i> Clear milestone and label filters
</a>
}
<div class="pagination pull-right"> <div class="pagination pull-right">
<ul> <ul>
<li class="disabled"><span>&#9664;</span></li> <li class="disabled"><span>&#9664;</span></li>
@@ -162,4 +167,11 @@ span.label-color {
-webkit-border-radius: 2px; -webkit-border-radius: 2px;
-moz-border-radius: 2px; -moz-border-radius: 2px;
} }
a#clear-filter {
display: block;
color: #444;
font-weight: bold;
margin-bottom: 10px;
}
</style> </style>