src/main/kotlin/de/uapcore/lightpit/servlet/ProjectServlet.kt

changeset 268
ca5501d851fa
parent 267
d8ec2d8ffa82
child 271
f8f5e82944fa
     1.1 --- a/src/main/kotlin/de/uapcore/lightpit/servlet/ProjectServlet.kt	Tue Jan 03 18:25:51 2023 +0100
     1.2 +++ b/src/main/kotlin/de/uapcore/lightpit/servlet/ProjectServlet.kt	Sun Jan 08 17:07:26 2023 +0100
     1.3 @@ -184,7 +184,13 @@
     1.4      private fun project(http: HttpRequest, dao: DataAccessObject) {
     1.5          withPathInfo(http, dao)?.run {
     1.6  
     1.7 -            val issues = dao.listIssues(project, version, component)
     1.8 +            val filter = IssueFilter(http)
     1.9 +
    1.10 +            val needRelationsMap = filter.onlyBlocker
    1.11 +
    1.12 +            val relationsMap = if (needRelationsMap) dao.getIssueRelationMap(project, filter.includeDone) else emptyMap()
    1.13 +
    1.14 +            val issues = dao.listIssues(project, filter.includeDone, version, component)
    1.15                  .sortedWith(
    1.16                      IssueSorter(
    1.17                          IssueSorter.Criteria(IssueSorter.Field.DONE),
    1.18 @@ -192,10 +198,16 @@
    1.19                          IssueSorter.Criteria(IssueSorter.Field.UPDATED, false)
    1.20                      )
    1.21                  )
    1.22 +                .filter {
    1.23 +                    (!filter.onlyMine || (it.assignee?.username ?: "") == (http.remoteUser ?: "<Anonymous>")) &&
    1.24 +                    (!filter.onlyBlocker || (relationsMap[it.id]?.any { (_,type) -> type.blocking }?:false)) &&
    1.25 +                    (filter.status.isEmpty() || filter.status.contains(it.status)) &&
    1.26 +                    (filter.category.isEmpty() || filter.category.contains(it.category))
    1.27 +                }
    1.28  
    1.29              with(http) {
    1.30                  pageTitle = project.name
    1.31 -                view = ProjectDetails(projectInfo, issues, version, component)
    1.32 +                view = ProjectDetails(projectInfo, issues, filter, version, component)
    1.33                  feedPath = feedPath(project)
    1.34                  navigationMenu = activeProjectNavMenu(
    1.35                      dao.listProjects(),
    1.36 @@ -467,7 +479,7 @@
    1.37                      project,
    1.38                      version,
    1.39                      component,
    1.40 -                    dao.listIssues(project),
    1.41 +                    dao.listIssues(project, true),
    1.42                      dao.listIssueRelations(issue),
    1.43                      relationError
    1.44                  )

mercurial