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 3bdbe4ad3..7ca368d0a 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 @@ -26,6 +26,10 @@ import org.apache.commons.logging.Log; import org.apache.commons.logging.LogFactory; import org.joda.time.LocalDate; import org.navalplanner.business.planner.entities.LimitingResourceQueueElement; +import org.zkoss.zk.ui.event.Event; +import org.zkoss.zk.ui.event.EventListener; +import org.zkoss.zk.ui.event.Events; +import org.zkoss.zk.ui.util.Clients; import org.zkoss.zul.Div; public class QueueTask extends Div { @@ -55,6 +59,21 @@ public class QueueTask extends Div { this.end = end; this.totalResourceWorkHours = totalResourceWorkHours; this.assignedHours = assignedHours; + setAction("onmouseover: zkLimitingDependencies.showDependenciesForQueueElement('" + + getUuid() + + "');onmouseout: zkLimitingDependencies.hideDependenciesForQueueElement('" + + getUuid() + "')"); + + final String taskUid = this.getUuid(); + this.addEventListener(Events.ON_CLICK, new EventListener() { + @Override + public void onEvent(Event event) throws Exception { + Clients + .evalJavaScript("zkLimitingDependencies.toggleDependenciesForQueueElement('" + + taskUid + "')"); + } + }); + } public LocalDate getStart() { diff --git a/navalplanner-webapp/src/main/resources/web/js/limitingresources/limitingdependency.js b/navalplanner-webapp/src/main/resources/web/js/limitingresources/limitingdependency.js index d4377919b..0115d4aeb 100644 --- a/navalplanner-webapp/src/main/resources/web/js/limitingresources/limitingdependency.js +++ b/navalplanner-webapp/src/main/resources/web/js/limitingresources/limitingdependency.js @@ -37,6 +37,39 @@ zkLimitingDependencies.HEIGHT = 12; zkLimitingDependencies.ARROW_PADDING = 10; zkLimitingDependencies.HALF_ARROW_PADDING = 5; +/* TODO: Optimize function */ +zkLimitingDependencies.showDependenciesForQueueElement = function (task) { + var dependencies = YAHOO.util.Selector.query('.dependency'); + for (var i = 0; i < dependencies.length; i++) { + if ( (dependencies[i].getAttribute("idTaskOrig") == task) || (dependencies[i].getAttribute("idTaskEnd") == task) ) { + dependencies[i].style.display ="inline"; + dependencies[i].style.opacity ="1"; + } + } +} + +/* TODO: Optimize function */ +zkLimitingDependencies.hideDependenciesForQueueElement = function (task) { + var dependencies = YAHOO.util.Selector.query('.dependency'); + for (var i = 0; i < dependencies.length; i++) { + if ( (dependencies[i].getAttribute("idTaskOrig") == task) || (dependencies[i].getAttribute("idTaskEnd") == task) ) { + dependencies[i].style.display ="none"; + dependencies[i].style.removeProperty("opacity"); + } + } +} + +/* TODO: Optimize function */ +zkLimitingDependencies.toggleDependenciesForQueueElement = function (task) { + var dependencies = YAHOO.util.Selector.query('.dependency'); + for (var i = 0; i < dependencies.length; i++) { + if ( (dependencies[i].getAttribute("idTaskOrig") == task) || (dependencies[i].getAttribute("idTaskEnd") == task) ) { + dependencies[i].setAttribute("class", "dependency toggled"); + } + } +} + + zkLimitingDependencies.addRelatedDependency = function(cmp, dependency) { if (!cmp['relatedDependencies']) { cmp.relatedDependencies = []; diff --git a/navalplanner-webapp/src/main/webapp/planner/css/ganttzk.css b/navalplanner-webapp/src/main/webapp/planner/css/ganttzk.css index 95a87310a..9c20d3e07 100644 --- a/navalplanner-webapp/src/main/webapp/planner/css/ganttzk.css +++ b/navalplanner-webapp/src/main/webapp/planner/css/ganttzk.css @@ -192,6 +192,17 @@ width: 1px; } + +/* Hidden by default */ +#listlimitingdependencies .dependency { + display: none; +} + +#listlimitingdependencies .end,#listlimitingdependencies .start, +#listlimitingdependencies .mid, #listlimitingdependencies .arrow { + cursor: default; +} + #listlimitingdependencies .end, #listlimitingdependencies .start { width: 1px; @@ -200,6 +211,11 @@ height: 1px; } +.toggled { + display: inline !important; + opacity: 0.2; +} + .completion { width: 0%; margin-top: 0px;