ItEr47S04ValidacionEProbasFuncionaisItEr46S04: [Bug #295] Fixing bug.
If today is not inside the interval of dates shown at the planner it shows the last date
This commit is contained in:
parent
83b7bcfe7c
commit
e22ca7c4fa
2 changed files with 48 additions and 4 deletions
|
|
@ -87,6 +87,7 @@ public abstract class EarnedValueChartFiller extends ChartFiller {
|
|||
}
|
||||
|
||||
protected Map<EarnedValueType, SortedMap<LocalDate, BigDecimal>> indicators = new HashMap<EarnedValueType, SortedMap<LocalDate, BigDecimal>>();
|
||||
private Interval indicatorsInterval;
|
||||
|
||||
protected abstract void calculateBudgetedCostWorkScheduled(Interval interval);
|
||||
protected abstract void calculateActualCostWorkPerformed(Interval interval);
|
||||
|
|
@ -100,6 +101,7 @@ public abstract class EarnedValueChartFiller extends ChartFiller {
|
|||
}
|
||||
|
||||
public void calculateValues(Interval interval) {
|
||||
this.indicatorsInterval = interval;
|
||||
// BCWS
|
||||
calculateBudgetedCostWorkScheduled(interval);
|
||||
// ACWP
|
||||
|
|
@ -299,6 +301,9 @@ public abstract class EarnedValueChartFiller extends ChartFiller {
|
|||
chart.setHeight("150px");
|
||||
}
|
||||
|
||||
public Interval getIndicatorsDefinitionInterval() {
|
||||
return indicatorsInterval;
|
||||
}
|
||||
protected void addZeroBeforeTheFirstValue(
|
||||
SortedMap<LocalDate, BigDecimal> map) {
|
||||
if (!map.isEmpty()) {
|
||||
|
|
|
|||
|
|
@ -116,11 +116,13 @@ import org.zkoss.ganttz.timetracker.zoom.SeveralModificators;
|
|||
import org.zkoss.ganttz.timetracker.zoom.ZoomLevel;
|
||||
import org.zkoss.ganttz.util.Interval;
|
||||
import org.zkoss.zk.ui.Executions;
|
||||
import org.zkoss.zk.ui.WrongValueException;
|
||||
import org.zkoss.zk.ui.event.Event;
|
||||
import org.zkoss.zk.ui.event.EventListener;
|
||||
import org.zkoss.zk.ui.event.Events;
|
||||
import org.zkoss.zk.ui.util.Clients;
|
||||
import org.zkoss.zul.Checkbox;
|
||||
import org.zkoss.zul.Constraint;
|
||||
import org.zkoss.zul.Datebox;
|
||||
import org.zkoss.zul.Div;
|
||||
import org.zkoss.zul.Hbox;
|
||||
|
|
@ -414,7 +416,7 @@ public abstract class OrderPlanningModel implements IOrderPlanningModel {
|
|||
|
||||
private void appendEarnedValueChartAndLegend(
|
||||
Tabpanel earnedValueChartPannel, Timeplot chartEarnedValueTimeplot,
|
||||
OrderEarnedValueChartFiller earnedValueChartFiller) {
|
||||
final OrderEarnedValueChartFiller earnedValueChartFiller) {
|
||||
Vbox vbox = new Vbox();
|
||||
vbox.setClass("legend-container");
|
||||
vbox.setAlign("center");
|
||||
|
|
@ -423,8 +425,10 @@ public abstract class OrderPlanningModel implements IOrderPlanningModel {
|
|||
Hbox dateHbox = new Hbox();
|
||||
dateHbox.appendChild(new Label(_("Select date:")));
|
||||
|
||||
LocalDate date = new LocalDate();
|
||||
Datebox datebox = new Datebox(date.toDateTimeAtStartOfDay().toDate());
|
||||
LocalDate initialDateForIndicatorValues = calculateInitialDateForIndicatorValues(earnedValueChartFiller);
|
||||
Datebox datebox = new Datebox(initialDateForIndicatorValues
|
||||
.toDateTimeAtStartOfDay().toDate());
|
||||
datebox.setConstraint(dateMustBeInsideVisualizationArea(earnedValueChartFiller));
|
||||
dateHbox.appendChild(datebox);
|
||||
|
||||
appendEventListenerToDateboxIndicators(earnedValueChartFiller, vbox,
|
||||
|
|
@ -432,7 +436,7 @@ public abstract class OrderPlanningModel implements IOrderPlanningModel {
|
|||
vbox.appendChild(dateHbox);
|
||||
|
||||
vbox.appendChild(getEarnedValueChartConfigurableLegend(
|
||||
earnedValueChartFiller, date));
|
||||
earnedValueChartFiller, initialDateForIndicatorValues));
|
||||
|
||||
Hbox hbox = new Hbox();
|
||||
hbox.setSclass("earned-value-chart");
|
||||
|
|
@ -448,6 +452,41 @@ public abstract class OrderPlanningModel implements IOrderPlanningModel {
|
|||
earnedValueChartPannel.appendChild(hbox);
|
||||
}
|
||||
|
||||
private LocalDate calculateInitialDateForIndicatorValues(
|
||||
OrderEarnedValueChartFiller earnedValueChartFiller) {
|
||||
Interval chartInterval = earnedValueChartFiller.getIndicatorsDefinitionInterval();
|
||||
LocalDate today = new LocalDate();
|
||||
return includes(chartInterval, today) ? today : LocalDate
|
||||
.fromDateFields(chartInterval.getFinish());
|
||||
}
|
||||
|
||||
private boolean includes(Interval interval, LocalDate date) {
|
||||
LocalDate start = LocalDate.fromDateFields(interval.getStart());
|
||||
LocalDate end = LocalDate.fromDateFields(interval.getFinish());
|
||||
return start.compareTo(date) <= 0 && date.compareTo(end) < 0;
|
||||
}
|
||||
|
||||
private Constraint dateMustBeInsideVisualizationArea(
|
||||
final OrderEarnedValueChartFiller earnedValueChartFiller) {
|
||||
return new Constraint() {
|
||||
|
||||
@Override
|
||||
public void validate(org.zkoss.zk.ui.Component comp,
|
||||
Object valueObject)
|
||||
throws WrongValueException {
|
||||
Date value = (Date) valueObject;
|
||||
if (value != null
|
||||
&& !includes(earnedValueChartFiller
|
||||
.getIndicatorsDefinitionInterval(), LocalDate
|
||||
.fromDateFields(value))) {
|
||||
throw new WrongValueException(comp,
|
||||
_("the date must be inside the visualization area"));
|
||||
}
|
||||
|
||||
}
|
||||
};
|
||||
}
|
||||
|
||||
private void appendEventListenerToDateboxIndicators(
|
||||
final OrderEarnedValueChartFiller earnedValueChartFiller,
|
||||
final Vbox vbox, final Datebox datebox) {
|
||||
|
|
|
|||
Loading…
Add table
Reference in a new issue