Enter the duration instead of the hours.

The hours field is replaced by a EffortDurationPicker

FEA: ItEr60S19TimeUnitDataType
This commit is contained in:
Óscar González Fernández 2010-08-23 14:14:32 +02:00
parent 4d7c03c8e0
commit 4c4cf6dc1b
4 changed files with 29 additions and 43 deletions

View file

@ -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<Integer>() {
Listcell durationCell = new Listcell();
EffortDurationPicker durationPicker = new EffortDurationPicker();
durationCell.appendChild(durationPicker);
durationPicker.bind(new Util.Getter<EffortDuration>() {
@Override
public Integer get() {
return baseCalendarModel.getHours(day);
public EffortDuration get() {
return baseCalendarModel.getDurationAt(day);
}
}, new Util.Setter<Integer>() {
}, new Util.Setter<EffortDuration>() {
@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();

View file

@ -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);
}
}

View file

@ -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);
}

View file

@ -149,7 +149,7 @@
itemRenderer="@{calendarController.editionController.hoursPerDayRenderer}">
<listhead>
<listheader label="${i18n:_('Day of week')}" />
<listheader label="${i18n:_('Hours')}" />
<listheader label="${i18n:_('Duration')}" />
<listheader label="${i18n:_('By default')}" />
</listhead>
</listbox>