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