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

changeset 268
ca5501d851fa
parent 267
d8ec2d8ffa82
child 271
f8f5e82944fa
--- a/src/main/kotlin/de/uapcore/lightpit/servlet/ProjectServlet.kt	Tue Jan 03 18:25:51 2023 +0100
+++ b/src/main/kotlin/de/uapcore/lightpit/servlet/ProjectServlet.kt	Sun Jan 08 17:07:26 2023 +0100
@@ -184,7 +184,13 @@
     private fun project(http: HttpRequest, dao: DataAccessObject) {
         withPathInfo(http, dao)?.run {
 
-            val issues = dao.listIssues(project, version, component)
+            val filter = IssueFilter(http)
+
+            val needRelationsMap = filter.onlyBlocker
+
+            val relationsMap = if (needRelationsMap) dao.getIssueRelationMap(project, filter.includeDone) else emptyMap()
+
+            val issues = dao.listIssues(project, filter.includeDone, version, component)
                 .sortedWith(
                     IssueSorter(
                         IssueSorter.Criteria(IssueSorter.Field.DONE),
@@ -192,10 +198,16 @@
                         IssueSorter.Criteria(IssueSorter.Field.UPDATED, false)
                     )
                 )
+                .filter {
+                    (!filter.onlyMine || (it.assignee?.username ?: "") == (http.remoteUser ?: "<Anonymous>")) &&
+                    (!filter.onlyBlocker || (relationsMap[it.id]?.any { (_,type) -> type.blocking }?:false)) &&
+                    (filter.status.isEmpty() || filter.status.contains(it.status)) &&
+                    (filter.category.isEmpty() || filter.category.contains(it.category))
+                }
 
             with(http) {
                 pageTitle = project.name
-                view = ProjectDetails(projectInfo, issues, version, component)
+                view = ProjectDetails(projectInfo, issues, filter, version, component)
                 feedPath = feedPath(project)
                 navigationMenu = activeProjectNavMenu(
                     dao.listProjects(),
@@ -467,7 +479,7 @@
                     project,
                     version,
                     component,
-                    dao.listIssues(project),
+                    dao.listIssues(project, true),
                     dao.listIssueRelations(issue),
                     relationError
                 )

mercurial