23 CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, |
23 CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, |
24 OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE |
24 OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE |
25 OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. |
25 OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. |
26 --%> |
26 --%> |
27 <%@page pageEncoding="UTF-8" %> |
27 <%@page pageEncoding="UTF-8" %> |
28 <%@page import="de.uapcore.lightpit.modules.ProjectsModule" %> |
|
29 <%@taglib prefix="c" uri="http://java.sun.com/jsp/jstl/core" %> |
28 <%@taglib prefix="c" uri="http://java.sun.com/jsp/jstl/core" %> |
30 <%@taglib prefix="fmt" uri="http://java.sun.com/jsp/jstl/fmt" %> |
29 <%@taglib prefix="fmt" uri="http://java.sun.com/jsp/jstl/fmt" %> |
31 |
30 |
32 <c:set scope="page" var="selectedProject" value="${sessionScope[ProjectsModule.SESSION_ATTR_SELECTED_PROJECT]}"/> |
|
33 |
|
34 <jsp:useBean id="versions" type="java.util.List<de.uapcore.lightpit.entities.Version>" scope="request"/> |
31 <jsp:useBean id="versions" type="java.util.List<de.uapcore.lightpit.entities.Version>" scope="request"/> |
35 <jsp:useBean id="issues" type="java.util.List<de.uapcore.lightpit.entities.Issue>" scope="request"/> |
32 <jsp:useBean id="statsAffected" type="java.util.List<de.uapcore.lightpit.entities.VersionStatistics>" scope="request"/> |
|
33 <jsp:useBean id="statsScheduled" type="java.util.List<de.uapcore.lightpit.entities.VersionStatistics>" scope="request"/> |
|
34 <jsp:useBean id="statsResolved" type="java.util.List<de.uapcore.lightpit.entities.VersionStatistics>" scope="request"/> |
|
35 <jsp:useBean id="issueStatusEnum" type="de.uapcore.lightpit.entities.IssueStatus[]" scope="request"/> |
|
36 <jsp:useBean id="issueCategoryEnum" type="de.uapcore.lightpit.entities.IssueCategory[]" scope="request"/> |
|
37 <jsp:useBean id="statsHideZeros" type="java.lang.Boolean" scope="request"/> |
36 |
38 |
37 <div id="tool-area"> |
39 <div id="tool-area"> |
38 <a href="./projects/versions/edit" class="button"><fmt:message key="button.version.create"/></a> |
40 <a href="./projects/versions/edit" class="button"><fmt:message key="button.version.create"/></a> |
39 <a href="./projects/issues/edit" class="button"><fmt:message key="button.issue.create"/></a> |
41 <a href="./projects/issues/edit" class="button"><fmt:message key="button.issue.create"/></a> |
|
42 <a href="./projects/issues/" class="button"><fmt:message key="button.issue.list"/></a> |
|
43 <c:if test="${not statsHideZeros}"> |
|
44 <a href="./projects/view?reduced=1" class="button"><fmt:message key="button.stats.hidezeros"/></a> |
|
45 </c:if> |
|
46 <c:if test="${statsHideZeros}"> |
|
47 <a href="./projects/view?reduced=0" class="button"><fmt:message key="button.stats.showzeros"/></a> |
|
48 </c:if> |
40 </div> |
49 </div> |
41 |
50 |
42 <c:if test="${not empty versions}"> |
51 <div id="version-stats"> |
43 <table id="version-list" class="datatable medskip"> |
52 <c:forEach var="version" items="${versions}" varStatus="iter"> |
44 <thead> |
53 <h2> |
45 <tr> |
54 <fmt:message key="version.label" /> <c:out value="${version.name}" /> - <fmt:message key="version.status.${version.status}"/> |
46 <th></th> |
55 <a href="./projects/versions/edit?id=${version.id}">✎</a> |
47 <th><fmt:message key="thead.version.name"/></th> |
56 </h2> |
48 <th><fmt:message key="thead.version.status"/></th> |
|
49 </tr> |
|
50 </thead> |
|
51 <tbody> |
|
52 <c:forEach var="version" items="${versions}"> |
|
53 <tr class="nowrap"> |
|
54 <td style="width: 2em;"><a href="./projects/versions/edit?id=${version.id}">✎</a> |
|
55 </td> |
|
56 <td><c:out value="${version.name}"/></td> |
|
57 <td><fmt:message key="version.status.${version.status}"/></td> |
|
58 </tr> |
|
59 </c:forEach> |
|
60 </tbody> |
|
61 </table> |
|
62 </c:if> |
|
63 |
57 |
64 <table id="issue-list" class="datatable medskip"> |
58 <h3><fmt:message key="version.statistics.affected" /></h3> |
65 <thead> |
59 <c:set var="stats" value="${statsAffected[iter.index]}" /> |
66 <tr> |
60 <%@include file="../jspf/version-stats.jsp" %> |
67 <th><fmt:message key="thead.issue.subject"/></th> |
61 |
68 <th><fmt:message key="thead.issue.assignee"/></th> |
62 <h3><fmt:message key="version.statistics.scheduled" /></h3> |
69 <th><fmt:message key="thead.issue.category"/></th> |
63 <c:set var="stats" value="${statsScheduled[iter.index]}" /> |
70 <th><fmt:message key="thead.issue.status"/></th> |
64 <%@include file="../jspf/version-stats.jsp" %> |
71 <th><fmt:message key="thead.issue.created"/></th> |
65 |
72 <th><fmt:message key="thead.issue.updated"/></th> |
66 <h3><fmt:message key="version.statistics.resolved" /></h3> |
73 <th><fmt:message key="thead.issue.eta"/></th> |
67 <c:set var="stats" value="${statsResolved[iter.index]}" /> |
74 <!-- TODO: add other information --> |
68 <%@include file="../jspf/version-stats.jsp" %> |
75 </tr> |
69 </c:forEach> |
76 </thead> |
70 </div> |
77 <tbody> |
|
78 <c:forEach var="issue" items="${issues}"> |
|
79 <tr> |
|
80 <td> |
|
81 <a href="./projects/issues/edit?id=${issue.id}"> |
|
82 <c:out value="${issue.subject}" /> |
|
83 </a> |
|
84 </td> |
|
85 <td> |
|
86 <c:if test="${not empty issue.assignee}"> |
|
87 <c:out value="${issue.assignee.shortDisplayname}" /> |
|
88 </c:if> |
|
89 <c:if test="${empty issue.assignee}"> |
|
90 <fmt:message key="placeholder.null-assignee" /> |
|
91 </c:if> |
|
92 </td> |
|
93 <td> |
|
94 <fmt:message key="issue.category.${issue.category}" /> |
|
95 </td> |
|
96 <td> |
|
97 <fmt:message key="issue.status.${issue.status}" /> |
|
98 </td> |
|
99 <td> |
|
100 <fmt:formatDate value="${issue.created}" type="BOTH"/> |
|
101 </td> |
|
102 <td> |
|
103 <fmt:formatDate value="${issue.updated}" type="BOTH"/> |
|
104 </td> |
|
105 <td> |
|
106 <fmt:formatDate value="${issue.eta}" /> |
|
107 </td> |
|
108 </tr> |
|
109 </c:forEach> |
|
110 </tbody> |
|
111 </table> |
|