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.
299 lines
11 KiB
299 lines
11 KiB
let geom = []; |
|
let latest; |
|
let earliest; |
|
let ganttTask; |
|
$("body").addClass("loading"); |
|
gantt.ajax.get({ |
|
url: `${base_url}activity/${ganttId}/${proyekId}/get`, |
|
headers: { |
|
"Content-Type": "application/json", |
|
"Authorization": `Bearer ${token}` |
|
} |
|
}).then(function (xhr) { |
|
$("body").removeClass("loading"); |
|
let batchEntity = localStorage.getItem('batchEntity'); |
|
if (!batchEntity || batchEntity == '') { |
|
$("#save-activity").hide(); |
|
$("#save-separator").hide(); |
|
} else { |
|
$("#save-activity").show(); |
|
$("#save-separator").show(); |
|
} |
|
let data = {}; |
|
let response = xhr.responseText; |
|
let obj = JSON.parse(response); |
|
data['data'] = obj.data.data; |
|
data['links'] = obj.data.links; |
|
// check if baseline has been set |
|
if (data.data && data.data.length > 0) { |
|
if (data.data[0].planned_start !== null && data.data[0].planned_end !== null) { |
|
isBaselineSet = true; |
|
} |
|
else { |
|
isBaselineSet = false; |
|
} |
|
} |
|
geom = []; |
|
data.data.forEach(element => { |
|
geom.push({ |
|
"activity_id": element.id, |
|
"geom": element.geom |
|
}) |
|
}); |
|
gantt.silent(function () { |
|
// updateLinksLag(data); |
|
ganttTask = data; |
|
gantt.parse(data); |
|
getGanttOpen(); |
|
gantt.parse(data); |
|
earliest = getEarliestTaskDate(); |
|
latest = getLatestTaskDate(); |
|
}); |
|
}).catch(function (error) { |
|
$("body").removeClass("loading"); |
|
gantt.alert({ |
|
title: "Peringatan", |
|
type: "alert-error", |
|
text: "Get activity gagal" |
|
}); |
|
}); |
|
|
|
function refresData(id) { |
|
// Store the current scroll position |
|
var scrollState = { |
|
x: gantt.getScrollState().x, |
|
y: gantt.getScrollState().y |
|
}; |
|
$("body").addClass("loading"); |
|
gantt.ajax.get({ |
|
url: `${base_url}activity/${ganttId}/${proyekId}/get`, |
|
headers: { |
|
"Content-Type": "application/json", |
|
"Authorization": `Bearer ${token}` |
|
} |
|
}).then(function (xhr) { |
|
$("body").removeClass("loading"); |
|
let batchEntity = localStorage.getItem('batchEntity'); |
|
if (!batchEntity || batchEntity == '') { |
|
$("#save-activity").hide(); |
|
$("#save-separator").hide(); |
|
} else { |
|
$("#save-activity").show(); |
|
$("#save-separator").show(); |
|
} |
|
gantt.clearAll(); |
|
let data = {}; |
|
let response = xhr.responseText; |
|
let obj = JSON.parse(response); |
|
data['data'] = obj.data.data; |
|
data['links'] = obj.data.links; |
|
geom = []; |
|
data.data.forEach(element => { |
|
geom.push({ |
|
"activity_id": element.id, |
|
"geom": element.geom |
|
}) |
|
}); |
|
gantt.silent(function () { |
|
// updateLinksLag(data); |
|
ganttTask = data; |
|
gantt.parse(data); |
|
getGanttOpen(); |
|
gantt.parse(data); |
|
earliest = getEarliestTaskDate(); |
|
latest = getLatestTaskDate(); |
|
}); |
|
if (id) { |
|
if (gantt.isTaskExists(id)) { |
|
expandTask(); |
|
} |
|
} |
|
|
|
// Restore the scroll position |
|
gantt.scrollTo(scrollState.x, scrollState.y); |
|
|
|
}).catch(function (error) { |
|
$("body").removeClass("loading"); |
|
gantt.alert({ |
|
title: "Peringatan", |
|
type: "alert-error", |
|
text: "Update activity gagal" |
|
}); |
|
}); |
|
} |
|
|
|
// 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; |
|
//TODO : Possible end date bug |
|
let startDate = moment(data.start_date, "YYYY-MM-DD"); |
|
data['start_date'] = startDate.format("YYYY-MM-DD") + " 00:00:00+07" |
|
let endDate = moment(data.end_date, "YYYY-MM-DD"); |
|
data['end_date'] = endDate.format("YYYY-MM-DD") + " 23:59:59+07"; |
|
let newDuration = gantt.calculateDuration({ |
|
start_date: new Date(data['start_date']), |
|
end_date: new Date(data['end_date']) |
|
}) |
|
data['duration'] = newDuration; |
|
|
|
if (data && data.parent) { |
|
data['parent_id'] = data.parent; |
|
} |
|
} |
|
data['version_gantt_id'] = ganttId; |
|
$("body").addClass("loading"); |
|
return gantt.ajax.post({ |
|
headers: { |
|
"Content-Type": "application/json", |
|
"Authorization": `Bearer ${token}` |
|
}, |
|
url: base_url + entity, |
|
data: JSON.stringify(data) |
|
}).then(function (response) { |
|
$("body").removeClass("loading"); |
|
let res = response.responseText |
|
res = JSON.parse(res) |
|
if (entity == "link") { |
|
gantt.changeLinkId(id, res.tid); |
|
} else if (entity == "task") { |
|
gantt.changeTaskId(id, res.tid); |
|
} |
|
}).catch(function (error) { |
|
$("body").removeClass("loading"); |
|
gantt.alert({ |
|
title: "Peringatan", |
|
type: "alert-error", |
|
text: "Add activity gagal" |
|
}); |
|
}); |
|
break; |
|
case "update": |
|
if (entity == "task") { |
|
// let startDate = moment(data.start_date, "YYYY-MM-DD").subtract(1, "days"); |
|
let startDate = moment(data.start_date, "YYYY-MM-DD"); |
|
// data['start_date'] = startDate.format("YYYY-MM-DD")+" 00:00:00+07"; |
|
let endDate = moment(data.end_date, "YYYY-MM-DD"); |
|
|
|
let configStart = moment(gantt.config.start_date); |
|
let configEnd = moment(gantt.config.end_date); |
|
if (startDate >= configEnd || startDate <= configStart || endDate >= configEnd || endDate <= configStart) { |
|
// location.reload(); |
|
} |
|
if (startDate > endDate) { |
|
gantt.alert({ |
|
title: "Peringatan", |
|
type: "alert-error", |
|
text: "Tanggal selesai tidak bisa sebelum tanggal mulai!" |
|
}); |
|
data['end_date'] = data['start_date']; |
|
refresData(id); |
|
return; |
|
} |
|
|
|
if (data && data.parent) { |
|
data['parent_id'] = data.parent; |
|
} |
|
|
|
Object.keys(data).forEach(function (key) { |
|
if (data[key] == "") { |
|
data[key] = null; |
|
} |
|
}); |
|
} |
|
data['geom'] = geom.find(obj => obj.activity_id == id)?.geom; |
|
let existingEntity = localStorage.getItem('batchEntity'); |
|
if (existingEntity) { |
|
existingEntity = JSON.parse(existingEntity); |
|
// Now batchEntity is an object containing your data, and you can access its properties like batchEntity.entity and batchEntity.data |
|
} |
|
let batchEntity = { |
|
entity: entity, |
|
data: data |
|
}; |
|
let toBeSet = [] |
|
if (existingEntity) { |
|
toBeSet = [...existingEntity, batchEntity] |
|
} else { |
|
toBeSet = [batchEntity] |
|
} |
|
localStorage.setItem('batchEntity', JSON.stringify(toBeSet)); |
|
$("#save-activity").show(); |
|
$("#save-separator").show(); |
|
sendStorage(); |
|
// $("body").addClass("loading"); |
|
// return gantt.ajax.put({ |
|
// headers: { |
|
// "Content-Type": "application/json", |
|
// "Authorization": `Bearer ${token}` |
|
// }, |
|
// url: base_url + entity + "/" + id, |
|
// data: JSON.stringify(data) |
|
// }).then(function (response) { |
|
// $("body").removeClass("loading"); |
|
// if (entity == "task") { |
|
// let parent = data.parent; |
|
// let responseText = JSON.parse(response.responseText) |
|
// let resData = responseText |
|
// let updateBobot = resData.update_bobot || false |
|
// if (updateBobot) { |
|
// if (parent && parent > 0) { |
|
// updateActivity(parent); |
|
// } |
|
// } else if (parent && parent > 0) { |
|
// updateActivity(parent); |
|
// } |
|
// if (!parent) { |
|
// refresData(); |
|
// } |
|
// } |
|
// }).catch(function (error) { |
|
// $("body").removeClass("loading"); |
|
// gantt.alert({ |
|
// title: "Peringatan", |
|
// type: "alert-error", |
|
// text: "Update activity gagal" |
|
// }); |
|
// }); |
|
|
|
break; |
|
case "delete": |
|
$("body").addClass("loading"); |
|
return gantt.ajax.del({ |
|
headers: { |
|
"Authorization": `Bearer ${token}` |
|
}, |
|
url: base_url + entity + "/" + id |
|
}).then(function (response) { |
|
$("body").removeClass("loading"); |
|
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); |
|
} |
|
} |
|
} |
|
} |
|
}).catch(function (error) { |
|
$("body").removeClass("loading"); |
|
gantt.alert({ |
|
title: "Peringatan", |
|
type: "alert-error", |
|
text: "Update activity gagal" |
|
}); |
|
}); |
|
break; |
|
} |
|
});
|
|
|