Mon, 05 Aug 2024 19:38:47 +0200
fix removing filter not working
fixes #407
195 | 1 | /* |
2 | * Copyright 2021 Mike Becker. All rights reserved. | |
3 | * | |
4 | * Redistribution and use in source and binary forms, with or without | |
5 | * modification, are permitted provided that the following conditions are met: | |
6 | * | |
7 | * 1. Redistributions of source code must retain the above copyright | |
8 | * notice, this list of conditions and the following disclaimer. | |
9 | * | |
10 | * 2. Redistributions in binary form must reproduce the above copyright | |
11 | * notice, this list of conditions and the following disclaimer in the | |
12 | * documentation and/or other materials provided with the distribution. | |
13 | * | |
14 | * THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS "AS IS" | |
15 | * AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE | |
16 | * IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE | |
17 | * DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT HOLDER OR CONTRIBUTORS BE LIABLE | |
18 | * FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL | |
19 | * DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR | |
20 | * SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER | |
21 | * CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, | |
22 | * OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE | |
23 | * OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. | |
24 | */ | |
25 | ||
26 | package de.uapcore.lightpit.servlet | |
27 | ||
236 | 28 | import com.github.difflib.text.DiffRow |
29 | import com.github.difflib.text.DiffRowGenerator | |
195 | 30 | import de.uapcore.lightpit.AbstractServlet |
31 | import de.uapcore.lightpit.HttpRequest | |
32 | import de.uapcore.lightpit.dao.DataAccessObject | |
242
b7f3e972b13c
#109 add comment history
Mike Becker <universe@uap-core.de>
parents:
241
diff
changeset
|
33 | import de.uapcore.lightpit.entities.IssueCommentHistoryEntry |
235
4258b9e010ae
change rss feed to display the issue history
Mike Becker <universe@uap-core.de>
parents:
199
diff
changeset
|
34 | import de.uapcore.lightpit.entities.IssueHistoryEntry |
311
bf67e0ff7131
add new global issues page - fixes #404
Mike Becker <universe@uap-core.de>
parents:
260
diff
changeset
|
35 | import de.uapcore.lightpit.entities.Project |
242
b7f3e972b13c
#109 add comment history
Mike Becker <universe@uap-core.de>
parents:
241
diff
changeset
|
36 | import de.uapcore.lightpit.types.IssueHistoryType |
b7f3e972b13c
#109 add comment history
Mike Becker <universe@uap-core.de>
parents:
241
diff
changeset
|
37 | import de.uapcore.lightpit.viewmodel.CommentDiff |
235
4258b9e010ae
change rss feed to display the issue history
Mike Becker <universe@uap-core.de>
parents:
199
diff
changeset
|
38 | import de.uapcore.lightpit.viewmodel.IssueDiff |
195 | 39 | import de.uapcore.lightpit.viewmodel.IssueFeed |
235
4258b9e010ae
change rss feed to display the issue history
Mike Becker <universe@uap-core.de>
parents:
199
diff
changeset
|
40 | import de.uapcore.lightpit.viewmodel.IssueFeedEntry |
254
55ca6cafc3dd
#233 migrate to Jakarta EE and update dependencies
Mike Becker <universe@uap-core.de>
parents:
242
diff
changeset
|
41 | import jakarta.servlet.annotation.WebServlet |
235
4258b9e010ae
change rss feed to display the issue history
Mike Becker <universe@uap-core.de>
parents:
199
diff
changeset
|
42 | import java.text.SimpleDateFormat |
195 | 43 | |
236 | 44 | |
195 | 45 | @WebServlet(urlPatterns = ["/feed/*"]) |
46 | class FeedServlet : AbstractServlet() { | |
47 | ||
48 | init { | |
198
94f174d591ab
fixes wrong handling of feeds - only one channel per feed is allowed
Mike Becker <universe@uap-core.de>
parents:
195
diff
changeset
|
49 | get("/%project/issues.rss", this::issues) |
94f174d591ab
fixes wrong handling of feeds - only one channel per feed is allowed
Mike Becker <universe@uap-core.de>
parents:
195
diff
changeset
|
50 | } |
94f174d591ab
fixes wrong handling of feeds - only one channel per feed is allowed
Mike Becker <universe@uap-core.de>
parents:
195
diff
changeset
|
51 | |
260 | 52 | private val diffGenerator: DiffRowGenerator by lazyOf(DiffRowGenerator.create() |
242
b7f3e972b13c
#109 add comment history
Mike Becker <universe@uap-core.de>
parents:
241
diff
changeset
|
53 | .showInlineDiffs(true) |
b7f3e972b13c
#109 add comment history
Mike Becker <universe@uap-core.de>
parents:
241
diff
changeset
|
54 | .mergeOriginalRevised(true) |
b7f3e972b13c
#109 add comment history
Mike Becker <universe@uap-core.de>
parents:
241
diff
changeset
|
55 | .inlineDiffByWord(true) |
b7f3e972b13c
#109 add comment history
Mike Becker <universe@uap-core.de>
parents:
241
diff
changeset
|
56 | .oldTag { start -> if (start) "<strike style=\"color:red\">" else "</strike>" } |
b7f3e972b13c
#109 add comment history
Mike Becker <universe@uap-core.de>
parents:
241
diff
changeset
|
57 | .newTag { start -> if (start) "<i style=\"color: green\">" else "</i>" } |
b7f3e972b13c
#109 add comment history
Mike Becker <universe@uap-core.de>
parents:
241
diff
changeset
|
58 | .build() |
b7f3e972b13c
#109 add comment history
Mike Becker <universe@uap-core.de>
parents:
241
diff
changeset
|
59 | ) |
b7f3e972b13c
#109 add comment history
Mike Becker <universe@uap-core.de>
parents:
241
diff
changeset
|
60 | |
b7f3e972b13c
#109 add comment history
Mike Becker <universe@uap-core.de>
parents:
241
diff
changeset
|
61 | private fun fullContent(data: IssueCommentHistoryEntry) = |
b7f3e972b13c
#109 add comment history
Mike Becker <universe@uap-core.de>
parents:
241
diff
changeset
|
62 | CommentDiff( |
b7f3e972b13c
#109 add comment history
Mike Becker <universe@uap-core.de>
parents:
241
diff
changeset
|
63 | data.issueid, |
b7f3e972b13c
#109 add comment history
Mike Becker <universe@uap-core.de>
parents:
241
diff
changeset
|
64 | data.commentid, |
b7f3e972b13c
#109 add comment history
Mike Becker <universe@uap-core.de>
parents:
241
diff
changeset
|
65 | data.subject, |
b7f3e972b13c
#109 add comment history
Mike Becker <universe@uap-core.de>
parents:
241
diff
changeset
|
66 | data.comment.replace("\r", "") |
b7f3e972b13c
#109 add comment history
Mike Becker <universe@uap-core.de>
parents:
241
diff
changeset
|
67 | ) |
b7f3e972b13c
#109 add comment history
Mike Becker <universe@uap-core.de>
parents:
241
diff
changeset
|
68 | |
b7f3e972b13c
#109 add comment history
Mike Becker <universe@uap-core.de>
parents:
241
diff
changeset
|
69 | private fun diffContent(cur: IssueCommentHistoryEntry, next: IssueCommentHistoryEntry) = |
b7f3e972b13c
#109 add comment history
Mike Becker <universe@uap-core.de>
parents:
241
diff
changeset
|
70 | CommentDiff( |
b7f3e972b13c
#109 add comment history
Mike Becker <universe@uap-core.de>
parents:
241
diff
changeset
|
71 | cur.issueid, |
b7f3e972b13c
#109 add comment history
Mike Becker <universe@uap-core.de>
parents:
241
diff
changeset
|
72 | cur.commentid, |
b7f3e972b13c
#109 add comment history
Mike Becker <universe@uap-core.de>
parents:
241
diff
changeset
|
73 | cur.subject, |
b7f3e972b13c
#109 add comment history
Mike Becker <universe@uap-core.de>
parents:
241
diff
changeset
|
74 | diffGenerator.generateDiffRows( |
b7f3e972b13c
#109 add comment history
Mike Becker <universe@uap-core.de>
parents:
241
diff
changeset
|
75 | next.comment.replace("\r", "").split('\n'), |
b7f3e972b13c
#109 add comment history
Mike Becker <universe@uap-core.de>
parents:
241
diff
changeset
|
76 | cur.comment.replace("\r", "").split('\n') |
b7f3e972b13c
#109 add comment history
Mike Becker <universe@uap-core.de>
parents:
241
diff
changeset
|
77 | ).joinToString("\n", transform = DiffRow::getOldLine) |
b7f3e972b13c
#109 add comment history
Mike Becker <universe@uap-core.de>
parents:
241
diff
changeset
|
78 | ) |
b7f3e972b13c
#109 add comment history
Mike Becker <universe@uap-core.de>
parents:
241
diff
changeset
|
79 | |
b7f3e972b13c
#109 add comment history
Mike Becker <universe@uap-core.de>
parents:
241
diff
changeset
|
80 | private fun fullContent(issue: IssueHistoryEntry) = IssueDiff( |
b7f3e972b13c
#109 add comment history
Mike Becker <universe@uap-core.de>
parents:
241
diff
changeset
|
81 | issue.issueid, |
235
4258b9e010ae
change rss feed to display the issue history
Mike Becker <universe@uap-core.de>
parents:
199
diff
changeset
|
82 | issue.subject, |
311
bf67e0ff7131
add new global issues page - fixes #404
Mike Becker <universe@uap-core.de>
parents:
260
diff
changeset
|
83 | issue.project, |
235
4258b9e010ae
change rss feed to display the issue history
Mike Becker <universe@uap-core.de>
parents:
199
diff
changeset
|
84 | issue.component, |
4258b9e010ae
change rss feed to display the issue history
Mike Becker <universe@uap-core.de>
parents:
199
diff
changeset
|
85 | issue.status.name, |
4258b9e010ae
change rss feed to display the issue history
Mike Becker <universe@uap-core.de>
parents:
199
diff
changeset
|
86 | issue.category.name, |
4258b9e010ae
change rss feed to display the issue history
Mike Becker <universe@uap-core.de>
parents:
199
diff
changeset
|
87 | issue.subject, |
236 | 88 | issue.description.replace("\r", ""), |
235
4258b9e010ae
change rss feed to display the issue history
Mike Becker <universe@uap-core.de>
parents:
199
diff
changeset
|
89 | issue.assignee, |
4258b9e010ae
change rss feed to display the issue history
Mike Becker <universe@uap-core.de>
parents:
199
diff
changeset
|
90 | issue.eta?.let { SimpleDateFormat("dd.MM.yyyy").format(it) } ?: "", |
4258b9e010ae
change rss feed to display the issue history
Mike Becker <universe@uap-core.de>
parents:
199
diff
changeset
|
91 | issue.affected, |
4258b9e010ae
change rss feed to display the issue history
Mike Becker <universe@uap-core.de>
parents:
199
diff
changeset
|
92 | issue.resolved |
4258b9e010ae
change rss feed to display the issue history
Mike Becker <universe@uap-core.de>
parents:
199
diff
changeset
|
93 | ) |
4258b9e010ae
change rss feed to display the issue history
Mike Becker <universe@uap-core.de>
parents:
199
diff
changeset
|
94 | |
242
b7f3e972b13c
#109 add comment history
Mike Becker <universe@uap-core.de>
parents:
241
diff
changeset
|
95 | private fun diffContent(cur: IssueHistoryEntry, next: IssueHistoryEntry): IssueDiff { |
235
4258b9e010ae
change rss feed to display the issue history
Mike Becker <universe@uap-core.de>
parents:
199
diff
changeset
|
96 | val prev = fullContent(next) |
4258b9e010ae
change rss feed to display the issue history
Mike Becker <universe@uap-core.de>
parents:
199
diff
changeset
|
97 | val diff = fullContent(cur) |
242
b7f3e972b13c
#109 add comment history
Mike Becker <universe@uap-core.de>
parents:
241
diff
changeset
|
98 | val result = diffGenerator.generateDiffRows( |
238
1d48b38ca349
fix diff generated between feed entries with different issue IDs
Mike Becker <universe@uap-core.de>
parents:
236
diff
changeset
|
99 | listOf( |
1d48b38ca349
fix diff generated between feed entries with different issue IDs
Mike Becker <universe@uap-core.de>
parents:
236
diff
changeset
|
100 | prev.subject, prev.component, prev.status, |
1d48b38ca349
fix diff generated between feed entries with different issue IDs
Mike Becker <universe@uap-core.de>
parents:
236
diff
changeset
|
101 | prev.category, prev.assignee, prev.eta, prev.affected, prev.resolved |
1d48b38ca349
fix diff generated between feed entries with different issue IDs
Mike Becker <universe@uap-core.de>
parents:
236
diff
changeset
|
102 | ), |
1d48b38ca349
fix diff generated between feed entries with different issue IDs
Mike Becker <universe@uap-core.de>
parents:
236
diff
changeset
|
103 | listOf( |
1d48b38ca349
fix diff generated between feed entries with different issue IDs
Mike Becker <universe@uap-core.de>
parents:
236
diff
changeset
|
104 | diff.subject, diff.component, diff.status, |
1d48b38ca349
fix diff generated between feed entries with different issue IDs
Mike Becker <universe@uap-core.de>
parents:
236
diff
changeset
|
105 | diff.category, diff.assignee, diff.eta, diff.affected, diff.resolved |
1d48b38ca349
fix diff generated between feed entries with different issue IDs
Mike Becker <universe@uap-core.de>
parents:
236
diff
changeset
|
106 | ) |
236 | 107 | ) |
108 | ||
109 | diff.subject = result[0].oldLine | |
110 | diff.component = result[1].oldLine | |
111 | diff.status = result[2].oldLine | |
112 | diff.category = result[3].oldLine | |
113 | diff.assignee = result[4].oldLine | |
114 | diff.eta = result[5].oldLine | |
115 | diff.affected = result[6].oldLine | |
116 | diff.resolved = result[7].oldLine | |
117 | ||
242
b7f3e972b13c
#109 add comment history
Mike Becker <universe@uap-core.de>
parents:
241
diff
changeset
|
118 | diff.description = diffGenerator.generateDiffRows( |
236 | 119 | prev.description.split('\n'), |
120 | diff.description.split('\n') | |
240
7303812a4424
use pre-warp instead of <br> for RSS feed
Mike Becker <universe@uap-core.de>
parents:
239
diff
changeset
|
121 | ).joinToString("\n", transform = DiffRow::getOldLine) |
236 | 122 | |
235
4258b9e010ae
change rss feed to display the issue history
Mike Becker <universe@uap-core.de>
parents:
199
diff
changeset
|
123 | return diff |
4258b9e010ae
change rss feed to display the issue history
Mike Becker <universe@uap-core.de>
parents:
199
diff
changeset
|
124 | } |
4258b9e010ae
change rss feed to display the issue history
Mike Becker <universe@uap-core.de>
parents:
199
diff
changeset
|
125 | |
4258b9e010ae
change rss feed to display the issue history
Mike Becker <universe@uap-core.de>
parents:
199
diff
changeset
|
126 | /** |
4258b9e010ae
change rss feed to display the issue history
Mike Becker <universe@uap-core.de>
parents:
199
diff
changeset
|
127 | * Generates the feed entries. |
242
b7f3e972b13c
#109 add comment history
Mike Becker <universe@uap-core.de>
parents:
241
diff
changeset
|
128 | * Assumes that [issueEntries] and [commentEntries] are already sorted by timestamp (descending). |
235
4258b9e010ae
change rss feed to display the issue history
Mike Becker <universe@uap-core.de>
parents:
199
diff
changeset
|
129 | */ |
242
b7f3e972b13c
#109 add comment history
Mike Becker <universe@uap-core.de>
parents:
241
diff
changeset
|
130 | private fun generateFeedEntries( |
b7f3e972b13c
#109 add comment history
Mike Becker <universe@uap-core.de>
parents:
241
diff
changeset
|
131 | issueEntries: List<IssueHistoryEntry>, |
b7f3e972b13c
#109 add comment history
Mike Becker <universe@uap-core.de>
parents:
241
diff
changeset
|
132 | commentEntries: List<IssueCommentHistoryEntry> |
b7f3e972b13c
#109 add comment history
Mike Becker <universe@uap-core.de>
parents:
241
diff
changeset
|
133 | ): List<IssueFeedEntry> = |
b7f3e972b13c
#109 add comment history
Mike Becker <universe@uap-core.de>
parents:
241
diff
changeset
|
134 | (generateIssueFeedEntries(issueEntries) + generateCommentFeedEntries(commentEntries)).sortedByDescending { it.time } |
b7f3e972b13c
#109 add comment history
Mike Becker <universe@uap-core.de>
parents:
241
diff
changeset
|
135 | |
b7f3e972b13c
#109 add comment history
Mike Becker <universe@uap-core.de>
parents:
241
diff
changeset
|
136 | private fun generateIssueFeedEntries(entries: List<IssueHistoryEntry>): List<IssueFeedEntry> = |
b7f3e972b13c
#109 add comment history
Mike Becker <universe@uap-core.de>
parents:
241
diff
changeset
|
137 | if (entries.isEmpty()) { |
238
1d48b38ca349
fix diff generated between feed entries with different issue IDs
Mike Becker <universe@uap-core.de>
parents:
236
diff
changeset
|
138 | emptyList() |
1d48b38ca349
fix diff generated between feed entries with different issue IDs
Mike Becker <universe@uap-core.de>
parents:
236
diff
changeset
|
139 | } else { |
242
b7f3e972b13c
#109 add comment history
Mike Becker <universe@uap-core.de>
parents:
241
diff
changeset
|
140 | entries.groupBy { it.issueid }.mapValues { (_, history) -> |
238
1d48b38ca349
fix diff generated between feed entries with different issue IDs
Mike Becker <universe@uap-core.de>
parents:
236
diff
changeset
|
141 | history.zipWithNext().map { (cur, next) -> |
1d48b38ca349
fix diff generated between feed entries with different issue IDs
Mike Becker <universe@uap-core.de>
parents:
236
diff
changeset
|
142 | IssueFeedEntry( |
242
b7f3e972b13c
#109 add comment history
Mike Becker <universe@uap-core.de>
parents:
241
diff
changeset
|
143 | cur.time, cur.type, issue = diffContent(cur, next) |
238
1d48b38ca349
fix diff generated between feed entries with different issue IDs
Mike Becker <universe@uap-core.de>
parents:
236
diff
changeset
|
144 | ) |
1d48b38ca349
fix diff generated between feed entries with different issue IDs
Mike Becker <universe@uap-core.de>
parents:
236
diff
changeset
|
145 | }.plus( |
242
b7f3e972b13c
#109 add comment history
Mike Becker <universe@uap-core.de>
parents:
241
diff
changeset
|
146 | history.last().let { IssueFeedEntry(it.time, it.type, issue = fullContent(it)) } |
238
1d48b38ca349
fix diff generated between feed entries with different issue IDs
Mike Becker <universe@uap-core.de>
parents:
236
diff
changeset
|
147 | ) |
242
b7f3e972b13c
#109 add comment history
Mike Becker <universe@uap-core.de>
parents:
241
diff
changeset
|
148 | }.flatMap { it.value } |
b7f3e972b13c
#109 add comment history
Mike Becker <universe@uap-core.de>
parents:
241
diff
changeset
|
149 | } |
b7f3e972b13c
#109 add comment history
Mike Becker <universe@uap-core.de>
parents:
241
diff
changeset
|
150 | |
b7f3e972b13c
#109 add comment history
Mike Becker <universe@uap-core.de>
parents:
241
diff
changeset
|
151 | private fun generateCommentFeedEntries(entries: List<IssueCommentHistoryEntry>): List<IssueFeedEntry> = |
b7f3e972b13c
#109 add comment history
Mike Becker <universe@uap-core.de>
parents:
241
diff
changeset
|
152 | if (entries.isEmpty()) { |
b7f3e972b13c
#109 add comment history
Mike Becker <universe@uap-core.de>
parents:
241
diff
changeset
|
153 | emptyList() |
b7f3e972b13c
#109 add comment history
Mike Becker <universe@uap-core.de>
parents:
241
diff
changeset
|
154 | } else { |
b7f3e972b13c
#109 add comment history
Mike Becker <universe@uap-core.de>
parents:
241
diff
changeset
|
155 | entries.groupBy { it.commentid }.mapValues { (_, history) -> |
b7f3e972b13c
#109 add comment history
Mike Becker <universe@uap-core.de>
parents:
241
diff
changeset
|
156 | history.zipWithNext().map { (cur, next) -> |
b7f3e972b13c
#109 add comment history
Mike Becker <universe@uap-core.de>
parents:
241
diff
changeset
|
157 | IssueFeedEntry( |
b7f3e972b13c
#109 add comment history
Mike Becker <universe@uap-core.de>
parents:
241
diff
changeset
|
158 | cur.time, cur.type, comment = diffContent(cur, next) |
b7f3e972b13c
#109 add comment history
Mike Becker <universe@uap-core.de>
parents:
241
diff
changeset
|
159 | ) |
b7f3e972b13c
#109 add comment history
Mike Becker <universe@uap-core.de>
parents:
241
diff
changeset
|
160 | }.plus( |
b7f3e972b13c
#109 add comment history
Mike Becker <universe@uap-core.de>
parents:
241
diff
changeset
|
161 | history.last().let { IssueFeedEntry(it.time, it.type, comment = fullContent(it)) } |
b7f3e972b13c
#109 add comment history
Mike Becker <universe@uap-core.de>
parents:
241
diff
changeset
|
162 | ) |
b7f3e972b13c
#109 add comment history
Mike Becker <universe@uap-core.de>
parents:
241
diff
changeset
|
163 | }.flatMap { it.value } |
238
1d48b38ca349
fix diff generated between feed entries with different issue IDs
Mike Becker <universe@uap-core.de>
parents:
236
diff
changeset
|
164 | } |
235
4258b9e010ae
change rss feed to display the issue history
Mike Becker <universe@uap-core.de>
parents:
199
diff
changeset
|
165 | |
195 | 166 | private fun issues(http: HttpRequest, dao: DataAccessObject) { |
311
bf67e0ff7131
add new global issues page - fixes #404
Mike Becker <universe@uap-core.de>
parents:
260
diff
changeset
|
167 | val projectNode = http.pathParams["project"].orEmpty() |
bf67e0ff7131
add new global issues page - fixes #404
Mike Becker <universe@uap-core.de>
parents:
260
diff
changeset
|
168 | val project: Project? |
bf67e0ff7131
add new global issues page - fixes #404
Mike Becker <universe@uap-core.de>
parents:
260
diff
changeset
|
169 | if (projectNode == "-") { |
bf67e0ff7131
add new global issues page - fixes #404
Mike Becker <universe@uap-core.de>
parents:
260
diff
changeset
|
170 | project = null |
bf67e0ff7131
add new global issues page - fixes #404
Mike Becker <universe@uap-core.de>
parents:
260
diff
changeset
|
171 | } else { |
bf67e0ff7131
add new global issues page - fixes #404
Mike Becker <universe@uap-core.de>
parents:
260
diff
changeset
|
172 | project = dao.findProjectByNode(projectNode) |
bf67e0ff7131
add new global issues page - fixes #404
Mike Becker <universe@uap-core.de>
parents:
260
diff
changeset
|
173 | if (project == null) { |
bf67e0ff7131
add new global issues page - fixes #404
Mike Becker <universe@uap-core.de>
parents:
260
diff
changeset
|
174 | http.response.sendError(404) |
bf67e0ff7131
add new global issues page - fixes #404
Mike Becker <universe@uap-core.de>
parents:
260
diff
changeset
|
175 | return |
bf67e0ff7131
add new global issues page - fixes #404
Mike Becker <universe@uap-core.de>
parents:
260
diff
changeset
|
176 | } |
198
94f174d591ab
fixes wrong handling of feeds - only one channel per feed is allowed
Mike Becker <universe@uap-core.de>
parents:
195
diff
changeset
|
177 | } |
239
9365c7fb0240
#109 add assignee filter to rss feed
Mike Becker <universe@uap-core.de>
parents:
238
diff
changeset
|
178 | val assignees = http.param("assignee")?.split(',') |
242
b7f3e972b13c
#109 add comment history
Mike Becker <universe@uap-core.de>
parents:
241
diff
changeset
|
179 | val comments = http.param("comments") ?: "all" |
195 | 180 | |
235
4258b9e010ae
change rss feed to display the issue history
Mike Becker <universe@uap-core.de>
parents:
199
diff
changeset
|
181 | val days = http.param("days")?.toIntOrNull() ?: 30 |
198
94f174d591ab
fixes wrong handling of feeds - only one channel per feed is allowed
Mike Becker <universe@uap-core.de>
parents:
195
diff
changeset
|
182 | |
311
bf67e0ff7131
add new global issues page - fixes #404
Mike Becker <universe@uap-core.de>
parents:
260
diff
changeset
|
183 | val issuesFromDb = dao.listIssueHistory(project, days) |
239
9365c7fb0240
#109 add assignee filter to rss feed
Mike Becker <universe@uap-core.de>
parents:
238
diff
changeset
|
184 | val issueHistory = if (assignees == null) issuesFromDb else |
241
1ca4f27cefe8
#109 changes assignee filter
Mike Becker <universe@uap-core.de>
parents:
240
diff
changeset
|
185 | issuesFromDb.filter { assignees.contains(it.currentAssignee) } |
239
9365c7fb0240
#109 add assignee filter to rss feed
Mike Becker <universe@uap-core.de>
parents:
238
diff
changeset
|
186 | |
311
bf67e0ff7131
add new global issues page - fixes #404
Mike Becker <universe@uap-core.de>
parents:
260
diff
changeset
|
187 | val commentsFromDb = dao.listIssueCommentHistory(project, days) |
242
b7f3e972b13c
#109 add comment history
Mike Becker <universe@uap-core.de>
parents:
241
diff
changeset
|
188 | val commentHistory = when (comments) { |
b7f3e972b13c
#109 add comment history
Mike Becker <universe@uap-core.de>
parents:
241
diff
changeset
|
189 | "all" -> commentsFromDb |
b7f3e972b13c
#109 add comment history
Mike Becker <universe@uap-core.de>
parents:
241
diff
changeset
|
190 | "new" -> commentsFromDb.filter { it.type == IssueHistoryType.NewComment } |
b7f3e972b13c
#109 add comment history
Mike Becker <universe@uap-core.de>
parents:
241
diff
changeset
|
191 | else -> emptyList() |
b7f3e972b13c
#109 add comment history
Mike Becker <universe@uap-core.de>
parents:
241
diff
changeset
|
192 | } |
235
4258b9e010ae
change rss feed to display the issue history
Mike Becker <universe@uap-core.de>
parents:
199
diff
changeset
|
193 | |
242
b7f3e972b13c
#109 add comment history
Mike Becker <universe@uap-core.de>
parents:
241
diff
changeset
|
194 | http.view = IssueFeed(project, generateFeedEntries(issueHistory, commentHistory)) |
198
94f174d591ab
fixes wrong handling of feeds - only one channel per feed is allowed
Mike Becker <universe@uap-core.de>
parents:
195
diff
changeset
|
195 | http.renderFeed("issues-feed") |
195 | 196 | } |
197 | } |