diff --git a/navalplanner-webapp/src/main/java/org/navalplanner/web/workreports/IWorkReportModel.java b/navalplanner-webapp/src/main/java/org/navalplanner/web/workreports/IWorkReportModel.java index ec1906faf..e6fff2c3c 100644 --- a/navalplanner-webapp/src/main/java/org/navalplanner/web/workreports/IWorkReportModel.java +++ b/navalplanner-webapp/src/main/java/org/navalplanner/web/workreports/IWorkReportModel.java @@ -84,8 +84,14 @@ public interface IWorkReportModel { WorkReport getWorkReport(); /** - * Return all {@link WorkReportLine} associated with current {@link WorkReport} - * + * Gets the current {@link WorkReportType}. + * @return A {@link WorkReportType} + */ + WorkReportType getWorkReportType(); + + /** + * Return all {@link WorkReportLine} associated with current + * {@link WorkReport} * @return */ List getWorkReportLines(); diff --git a/navalplanner-webapp/src/main/java/org/navalplanner/web/workreports/WorkReportCRUDController.java b/navalplanner-webapp/src/main/java/org/navalplanner/web/workreports/WorkReportCRUDController.java index 262ee2abb..ec0c32081 100644 --- a/navalplanner-webapp/src/main/java/org/navalplanner/web/workreports/WorkReportCRUDController.java +++ b/navalplanner-webapp/src/main/java/org/navalplanner/web/workreports/WorkReportCRUDController.java @@ -93,6 +93,8 @@ public class WorkReportCRUDController extends GenericForwardComposer implements private static final org.apache.commons.logging.Log LOG = LogFactory.getLog(WorkReportCRUDController.class); + private boolean cameBackList = false; + private Window createWindow; private Window listWindow; @@ -135,6 +137,8 @@ public class WorkReportCRUDController extends GenericForwardComposer implements private Listbox listType; + private Listbox listTypeToAssign; + private Datebox filterStartDate; private Datebox filterFinishDate; @@ -515,7 +519,7 @@ public class WorkReportCRUDController extends GenericForwardComposer implements } public void cancel() { - if (workReportModel.isEditing()) { + if (cameBackList || workReportModel.isEditing()) { goToList(); } else { workReportTypeCRUD.goToList(); @@ -523,6 +527,7 @@ public class WorkReportCRUDController extends GenericForwardComposer implements } public void goToCreateForm(WorkReportType workReportType) { + cameBackList = false; workReportModel.initCreate(workReportType); prepareWorkReportList(); getVisibility().showOnly(createWindow); @@ -557,6 +562,7 @@ public class WorkReportCRUDController extends GenericForwardComposer implements // components work report list listing = (Grid) window.getFellow("listing"); listType = (Listbox) window.getFellow("listType"); + listTypeToAssign = (Listbox) window.getFellow("listTypeToAssign"); filterStartDate = (Datebox) window.getFellow("filterStartDate"); filterFinishDate = (Datebox) window.getFellow("filterFinishDate"); clearFilterDates(); @@ -1366,8 +1372,22 @@ public class WorkReportCRUDController extends GenericForwardComposer implements private final String FILTER = _("Filter work reports"); + public List getFilterWorkReportTypes() { + List result = workReportModel.getWorkReportTypes(); + if (result.isEmpty()) { + result.add(getDefaultWorkReportType()); + } else { + result.add(0, getDefaultWorkReportType()); + } + return result; + } + public List getWorkReportTypes() { - return workReportModel.getWorkReportTypes(); + List result = workReportModel.getWorkReportTypes(); + if (!result.isEmpty()) { + this.firstType = result.get(0); + } + return result; } public WorkReportType getDefaultWorkReportType() { @@ -1582,4 +1602,45 @@ public class WorkReportCRUDController extends GenericForwardComposer implements }; } + /** + * Methods improved the work report edition and creation.Executed on + * pressing New work report button Creates a new work report for a type, and + * added it to the work report list + */ + + public void onCreateNewWorkReport() { + Listitem selectedItem = listTypeToAssign.getSelectedItem(); + if (selectedItem == null) { + throw new WrongValueException(listTypeToAssign, + _("please, select a work report type")); + } + + WorkReportType type = (WorkReportType) selectedItem.getValue(); + if (type == null) { + throw new WrongValueException(listTypeToAssign, + _("please, select a work report type")); + } + + goToCreateForm(type); + listTypeToAssign.clearSelection(); + cameBackList = true; + } + + private WorkReportType firstType; + + public WorkReportType getFirstType() { + return firstType; + } + + public void setFirstType(WorkReportType firstType) { + this.firstType = firstType; + } + + public void newWorkReportWithSameType() { + if (save()) { + goToCreateForm(workReportModel.getWorkReportType()); + cameBackList = true; + } + } + } diff --git a/navalplanner-webapp/src/main/java/org/navalplanner/web/workreports/WorkReportModel.java b/navalplanner-webapp/src/main/java/org/navalplanner/web/workreports/WorkReportModel.java index bcf9a34c4..b1c189011 100644 --- a/navalplanner-webapp/src/main/java/org/navalplanner/web/workreports/WorkReportModel.java +++ b/navalplanner-webapp/src/main/java/org/navalplanner/web/workreports/WorkReportModel.java @@ -100,7 +100,8 @@ public class WorkReportModel implements IWorkReportModel { return workReport; } - private WorkReportType getWorkReportType() { + @Override + public WorkReportType getWorkReportType() { return this.workReportType; } @@ -508,11 +509,6 @@ public class WorkReportModel implements IWorkReportModel { public List getWorkReportTypes() { List result = workReportTypeDAO .list(WorkReportType.class); - if (result.isEmpty()) { - result.add(getDefaultType()); - } else { - result.add(0, getDefaultType()); - } return result; } diff --git a/navalplanner-webapp/src/main/webapp/workreports/_editWorkReport.zul b/navalplanner-webapp/src/main/webapp/workreports/_editWorkReport.zul index 2920bc644..a83c32fc7 100644 --- a/navalplanner-webapp/src/main/webapp/workreports/_editWorkReport.zul +++ b/navalplanner-webapp/src/main/webapp/workreports/_editWorkReport.zul @@ -92,6 +92,8 @@ label="${arg.save_button_label}" sclass="save-button global-action"/>