|
|
|
gantt.attachEvent("onTaskDblClick", function(id,e){
|
|
|
|
return false;
|
|
|
|
});
|
|
|
|
|
|
|
|
gantt.attachEvent("onAfterTaskAdd", function(id,item){
|
|
|
|
if(item.parent && item.parent > 0){
|
|
|
|
let parentId = item.parent;
|
|
|
|
gantt.getTask(parentId).type = "project";
|
|
|
|
gantt.updateTask(parentId);
|
|
|
|
}
|
|
|
|
});
|
|
|
|
|
|
|
|
gantt.attachEvent("onTaskRowClick", function(id,row){
|
|
|
|
activityId = id;
|
|
|
|
var activity = gantt.getTaskBy("id", id);
|
|
|
|
activityName = activity[0].name;
|
|
|
|
});
|
|
|
|
|
|
|
|
gantt.ext.inlineEditors.attachEvent("onBeforeEditStart", function(state){
|
|
|
|
let id = parseInt(state.id)
|
|
|
|
let ganttData = gantt.getTask(id);
|
|
|
|
if(ganttData.type_activity && ganttData.type_activity=="header"){
|
|
|
|
return false
|
|
|
|
}
|
|
|
|
let column = state.columnName
|
|
|
|
if(column=="progress" || column=="rencana_biaya"){
|
|
|
|
let hasChild = gantt.hasChild(id);
|
|
|
|
if(hasChild){
|
|
|
|
return false
|
|
|
|
}
|
|
|
|
}
|
|
|
|
|
|
|
|
if(column=="cost_actual"){
|
|
|
|
let progress = ganttData.progress ? ganttData.progress : 0
|
|
|
|
if(progress <= 0){
|
|
|
|
return false
|
|
|
|
}
|
|
|
|
}
|
|
|
|
return true
|
|
|
|
});
|
|
|
|
|
|
|
|
gantt.attachEvent("onBeforeTaskUpdate", function(id,new_item){
|
|
|
|
// format progress
|
|
|
|
let progress = new_item.progress;
|
|
|
|
if(progress > 100){
|
|
|
|
progress = 100;
|
|
|
|
}else if(progress <= 0){
|
|
|
|
progress = 0;
|
|
|
|
}else if(progress <= 1 && progress > 0){
|
|
|
|
progress = progress*100
|
|
|
|
}
|
|
|
|
progress = progress/100;
|
|
|
|
// format cost planning
|
|
|
|
let costPlanning = new_item.rencana_biaya;
|
|
|
|
costPlanning = replaceAll(costPlanning, ".", "");
|
|
|
|
costPlanning = replaceAll(costPlanning, ",", ".");
|
|
|
|
new_item['rencana_biaya'] = costPlanning;
|
|
|
|
new_item['progress'] = progress;
|
|
|
|
});
|
|
|
|
|
|
|
|
|
|
|
|
gantt.attachEvent("onBeforeLinkAdd", function(id,link){
|
|
|
|
//any custom logic here
|
|
|
|
let source = link.source;
|
|
|
|
let target = link.target;
|
|
|
|
let parents = gantt.getParent(source);
|
|
|
|
let parentt = gantt.getParent(target);
|
|
|
|
let childt = gantt.hasChild(target);
|
|
|
|
if(childt){
|
|
|
|
return false;
|
|
|
|
}
|
|
|
|
|
|
|
|
if(parents==target){
|
|
|
|
return false;
|
|
|
|
}
|
|
|
|
|
|
|
|
if(parentt==source){
|
|
|
|
return false
|
|
|
|
}
|
|
|
|
|
|
|
|
return true;
|
|
|
|
});
|
|
|
|
|
|
|
|
gantt.attachEvent("onGanttReady", function(){
|
|
|
|
|
|
|
|
});
|
|
|
|
|
|
|
|
gantt.attachEvent("onGanttRender", function(){
|
|
|
|
if(readOnly && parseInt(readOnly)==1){
|
|
|
|
gantt.config.readonly = true;
|
|
|
|
}else if(readOnly && parseInt(readOnly)==0){
|
|
|
|
gantt.config.readonly = false;
|
|
|
|
}else{
|
|
|
|
gantt.config.readonly = true;
|
|
|
|
}
|
|
|
|
});
|
|
|
|
|
|
|
|
gantt.attachEvent("onGanttScroll", function (left, top){
|
|
|
|
var left_date = gantt.dateFromPos(left)
|
|
|
|
var right_date = gantt.dateFromPos(left + gantt.$task.offsetWidth)
|
|
|
|
|
|
|
|
let taskCount = gantt.getTaskCount();
|
|
|
|
if (taskCount > 0) {
|
|
|
|
gantt.config.start_date = gantt.config.start_date || gantt.getState().min_date;
|
|
|
|
gantt.config.end_date = gantt.config.end_date || gantt.getState().max_date;
|
|
|
|
|
|
|
|
var min_allowed_date = gantt.date.add(gantt.config.start_date, 1, "day");
|
|
|
|
var max_allowed_date = gantt.date.add(gantt.config.end_date, -1, "day");
|
|
|
|
|
|
|
|
var repaint = false;
|
|
|
|
if (earliest && +left_date <= +min_allowed_date && +left_date >= +earliest){
|
|
|
|
gantt.config.start_date = gantt.date.add(gantt.config.start_date, -1, "day");
|
|
|
|
repaint = true;
|
|
|
|
}
|
|
|
|
if (latest && +right_date >= +max_allowed_date && +right_date <= +latest){
|
|
|
|
gantt.config.end_date = gantt.date.add(gantt.config.end_date, 1, "day");
|
|
|
|
repaint = true;
|
|
|
|
}
|
|
|
|
|
|
|
|
if (repaint) {
|
|
|
|
setTimeout(function(){
|
|
|
|
gantt.render()
|
|
|
|
},20)
|
|
|
|
}
|
|
|
|
}
|
|
|
|
});
|