diff --git a/libreplan-webapp/src/main/java/org/libreplan/web/users/dashboard/IMonthlyTimesheetModel.java b/libreplan-webapp/src/main/java/org/libreplan/web/users/dashboard/IMonthlyTimesheetModel.java index 42b5f76a6..96407ec19 100644 --- a/libreplan-webapp/src/main/java/org/libreplan/web/users/dashboard/IMonthlyTimesheetModel.java +++ b/libreplan-webapp/src/main/java/org/libreplan/web/users/dashboard/IMonthlyTimesheetModel.java @@ -40,8 +40,23 @@ public interface IMonthlyTimesheetModel { */ void initCreateOrEdit(LocalDate date); + /** + * Returns the date of the monthly timesheet (only year and month should + * take into account as the day is not important to define a monthly + * timesheet). + */ LocalDate getDate(); + /** + * Returns the first day of the month of the current monthly timesheet. + */ + LocalDate getFirstDay(); + + /** + * Returns the last day of the month of the current monthly timesheet. + */ + LocalDate getLastDate(); + /** * Returns resource bound to current user. */ diff --git a/libreplan-webapp/src/main/java/org/libreplan/web/users/dashboard/MonthlyTimesheetController.java b/libreplan-webapp/src/main/java/org/libreplan/web/users/dashboard/MonthlyTimesheetController.java index df5191301..08c13d0d8 100644 --- a/libreplan-webapp/src/main/java/org/libreplan/web/users/dashboard/MonthlyTimesheetController.java +++ b/libreplan-webapp/src/main/java/org/libreplan/web/users/dashboard/MonthlyTimesheetController.java @@ -68,8 +68,8 @@ public class MonthlyTimesheetController extends GenericForwardComposer private RowRenderer rowRenderer = new RowRenderer() { - private LocalDate start; - private LocalDate end; + private LocalDate first; + private LocalDate last; @Override public void render(Row row, Object data) throws Exception { @@ -96,9 +96,8 @@ public class MonthlyTimesheetController extends GenericForwardComposer } private void initMonthlyTimesheetDates() { - LocalDate date = monthlyTimesheetModel.getDate(); - start = date.dayOfMonth().withMinimumValue(); - end = date.dayOfMonth().withMaximumValue(); + first = monthlyTimesheetModel.getFirstDay(); + last = monthlyTimesheetModel.getLastDate(); } private void renderOrderElementRow(Row row, OrderElement orderElement) { @@ -112,7 +111,7 @@ public class MonthlyTimesheetController extends GenericForwardComposer private void appendInputsForDays(Row row, final OrderElement orderElement) { - for (LocalDate day = start; day.compareTo(end) <= 0; day = day + for (LocalDate day = first; day.compareTo(last) <= 0; day = day .plusDays(1)) { final LocalDate textboxDate = day; @@ -186,7 +185,7 @@ public class MonthlyTimesheetController extends GenericForwardComposer } private void appendTotalForDays(Row row) { - for (LocalDate day = start; day.compareTo(end) <= 0; day = day + for (LocalDate day = first; day.compareTo(last) <= 0; day = day .plusDays(1)) { Cell cell = getCenteredCell(getDisabledTextboxWithId(getTotalRowTextboxId(day))); if (monthlyTimesheetModel.getResourceCapacity(day).isZero()) { @@ -249,7 +248,7 @@ public class MonthlyTimesheetController extends GenericForwardComposer private void appendCapcityForDaysAndTotal(Row row) { EffortDuration totalCapacity = EffortDuration.zero(); - for (LocalDate day = start; day.compareTo(end) <= 0; day = day + for (LocalDate day = first; day.compareTo(last) <= 0; day = day .plusDays(1)) { EffortDuration capacity = monthlyTimesheetModel .getResourceCapacity(day); diff --git a/libreplan-webapp/src/main/java/org/libreplan/web/users/dashboard/MonthlyTimesheetModel.java b/libreplan-webapp/src/main/java/org/libreplan/web/users/dashboard/MonthlyTimesheetModel.java index e2de824c3..811a01345 100644 --- a/libreplan-webapp/src/main/java/org/libreplan/web/users/dashboard/MonthlyTimesheetModel.java +++ b/libreplan-webapp/src/main/java/org/libreplan/web/users/dashboard/MonthlyTimesheetModel.java @@ -68,6 +68,10 @@ public class MonthlyTimesheetModel implements IMonthlyTimesheetModel { private LocalDate date; + private LocalDate firstDay; + + private LocalDate lastDay; + private List orderElements; private WorkReport workReport; @@ -102,21 +106,24 @@ public class MonthlyTimesheetModel implements IMonthlyTimesheetModel { } this.date = date; + initDates(); + initCapacityMap(); initOrderElements(); initWorkReport(); } + private void initDates() { + firstDay = date.dayOfMonth().withMinimumValue(); + lastDay = date.dayOfMonth().withMaximumValue(); + } + private void initCapacityMap() { forceLoad(getWorker().getCalendar()); - LocalDate date = getDate(); - LocalDate start = date.dayOfMonth().withMinimumValue(); - LocalDate end = date.dayOfMonth().withMaximumValue(); - capacityMap = new HashMap(); - for (LocalDate day = start; day.compareTo(end) <= 0; day = day + for (LocalDate day = firstDay; day.compareTo(lastDay) <= 0; day = day .plusDays(1)) { capacityMap.put( day, @@ -185,6 +192,16 @@ public class MonthlyTimesheetModel implements IMonthlyTimesheetModel { return date; } + @Override + public LocalDate getFirstDay() { + return firstDay; + } + + @Override + public LocalDate getLastDate() { + return lastDay; + } + @Override public Worker getWorker() { return user.getWorker();