[Bug #1088] fix the representation of the chart of earned value month and upper zoom
levels. There is two ways for represent the chart (by day and by week). By week, the hours is the average of the hours of whole week. FEA: ItEr75S04BugFixing
This commit is contained in:
parent
bae087dff9
commit
867076e8fd
1 changed files with 38 additions and 1 deletions
|
|
@ -33,10 +33,10 @@ import java.util.Date;
|
|||
import java.util.HashMap;
|
||||
import java.util.List;
|
||||
import java.util.Map;
|
||||
import java.util.Map.Entry;
|
||||
import java.util.Set;
|
||||
import java.util.SortedMap;
|
||||
import java.util.TreeMap;
|
||||
import java.util.Map.Entry;
|
||||
|
||||
import javax.servlet.ServletException;
|
||||
import javax.servlet.http.HttpServletRequest;
|
||||
|
|
@ -302,12 +302,49 @@ public abstract class ChartFiller implements IChartFiller {
|
|||
@Override
|
||||
protected void fillInnerValues(PrintWriter writer, LocalDate firstDay,
|
||||
LocalDate lastDay) {
|
||||
if (isZoomByDayOrWeek()) {
|
||||
fillInnerValuesByDay(writer, firstDay, lastDay);
|
||||
} else {
|
||||
fillInnerValuesByWeek(writer, firstDay, lastDay);
|
||||
}
|
||||
}
|
||||
|
||||
protected void fillInnerValuesByDay(PrintWriter writer,
|
||||
LocalDate firstDay, LocalDate lastDay) {
|
||||
for (LocalDate day : getDays()) {
|
||||
BigDecimal hours = getHoursForDay(day);
|
||||
printIntervalLine(writer, day, hours, isZoomByDayOrWeek());
|
||||
}
|
||||
}
|
||||
|
||||
protected void fillInnerValuesByWeek(PrintWriter writer,
|
||||
LocalDate firstDay, LocalDate lastDay) {
|
||||
for (LocalDate day = firstDay; day.compareTo(lastDay) <= 0; day = getFinishWeek(day)) {
|
||||
BigDecimal hours = getHoursForWeek(day, getFinishWeek(day));
|
||||
printIntervalLine(writer, day, hours, false);
|
||||
}
|
||||
}
|
||||
|
||||
protected BigDecimal getHoursForWeek(LocalDate firstDay,
|
||||
LocalDate lastDay) {
|
||||
BigDecimal averageHours = BigDecimal.ZERO;
|
||||
int numDays = 0;
|
||||
for (LocalDate day = firstDay; day.compareTo(lastDay) < 0; day = nextDay(day)) {
|
||||
BigDecimal hours = getHoursForDay(day);
|
||||
averageHours = averageHours.add(hours);
|
||||
numDays++;
|
||||
}
|
||||
BigDecimal result = (numDays > 0) ? averageHours
|
||||
.divide(new BigDecimal(numDays))
|
||||
: BigDecimal.ZERO;
|
||||
return result;
|
||||
}
|
||||
|
||||
protected LocalDate getFinishWeek(LocalDate day) {
|
||||
return day.plusDays(8 - day.getDayOfWeek())
|
||||
.toDateTimeAtStartOfDay().toLocalDate();
|
||||
}
|
||||
|
||||
}
|
||||
|
||||
/**
|
||||
|
|
|
|||
Loading…
Add table
Reference in a new issue