From 8413202b7ddea9c070c8698cf95e839a9fab5dcc Mon Sep 17 00:00:00 2001 From: Lorenzo Tilve Date: Wed, 9 Jun 2010 17:56:49 +0200 Subject: [PATCH] ItEr59S07RFAspectosGraficosRecursoLimitantesItEr58S08: Deadlines are only shown pointing over queue elements --- .../web/limitingresources/QueueComponent.java | 33 ++++++++++--------- .../web/limitingresources/QueueTask.java | 5 ++- .../limitingresourceslist.js | 20 +++++++++++ .../src/main/webapp/planner/css/ganttzk.css | 11 ++++--- 4 files changed, 46 insertions(+), 23 deletions(-) diff --git a/navalplanner-webapp/src/main/java/org/navalplanner/web/limitingresources/QueueComponent.java b/navalplanner-webapp/src/main/java/org/navalplanner/web/limitingresources/QueueComponent.java index 63e4be0eb..de50def3f 100644 --- a/navalplanner-webapp/src/main/java/org/navalplanner/web/limitingresources/QueueComponent.java +++ b/navalplanner-webapp/src/main/java/org/navalplanner/web/limitingresources/QueueComponent.java @@ -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 @@ -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()); } diff --git a/navalplanner-webapp/src/main/java/org/navalplanner/web/limitingresources/QueueTask.java b/navalplanner-webapp/src/main/java/org/navalplanner/web/limitingresources/QueueTask.java index 8ddd5cdd5..8f51751d0 100644 --- a/navalplanner-webapp/src/main/java/org/navalplanner/web/limitingresources/QueueTask.java +++ b/navalplanner-webapp/src/main/java/org/navalplanner/web/limitingresources/QueueTask.java @@ -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 diff --git a/navalplanner-webapp/src/main/resources/web/js/limitingresources/limitingresourceslist.js b/navalplanner-webapp/src/main/resources/web/js/limitingresources/limitingresourceslist.js index f499ebe28..9c354976f 100644 --- a/navalplanner-webapp/src/main/resources/web/js/limitingresources/limitingresourceslist.js +++ b/navalplanner-webapp/src/main/resources/web/js/limitingresources/limitingresourceslist.js @@ -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; diff --git a/navalplanner-webapp/src/main/webapp/planner/css/ganttzk.css b/navalplanner-webapp/src/main/webapp/planner/css/ganttzk.css index 433ec9f64..e2eec8dd2 100644 --- a/navalplanner-webapp/src/main/webapp/planner/css/ganttzk.css +++ b/navalplanner-webapp/src/main/webapp/planner/css/ganttzk.css @@ -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 {