ItEr59S07RFAspectosGraficosRecursoLimitantesItEr58S08: Deadlines are only shown pointing over queue elements

This commit is contained in:
Lorenzo Tilve 2010-06-09 17:56:49 +02:00 committed by Javier Moran Rua
parent 505d7c7686
commit 8413202b7d
4 changed files with 46 additions and 23 deletions

View file

@ -55,6 +55,7 @@ import org.zkoss.zk.ui.ext.AfterCompose;
import org.zkoss.zul.Div;
import org.zkoss.zul.impl.XulElement;
/**
* This class wraps ResourceLoad data inside an specific HTML Div component.
* @author Lorenzo Tilve Álvaro <ltilve@igalia.com>
@ -62,6 +63,8 @@ import org.zkoss.zul.impl.XulElement;
public class QueueComponent extends XulElement implements
AfterCompose {
private static final int DEADLINE_MARK_HALF_WIDTH = 5;
public static QueueComponent create(
QueueListComponent queueListComponent,
TimeTracker timeTracker,
@ -259,24 +262,23 @@ public class QueueComponent extends XulElement implements
result.appendChild(generateNonWorkableShade(datesMapper,
queueElement));
}
result.setWidth(forCSS(taskWidth));
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));
int deadlinePosition = getDeadlinePixels(datesMapper, task
.getDeadline());
if (deadlinePosition < datesMapper.getHorizontalSize()) {
Div deadline = new Div();
deadline.setSclass("deadline");
deadline
.setLeft((deadlinePosition - startPixels - DEADLINE_MARK_HALF_WIDTH)
+ "px");
result.appendChild(deadline);
result.appendChild(generateNonWorkableShade(datesMapper,
queueElement));
}
}
result.appendChild(generateCompletionShade(datesMapper, queueElement));
@ -352,8 +354,9 @@ public class QueueComponent extends XulElement implements
private static int getDeadlinePixels(IDatesMapper datesMapper,
LocalDate deadlineDate) {
return datesMapper.toPixelsAbsolute((deadlineDate.toDateMidnight()
.getMillis()));
// Deadline date is considered inclusively
return datesMapper.toPixelsAbsolute(deadlineDate.plusDays(1)
.toDateMidnight().getMillis());
}

View file

@ -50,11 +50,10 @@ public class QueueTask extends Div {
this.start = element.getStartDate();
this.end = element.getEndDate();
this.element = element;
setAction("onmouseover: zkLimitingDependencies.showDependenciesForQueueElement('"
setAction("onmouseover: zkLimitingResourcesList.showRelatedElementsForQueueElement('"
+ getUuid()
+ "');onmouseout: zkLimitingDependencies.hideDependenciesForQueueElement('"
+ "');onmouseout: zkLimitingResourcesList.hideRelatedElementsForQueueElement('"
+ getUuid() + "')");
final String taskUid = this.getUuid();
this.addEventListener(Events.ON_CLICK, new EventListener() {
@Override

View file

@ -20,6 +20,26 @@
zkLimitingResourcesList = addLimitingResourcesListMethods( {});
zkLimitingResourcesList.showRelatedElementsForQueueElement = function (task) {
zkLimitingDependencies.showDependenciesForQueueElement(task);
zkLimitingResourcesList.SetVisibleDeadlineForQueueElement(task, "inline");
}
zkLimitingResourcesList.hideRelatedElementsForQueueElement = function (task) {
zkLimitingDependencies.hideDependenciesForQueueElement(task);
zkLimitingResourcesList.SetVisibleDeadlineForQueueElement(task, "none");
}
zkLimitingResourcesList.SetVisibleDeadlineForQueueElement = function(task, visible) {
var deadlines = YAHOO.util.Selector.query('.deadline');
for ( var i = 0; i < deadlines.length; i++) {
if ((deadlines[i].parentNode.id == task)) {
deadlines[i].style.display = visible;
}
}
}
function addLimitingResourcesListMethods(object) {
var scrollSync;

View file

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