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; } });