ItEr59S07RFAspectosGraficosRecursoLimitantesItEr58S08: Displayed fixed deadline date in queue elements

This commit is contained in:
Lorenzo Tilve 2010-06-09 17:56:42 +02:00 committed by Javier Moran Rua
parent 95ca059c4a
commit 633d9f7e30
2 changed files with 61 additions and 0 deletions

View file

@ -30,6 +30,7 @@ import java.util.Set;
import java.util.SortedSet;
import org.joda.time.DateTime;
import org.joda.time.LocalDate;
import org.navalplanner.business.common.exceptions.ValidationException;
import org.navalplanner.business.orders.entities.OrderElement;
import org.navalplanner.business.planner.entities.DayAssignment;
@ -263,6 +264,23 @@ public class QueueComponent extends XulElement implements
result.setClass(cssClass);
Task task = queueElement.getResourceAllocation().getTask();
if (task.getDeadline() != null) {
Div deadline = new Div();
deadline.setId("deadline" + result.getUuid());
deadline.setSclass("deadline");
deadline
.setStyle("left:"
+ getDeadlinePixels(datesMapper, task.getDeadline())
+ "px");
result.appendChild(deadline);
result.appendChild(generateNonWorkableShade(datesMapper,
queueElement));
}
result.appendChild(generateCompletionShade(datesMapper, queueElement));
return result;
}
@ -296,6 +314,31 @@ public class QueueComponent extends XulElement implements
return notWorkableHoursShade;
}
private static Div generateCompletionShade(IDatesMapper datesMapper,
LimitingResourceQueueElement queueElement) {
int workableHours = queueElement.getLimitingResourceQueue()
.getResource().getCalendar().getCapacityAt(
queueElement.getEndDate());
int shadeWidth = new Long((24 - workableHours)
* DatesMapperOnInterval.MILISECONDS_PER_HOUR
/ datesMapper.getMilisecondsPerPixel()).intValue();
int shadeLeft = new Long((workableHours - queueElement.getEndHour())
* DatesMapperOnInterval.MILISECONDS_PER_HOUR
/ datesMapper.getMilisecondsPerPixel()).intValue()
+ shadeWidth;
;
Div notWorkableHoursShade = new Div();
notWorkableHoursShade.setContext("");
notWorkableHoursShade.setSclass("limiting-completion");
notWorkableHoursShade.setStyle("left: " + shadeLeft + "px; width: "
+ shadeWidth + "px;");
return notWorkableHoursShade;
}
private static int getWidthPixels(IDatesMapper datesMapper,
LimitingResourceQueueElement queueElement) {
return datesMapper.toPixels(getEndMillis(queueElement)
@ -307,6 +350,13 @@ public class QueueComponent extends XulElement implements
+ (queueElement.getStartHour() * DatesMapperOnInterval.MILISECONDS_PER_HOUR);
}
private static int getDeadlinePixels(IDatesMapper datesMapper,
LocalDate deadlineDate) {
return datesMapper.toPixelsAbsolute((deadlineDate.toDateMidnight()
.getMillis()));
}
private static long getEndMillis(LimitingResourceQueueElement queueElement) {
return queueElement.getEndDate().toDateMidnight().getMillis()
+ (queueElement.getEndHour() * DatesMapperOnInterval.MILISECONDS_PER_HOUR);

View file

@ -1052,6 +1052,17 @@ div.z-tree {
}
.queue-element .deadline {
position: auto;
margin-top: -5px;
float:left;
left:-100px; /* Hide when it has't been set */
width:10px;
height:22px;
background-image: url("../../zkau/web/ganttz/img/deadline.png");
}
body .perspectives-column {
display:inline;
}