You can not select more than 25 topics
Topics must start with a letter or number, can include dashes ('-') and can be up to 35 characters long.
130 lines
3.8 KiB
130 lines
3.8 KiB
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); |
|
// console.log("cek ganttData", ganttData); |
|
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 ganttData = gantt.getTask(id); |
|
let progress = ganttData.progress ? ganttData.progress : 0 |
|
if(progress <= 0){ |
|
return false |
|
} |
|
} |
|
// console.log("cek state", state); |
|
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 |
|
// console.log("cek link", link); |
|
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) |
|
} |
|
} |
|
}); |