add components to navmenu

Thu, 15 Oct 2020 14:01:49 +0200

author
Mike Becker <universe@uap-core.de>
date
Thu, 15 Oct 2020 14:01:49 +0200
changeset 129
a09d5c59351a
parent 128
947d0f6a6a83
child 130
7ef369744fd1

add components to navmenu

src/main/java/de/uapcore/lightpit/modules/ProjectsModule.java file | annotate | diff | comparison | revisions
src/main/java/de/uapcore/lightpit/viewmodel/ProjectInfo.java file | annotate | diff | comparison | revisions
src/main/java/de/uapcore/lightpit/viewmodel/ProjectView.java file | annotate | diff | comparison | revisions
src/main/resources/localization/projects.properties file | annotate | diff | comparison | revisions
src/main/resources/localization/projects_de.properties file | annotate | diff | comparison | revisions
src/main/webapp/WEB-INF/jsp/project-navmenu.jsp file | annotate | diff | comparison | revisions
src/main/webapp/projects.css file | annotate | diff | comparison | revisions
     1.1 --- a/src/main/java/de/uapcore/lightpit/modules/ProjectsModule.java	Thu Oct 15 13:31:52 2020 +0200
     1.2 +++ b/src/main/java/de/uapcore/lightpit/modules/ProjectsModule.java	Thu Oct 15 14:01:49 2020 +0200
     1.3 @@ -60,8 +60,10 @@
     1.4  
     1.5      private static final String SESSION_ATTR_SELECTED_PROJECT = fqn(ProjectsModule.class, "selected_project");
     1.6      private static final String SESSION_ATTR_SELECTED_VERSION = fqn(ProjectsModule.class, "selected_version");
     1.7 +    private static final String SESSION_ATTR_SELECTED_COMPONENT = fqn(ProjectsModule.class, "selected_component");
     1.8      private static final String PARAMETER_SELECTED_PROJECT = "pid";
     1.9      private static final String PARAMETER_SELECTED_VERSION = "vid";
    1.10 +    private static final String PARAMETER_SELECTED_COMPONENT = "cid";
    1.11  
    1.12      @Override
    1.13      protected String getResourceBundleName() {
    1.14 @@ -84,6 +86,7 @@
    1.15      private void populate(ProjectView viewModel, HttpServletRequest req, DataAccessObjects dao) throws SQLException {
    1.16          final var projectDao = dao.getProjectDao();
    1.17          final var versionDao = dao.getVersionDao();
    1.18 +        final var componentDao = dao.getComponentDao();
    1.19  
    1.20          projectDao.list().stream().map(ProjectInfo::new).forEach(viewModel.getProjectList()::add);
    1.21  
    1.22 @@ -96,6 +99,7 @@
    1.23              } else {
    1.24                  final var info = new ProjectInfo(project);
    1.25                  info.setVersions(versionDao.list(project));
    1.26 +                info.setComponents(componentDao.list(project));
    1.27                  info.setIssueSummary(projectDao.getIssueSummary(project));
    1.28                  viewModel.setProjectInfo(info);
    1.29              }
    1.30 @@ -103,8 +107,20 @@
    1.31  
    1.32          // Select Version
    1.33          final int vid = syncParamWithSession(req, PARAMETER_SELECTED_VERSION, SESSION_ATTR_SELECTED_VERSION);
    1.34 -        if (vid >= 0) {
    1.35 +        if (vid > 0) {
    1.36              viewModel.setVersionFilter(versionDao.find(vid));
    1.37 +        } else {
    1.38 +            // NULL for version means: show all unassigned
    1.39 +            viewModel.setVersionFilter(null);
    1.40 +        }
    1.41 +
    1.42 +        // Select Component
    1.43 +        final int cid = syncParamWithSession(req, PARAMETER_SELECTED_COMPONENT, SESSION_ATTR_SELECTED_COMPONENT);
    1.44 +        if (cid > 0) {
    1.45 +            viewModel.setComponentFilter(componentDao.find(cid));
    1.46 +        } else if (cid <= 0) {
    1.47 +            // -1 means: filter for unassigned, null means: show all
    1.48 +            viewModel.setComponentFilter(new Component(-1));
    1.49          }
    1.50      }
    1.51  
     2.1 --- a/src/main/java/de/uapcore/lightpit/viewmodel/ProjectInfo.java	Thu Oct 15 13:31:52 2020 +0200
     2.2 +++ b/src/main/java/de/uapcore/lightpit/viewmodel/ProjectInfo.java	Thu Oct 15 14:01:49 2020 +0200
     2.3 @@ -1,5 +1,6 @@
     2.4  package de.uapcore.lightpit.viewmodel;
     2.5  
     2.6 +import de.uapcore.lightpit.entities.Component;
     2.7  import de.uapcore.lightpit.entities.IssueSummary;
     2.8  import de.uapcore.lightpit.entities.Project;
     2.9  import de.uapcore.lightpit.entities.Version;
    2.10 @@ -11,6 +12,7 @@
    2.11  
    2.12      private final Project project;
    2.13      private List<Version> versions = Collections.emptyList();
    2.14 +    private List<Component> components = Collections.emptyList();
    2.15      private IssueSummary issueSummary = new IssueSummary();
    2.16  
    2.17      public ProjectInfo(Project project) {
    2.18 @@ -29,6 +31,14 @@
    2.19          this.versions = versions;
    2.20      }
    2.21  
    2.22 +    public List<Component> getComponents() {
    2.23 +        return components;
    2.24 +    }
    2.25 +
    2.26 +    public void setComponents(List<Component> components) {
    2.27 +        this.components = components;
    2.28 +    }
    2.29 +
    2.30      public Version getLatestVersion() {
    2.31          // expects versions to be sorted by status descending
    2.32          for (var v : versions) {
     3.1 --- a/src/main/java/de/uapcore/lightpit/viewmodel/ProjectView.java	Thu Oct 15 13:31:52 2020 +0200
     3.2 +++ b/src/main/java/de/uapcore/lightpit/viewmodel/ProjectView.java	Thu Oct 15 14:01:49 2020 +0200
     3.3 @@ -1,5 +1,6 @@
     3.4  package de.uapcore.lightpit.viewmodel;
     3.5  
     3.6 +import de.uapcore.lightpit.entities.Component;
     3.7  import de.uapcore.lightpit.entities.Version;
     3.8  
     3.9  import java.util.ArrayList;
    3.10 @@ -10,6 +11,7 @@
    3.11      private final List<ProjectInfo> projectList = new ArrayList<>();
    3.12      private ProjectInfo projectInfo;
    3.13      private Version versionFilter;
    3.14 +    private Component componentFilter;
    3.15  
    3.16      public List<ProjectInfo> getProjectList() {
    3.17          return projectList;
    3.18 @@ -30,4 +32,12 @@
    3.19      public void setVersionFilter(Version versionFilter) {
    3.20          this.versionFilter = versionFilter;
    3.21      }
    3.22 +
    3.23 +    public Component getComponentFilter() {
    3.24 +        return componentFilter;
    3.25 +    }
    3.26 +
    3.27 +    public void setComponentFilter(Component componentFilter) {
    3.28 +        this.componentFilter = componentFilter;
    3.29 +    }
    3.30  }
     4.1 --- a/src/main/resources/localization/projects.properties	Thu Oct 15 13:31:52 2020 +0200
     4.2 +++ b/src/main/resources/localization/projects.properties	Thu Oct 15 14:01:49 2020 +0200
     4.3 @@ -32,9 +32,10 @@
     4.4  
     4.5  no-projects=Welcome to LightPIT. Start off by creating a new project!
     4.6  
     4.7 -menu.versions=Versions
     4.8 -menu.versions.unassigned=unassigned
     4.9 -menu.issues=Issues
    4.10 +navmenu.versions=Versions
    4.11 +navmenu.components=Components
    4.12 +navmenu.unassigned=unassigned
    4.13 +navmenu.all=all
    4.14  
    4.15  name=Name
    4.16  description=Description
     5.1 --- a/src/main/resources/localization/projects_de.properties	Thu Oct 15 13:31:52 2020 +0200
     5.2 +++ b/src/main/resources/localization/projects_de.properties	Thu Oct 15 14:01:49 2020 +0200
     5.3 @@ -32,9 +32,10 @@
     5.4  
     5.5  no-projects=Wilkommen bei LightPIT. Beginnen Sie mit der Erstellung eines Projektes!
     5.6  
     5.7 -menu.versions=Versionen
     5.8 -menu.versions.unassigned=Nicht Zugewiesen
     5.9 -menu.issues=Vorg\u00e4nge
    5.10 +navmenu.versions=Versionen
    5.11 +navmenu.components=Komponenten
    5.12 +navmenu.unassigned=Nicht Zugewiesen
    5.13 +navmenu.all=Alle
    5.14  
    5.15  name=Name
    5.16  description=Beschreibung
     6.1 --- a/src/main/webapp/WEB-INF/jsp/project-navmenu.jsp	Thu Oct 15 13:31:52 2020 +0200
     6.2 +++ b/src/main/webapp/WEB-INF/jsp/project-navmenu.jsp	Thu Oct 15 14:01:49 2020 +0200
     6.3 @@ -38,26 +38,54 @@
     6.4          </a>
     6.5      </div>
     6.6      <c:if test="${isActive}">
     6.7 +        <!-- VERSIONS -->
     6.8          <div class="menuEntry level-1">
     6.9              <a href="projects/versions?pid=${projectInfo.project.id}">
    6.10 -                <fmt:message key="menu.versions"/>
    6.11 +                <fmt:message key="navmenu.versions"/>
    6.12              </a>
    6.13          </div>
    6.14          <div class="menuEntry level-2">
    6.15 -            <div class="version-icon" style="background: black"></div>
    6.16 +            <div class="navmenu-icon" style="background: black"></div>
    6.17              <a href="projects/view?pid=${projectInfo.project.id}&vid=-1">
    6.18 -                <fmt:message key="menu.versions.unassigned" />
    6.19 +                <fmt:message key="navmenu.unassigned" />
    6.20              </a>
    6.21          </div>
    6.22          <c:forEach var="version" items="${viewmodel.projectInfo.versions}">
    6.23              <c:set var="isVersionActive" value="${viewmodel.versionFilter eq version}" />
    6.24              <div class="menuEntry level-2" <c:if test="${isVersionActive}">data-active</c:if>
    6.25                      title="<fmt:message key="version.status.${version.status}" />">
    6.26 -                <div class="version-icon version-${version.status}"></div>
    6.27 +                <div class="navmenu-icon version-${version.status}"></div>
    6.28                  <a href="projects/view?pid=${projectInfo.project.id}&vid=${version.id}">
    6.29                      <c:out value="${version.name}"/>
    6.30                  </a>
    6.31              </div>
    6.32          </c:forEach>
    6.33 +        <!-- COMPONENTS -->
    6.34 +        <div class="menuEntry level-1">
    6.35 +            <a href="projects/components?pid=${projectInfo.project.id}">
    6.36 +                <fmt:message key="navmenu.components"/>
    6.37 +            </a>
    6.38 +        </div>
    6.39 +        <div class="menuEntry level-2">
    6.40 +            <div class="navmenu-icon" style="background: black"></div>
    6.41 +            <a href="projects/view?pid=${projectInfo.project.id}&cid=0">
    6.42 +                <fmt:message key="navmenu.all" />
    6.43 +            </a>
    6.44 +        </div>
    6.45 +        <div class="menuEntry level-2">
    6.46 +            <div class="navmenu-icon" style="background: black"></div>
    6.47 +            <a href="projects/view?pid=${projectInfo.project.id}&cid=-1">
    6.48 +                <fmt:message key="navmenu.unassigned" />
    6.49 +            </a>
    6.50 +        </div>
    6.51 +        <c:forEach var="component" items="${viewmodel.projectInfo.components}">
    6.52 +            <c:set var="isComponentActive" value="${viewmodel.componentFilter eq component}" />
    6.53 +            <div class="menuEntry level-2" <c:if test="${isVersionActive}">data-active</c:if> >
    6.54 +                <div class="navmenu-icon" style="background-color: ${component.color}"></div>
    6.55 +                <a href="projects/view?pid=${projectInfo.project.id}&cid=${component.id}">
    6.56 +                    <c:out value="${component.name}"/>
    6.57 +                </a>
    6.58 +            </div>
    6.59 +        </c:forEach>
    6.60      </c:if>
    6.61  </c:forEach>
     7.1 --- a/src/main/webapp/projects.css	Thu Oct 15 13:31:52 2020 +0200
     7.2 +++ b/src/main/webapp/projects.css	Thu Oct 15 14:01:49 2020 +0200
     7.3 @@ -109,7 +109,7 @@
     7.4      background: green;
     7.5  }
     7.6  
     7.7 -div.version-icon {
     7.8 +div.navmenu-icon {
     7.9      display: inline-block;
    7.10      width: .5em;
    7.11      height: .5em;

mercurial