diff --git a/navalplanner-webapp/src/main/java/org/navalplanner/web/calendars/BaseCalendarEditionController.java b/navalplanner-webapp/src/main/java/org/navalplanner/web/calendars/BaseCalendarEditionController.java index 1548ba84a..56d597ae0 100644 --- a/navalplanner-webapp/src/main/java/org/navalplanner/web/calendars/BaseCalendarEditionController.java +++ b/navalplanner-webapp/src/main/java/org/navalplanner/web/calendars/BaseCalendarEditionController.java @@ -35,17 +35,18 @@ import java.util.Map; import org.apache.commons.lang.StringUtils; import org.joda.time.LocalDate; import org.navalplanner.business.calendars.entities.BaseCalendar; +import org.navalplanner.business.calendars.entities.BaseCalendar.DayType; import org.navalplanner.business.calendars.entities.CalendarAvailability; import org.navalplanner.business.calendars.entities.CalendarData; +import org.navalplanner.business.calendars.entities.CalendarData.Days; import org.navalplanner.business.calendars.entities.CalendarException; import org.navalplanner.business.calendars.entities.CalendarExceptionType; import org.navalplanner.business.calendars.entities.ResourceCalendar; -import org.navalplanner.business.calendars.entities.BaseCalendar.DayType; -import org.navalplanner.business.calendars.entities.CalendarData.Days; import org.navalplanner.business.workingday.EffortDuration; import org.navalplanner.business.workingday.EffortDuration.Granularity; import org.navalplanner.web.common.Util; import org.navalplanner.web.common.components.CalendarHighlightedDays; +import org.navalplanner.web.common.components.EffortDurationPicker; import org.zkoss.zk.ui.Component; import org.zkoss.zk.ui.WrongValueException; import org.zkoss.zk.ui.event.Event; @@ -223,42 +224,26 @@ public abstract class BaseCalendarEditionController extends labelListcell.appendChild(new Label(day.toString())); item.appendChild(labelListcell); - Listcell hoursListcell = new Listcell(); - final Intbox intBox = new Intbox(); - Intbox hoursIntbox = Util.bind(intBox, new Util.Getter() { + Listcell durationCell = new Listcell(); + EffortDurationPicker durationPicker = new EffortDurationPicker(); + durationCell.appendChild(durationPicker); + durationPicker.bind(new Util.Getter() { @Override - public Integer get() { - return baseCalendarModel.getHours(day); + public EffortDuration get() { + return baseCalendarModel.getDurationAt(day); } - }, new Util.Setter() { + }, new Util.Setter() { @Override - public void set(Integer value) { - try { - baseCalendarModel.setHours(day, value); - } catch (IllegalArgumentException e) { - throw new WrongValueException(intBox, e.getMessage()); - } - } - }); - - hoursIntbox.addEventListener(Events.ON_CHANGE, new EventListener() { - - @Override - public void onEvent(Event event) throws Exception { + public void set(EffortDuration value) { + baseCalendarModel.setDurationAt(day, value); reloadDayInformation(); } - }); - - if (baseCalendarModel.isDerived() - && baseCalendarModel.isDefault(day)) { - hoursIntbox.setDisabled(true); - } - - hoursListcell.appendChild(hoursIntbox); - item.appendChild(hoursListcell); + durationPicker.setDisabled(baseCalendarModel.isDerived() + && baseCalendarModel.isDefault(day)); + item.appendChild(durationCell); if (baseCalendarModel.isDerived()) { Listcell defaultListcell = new Listcell(); diff --git a/navalplanner-webapp/src/main/java/org/navalplanner/web/calendars/BaseCalendarModel.java b/navalplanner-webapp/src/main/java/org/navalplanner/web/calendars/BaseCalendarModel.java index a88720a18..ef8b96bed 100644 --- a/navalplanner-webapp/src/main/java/org/navalplanner/web/calendars/BaseCalendarModel.java +++ b/navalplanner-webapp/src/main/java/org/navalplanner/web/calendars/BaseCalendarModel.java @@ -44,6 +44,7 @@ import org.navalplanner.business.common.daos.IConfigurationDAO; import org.navalplanner.business.common.entities.Configuration; import org.navalplanner.business.common.exceptions.InstanceNotFoundException; import org.navalplanner.business.common.exceptions.ValidationException; +import org.navalplanner.business.workingday.EffortDuration; import org.navalplanner.web.common.concurrentdetection.OnConcurrentModification; import org.springframework.beans.factory.annotation.Autowired; import org.springframework.beans.factory.annotation.Qualifier; @@ -271,12 +272,11 @@ public class BaseCalendarModel implements IBaseCalendarModel { } @Override - public Integer getHours(Days day) { + public EffortDuration getDurationAt(Days day) { if (getBaseCalendar() == null) { - return null; + return EffortDuration.zero(); } - return BaseCalendar.roundToHours(getBaseCalendar().getDurationAt( - selectedDate, day)); + return getBaseCalendar().getDurationAt(selectedDate, day); } @Override @@ -303,9 +303,9 @@ public class BaseCalendarModel implements IBaseCalendarModel { } @Override - public void setHours(Days day, Integer hours) { + public void setDurationAt(Days day, EffortDuration value) { if (getBaseCalendar() != null) { - getBaseCalendar().setHours(day, hours, selectedDate); + getBaseCalendar().setDurationAt(day, value, selectedDate); } } diff --git a/navalplanner-webapp/src/main/java/org/navalplanner/web/calendars/IBaseCalendarModel.java b/navalplanner-webapp/src/main/java/org/navalplanner/web/calendars/IBaseCalendarModel.java index 562de388a..092b22a9f 100644 --- a/navalplanner-webapp/src/main/java/org/navalplanner/web/calendars/IBaseCalendarModel.java +++ b/navalplanner-webapp/src/main/java/org/navalplanner/web/calendars/IBaseCalendarModel.java @@ -26,13 +26,14 @@ import java.util.Set; import org.joda.time.LocalDate; import org.navalplanner.business.calendars.entities.BaseCalendar; +import org.navalplanner.business.calendars.entities.BaseCalendar.DayType; import org.navalplanner.business.calendars.entities.CalendarAvailability; import org.navalplanner.business.calendars.entities.CalendarData; +import org.navalplanner.business.calendars.entities.CalendarData.Days; import org.navalplanner.business.calendars.entities.CalendarException; import org.navalplanner.business.calendars.entities.CalendarExceptionType; -import org.navalplanner.business.calendars.entities.BaseCalendar.DayType; -import org.navalplanner.business.calendars.entities.CalendarData.Days; import org.navalplanner.business.common.exceptions.ValidationException; +import org.navalplanner.business.workingday.EffortDuration; /** * This interface contains the operations to create/edit a {@link BaseCalendar}. @@ -112,10 +113,6 @@ public interface IBaseCalendarModel { void createException(CalendarExceptionType type, Date startDate, Date endDate, Integer hours); - Integer getHours(Days day); - - void setHours(Days day, Integer hours); - Boolean isDefault(Days day); void setDefault(Days day); @@ -197,4 +194,8 @@ public interface IBaseCalendarModel { void cancel(); + EffortDuration getDurationAt(Days day); + + void setDurationAt(Days day, EffortDuration value); + } diff --git a/navalplanner-webapp/src/main/webapp/calendars/_edition.zul b/navalplanner-webapp/src/main/webapp/calendars/_edition.zul index fbb365eb4..bda3390dd 100644 --- a/navalplanner-webapp/src/main/webapp/calendars/_edition.zul +++ b/navalplanner-webapp/src/main/webapp/calendars/_edition.zul @@ -149,7 +149,7 @@ itemRenderer="@{calendarController.editionController.hoursPerDayRenderer}"> - +