diff -r 1ab9f65e683e -r 23fe9f174d2d src/main/kotlin/de/uapcore/lightpit/viewmodel/Issues.kt --- a/src/main/kotlin/de/uapcore/lightpit/viewmodel/Issues.kt Sun Jul 28 14:13:36 2024 +0200 +++ b/src/main/kotlin/de/uapcore/lightpit/viewmodel/Issues.kt Tue Jul 30 18:53:39 2024 +0200 @@ -208,11 +208,14 @@ val onlyBlocker: Boolean = evalFlag(http, flagBlocker) val status: List = evalEnum(http, "s") val category: List = evalEnum(http, "c") + val assignee: List = evalInts(http, "u") val sortPrimary: IssueSorter.Criteria = evalSort(http, "primary", IssueSorter.Criteria(IssueSorter.Field.DONE)) val sortSecondary: IssueSorter.Criteria = evalSort(http, "secondary", IssueSorter.Criteria(IssueSorter.Field.ETA)) val sortTertiary: IssueSorter.Criteria = evalSort(http, "tertiary", IssueSorter.Criteria(IssueSorter.Field.UPDATED, false)) + fun containsAssignee(user: User?): Boolean = assignee.contains(user?.id?:-1) + private fun evalSort(http: HttpRequest, prio: String, defaultValue: IssueSorter.Criteria): IssueSorter.Criteria { val param = http.param("sort_$prio") if (param != null) { @@ -268,4 +271,25 @@ ?.map { enumValueOf(it) } ?: emptyList() } + + private fun evalInts(http: HttpRequest, prefix: String): List { + val sattr = "f.${prefix}" + val param = http.paramArray("filter") + if (param.isNotEmpty()) { + val list = param.filter { it.startsWith("${prefix}.") } + .map { it.substring(prefix.length + 1) } + .mapNotNull(String::toIntOrNull) + if (list.isEmpty()) { + http.session.removeAttribute(sattr) + } else { + http.session.setAttribute(sattr, list.joinToString(",")) + } + } + + return http.session.getAttribute(sattr) + ?.toString() + ?.split(",") + ?.map(String::toInt) + ?: emptyList() + } }