Add Capacity Picker for edition of CalendarData
FEA: ItEr68OTS05IntroducionLimiteSobreasignacionCalendarios
This commit is contained in:
parent
cf18d04498
commit
5a98c3871a
6 changed files with 80 additions and 35 deletions
|
|
@ -50,7 +50,9 @@ import org.navalplanner.business.workingday.EffortDuration.Granularity;
|
|||
import org.navalplanner.web.common.IMessagesForUser;
|
||||
import org.navalplanner.web.common.Level;
|
||||
import org.navalplanner.web.common.Util;
|
||||
import org.navalplanner.web.common.Util.Getter;
|
||||
import org.navalplanner.web.common.Util.ICreation;
|
||||
import org.navalplanner.web.common.Util.Setter;
|
||||
import org.navalplanner.web.common.components.CalendarHighlightedDays;
|
||||
import org.navalplanner.web.common.components.CapacityPicker;
|
||||
import org.navalplanner.web.common.components.EffortDurationPicker;
|
||||
|
|
@ -68,6 +70,7 @@ import org.zkoss.zul.Checkbox;
|
|||
import org.zkoss.zul.Combobox;
|
||||
import org.zkoss.zul.Comboitem;
|
||||
import org.zkoss.zul.Datebox;
|
||||
import org.zkoss.zul.Hbox;
|
||||
import org.zkoss.zul.Label;
|
||||
import org.zkoss.zul.Listbox;
|
||||
import org.zkoss.zul.Listcell;
|
||||
|
|
@ -186,15 +189,19 @@ public abstract class BaseCalendarEditionController extends
|
|||
|
||||
@Override
|
||||
public Checkbox createAt(Component parent) {
|
||||
Checkbox infinitelyOverAssignable = new Checkbox();
|
||||
infinitelyOverAssignable
|
||||
.setLabel(_("Infinitely Over Assignable"));
|
||||
parent.appendChild(infinitelyOverAssignable);
|
||||
return infinitelyOverAssignable;
|
||||
Checkbox result = createInfinitelyOverAssignableCheckbox();
|
||||
parent.appendChild(result);
|
||||
return result;
|
||||
}
|
||||
});
|
||||
}
|
||||
|
||||
private Checkbox createInfinitelyOverAssignableCheckbox() {
|
||||
Checkbox infinitelyOverAssignable = new Checkbox();
|
||||
infinitelyOverAssignable.setLabel(_("Infinitely Over Assignable"));
|
||||
return infinitelyOverAssignable;
|
||||
}
|
||||
|
||||
private void updateWithCapacityFrom(CalendarExceptionType exceptionType) {
|
||||
capacityPicker.setValue(exceptionType != null ? exceptionType
|
||||
.getCapacity() : Capacity.create(EffortDuration.zero()));
|
||||
|
|
@ -331,30 +338,33 @@ public abstract class BaseCalendarEditionController extends
|
|||
public void render(Listitem item, Object data) throws Exception {
|
||||
final Days day = (Days) data;
|
||||
|
||||
Listcell labelListcell = new Listcell();
|
||||
labelListcell.appendChild(new Label(day.toString()));
|
||||
item.appendChild(labelListcell);
|
||||
addLabelCell(item, day);
|
||||
|
||||
Listcell durationCell = new Listcell();
|
||||
EffortDurationPicker durationPicker = new EffortDurationPicker();
|
||||
durationCell.appendChild(durationPicker);
|
||||
durationPicker.bind(new Util.Getter<EffortDuration>() {
|
||||
EffortDurationPicker normalDurationPicker = new EffortDurationPicker();
|
||||
EffortDurationPicker extraDurationPicker = new EffortDurationPicker();
|
||||
Checkbox checkbox = createInfinitelyOverAssignableCheckbox();
|
||||
|
||||
@Override
|
||||
public EffortDuration get() {
|
||||
return baseCalendarModel.getDurationAt(day);
|
||||
}
|
||||
}, new Util.Setter<EffortDuration>() {
|
||||
addNormalDurationCell(item, normalDurationPicker);
|
||||
addExtraEffortCell(item, extraDurationPicker, checkbox);
|
||||
|
||||
@Override
|
||||
public void set(EffortDuration value) {
|
||||
baseCalendarModel.setDurationAt(day, value);
|
||||
reloadDayInformation();
|
||||
}
|
||||
});
|
||||
durationPicker.setDisabled(baseCalendarModel.isDerived()
|
||||
CapacityPicker capacityPicker = CapacityPicker.workWith(checkbox,
|
||||
normalDurationPicker,
|
||||
extraDurationPicker, new Getter<Capacity>() {
|
||||
|
||||
@Override
|
||||
public Capacity get() {
|
||||
return baseCalendarModel.getCapacityAt(day);
|
||||
}
|
||||
}, new Setter<Capacity>() {
|
||||
|
||||
@Override
|
||||
public void set(Capacity value) {
|
||||
baseCalendarModel.setCapacityAt(day, value);
|
||||
reloadDayInformation();
|
||||
}
|
||||
});
|
||||
capacityPicker.setDisabled(baseCalendarModel.isDerived()
|
||||
&& baseCalendarModel.isDefault(day));
|
||||
item.appendChild(durationCell);
|
||||
|
||||
if (baseCalendarModel.isDerived()) {
|
||||
Listcell defaultListcell = new Listcell();
|
||||
|
|
@ -391,6 +401,29 @@ public abstract class BaseCalendarEditionController extends
|
|||
}
|
||||
}
|
||||
|
||||
private void addLabelCell(Listitem item, final Days day) {
|
||||
Listcell labelListcell = new Listcell();
|
||||
labelListcell.appendChild(new Label(day.toString()));
|
||||
item.appendChild(labelListcell);
|
||||
}
|
||||
|
||||
private void addNormalDurationCell(Listitem item,
|
||||
EffortDurationPicker normalDurationPicker) {
|
||||
Listcell normalEffortCell = new Listcell();
|
||||
normalEffortCell.appendChild(normalDurationPicker);
|
||||
item.appendChild(normalEffortCell);
|
||||
}
|
||||
|
||||
private void addExtraEffortCell(Listitem item,
|
||||
EffortDurationPicker extraDurationPicker, Checkbox checkbox) {
|
||||
Listcell extraEffortCell = new Listcell();
|
||||
Hbox hbox = new Hbox();
|
||||
hbox.appendChild(extraDurationPicker);
|
||||
hbox.appendChild(checkbox);
|
||||
extraEffortCell.appendChild(hbox);
|
||||
item.appendChild(extraEffortCell);
|
||||
}
|
||||
|
||||
}
|
||||
|
||||
private void reloadCurrentWindow() {
|
||||
|
|
@ -1315,4 +1348,5 @@ public abstract class BaseCalendarEditionController extends
|
|||
reloadDayInformation();
|
||||
}
|
||||
}
|
||||
|
||||
}
|
||||
|
|
|
|||
|
|
@ -294,12 +294,12 @@ public class BaseCalendarModel extends IntegrationEntityModel implements
|
|||
}
|
||||
|
||||
@Override
|
||||
public EffortDuration getDurationAt(Days day) {
|
||||
public Capacity getCapacityAt(Days day) {
|
||||
if (getBaseCalendar() == null) {
|
||||
return EffortDuration.zero();
|
||||
return Capacity.zero();
|
||||
}
|
||||
return getBaseCalendar().getCapacityConsideringCalendarDatasOn(
|
||||
selectedDate, day).getStandardEffort();
|
||||
selectedDate, day);
|
||||
}
|
||||
|
||||
@Override
|
||||
|
|
@ -328,11 +328,9 @@ public class BaseCalendarModel extends IntegrationEntityModel implements
|
|||
}
|
||||
|
||||
@Override
|
||||
public void setDurationAt(Days day, EffortDuration value) {
|
||||
public void setCapacityAt(Days day, Capacity value) {
|
||||
if (getBaseCalendar() != null) {
|
||||
getBaseCalendar().setCapacityAt(day,
|
||||
Capacity.create(value).overAssignableWithoutLimit(true),
|
||||
selectedDate);
|
||||
getBaseCalendar().setCapacityAt(day, value, selectedDate);
|
||||
}
|
||||
}
|
||||
|
||||
|
|
|
|||
|
|
@ -197,9 +197,9 @@ public interface IBaseCalendarModel extends IIntegrationEntityModel {
|
|||
|
||||
void cancel();
|
||||
|
||||
EffortDuration getDurationAt(Days day);
|
||||
Capacity getCapacityAt(Days day);
|
||||
|
||||
void setDurationAt(Days day, EffortDuration value);
|
||||
void setCapacityAt(Days day, Capacity capacity);
|
||||
|
||||
void generateCalendarCodes();
|
||||
|
||||
|
|
|
|||
|
|
@ -143,4 +143,12 @@ public class CapacityPicker {
|
|||
updateExtraEffortDisability();
|
||||
}
|
||||
|
||||
public void setDisabled(boolean disabled) {
|
||||
standardEffortPicker.setDisabled(disabled);
|
||||
updateExtraEffortDisability();
|
||||
extraEffortPicker.setDisabled(extraEffortPicker.isDisabled()
|
||||
|| disabled);
|
||||
overAssignableWithoutLimitCheckbox.setDisabled(disabled);
|
||||
}
|
||||
|
||||
}
|
||||
|
|
|
|||
|
|
@ -87,6 +87,10 @@ public class EffortDurationPicker extends Hbox {
|
|||
seconds.setDisabled(disabled);
|
||||
}
|
||||
|
||||
public boolean isDisabled() {
|
||||
return hours.isDisabled();
|
||||
}
|
||||
|
||||
public void bind(Getter<EffortDuration> getter) {
|
||||
updateUIWithValuesFrom(getter.get());
|
||||
}
|
||||
|
|
|
|||
|
|
@ -178,7 +178,8 @@
|
|||
itemRenderer="@{calendarController.editionController.hoursPerDayRenderer}">
|
||||
<listhead>
|
||||
<listheader label="${i18n:_('Day of week')}" width="80px"/>
|
||||
<listheader label="${i18n:_('Workable Time')}" width="160px"/>
|
||||
<listheader label="${i18n:_('Normal Effort')}" width="160px"/>
|
||||
<listheader label="${i18n:_('Extra Effort')}" width="200px"/>
|
||||
<listheader label="${i18n:_('Inh.')}" width="30px" tooltiptext="${i18n:_('Inherited from parent calendar')}" />
|
||||
</listhead>
|
||||
</listbox>
|
||||
|
|
|
|||
Loading…
Add table
Reference in a new issue