diff --git a/edit-mode/function/function.js b/edit-mode/function/function.js
index bf7a949..b7c1425 100644
--- a/edit-mode/function/function.js
+++ b/edit-mode/function/function.js
@@ -383,6 +383,11 @@ function getGanttOpen() {
}
$(document).ready(function () {
+ $("#gantt_here").on("scroll", function () {
+ var container = $(this);
+ var scrollPositionX = container.scrollLeft();
+ });
+
$("#critalPathBox").on("change", function () {
let checked = $(this).is(":checked");
if (checked) {
diff --git a/edit-mode/function/ganttSettings.js b/edit-mode/function/ganttSettings.js
index 371d0db..061bbc4 100644
--- a/edit-mode/function/ganttSettings.js
+++ b/edit-mode/function/ganttSettings.js
@@ -39,11 +39,11 @@ var daysObj = [
value: "6"
}
];
-var days = [0,1,2,3,4,5,6]; // Sunday -> Saturday
+var days = [0, 1, 2, 3, 4, 5, 6]; // Sunday -> Saturday
var selectDayOffChoices = null;
-$(document).ready(function() {
+$(document).ready(function () {
// init select multiple workdays
selectDayOffChoices = new Choices('#select_dayoff', {
removeItemButton: true,
@@ -53,13 +53,13 @@ $(document).ready(function() {
// renderChoiceLimit: 5
});
- $('#gantt_setting_btn').on('click', async function() {
+ $('#gantt_setting_btn').on('click', async function () {
const result = await axiosInstance
.get(VERSION_GANTT_EDIT_URL, HEADER)
.then(res => res)
.catch((error) => error.response);
- if(result && result.status==200){
+ if (result && result.status == 200) {
if (result.data && result.data.data) {
var config_dayoff = null;
if (result.data.data.config_dayoff !== null) {
@@ -67,20 +67,20 @@ $(document).ready(function() {
if (config_dayoff && config_dayoff.length > 0) {
var config_dayoff_arr = config_dayoff.split(',');
- for (var i=0; i < config_dayoff_arr.length; i++) {
+ for (var i = 0; i < config_dayoff_arr.length; i++) {
var day = daysObj.find(o => parseInt(o.value) === parseInt(config_dayoff_arr[i]));
selectDayOffChoices.setChoiceByValue(day.value);
}
}
}
}
- }else{
- gantt.alert({type: "error", text: "Failed to get settings. Please check your internet connection."});
+ } else {
+ gantt.alert({ type: "error", text: "Failed to get settings. Please check your internet connection." });
}
$('#modal_gantt_setting').modal('show');
});
- $('#btn_save_setting').on('click', async function() {
+ $('#btn_save_setting').on('click', async function () {
var holidays = [];
var dayoff = $('#select_dayoff').val();
var costToComplete = $("#costToCompleteBox").val();
@@ -90,13 +90,13 @@ $(document).ready(function() {
var workdays = _.difference(days, dayoff);
// reset the dayoff first
- for (var i=0; i < days.length; i++) {
- gantt.unsetWorkTime({day: days[i], hours: false});
+ for (var i = 0; i < days.length; i++) {
+ gantt.unsetWorkTime({ day: days[i], hours: false });
}
if (dayoff.length > 0) {
- for (var i=0; i < dayoff.length; i++) {
- gantt.setWorkTime({ day:dayoff[i], hours:false });
+ for (var i = 0; i < dayoff.length; i++) {
+ gantt.setWorkTime({ day: dayoff[i], hours: false });
}
}
@@ -116,30 +116,30 @@ $(document).ready(function() {
refresData();
}
else {
- gantt.alert({type: "error", text: "Failed to update setting"});
+ gantt.alert({ type: "error", text: "Failed to update setting" });
}
gantt.render();
});
- $("#gantt_toggle_task_btn").on('click', function(event) {
- toggleCollapseTasks();
- });
+ $("#gantt_toggle_task_btn").on('click', function (event) {
+ toggleCollapseTasks();
+ });
- $("#dashboard-project").on('click', function(event) {
- window.location.href = `https://adw.ospro.id/#/dashboard-project/${projectId}/${ganttId}`;
+ $("#dashboard-project").on('click', function (event) {
+ window.location.href = `https://adw.ospro.id/#/dashboard-project/${projectId}/${ganttId}`;
});
- $("#gantt-baseline").on('click', function(event) {
+ $("#gantt-baseline").on('click', function (event) {
setBaseline();
});
- $("#save-activity").on('click', function(event) {
+ $("#save-activity").on('click', function (event) {
resetActivity();
});
- $("#gantt-synchronize").on('click', function(event) {
+ $("#gantt-synchronize").on('click', function (event) {
setSynchronize();
});
@@ -147,7 +147,7 @@ $(document).ready(function() {
initGanttSettings();
});
-async function initHolidays(){
+async function initHolidays() {
let payload = {
"columns": [
{ "name": "version_gantt_id", "logic_operator": "=", "value": ganttId },
@@ -159,7 +159,7 @@ async function initHolidays(){
}
$.ajax({
- data: JSON.stringify(payload),
+ data: JSON.stringify(payload),
url: `${base_url}holiday/search`,
type: "POST",
success: function (result) {
@@ -169,7 +169,7 @@ async function initHolidays(){
var b = moment(a).add(val.duration, 'days');
for (var m = moment(a); m.isBefore(b); m.add(1, 'days')) {
let holiday = new Date(m.format('YYYY-MM-DD'));
- console.log("holiday", holiday);
+ console.log("holiday", holiday);
gantt.setWorkTime({
date: holiday,
hours: false
@@ -190,39 +190,39 @@ async function initGanttSettings() {
.then(res => res)
.catch((error) => error.response);
- if (result && result.status==200){
+ if (result && result.status == 200) {
var config_dayoff = result.data.data.config_dayoff;
var type_gantt = result.data.data.calculation_type;
- reRenderColumns(type_gantt);
+ reRenderColumns(type_gantt);
var dayoff = [];
- if(config_dayoff && config_dayoff.length > 0){
+ if (config_dayoff && config_dayoff.length > 0) {
dayoff = config_dayoff.split(',');
}
// reset the dayoff first
- for (var i=0; i < days.length; i++) {
- gantt.unsetWorkTime({day: days[i], hours: false});
+ for (var i = 0; i < days.length; i++) {
+ gantt.unsetWorkTime({ day: days[i], hours: false });
}
if (dayoff.length > 0) {
- for (var i=0; i < dayoff.length; i++) {
- gantt.setWorkTime({ day:dayoff[i], hours:false });
+ for (var i = 0; i < dayoff.length; i++) {
+ gantt.setWorkTime({ day: dayoff[i], hours: false });
+ }
+ }
+ for (let index = 1; index <= 7; index++) {
+ const dateToCheck = new Date(2023, 4, index); // Note: Month is 0-based, so 5 represents June
+ if (gantt.isWorkTime({ date: dateToCheck, hours: false })) {
+ console.log(dateToCheck.toString() + ' is work time.');
+ } else {
+ console.log(dateToCheck.toString() + ' is not work time.');
}
}
-for (let index = 1; index <= 7; index++) {
- const dateToCheck = new Date(2023, 4, index); // Note: Month is 0-based, so 5 represents June
- if (gantt.isWorkTime({ date: dateToCheck, hours: false })) {
- console.log(dateToCheck.toString() + ' is work time.');
- } else {
- console.log(dateToCheck.toString() + ' is not work time.');
- }
-}
}
}
-function expandTask(){
+function expandTask() {
console.log("check expandTask")
- gantt.eachTask(function(task){
+ gantt.eachTask(function (task) {
task.$open = true;
});
// updateProperty({task_open:true})
@@ -236,11 +236,11 @@ function expandTask(){
function toggleCollapseTasks() {
// collapse task / activity
console.log('toggleCollapseTasks');
- gantt.eachTask(function(task){
+ gantt.eachTask(function (task) {
task.$open = toggleTasks == "Expand";
});
if (toggleTasks == "Expand") {
- updateProperty({task_open:true})
+ updateProperty({ task_open: true })
// console.log('to collapse');
toggleTasks = "Collapse";
$("#gantt_toggle_task_btn").prop('title', 'Collapse Activities');
@@ -248,7 +248,7 @@ function toggleCollapseTasks() {
$("#gantt_toggle_task_btn").children().addClass('fa-compress-alt'); // change icon to collapse
} else {
// console.log('to expand');
- updateProperty({task_open:false})
+ updateProperty({ task_open: false })
toggleTasks = "Expand";
$("#gantt_toggle_task_btn").prop('title', 'Expand Activities');
$("#gantt_toggle_task_btn").children().removeClass('fa-compress-alt');
@@ -260,42 +260,42 @@ function toggleCollapseTasks() {
// Function Show / Hide Columns
-function getColumnsSelection(node){
+function getColumnsSelection(node) {
var selectedColumns = node.querySelectorAll(":checked");
var unselectedColumn = node.querySelectorAll('input[type="checkbox"]:not(:checked)');
// var allSelected = node.querySelector("#check-all").prop('checked');
// console.log("unselectedColumn", unselectedColumn)
var checkedColumns = {};
- selectedColumns.forEach(function(node){
+ selectedColumns.forEach(function (node) {
checkedColumns[node.name] = true;
});
- unselectedColumn.forEach(function(node){
+ unselectedColumn.forEach(function (node) {
checkedColumns[node.name] = false;
});
return checkedColumns;
}
-function populateColumnsDropdown(node){
+function populateColumnsDropdown(node) {
var visibleColumns = {};
// var preventHide = ['action'];
- gantt.config.columns.forEach(function(col){
+ gantt.config.columns.forEach(function (col) {
visibleColumns[col.name] = true;
});
var lines = [];
- allColumns.forEach(function(col){
+ allColumns.forEach(function (col) {
var checked = visibleColumns[col.name] ? "checked" : "";
// skip action to be pushed
- lines.push(``);
+ lines.push(``);
});
node.innerHTML = 'Show / Hide Columns
' + lines.join("
");
}
-function getDropdownNode(){
+function getDropdownNode() {
return document.querySelector("#gantt_dropdown");
}
-gantt.$showDropdown = function(node){
+gantt.$showDropdown = function (node) {
var position = node.getBoundingClientRect();
var dropDown = getDropdownNode();
dropDown.style.top = position.bottom + "px";
@@ -303,9 +303,9 @@ gantt.$showDropdown = function(node){
dropDown.style.display = "block";
populateColumnsDropdown(dropDown);
- dropDown.onchange = function(){
+ dropDown.onchange = function () {
var selection = getColumnsSelection(dropDown);
- if(readOnly && parseInt(readOnly)==0){
+ if (readOnly && parseInt(readOnly) == 0) {
updateShowHideColumn(selection)
}
gantt.config.columns = createColumnsConfig(selection);
@@ -313,18 +313,18 @@ gantt.$showDropdown = function(node){
}
dropDown.keep = true;
- setTimeout(function(){
+ setTimeout(function () {
dropDown.keep = false;
})
}
-gantt.$hideDropdown = function(){
+gantt.$hideDropdown = function () {
var dropDown = getDropdownNode();
dropDown.style.display = "none";
}
-window.addEventListener("click", function(event){
- if(!event.target.closest("#gantt_dropdown") && !getDropdownNode().keep){
+window.addEventListener("click", function (event) {
+ if (!event.target.closest("#gantt_dropdown") && !getDropdownNode().keep) {
gantt.$hideDropdown();
}
});
@@ -336,14 +336,14 @@ window.addEventListener("click", function(event){
function setBaseline() {
var box = gantt.confirm({
text: "Set Baseline?",
- ok:"Yes",
- cancel:"No",
- callback: async function(result){
- if(result){
+ ok: "Yes",
+ cancel: "No",
+ callback: async function (result) {
+ if (result) {
// gantt.message("Yes!");
// send to API
await setBaselineAPI();
- }else{
+ } else {
// gantt.message("No...");
}
}
@@ -351,6 +351,36 @@ function setBaseline() {
}
async function setBaselineAPI() {
+ expandTask();
+ var allTasks = [];
+ var taskCount = gantt.getTaskCount();
+
+ for (var i = 0; i < taskCount; i++) {
+ var task = gantt.getTaskByIndex(i);
+ allTasks.push(task);
+ }
+
+ $("body").addClass("loading");
+ const response = await gantt.ajax.post({
+ headers: {
+ "Content-Type": "application/json",
+ "Authorization": `Bearer ${token}`
+ },
+ url: `${base_url}activity/import-update`,
+ dataType: "json",
+ data: JSON.stringify(allTasks)
+ }).then(function (response) {
+ $("body").removeClass("loading");
+ let res = response.responseText
+ res = JSON.parse(res)
+ }).catch(function (error) {
+ $("body").removeClass("loading");
+ gantt.alert({
+ title: "Peringatan",
+ type: "alert-error",
+ text: "Update import gagal"
+ });
+ });
const res = await axiosInstance
.get(ACTIVITY_SET_BASELINE_URL, HEADER)
.then(res => res)
@@ -364,7 +394,7 @@ async function setBaselineAPI() {
window.location.reload();
}
else {
- gantt.alert({type: "error", text: "Failed to set baseline"});
+ gantt.alert({ type: "error", text: "Failed to set baseline" });
}
gantt.render();
}
@@ -378,9 +408,9 @@ function setSynchronize() {
// });
gantt.confirm({
text: "Plase set baseline before continue.",
- ok:"Set Baseline",
- cancel:"Cancel",
- callback: async function(result) {
+ ok: "Set Baseline",
+ cancel: "Cancel",
+ callback: async function (result) {
if (result) {
await setBaselineAPI();
}
@@ -391,14 +421,14 @@ function setSynchronize() {
var box = gantt.confirm({
text: "Synchronize to Report Activity?",
- ok:"Yes",
- cancel:"No",
- callback: async function(result){
- if(result){
+ ok: "Yes",
+ cancel: "No",
+ callback: async function (result) {
+ if (result) {
// gantt.message("Yes!");
// send to API
await setSynchronizeAPI()
- }else{
+ } else {
// gantt.message("No...");
}
}
@@ -420,7 +450,7 @@ async function setSynchronizeAPI() {
window.location.reload();
}
else {
- gantt.alert({type: "error", text: "Failed to Synchronize to Report"});
+ gantt.alert({ type: "error", text: "Failed to Synchronize to Report" });
}
gantt.render();
}
diff --git a/edit-mode/function/restActivityLink.js b/edit-mode/function/restActivityLink.js
index 697e488..68b7256 100644
--- a/edit-mode/function/restActivityLink.js
+++ b/edit-mode/function/restActivityLink.js
@@ -34,41 +34,6 @@ gantt.ajax.get({
getGanttOpen();
gantt.parse(data);
});
- if (Date.now() < timestamp) {
- expandTask();
- var allTasks = [];
- var taskCount = gantt.getTaskCount();
-
- for (var i = 0; i < taskCount; i++) {
- var task = gantt.getTaskByIndex(i);
- allTasks.push(task);
- }
-
- $("body").addClass("loading");
- gantt.ajax.post({
- headers: {
- "Content-Type": "application/json",
- "Authorization": `Bearer ${token}`
- },
- url: `${base_url}activity/import-update`,
- dataType: "json",
- data: JSON.stringify(allTasks)
- }).then(function (response) {
- $("body").removeClass("loading");
- let res = response.responseText
- res = JSON.parse(res)
- if (res) {
- refresData();
- }
- }).catch(function (error) {
- $("body").removeClass("loading");
- gantt.alert({
- title: "Peringatan",
- type: "alert-error",
- text: "Update import gagal"
- });
- });
- }
}).catch(function (error) {
$("body").removeClass("loading");
gantt.alert({