ItEr21S08CUVisualizacionModelosPlanificacionItErItEr20S10: Added end-end dependency type graphical support
This commit is contained in:
parent
ec1fbef1b5
commit
79c802c6ed
2 changed files with 101 additions and 48 deletions
|
|
@ -11,55 +11,56 @@ zkDependency.START_START = "START_START";
|
|||
zkDependency.END_END = "END_END";
|
||||
|
||||
zkDependency.origin = function(dependency) {
|
||||
var id = dependency.getAttribute("idTaskOrig");
|
||||
return document.getElementById(id);
|
||||
var id = dependency.getAttribute("idTaskOrig");
|
||||
return document.getElementById(id);
|
||||
}
|
||||
|
||||
zkDependency.destination = function(dependency) {
|
||||
var id = dependency.getAttribute("idTaskEnd");
|
||||
return document.getElementById(id);
|
||||
var id = dependency.getAttribute("idTaskEnd");
|
||||
return document.getElementById(id);
|
||||
}
|
||||
|
||||
zkDependency.draw = function(dependency) {
|
||||
var orig = zkPlanner.findPos(this.origin(dependency));
|
||||
var dest = zkPlanner.findPos(this.destination(dependency));
|
||||
|
||||
// This corner case may depend on dependence type
|
||||
offsetX = this.origin(dependency).offsetWidth - zkTask.CORNER_WIDTH;
|
||||
separation = orig[0] + this.origin(dependency).offsetWidth - dest[0];
|
||||
// This corner case may depend on dependence type
|
||||
offsetX = this.origin(dependency).offsetWidth - zkTask.CORNER_WIDTH;
|
||||
separation = orig[0] + this.origin(dependency).offsetWidth - dest[0];
|
||||
|
||||
if (separation > 0 ) {
|
||||
offsetX = offsetX - separation;
|
||||
}
|
||||
if (dependency.getAttribute('type') == zkDependency.END_START ||
|
||||
dependency.getAttribute('type') == null ) {
|
||||
orig[0] = orig[0] + Math.max( 0, offsetX );
|
||||
}
|
||||
if (separation > 0) {
|
||||
offsetX = offsetX - separation;
|
||||
}
|
||||
if (dependency.getAttribute('type') == zkDependency.END_START
|
||||
|| dependency.getAttribute('type') == null) {
|
||||
orig[0] = orig[0] + Math.max(0, offsetX);
|
||||
} else if (dependency.getAttribute('type') == zkDependency.END_END) {
|
||||
orig[0] = orig[0] + this.origin(dependency).offsetWidth;
|
||||
dest[0] = dest[0] + this.destination(dependency).offsetWidth;
|
||||
}
|
||||
|
||||
orig[1] = orig[1] + zkTask.HEIGHT;
|
||||
dest[1] = dest[1] + zkTask.HALF_HEIGHT;
|
||||
orig[1] = orig[1] + zkTask.HEIGHT;
|
||||
dest[1] = dest[1] + zkTask.HALF_HEIGHT;
|
||||
|
||||
if ( ( orig[1] > dest[1] ) ) {
|
||||
|
||||
orig[1] = orig[1] - zkTask.HEIGHT;
|
||||
}
|
||||
if ((orig[1] > dest[1])) {
|
||||
orig[1] = orig[1] - zkTask.HEIGHT;
|
||||
}
|
||||
|
||||
zkPlanner.drawArrow(dependency, orig, dest);
|
||||
|
||||
}
|
||||
|
||||
zkDependency.init = function(dependency) {
|
||||
zkPlanner.setupArrow(dependency);
|
||||
var parent = dependency.parentNode;
|
||||
if(parent.id !== "listdependencies"){
|
||||
document.getElementById("listdependencies").appendChild(dependency);
|
||||
}
|
||||
YAHOO.util.Event.onDOMReady(function() {
|
||||
var origin = zkDependency.origin(dependency);
|
||||
var destination = zkDependency.destination(dependency);
|
||||
zkDependency.draw(dependency);
|
||||
zkTask.addRelatedDependency(origin, dependency);
|
||||
zkTask.addRelatedDependency(destination, dependency);
|
||||
});
|
||||
zkPlanner.setupArrow(dependency);
|
||||
var parent = dependency.parentNode;
|
||||
if (parent.id !== "listdependencies") {
|
||||
document.getElementById("listdependencies").appendChild(dependency);
|
||||
}
|
||||
YAHOO.util.Event.onDOMReady(function() {
|
||||
var origin = zkDependency.origin(dependency);
|
||||
var destination = zkDependency.destination(dependency);
|
||||
zkDependency.draw(dependency);
|
||||
zkTask.addRelatedDependency(origin, dependency);
|
||||
zkTask.addRelatedDependency(destination, dependency);
|
||||
});
|
||||
}
|
||||
|
||||
|
|
|
|||
|
|
@ -1,11 +1,15 @@
|
|||
/**
|
||||
* Javascript behaviuor for Planner elements
|
||||
* @author Lorenzo Tilve Álvaro <ltilve@igalia.com>
|
||||
*/
|
||||
zkPlanner = {};
|
||||
|
||||
zkPlanner.getImagesDir = function() {
|
||||
zkPlanner.getImagesDir = function() {
|
||||
return webapp_context_path + "/zkau/web/ganttz/img/";
|
||||
}
|
||||
|
||||
zkPlanner.init = function(planner){
|
||||
|
||||
zkPlanner.init = function(planner){
|
||||
|
||||
}
|
||||
|
||||
zkPlanner.findImageElement = function(arrow, name) {
|
||||
|
|
@ -39,7 +43,7 @@ function getContextPath(element){
|
|||
}
|
||||
|
||||
zkPlanner.setupArrow = function(arrowDiv){
|
||||
|
||||
|
||||
var image_data = [ [ "start", "pixel.gif" ], [ "mid", "pixel.gif" ],
|
||||
[ "end", "pixel.gif" ], [ "arrow", "arrow.png" ] ];
|
||||
for ( var i = 0; i < image_data.length; i++) {
|
||||
|
|
@ -53,12 +57,15 @@ zkPlanner.setupArrow = function(arrowDiv){
|
|||
zkPlanner.drawArrow = function(dependency, orig, dest) {
|
||||
switch(dependency.getAttribute('type'))
|
||||
{
|
||||
case zkDependency.START_START:
|
||||
case zkDependency.START_START:
|
||||
zkPlanner.drawArrowStartStart(dependency, orig, dest);
|
||||
break;
|
||||
case zkDependency.END_END:
|
||||
zkPlanner.drawArrowEndEnd(dependency, orig, dest);
|
||||
break;
|
||||
case zkDependency.END_START:
|
||||
default:
|
||||
zkPlanner.drawArrowEndStart(dependency, orig, dest);
|
||||
default:
|
||||
zkPlanner.drawArrowEndStart(dependency, orig, dest);
|
||||
}
|
||||
}
|
||||
|
||||
|
|
@ -70,8 +77,8 @@ zkPlanner.drawArrowStartStart = function(arrow, orig, dest){
|
|||
|
||||
width1 = zkTask.CORNER_WIDTH;
|
||||
width2 = Math.abs(xend - xorig) + zkTask.CORNER_WIDTH;
|
||||
height = Math.abs(yend - yorig);
|
||||
|
||||
height = Math.abs(yend - yorig);
|
||||
|
||||
if (xorig > xend) {
|
||||
width1 = width2;
|
||||
width2 = zkTask.CORNER_WIDTH;
|
||||
|
|
@ -79,16 +86,16 @@ zkPlanner.drawArrowStartStart = function(arrow, orig, dest){
|
|||
|
||||
// First segment
|
||||
var depstart = this.findImageElement(arrow, 'start');
|
||||
depstart.style.left = (xorig - width1) + "px";
|
||||
depstart.style.left = (xorig - width1) + "px";
|
||||
depstart.style.top = yorig + "px";
|
||||
depstart.style.width = width1 + "px";
|
||||
depstart.style.display = "inline";
|
||||
|
||||
// Second segment
|
||||
var depmid = this.findImageElement(arrow, 'mid');
|
||||
depmid.style.left = depstart.style.left;
|
||||
depmid.style.left = depstart.style.left;
|
||||
if (yend > yorig) {
|
||||
depmid.style.top = yorig + "px";
|
||||
depmid.style.top = yorig + "px";
|
||||
} else {
|
||||
depmid.style.top = yend + "px";
|
||||
}
|
||||
|
|
@ -96,17 +103,62 @@ zkPlanner.drawArrowStartStart = function(arrow, orig, dest){
|
|||
|
||||
// Third segment
|
||||
var depend = this.findImageElement(arrow, 'end');
|
||||
depend.style.left = depstart.style.left;
|
||||
depend.style.left = depstart.style.left;
|
||||
depend.style.top = yend + "px";
|
||||
depend.style.width = width2 + "px";
|
||||
|
||||
var deparrow = this.findImageElement(arrow, 'arrow');
|
||||
deparrow.src = this.getImagesDir()+"arrow.png";
|
||||
deparrow.src = this.getImagesDir()+"arrow.png";
|
||||
deparrow.style.top = yend - 5 + "px";
|
||||
deparrow.style.left = xend - 15 + "px";
|
||||
}
|
||||
|
||||
|
||||
zkPlanner.drawArrowEndEnd = function(arrow, orig, dest){
|
||||
var xorig = orig[0] - zkTask.DEPENDENCY_PADDING;
|
||||
var yorig = orig[1] - zkTask.CORNER_WIDTH/2 + zkTask.HALF_DEPENDENCY_PADDING;
|
||||
var xend = dest[0] + zkTask.HALF_DEPENDENCY_PADDING;
|
||||
var yend = dest[1] - zkTask.DEPENDENCY_PADDING;
|
||||
|
||||
width1 = Math.abs(xend - xorig) + zkTask.CORNER_WIDTH;
|
||||
width2 = zkTask.CORNER_WIDTH;
|
||||
height = Math.abs(yend - yorig);
|
||||
|
||||
if (xorig > xend) {
|
||||
width2 = width1;
|
||||
width1 = zkTask.CORNER_WIDTH;
|
||||
}
|
||||
|
||||
// First segment
|
||||
var depstart = this.findImageElement(arrow, 'start');
|
||||
depstart.style.left = xorig + "px";
|
||||
depstart.style.top = yorig + "px";
|
||||
depstart.style.width = width1 + "px";
|
||||
depstart.style.display = "inline";
|
||||
|
||||
// Second segment
|
||||
var depmid = this.findImageElement(arrow, 'mid');
|
||||
depmid.style.left = (xorig + width1) + "px";
|
||||
if (yend > yorig) {
|
||||
depmid.style.top = yorig + "px";
|
||||
} else {
|
||||
depmid.style.top = yend + "px";
|
||||
}
|
||||
depmid.style.height = height + "px";
|
||||
|
||||
// Third segment
|
||||
var depend = this.findImageElement(arrow, 'end');
|
||||
depend.style.left = (xorig + width1 - width2) + "px";
|
||||
depend.style.top = yend + "px";
|
||||
depend.style.width = width2 + "px";
|
||||
|
||||
var deparrow = this.findImageElement(arrow, 'arrow');
|
||||
deparrow.src = this.getImagesDir()+"arrow3.png";
|
||||
deparrow.style.top = yend - 5 + "px";
|
||||
deparrow.style.left = xend - 5 + "px";
|
||||
}
|
||||
|
||||
|
||||
zkPlanner.drawArrowEndStart = function(arrow, orig, dest){
|
||||
var xorig = orig[0] - zkTask.DEPENDENCY_PADDING;
|
||||
var yorig = orig[1] - zkTask.HALF_DEPENDENCY_PADDING;
|
||||
|
|
@ -159,5 +211,5 @@ zkPlanner.drawArrowEndStart = function(arrow, orig, dest){
|
|||
deparrow.style.left = xend + "px";
|
||||
deparrow.style.top = yend - 5 + "px";
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
||||
Loading…
Add table
Reference in a new issue