From 16acbd51b643a34627227bf60b826b1772f61e9d Mon Sep 17 00:00:00 2001 From: Manuel Rego Casasnovas Date: Tue, 8 Nov 2011 17:51:18 +0100 Subject: [PATCH] [Bug #1237] Fix problem with progress bar size Now it takes into account the decimals when calculating the date for the progress bar position. FEA: ItEr75S04BugFixing --- .../web/planner/TaskElementAdapter.java | 19 +++++++++++++++---- 1 file changed, 15 insertions(+), 4 deletions(-) diff --git a/libreplan-webapp/src/main/java/org/libreplan/web/planner/TaskElementAdapter.java b/libreplan-webapp/src/main/java/org/libreplan/web/planner/TaskElementAdapter.java index d963c1184..94d0d0cba 100644 --- a/libreplan-webapp/src/main/java/org/libreplan/web/planner/TaskElementAdapter.java +++ b/libreplan-webapp/src/main/java/org/libreplan/web/planner/TaskElementAdapter.java @@ -638,10 +638,21 @@ public class TaskElementAdapter { if (daysBetween == 0) { return calculateLimitDateWhenDaysBetweenAreZero(advancePercentage); } - int daysAdvance = advancePercentage.multiply( - new BigDecimal(daysBetween)).intValue(); - return GanttDate.createFrom(taskElement.getIntraDayStartDate() - .getDate().plusDays(daysAdvance)); + BigDecimal daysAdvance = advancePercentage + .multiply(new BigDecimal(daysBetween)); + int days = daysAdvance.intValue(); + + LocalDate advanceDate = taskElement.getStartAsLocalDate() + .plusDays(days); + EffortDuration capacity = calendar.getCapacityOn(PartialDay + .wholeDay(advanceDate)); + + int seconds = daysAdvance.subtract(new BigDecimal(days)) + .multiply(new BigDecimal(capacity.getSeconds())) + .intValue(); + + return toGantt(IntraDayDate.create(advanceDate, + EffortDuration.seconds(seconds))); } private GanttDate calculateLimitDateWhenDaysBetweenAreZero(