|
|
@ -3,7 +3,7 @@ const readOnly = getUrlParameter("ro"); |
|
|
|
const proyekId = getUrlParameter("proyek_id"); |
|
|
|
const proyekId = getUrlParameter("proyek_id"); |
|
|
|
const timestamp = getUrlParameter("timestamp"); |
|
|
|
const timestamp = getUrlParameter("timestamp"); |
|
|
|
let base_url = getUrlParameter("base_url"); |
|
|
|
let base_url = getUrlParameter("base_url"); |
|
|
|
const base_url_image = "https://adw-api.ospro.id/assets/image/"; |
|
|
|
const base_url_image = "https://project-api.ospro.id/assets/image/"; |
|
|
|
const adwIntegrationUrl = "https://adw-api.ospro.id/api"; |
|
|
|
const adwIntegrationUrl = "https://adw-api.ospro.id/api"; |
|
|
|
|
|
|
|
|
|
|
|
let userToVersionGanttId = 0 |
|
|
|
let userToVersionGanttId = 0 |
|
|
@ -286,7 +286,7 @@ var allColumns = [ |
|
|
|
} |
|
|
|
} |
|
|
|
return moment(text.planned_start).format("DD-MM-YYYY"); |
|
|
|
return moment(text.planned_start).format("DD-MM-YYYY"); |
|
|
|
} |
|
|
|
} |
|
|
|
},
|
|
|
|
}, |
|
|
|
{ |
|
|
|
{ |
|
|
|
name: "planned_end", label: "Baseline Finish", align: "center", min_width: 80, editor: editor.planned_end, resize: true, template: function (text) { |
|
|
|
name: "planned_end", label: "Baseline Finish", align: "center", min_width: 80, editor: editor.planned_end, resize: true, template: function (text) { |
|
|
|
if (!text.planned_end) { |
|
|
|
if (!text.planned_end) { |
|
|
@ -295,35 +295,39 @@ var allColumns = [ |
|
|
|
return moment(text.planned_end).format("DD-MM-YYYY"); |
|
|
|
return moment(text.planned_end).format("DD-MM-YYYY"); |
|
|
|
} |
|
|
|
} |
|
|
|
}, |
|
|
|
}, |
|
|
|
{ name: "start_date", label: "Early Start", align: "center", min_width: 80, editor: editor.start_date, resize: true, template: function (text) { |
|
|
|
{ |
|
|
|
|
|
|
|
name: "start_date", label: "Early Start", align: "center", min_width: 80, editor: editor.start_date, resize: true, template: function (text) { |
|
|
|
return moment(text.start_date).format("DD-MM-YYYY"); |
|
|
|
return moment(text.start_date).format("DD-MM-YYYY"); |
|
|
|
} |
|
|
|
} |
|
|
|
},
|
|
|
|
}, |
|
|
|
{ name: "end_date", label: "Early Finish", align: "center", min_width: 80, editor: editor.end_date, resize: true, template: function (text) { |
|
|
|
{ |
|
|
|
|
|
|
|
name: "end_date", label: "Early Finish", align: "center", min_width: 80, editor: editor.end_date, resize: true, template: function (text) { |
|
|
|
return moment(text.end_date).format("DD-MM-YYYY"); |
|
|
|
return moment(text.end_date).format("DD-MM-YYYY"); |
|
|
|
} |
|
|
|
} |
|
|
|
}, |
|
|
|
}, |
|
|
|
{ name: "actual_start", label: "Actual Start", align: "center", min_width: 80, resize: true, template: function (text) { |
|
|
|
{ |
|
|
|
if (!text.actual_start) { |
|
|
|
name: "actual_start", label: "Actual Start", align: "center", min_width: 80, resize: true, template: function (text) { |
|
|
|
return ''; |
|
|
|
if (!text.actual_start) { |
|
|
|
} |
|
|
|
return ''; |
|
|
|
|
|
|
|
} |
|
|
|
return moment(text.actual_start).format("DD-MM-YYYY"); |
|
|
|
return moment(text.actual_start).format("DD-MM-YYYY"); |
|
|
|
} |
|
|
|
} |
|
|
|
}, |
|
|
|
}, |
|
|
|
{ name: "actual_end", label: "Actual Finish", align: "center", min_width: 80, resize: true, template: function (text) { |
|
|
|
{ |
|
|
|
if (!text.actual_end) { |
|
|
|
name: "actual_end", label: "Actual Finish", align: "center", min_width: 80, resize: true, template: function (text) { |
|
|
|
return ''; |
|
|
|
if (!text.actual_end) { |
|
|
|
} |
|
|
|
return ''; |
|
|
|
|
|
|
|
} |
|
|
|
return moment(text.actual_end).format("DD-MM-YYYY"); |
|
|
|
return moment(text.actual_end).format("DD-MM-YYYY"); |
|
|
|
} |
|
|
|
} |
|
|
|
},
|
|
|
|
}, |
|
|
|
{ |
|
|
|
{ |
|
|
|
name: "bobot_planning", label: "Bobot (%)", align: "center", editor: editor.bobot_planning, resize: true, min_width: 115, template: function (text) { |
|
|
|
name: "bobot_planning", label: "Bobot (%)", align: "center", editor: editor.bobot_planning, resize: true, min_width: 115, template: function (text) { |
|
|
|
let bobot = parseFloat(text.bobot_planning); |
|
|
|
let bobot = parseFloat(text.bobot_planning); |
|
|
|
console.log("bobot roundToTwo ", roundToTwo(bobot)); |
|
|
|
console.log("bobot roundToTwo ", roundToTwo(bobot)); |
|
|
|
console.log("bobot toFixed ", bobot.toFixed(2)); |
|
|
|
console.log("bobot toFixed ", bobot.toFixed(2)); |
|
|
|
if (bobot.toFixed(2) > 100) { |
|
|
|
if (bobot.toFixed(2) > 100) { |
|
|
|
|
|
|
|
|
|
|
|
gantt.alert("Bobot tidak boleh lebih dari 100%!"); |
|
|
|
gantt.alert("Bobot tidak boleh lebih dari 100%!"); |
|
|
|
return; |
|
|
|
return; |
|
|
|
} |
|
|
|
} |
|
|
@ -350,7 +354,7 @@ var allColumns = [ |
|
|
|
if (todayDuration < 0) { |
|
|
|
if (todayDuration < 0) { |
|
|
|
todayDuration = 0; |
|
|
|
todayDuration = 0; |
|
|
|
} |
|
|
|
} |
|
|
|
progress = todayDuration/endDuration * 100 |
|
|
|
progress = todayDuration / endDuration * 100 |
|
|
|
if (todayDuration > endDuration) { |
|
|
|
if (todayDuration > endDuration) { |
|
|
|
progress = 100; |
|
|
|
progress = 100; |
|
|
|
} |
|
|
|
} |
|
|
@ -364,18 +368,20 @@ var allColumns = [ |
|
|
|
return roundToTwo(progress); |
|
|
|
return roundToTwo(progress); |
|
|
|
}, resize: true |
|
|
|
}, resize: true |
|
|
|
}, |
|
|
|
}, |
|
|
|
{ name: "planned_duration", label: "Baseline Duration (Day)", align: "center", min_width: 50, resize: true, editor: editor.duration, template: function (text) { |
|
|
|
{ |
|
|
|
let start; |
|
|
|
name: "planned_duration", label: "Baseline Duration (Day)", align: "center", min_width: 50, resize: true, editor: editor.duration, template: function (text) { |
|
|
|
let end; |
|
|
|
let start; |
|
|
|
text.planned_start ? start = text.planned_start : start = text.start_date; |
|
|
|
let end; |
|
|
|
text.planned_end ? end = text.planned_end : end = text.end_date; |
|
|
|
text.planned_start ? start = text.planned_start : start = text.start_date; |
|
|
|
|
|
|
|
text.planned_end ? end = text.planned_end : end = text.end_date; |
|
|
|
let plannedDuration = gantt.calculateDuration({ |
|
|
|
|
|
|
|
start_date: new Date(start), |
|
|
|
let plannedDuration = gantt.calculateDuration({ |
|
|
|
end_date: new Date(end) |
|
|
|
start_date: new Date(start), |
|
|
|
}) |
|
|
|
end_date: new Date(end) |
|
|
|
return plannedDuration; |
|
|
|
}) |
|
|
|
}}, |
|
|
|
return plannedDuration; |
|
|
|
|
|
|
|
} |
|
|
|
|
|
|
|
}, |
|
|
|
{ name: "duration", label: "Duration (Day)", align: "center", min_width: 50, resize: true, editor: editor.duration }, |
|
|
|
{ name: "duration", label: "Duration (Day)", align: "center", min_width: 50, resize: true, editor: editor.duration }, |
|
|
|
{ |
|
|
|
{ |
|
|
|
name: "rencana_biaya", label: "Cost Planning", align: "right", min_width: 100, resize: true, template: function (text) { |
|
|
|
name: "rencana_biaya", label: "Cost Planning", align: "right", min_width: 100, resize: true, template: function (text) { |
|
|
@ -483,14 +489,14 @@ var allColumns = [ |
|
|
|
name: "progress_actual", label: "Total Actual Progress (%)", align: "center", min_width: 150, template: function (text) { |
|
|
|
name: "progress_actual", label: "Total Actual Progress (%)", align: "center", min_width: 150, template: function (text) { |
|
|
|
let progress = text.progress |
|
|
|
let progress = text.progress |
|
|
|
progress = progress * 100 |
|
|
|
progress = progress * 100 |
|
|
|
|
|
|
|
|
|
|
|
console.log("progress roundToTwo ", roundToTwo(progress)); |
|
|
|
console.log("progress roundToTwo ", roundToTwo(progress)); |
|
|
|
console.log("progress toFixed ", progress.toFixed(2)); |
|
|
|
console.log("progress toFixed ", progress.toFixed(2)); |
|
|
|
if (progress.toFixed(2) > 100) { |
|
|
|
if (progress.toFixed(2) > 100) { |
|
|
|
gantt.alert("Progress tidak boleh lebih dari 100%!"); |
|
|
|
gantt.alert("Progress tidak boleh lebih dari 100%!"); |
|
|
|
return; |
|
|
|
return; |
|
|
|
} |
|
|
|
} |
|
|
|
|
|
|
|
|
|
|
|
let bobot = text.bobot_planning |
|
|
|
let bobot = text.bobot_planning |
|
|
|
let actual = (progress * bobot) / 100 |
|
|
|
let actual = (progress * bobot) / 100 |
|
|
|
return roundToTwo(actual); |
|
|
|
return roundToTwo(actual); |
|
|
|