var parts = []; window.parent.postMessage({ action: 'getUrl' }, '*'); window.addEventListener('message', function(event) { if (event.data && event.data.action === 'sendUrl') { const parentUrl = event.data.url; // Remove the base URL and hash const path = parentUrl.replace("https://adw.ospro.id/#/dashboard-project/", ""); // Split the remaining path by "/" parts = path.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[2]){ gantt.silent(function () { gantt.parse(data); }); } }); 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[2]){ gantt.silent(function () { gantt.parse(data); }); } 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; } });