source: [view]
var treeImg = dojo.create("div", {
id: ownerNameItem.id,
className: "ganttImageTreeExpand"
});
dojo.attr(treeImg, "tabIndex", 0);
var currentItem = this.ownerTaskNodeMapping[ownerNameItem.id];
dojo.forEach(["onclick", "onkeydown"], function(e){
this.ganttChart._events.push(
dojo.connect(treeImg, e, this, function(evt){
if(e == "onkeydown" && evt.keyCode != dojo.keys.ENTER){ return; }
if(currentItem.isOpen){
dojo.removeClass(treeImg, "ganttImageTreeCollapse");
dojo.addClass(treeImg, "ganttImageTreeExpand");
currentItem.isOpen = false;
//collapse
var reachTarget = false;
for(var owner in this.ownerTaskNodeMapping){
var ownerItem = this.ownerTaskNodeMapping[owner];
if(reachTarget){
dojo.forEach(ownerItem[owner], function(tItem){
dojo.style(tItem, "top", dojo.style(tItem, "top") - currentItem.taskCount * 23 + "px");
}, this);
dojo.forEach(ownerItem.tasks, function(tItems){
dojo.forEach(tItems, function(tItem){
var item = !tItem.v && !tItem.h ? [tItem] : [tItem.v, tItem.h];
dojo.forEach(item, function(t){
dojo.style(t, "top", dojo.style(t, "top") - currentItem.taskCount * 23 + "px");
}, this);
}, this);
}, this);
}else{
if(owner == ownerNameItem.id){
reachTarget = true;
dojo.forEach(ownerItem.tasks, function(tItems, i){
dojo.forEach(tItems, function(tItem){
this.styleOwnerItem(tItem, ownerItem[owner][0], "none", 0);
}, this);
}, this);
}
}
}
}else{
dojo.removeClass(treeImg, "ganttImageTreeExpand");
dojo.addClass(treeImg, "ganttImageTreeCollapse");
currentItem.isOpen = true;
//expand
var reachTarget = false;
for(var owner in this.ownerTaskNodeMapping){
var ownerItem = this.ownerTaskNodeMapping[owner];
if(reachTarget){
dojo.forEach(ownerItem[owner], function(tItem){
dojo.style(tItem, "top", dojo.style(tItem, "top") + currentItem.taskCount * 23 + "px");
}, this);
dojo.forEach(ownerItem.tasks, function(tItems){
dojo.forEach(tItems, function(tItem){
var item = !tItem.v && !tItem.h ? [tItem] : [tItem.v, tItem.h];
dojo.forEach(item, function(t){
dojo.style(t, "top", dojo.style(t, "top") + currentItem.taskCount * 23 + "px");
}, this);
}, this);
}, this);
}else{
if(owner == ownerNameItem.id){
reachTarget = true;
dojo.forEach(ownerItem.tasks, function(tItems, i){
dojo.forEach(tItems, function(tItem){
this.styleOwnerItem(tItem, ownerItem[owner][0], "inline", (i + 1) * 23);
}, this);
}, this);
}
}
}
}
})
);
}, this);
dojo.addClass(treeImg, "ganttResourceTreeImage");
dojo.style(treeImg, {
left: (dojo.style(ownerNameItem, "left") - 12) + "px",
top: (dojo.style(ownerNameItem, "top") + 3) + "px"
});
return treeImg;