From cdc733ce8d854e82f2f362fe2a2d90f77a40b637 Mon Sep 17 00:00:00 2001 From: Manuel Rego Casasnovas Date: Mon, 22 Oct 2012 13:54:06 +0200 Subject: [PATCH] Add UI to filter by criteria FEA: ItEr77S09WBSReport --- .../reports/IProjectStatusReportModel.java | 9 +++++ .../ProjectStatusReportController.java | 29 ++++++++++++++ .../web/reports/ProjectStatusReportModel.java | 36 +++++++++++++++++ .../webapp/reports/projectStatusReport.zul | 40 +++++++++++++++++++ 4 files changed, 114 insertions(+) diff --git a/libreplan-webapp/src/main/java/org/libreplan/web/reports/IProjectStatusReportModel.java b/libreplan-webapp/src/main/java/org/libreplan/web/reports/IProjectStatusReportModel.java index 8aa573ee1..e4166d3ed 100644 --- a/libreplan-webapp/src/main/java/org/libreplan/web/reports/IProjectStatusReportModel.java +++ b/libreplan-webapp/src/main/java/org/libreplan/web/reports/IProjectStatusReportModel.java @@ -26,6 +26,7 @@ import java.util.Set; import org.libreplan.business.labels.entities.Label; import org.libreplan.business.orders.entities.Order; import org.libreplan.business.reports.dtos.ProjectStatusReportDTO; +import org.libreplan.business.resources.entities.Criterion; /** * Contract for Project Status report model. @@ -54,4 +55,12 @@ public interface IProjectStatusReportModel { ProjectStatusReportDTO getTotalDTO(); + List getAllCriteria(); + + void addSelectedCriterion(Criterion criterion); + + void removeSelectedCriterion(Criterion criterion); + + Set getSelectedCriteria(); + } diff --git a/libreplan-webapp/src/main/java/org/libreplan/web/reports/ProjectStatusReportController.java b/libreplan-webapp/src/main/java/org/libreplan/web/reports/ProjectStatusReportController.java index d59b3f4cf..db4485a2c 100644 --- a/libreplan-webapp/src/main/java/org/libreplan/web/reports/ProjectStatusReportController.java +++ b/libreplan-webapp/src/main/java/org/libreplan/web/reports/ProjectStatusReportController.java @@ -32,6 +32,7 @@ import net.sf.jasperreports.engine.data.JRBeanCollectionDataSource; import org.libreplan.business.labels.entities.Label; import org.libreplan.business.orders.entities.Order; import org.libreplan.business.reports.dtos.ProjectStatusReportDTO; +import org.libreplan.business.resources.entities.Criterion; import org.libreplan.web.common.Util; import org.libreplan.web.common.components.bandboxsearch.BandboxSearch; import org.zkoss.zk.ui.Component; @@ -58,6 +59,10 @@ public class ProjectStatusReportController extends LibrePlanReportController { private Listbox listboxLabels; + private BandboxSearch bandboxCriteria; + + private Listbox listboxCriteria; + @Override public void doAfterCompose(Component comp) throws Exception { super.doAfterCompose(comp); @@ -145,4 +150,28 @@ public class ProjectStatusReportController extends LibrePlanReportController { return projectStatusReportModel.getSelectedLabels(); } + public List getAllCriteria() { + return projectStatusReportModel.getAllCriteria(); + } + + public void addCriterion() { + Criterion criterion = (Criterion) bandboxCriteria.getSelectedElement(); + if (criterion == null) { + throw new WrongValueException(bandboxCriteria, + _("please, select a criterion")); + } + projectStatusReportModel.addSelectedCriterion(criterion); + Util.reloadBindings(listboxCriteria); + bandboxCriteria.clear(); + } + + public void removeCriterion(Criterion criterion) { + projectStatusReportModel.removeSelectedCriterion(criterion); + Util.reloadBindings(listboxCriteria); + } + + public Set getSelectedCriteria() { + return projectStatusReportModel.getSelectedCriteria(); + } + } \ No newline at end of file diff --git a/libreplan-webapp/src/main/java/org/libreplan/web/reports/ProjectStatusReportModel.java b/libreplan-webapp/src/main/java/org/libreplan/web/reports/ProjectStatusReportModel.java index eac0345ab..2e62db6a8 100644 --- a/libreplan-webapp/src/main/java/org/libreplan/web/reports/ProjectStatusReportModel.java +++ b/libreplan-webapp/src/main/java/org/libreplan/web/reports/ProjectStatusReportModel.java @@ -33,6 +33,8 @@ import org.libreplan.business.orders.entities.Order; import org.libreplan.business.orders.entities.OrderElement; import org.libreplan.business.planner.entities.IMoneyCostCalculator; import org.libreplan.business.reports.dtos.ProjectStatusReportDTO; +import org.libreplan.business.resources.daos.ICriterionDAO; +import org.libreplan.business.resources.entities.Criterion; import org.libreplan.business.scenarios.IScenarioManager; import org.libreplan.business.workingday.EffortDuration; import org.libreplan.web.security.SecurityUtils; @@ -58,6 +60,9 @@ public class ProjectStatusReportModel implements IProjectStatusReportModel { @Autowired private ILabelDAO labelDAO; + @Autowired + private ICriterionDAO criterionDAO; + @Autowired private IScenarioManager scenarioManager; @@ -66,6 +71,8 @@ public class ProjectStatusReportModel implements IProjectStatusReportModel { private Set