From e0a6a9d5402bc8d788ce4d06a15b2d5fc4b2c744 Mon Sep 17 00:00:00 2001 From: Wahyu Ramadhan Date: Mon, 7 Aug 2023 13:46:41 +0700 Subject: [PATCH 1/7] Refresh after batch update --- edit-mode/function/function.js | 1 + 1 file changed, 1 insertion(+) diff --git a/edit-mode/function/function.js b/edit-mode/function/function.js index e60d975..2126873 100644 --- a/edit-mode/function/function.js +++ b/edit-mode/function/function.js @@ -676,6 +676,7 @@ function batchUpdate(){ }).then(function (response) { $("body").removeClass("loading"); localStorage.setItem('batchEntity', ''); + refresData(); }).catch(function (error) { $("body").removeClass("loading") From 5cd832f542bb40d22304cba13e64711f4412fe6f Mon Sep 17 00:00:00 2001 From: Wahyu Ramadhan Date: Mon, 7 Aug 2023 16:04:05 +0700 Subject: [PATCH 2/7] Fix default column --- edit-mode/function/function.js | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/edit-mode/function/function.js b/edit-mode/function/function.js index 2126873..58d8219 100644 --- a/edit-mode/function/function.js +++ b/edit-mode/function/function.js @@ -339,7 +339,7 @@ function initializationColumn() { if (data.status == "not yet have") { addShowHideColumn(); } else if (data.status == "not have access") { - + gantt.config.columns = createColumnsConfig(columnShows); } else { setUpForShowHideColumn(data); } @@ -513,7 +513,7 @@ function submitShowHideColumn(allColumn) { version_gantt_id: ganttId, columns: allColumn } - + gantt.config.columns = createColumnsConfig(allColumn); $.ajax({ data: JSON.stringify(payload), url: `${base_url}gantt-show-hide/add`, From 3e7f34a72eb97f54a080e466280f38e605073538 Mon Sep 17 00:00:00 2001 From: Wahyu Ramadhan Date: Tue, 8 Aug 2023 09:29:32 +0700 Subject: [PATCH 3/7] Handling error --- edit-mode/function/reportActivity.js | 10 ++++++++-- 1 file changed, 8 insertions(+), 2 deletions(-) diff --git a/edit-mode/function/reportActivity.js b/edit-mode/function/reportActivity.js index 1d0ae69..d4c182e 100644 --- a/edit-mode/function/reportActivity.js +++ b/edit-mode/function/reportActivity.js @@ -425,21 +425,27 @@ $(document).ready(function () { .post(`${base_url}report-activity-material/add`, formData); const reportId = result.data.data.report_id; + try { const image = formData.get("files"); const imageFormData = new FormData(); imageFormData.append("ref_id", reportId); imageFormData.append("category", "report_activity"); imageFormData.append("files", image, image.name); + if (image.name && image.size) { const resultImage = await axiosInstanceMultipart.post(`${base_url}image/upload`, imageFormData); + } - if (result.status === 200 && resultImage.status === 200) { + if (result.status === 200) { gantt.alert("Add report activity material Success!"); resetFormAddRaMaterial(); tableRaMaterialActual.draw(); } else { throw new Error("Add report activity material failed."); } + } catch (error) { + throw new Error("Image upload failed."); + } } catch (error) { resetFormAddRaMaterial(); $("body").removeClass("loading"); @@ -512,7 +518,7 @@ $(document).ready(function () { // kalo gambarnya banyak belum di handle... }, error: function (data) { - gantt.alert({ type: "error", text: "Failed to get report image" }); + gantt.alert({ type: "error", text: "Image not found !" }); } }); }); From 49b517b74d0dc22e101a0b2497dbf515ba5b2023 Mon Sep 17 00:00:00 2001 From: Wahyu Ramadhan Date: Tue, 8 Aug 2023 09:30:40 +0700 Subject: [PATCH 4/7] Add formatting --- edit-mode/function/reportActivity.js | 32 ++++++++++++++-------------- 1 file changed, 16 insertions(+), 16 deletions(-) diff --git a/edit-mode/function/reportActivity.js b/edit-mode/function/reportActivity.js index d4c182e..9a98afb 100644 --- a/edit-mode/function/reportActivity.js +++ b/edit-mode/function/reportActivity.js @@ -426,23 +426,23 @@ $(document).ready(function () { const reportId = result.data.data.report_id; try { - const image = formData.get("files"); - const imageFormData = new FormData(); - imageFormData.append("ref_id", reportId); - imageFormData.append("category", "report_activity"); - imageFormData.append("files", image, image.name); - - if (image.name && image.size) { - const resultImage = await axiosInstanceMultipart.post(`${base_url}image/upload`, imageFormData); - } + const image = formData.get("files"); + const imageFormData = new FormData(); + imageFormData.append("ref_id", reportId); + imageFormData.append("category", "report_activity"); + imageFormData.append("files", image, image.name); + + if (image.name && image.size) { + const resultImage = await axiosInstanceMultipart.post(`${base_url}image/upload`, imageFormData); + } - if (result.status === 200) { - gantt.alert("Add report activity material Success!"); - resetFormAddRaMaterial(); - tableRaMaterialActual.draw(); - } else { - throw new Error("Add report activity material failed."); - } + if (result.status === 200) { + gantt.alert("Add report activity material Success!"); + resetFormAddRaMaterial(); + tableRaMaterialActual.draw(); + } else { + throw new Error("Add report activity material failed."); + } } catch (error) { throw new Error("Image upload failed."); } From 91095287bded8318b942054e82a0fe4643bb4973 Mon Sep 17 00:00:00 2001 From: Wahyu Ramadhan Date: Tue, 8 Aug 2023 09:48:54 +0700 Subject: [PATCH 5/7] View mode scroll fix --- view-mode/function/function.js | 30 ++++++++++++++++++++++++++ view-mode/function/ganttEvent.js | 30 ++++++++++++++++++++++++++ view-mode/function/restActivityLink.js | 6 ++++++ 3 files changed, 66 insertions(+) diff --git a/view-mode/function/function.js b/view-mode/function/function.js index 35f4d40..07ac9dc 100644 --- a/view-mode/function/function.js +++ b/view-mode/function/function.js @@ -522,3 +522,33 @@ function replaceAll(str, find, replace) { } return str } + +// Function to get the earliest planned start date among all tasks +function getEarliestTaskDate() { + var earliestDate = null; + gantt.eachTask(function (task) { + var taskStartDate = task.planned_start || task.start_date; + if (!earliestDate || task.planned_start < earliestDate) { + earliestDate = taskStartDate; + if (task.start_date < earliestDate) { + earliestDate = task.start_date; + } + } + }); + return earliestDate; +} + +// Function to get the latest planned end date among all tasks +function getLatestTaskDate() { + var latestDate = null; + gantt.eachTask(function (task) { + var taskEndDate = task.planned_end || task.end_date; + if (!latestDate || task.planned_end > latestDate) { + latestDate = taskEndDate; + if (task.end_date > latestDate) { + latestDate = task.end_date; + } + } + }); + return latestDate; +} \ No newline at end of file diff --git a/view-mode/function/ganttEvent.js b/view-mode/function/ganttEvent.js index 92c72fd..64aabb7 100644 --- a/view-mode/function/ganttEvent.js +++ b/view-mode/function/ganttEvent.js @@ -97,4 +97,34 @@ gantt.attachEvent("onGanttRender", function(){ }else{ gantt.config.readonly = true; } +}); + +gantt.attachEvent("onGanttScroll", function (left, top){ + var left_date = gantt.dateFromPos(left) + var right_date = gantt.dateFromPos(left + gantt.$task.offsetWidth) + + let taskCount = gantt.getTaskCount(); + if (taskCount > 0) { + gantt.config.start_date = gantt.config.start_date || gantt.getState().min_date; + gantt.config.end_date = gantt.config.end_date || gantt.getState().max_date; + + var min_allowed_date = gantt.date.add(gantt.config.start_date, 1, "day"); + var max_allowed_date = gantt.date.add(gantt.config.end_date, -1, "day"); + + var repaint = false; + if (earliest && +left_date <= +min_allowed_date && +left_date >= +earliest){ + gantt.config.start_date = gantt.date.add(gantt.config.start_date, -1, "day"); + repaint = true; + } + if (latest && +right_date >= +max_allowed_date && +right_date <= +latest){ + gantt.config.end_date = gantt.date.add(gantt.config.end_date, 1, "day"); + repaint = true; + } + + if (repaint) { + setTimeout(function(){ + gantt.render() + },20) + } +} }); \ No newline at end of file diff --git a/view-mode/function/restActivityLink.js b/view-mode/function/restActivityLink.js index bca311a..d16c69d 100644 --- a/view-mode/function/restActivityLink.js +++ b/view-mode/function/restActivityLink.js @@ -1,4 +1,6 @@ var parts = []; +let latest; +let earliest; window.parent.postMessage({ action: 'getUrl' }, '*'); window.addEventListener('message', function(event) { if (event.data && event.data.action === 'sendUrl') { @@ -40,6 +42,8 @@ gantt.ajax.get({ if(!parts[2]){ gantt.silent(function () { gantt.parse(data); + earliest = getEarliestTaskDate(); + latest = getLatestTaskDate(); }); } }); @@ -62,6 +66,8 @@ function refresData(id){ if(!parts[2]){ gantt.silent(function () { gantt.parse(data); + earliest = getEarliestTaskDate(); + latest = getLatestTaskDate(); }); } if(id){ From 06764c28a6df1368e68cf1e007897f61c4b458b0 Mon Sep 17 00:00:00 2001 From: Wahyu Ramadhan Date: Tue, 8 Aug 2023 12:04:17 +0700 Subject: [PATCH 6/7] Update padding --- view-mode/function/overlaySCurve.js | 25 +++++++++++++++++++++---- 1 file changed, 21 insertions(+), 4 deletions(-) diff --git a/view-mode/function/overlaySCurve.js b/view-mode/function/overlaySCurve.js index fb56d20..087bdb5 100644 --- a/view-mode/function/overlaySCurve.js +++ b/view-mode/function/overlaySCurve.js @@ -121,9 +121,26 @@ function getProgressLine(){ function getScalePaddings(){ var scale = gantt.getScale(); var dataRange = gantt.getSubtaskDates(); + let minDate = new Date(); + let maxDate = new Date(); + + gantt.eachTask(function(task){ + let plannedEarlier = task.planned_start < task.start_date; + let plannedLater = task.planned_end > task.end_date; + + if (plannedEarlier) { + minDate = new Date(Math.min(minDate.getTime(), task.planned_start.getTime())); + } else { + minDate = new Date(Math.min(minDate.getTime(), task.start_date.getTime())); + } + + if (plannedLater) { + maxDate = new Date(Math.max(maxDate.getTime(), task.planned_end.getTime())); + } else { + maxDate = new Date(Math.max(maxDate.getTime(), task.end_date.getTime())); + } + }) - var chartScale = getChartScaleRange(); - var newWidth = scale.col_width; var padding = { left:0, right:0 @@ -132,8 +149,8 @@ function getScalePaddings(){ if(dataRange.start_date){ var yScaleLabelsWidth = 48; // fine tune values in order to align chart with the scale range - padding.left = gantt.posFromDate(dataRange.start_date) - yScaleLabelsWidth; - padding.right = scale.full_width - gantt.posFromDate(dataRange.end_date) - yScaleLabelsWidth; + padding.left = gantt.posFromDate(minDate) - yScaleLabelsWidth; + padding.right = scale.full_width - gantt.posFromDate(maxDate) - yScaleLabelsWidth; padding.top = gantt.config.row_height - 12; padding.bottom = gantt.config.row_height - 12; } From 075476423e4604920264ec4043f8b3ccd938fa31 Mon Sep 17 00:00:00 2001 From: Wahyu Ramadhan Date: Tue, 8 Aug 2023 13:22:55 +0700 Subject: [PATCH 7/7] Including overhead when update --- edit-mode/function/function.js | 1 + 1 file changed, 1 insertion(+) diff --git a/edit-mode/function/function.js b/edit-mode/function/function.js index 58d8219..4e66384 100644 --- a/edit-mode/function/function.js +++ b/edit-mode/function/function.js @@ -212,6 +212,7 @@ function updateActivity(id) { gantt.getTask(id).assign_hr = data.assign_hr; gantt.getTask(id).assign_material = data.assign_material; gantt.getTask(id).assign_tools = data.assign_tools; + gantt.getTask(id).assign_expense = data.assign_expense; gantt.getTask(id).bobot_planning = data.bobot_planning; gantt.getTask(id).rencana_biaya = data.rencana_biaya; gantt.getTask(id).biaya_actual = data.biaya_actual;