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.
207 lines
7.5 KiB
207 lines
7.5 KiB
var parts = []; |
|
let latest; |
|
let earliest; |
|
window.parent.postMessage({ action: 'getUrl' }, '*'); |
|
window.addEventListener('message', function(event) { |
|
if (event.data && event.data.action === 'sendUrl') { |
|
const parentUrl = event.data.url; |
|
|
|
// Split the remaining path by "/" |
|
parts = parentUrl.split("/"); |
|
} |
|
}); |
|
gantt.ajax.get({ |
|
url: `${base_url}activity/${ganttId}/${proyekId}/get`, |
|
headers: { |
|
"Content-Type": "application/json", |
|
"Authorization": `Bearer ${token}` |
|
} |
|
}).then(function (xhr) { |
|
let data = {}; |
|
let response = xhr.responseText; |
|
let obj = JSON.parse(response); |
|
data['data'] = obj.data.data; |
|
data['links'] = obj.data.links; |
|
// console.log("data parse wrong", data); |
|
// check if baseline has been set |
|
if (data.data && data.data.length > 0) { |
|
console.log('baseline', data.data[0].planned_start); |
|
if (data.data[0].planned_start !== null && data.data[0].planned_end !== null) { |
|
console.log('baseline set'); |
|
isBaselineSet = true; |
|
} |
|
else { |
|
console.log('baseline has not been set'); |
|
isBaselineSet = false; |
|
} |
|
} |
|
|
|
if(!parts[7]){ |
|
gantt.silent(function () { |
|
gantt.parse(data); |
|
earliest = getEarliestTaskDate(); |
|
latest = getLatestTaskDate(); |
|
}); |
|
} |
|
}); |
|
|
|
function refresData(id){ |
|
gantt.ajax.get({ |
|
url: `${base_url}activity/${ganttId}/${proyekId}/get`, |
|
headers: { |
|
"Content-Type": "application/json", |
|
"Authorization": `Bearer ${token}` |
|
} |
|
}).then(function (xhr) { |
|
gantt.clearAll(); |
|
let data = {}; |
|
let response = xhr.responseText; |
|
let obj = JSON.parse(response); |
|
data['data'] = obj.data.data; |
|
data['links'] = obj.data.links; |
|
// console.log("data parse wrong", data); |
|
if(!parts[7]){ |
|
gantt.silent(function () { |
|
gantt.parse(data); |
|
earliest = getEarliestTaskDate(); |
|
latest = getLatestTaskDate(); |
|
}); |
|
} |
|
if(id){ |
|
if(gantt.isTaskExists(id)){ |
|
expandTask(); |
|
} |
|
} |
|
}); |
|
} |
|
|
|
// entity - "task"|"link" |
|
// action - "create"|"update"|"delete" |
|
// data - an object with task or link data |
|
// id – the id of a processed object (task or link) |
|
var dp = gantt.createDataProcessor(function(entity, action, data, id) { |
|
switch(action) { |
|
case "create": |
|
|
|
if(entity=="task"){ |
|
data['proyek_id'] = proyekId; |
|
data['start_date'] = `${data.start_date}+07`; |
|
data['end_date'] = `${data.start_date}`; |
|
// data['start_date'] = moment(data.start_date).format("DD-MM-YYYY HH:mm:ss+07"); |
|
// data['end_date'] = moment(data.end_date).format("DD-MM-YYYY HH:mm:ss+07"); |
|
|
|
if(data && data.parent){ |
|
data['parent_id'] = data.parent; |
|
} |
|
} |
|
data['version_gantt_id'] = ganttId; |
|
return gantt.ajax.post({ |
|
headers: { |
|
"Content-Type": "application/json", |
|
"Authorization": `Bearer ${token}` |
|
}, |
|
url: base_url + entity, |
|
data:JSON.stringify(data) |
|
}).then(function(response){ |
|
let res = response.responseText |
|
res = JSON.parse(res) |
|
// console.log("cek response", res) |
|
if(entity=="link"){ |
|
gantt.changeLinkId(id, res.tid); |
|
}else if(entity=="task"){ |
|
gantt.changeTaskId(id, res.tid); |
|
} |
|
// refresData(); |
|
}); |
|
break; |
|
case "update": |
|
if(entity=="task"){ |
|
data['start_date'] = moment(data.start_date).format("YYYY-MM-DD HH:mm:ss+07"); |
|
data['end_date'] = moment(data.end_date).format("YYYY-MM-DD HH:mm:ss+07"); |
|
// data['planned_start'] = moment(data.planned_start).format("YYYY-MM-DD HH:mm:ss+07"); |
|
// data['planned_end'] = moment(data.planned_end).format("YYYY-MM-DD HH:mm:ss+07"); |
|
|
|
if(data && data.parent){ |
|
data['parent_id'] = data.parent; |
|
} |
|
|
|
Object.keys(data).forEach(function(key) { |
|
if(data[key]==""){ |
|
data[key]=null; |
|
} |
|
}); |
|
} |
|
// console.log("cek data update", data) |
|
// let dataProgress = parseInt(data.progress) |
|
// dataProgress = dataProgress/100 |
|
return gantt.ajax.put({ |
|
headers: { |
|
"Content-Type": "application/json", |
|
"Authorization": `Bearer ${token}` |
|
}, |
|
url: base_url + entity + "/" + id, |
|
data:JSON.stringify(data) |
|
}).then(function(response){ |
|
if(entity=="task"){ |
|
let parent = data.parent; |
|
let responseText = JSON.parse(response.responseText) |
|
let resData = responseText |
|
// console.log("dataRes", resData); |
|
let updateBobot = resData.update_bobot || false |
|
if(updateBobot){ |
|
refresData(id); |
|
}else{ |
|
if(parent && parent > 0){ |
|
updateActivity(parent); |
|
} |
|
} |
|
// console.log("data", data); |
|
// refresData(); |
|
// if(resData && resData.rencana_biaya){ |
|
// if(data.rencana_biaya != resData.rencana_biaya){ |
|
// // gantt.getTask(id).bobot_planning = resData.bobot_planning; |
|
// // gantt.updateTask(id); |
|
|
|
// }else{ |
|
// if(parent && parent > 0){ |
|
// updateActivity(parent); |
|
// } |
|
// } |
|
// } |
|
} |
|
}); |
|
|
|
break; |
|
case "delete": |
|
// console.log("cek data", data) |
|
return gantt.ajax.del({ |
|
headers: { |
|
"Authorization": `Bearer ${token}` |
|
}, |
|
url: base_url + entity + "/" + id |
|
}).then(function(response){ |
|
if(entity=="task"){ |
|
let parent = data.parent; |
|
if(parent && parent > 0){ |
|
let children = gantt.getChildren(parent); |
|
updateActivity(parent); |
|
if(children && children.length > 0){ |
|
|
|
}else{ |
|
if(gantt.isTaskExists(parent)){ |
|
gantt.getTask(parent).type = "task"; |
|
gantt.updateTask(parent); |
|
} |
|
} |
|
} |
|
// console.log("cek data delete", data) |
|
} |
|
// let res = response.responseText |
|
// res = JSON.parse(res) |
|
// console.log("cek response", res) |
|
|
|
// refresData(); |
|
}); |
|
break; |
|
} |
|
});
|
|
|