diff --git a/src/views/SimproV2/CreatedProyek/ReportAnalysis.js b/src/views/SimproV2/CreatedProyek/ReportAnalysis.js index 7bc00bc..c46dad4 100644 --- a/src/views/SimproV2/CreatedProyek/ReportAnalysis.js +++ b/src/views/SimproV2/CreatedProyek/ReportAnalysis.js @@ -1,4 +1,4 @@ -import React, {useState, useEffect} from 'react' +import React, { useState, useEffect } from 'react' import { Modal, ModalHeader, @@ -73,67 +73,76 @@ const ReportAnalysis = ({ openDialog, closeDialog, toggleDialog, projectId }) => }; const columns = [ - {title: "Gantt", dataIndex: "name_version", key: "name_version"}, - {title: "Baseline Start", dataIndex: "planned_start", key: "planned_start", + { title: "Gantt", dataIndex: "name_version", key: "name_version" }, + { + title: "Baseline Start", dataIndex: "planned_start", key: "planned_start", render: (text, record) => ( - <> - {record.planned_start ? moment(record.planned_start).format("DD-MM-YY") : ''} - - ), + <> + {record.planned_start ? moment(record.planned_start).format("DD-MM-YY") : ''} + + ), }, - {title: "Baseline Finish", dataIndex: "planned_end", key: "planned_end", + { + title: "Baseline Finish", dataIndex: "planned_end", key: "planned_end", render: (text, record) => ( - <> - {record.planned_end ? moment(record.planned_end).format("DD-MM-YY") : ''} - - ), + <> + {record.planned_end ? moment(record.planned_end).format("DD-MM-YY") : ''} + + ), }, - {title: "Early Start", dataIndex: "start_date", key: "start_date", + { + title: "Early Start", dataIndex: "start_date", key: "start_date", render: (text, record) => ( - <> - {moment(record.start_date).format("DD-MM-YY")} - - ), + <> + {moment(record.start_date).format("DD-MM-YY")} + + ), }, - {title: "Early Finish", dataIndex: "end_date", key: "end_date", + { + title: "Early Finish", dataIndex: "end_date", key: "end_date", render: (text, record) => ( - <> - {moment(record.end_date).format("DD-MM-YY")} - - ), + <> + {moment(record.end_date).format("DD-MM-YY")} + + ), }, - {title: "Actual Start", dataIndex: "actual_start", key: "actual_start", + { + title: "Actual Start", dataIndex: "actual_start", key: "actual_start", render: (text, record) => ( - <> - {record.actual_start ? moment(record.actual_start).format("DD-MM-YY") : ""} - - ), + <> + {record.actual_start ? moment(record.actual_start).format("DD-MM-YY") : ""} + + ), }, - {title: "Actual Finish", dataIndex: "actual_end", key: "actual_end", + { + title: "Actual Finish", dataIndex: "actual_end", key: "actual_end", render: (text, record) => ( - <> - {record.actual_end ? moment(record.actual_end).format("DD-MM-YY") : ""} - - ), + <> + {record.actual_end ? moment(record.actual_end).format("DD-MM-YY") : ""} + + ), }, - {title: "Assign HR", dataIndex: "user_name", key: "user_name", width: "8%", - ellipsis:{ - showTitle: true - }, - render: (text) => - - {text} - + { + title: "Assign HR", dataIndex: "user_name", key: "user_name", width: "8%", + ellipsis: { + showTitle: true + }, + render: (text) => + + {text} + }, - {title: "Volume Plan", dataIndex: "qty_planning", key: "qty_planning", - render: (text, record) => - <> - {text ? text : 0} - + { + title: "Volume Plan", dataIndex: "qty_planning", key: "qty_planning", + render: (text, record) => + <> + {text ? text : 0} + }, - {title: "Volume Actual", dataIndex: "qty", key: "qty"}, - {title: "Progress Plan (%)", dataIndex: "persentase_progress", key: "persentase_progress", - render: (text, record) => { + { title: "Volume Actual", dataIndex: "qty", key: "qty" }, + { + title: "Progress Plan (%)", dataIndex: "persentase_progress", key: "persentase_progress", + render: (text, record) => { const startDate = moment(record.start_date); const duration = record.duration; @@ -148,7 +157,7 @@ const ReportAnalysis = ({ openDialog, closeDialog, toggleDialog, projectId }) => ); }, }, - {title: "Progress Actual (%)", dataIndex: "persentase_progress", key: "persentase_progress", width: "8%"}, + { title: "Progress Actual (%)", dataIndex: "persentase_progress", key: "persentase_progress", width: "8%" }, { title: 'Action', dataIndex: '', @@ -165,59 +174,67 @@ const ReportAnalysis = ({ openDialog, closeDialog, toggleDialog, projectId }) => ] const columnActivityToHr = [ - {title: "Activity", dataIndex: "join_second_name", key: "join_second_name"}, - {title: "Gantt", dataIndex: "join_fourth_name_version", key: "join_fourth_name_version"}, - {title: "Baseline Start", dataIndex: "join_second_planned_start", key: "join_second_planned_start", + { title: "Activity", dataIndex: "join_second_name", key: "join_second_name" }, + { title: "Gantt", dataIndex: "join_fourth_name_version", key: "join_fourth_name_version" }, + { + title: "Baseline Start", dataIndex: "join_second_planned_start", key: "join_second_planned_start", render: (text, record) => ( - <> - {moment(record.join_second_planned_start).format("DD-MM-YY")} - - ), + <> + {moment(record.join_second_planned_start).format("DD-MM-YY")} + + ), }, - {title: "Baseline Finish", dataIndex: "join_second_planned_end", key: "join_second_planned_end", + { + title: "Baseline Finish", dataIndex: "join_second_planned_end", key: "join_second_planned_end", render: (text, record) => ( - <> - {moment(record.join_second_planned_end).format("DD-MM-YY")} - - ), + <> + {moment(record.join_second_planned_end).format("DD-MM-YY")} + + ), }, - {title: "Early Start", dataIndex: "join_second_start_date", key: "join_second_start_date", + { + title: "Early Start", dataIndex: "join_second_start_date", key: "join_second_start_date", render: (text, record) => ( - <> - {moment(record.join_second_start_date).format("DD-MM-YY")} - - ), + <> + {moment(record.join_second_start_date).format("DD-MM-YY")} + + ), }, - {title: "Early Finish", dataIndex: "join_second_end_date", key: "join_second_end_date", + { + title: "Early Finish", dataIndex: "join_second_end_date", key: "join_second_end_date", render: (text, record) => ( - <> - {moment(record.join_second_end_date).format("DD-MM-YY")} - - ), + <> + {moment(record.join_second_end_date).format("DD-MM-YY")} + + ), }, - {title: "Actual Start", dataIndex: "join_second_actual_start", key: "join_second_actual_start", + { + title: "Actual Start", dataIndex: "join_second_actual_start", key: "join_second_actual_start", render: (text, record) => ( - <> - {record.join_second_actual_start ? moment(record.join_second_actual_start).format("DD-MM-YY") : ""} - - ), + <> + {record.join_second_actual_start ? moment(record.join_second_actual_start).format("DD-MM-YY") : ""} + + ), }, - {title: "Actual Finish", dataIndex: "join_second_actual_end", key: "join_second_actual_end", + { + title: "Actual Finish", dataIndex: "join_second_actual_end", key: "join_second_actual_end", render: (text, record) => ( - <> - {record.join_second_actual_end ? moment(record.join_second_actual_end).format("DD-MM-YY") : ""} - - ), + <> + {record.join_second_actual_end ? moment(record.join_second_actual_end).format("DD-MM-YY") : ""} + + ), }, - {title: "Volume Plan", dataIndex: "join_third_qty_planning", key: "join_third_qty_planning", - render: (text, record) => - <> - {text ? text : 0} - + { + title: "Volume Plan", dataIndex: "join_third_qty_planning", key: "join_third_qty_planning", + render: (text, record) => + <> + {text ? text : 0} + }, - {title: "Volume Actual", dataIndex: "volume_actual", key: "volume_actual"}, - {title: "Progress Plan (%)", dataIndex: "join_second_persentase_progress", key: "persentase_progress", - render: (text, record) => { + { title: "Volume Actual", dataIndex: "volume_actual", key: "volume_actual" }, + { + title: "Progress Plan (%)", dataIndex: "join_second_persentase_progress", key: "persentase_progress", + render: (text, record) => { const startDate = moment(record.join_second_start_date); const duration = record.join_second_duration; @@ -232,20 +249,20 @@ const ReportAnalysis = ({ openDialog, closeDialog, toggleDialog, projectId }) => ); }, }, - {title: "Progress Actual (%)", dataIndex: "join_second_persentase_progress", key: "persentase_progress"}, + { title: "Progress Actual (%)", dataIndex: "join_second_persentase_progress", key: "persentase_progress" }, { - title: 'Action', - dataIndex: '', - key: 'id', - className: "nowrap", - render: (text, record) => - <> - - - {" "} - - , - }, + title: 'Action', + dataIndex: '', + key: 'id', + className: "nowrap", + render: (text, record) => + <> + + + {" "} + + , + }, ] useEffect(() => { @@ -297,10 +314,10 @@ const ReportAnalysis = ({ openDialog, closeDialog, toggleDialog, projectId }) => if (status == "Save") { // getdataGantt() NotificationManager.success(`Gantt berhasil dibuat!`, 'Success!!'); - }else if (status == "Edit") { + } else if (status == "Edit") { // getdataGantt() NotificationManager.success(`Gantt berhasil dibubah!`, 'Failed!!'); - }else if (status == "failed") { + } else if (status == "failed") { NotificationManager.error(`Gantt gagal dibuat!`, 'Failed!!'); } setDataDetail(null) @@ -338,7 +355,21 @@ const ReportAnalysis = ({ openDialog, closeDialog, toggleDialog, projectId }) => if (result && result.data && result.data.code == 200) { let dataRes = result.data.data || []; - setHrList(dataRes); + let groupedData = {}; + + dataRes.forEach(data => { + if (groupedData[data.join_first_name]) { + groupedData[data.join_first_name].join_first_id = Math.min(groupedData[data.join_first_name].join_first_id, data.join_first_id); + } else { + groupedData[data.join_first_name] = { + join_first_id: data.join_first_id, + join_first_name: data.join_first_name + }; + } + }); + let dataFiltered = Object.values(groupedData); + + setHrList(dataFiltered); } else { NotificationManager.error("Gagal Mengambil Data!!", "Failed"); } @@ -382,21 +413,21 @@ const ReportAnalysis = ({ openDialog, closeDialog, toggleDialog, projectId }) => name1: "m_activity", name: "assign_material_to_activity", column_join: "id", - column_self:"activity_id", - column_results: ["id", "qty_planning"] + column_self: "activity_id", + column_results: ["qty_planning"] }, { name1: "m_activity", name: "m_version_gantt", column_join: "version_gantt_id", - column_self:"id", + column_self: "id", column_results: ["name_version"] }, { name1: "m_activity", name: "report_activity_material", column_join: "id", - column_self:"activity_id", + column_self: "activity_id", }, ], orders: { columns: ["id"], ascending: false }, @@ -411,7 +442,7 @@ const ReportAnalysis = ({ openDialog, closeDialog, toggleDialog, projectId }) => if (result && result.data && result.data.code == 200) { let dataRes = result.data.data || []; dataRes.forEach(element => { - element.join_third_persentase_progress ? sum += parseInt(element.join_third_persentase_progress) : sum += 0; + element.join_third_persentase_progress ? sum += parseInt(element.join_third_persentase_progress) : sum += 0; }); setAvgActivityHr(sum / dataRes.length); setDataTableActivityToHr(dataRes); @@ -485,9 +516,9 @@ const ReportAnalysis = ({ openDialog, closeDialog, toggleDialog, projectId }) => let dataRes = result.data.data || []; dataRes.forEach(element => { - element.persentase_progress ? sum += parseInt(element.persentase_progress) : sum += 0; - element.qty_planning ? sumPlan += parseInt(element.qty_planning) : sumPlan += 0; - element.qty ? sumAct += parseInt(element.qty) : sumAct += 0; + element.persentase_progress ? sum += parseInt(element.persentase_progress) : sum += 0; + element.qty_planning ? sumPlan += parseInt(element.qty_planning) : sumPlan += 0; + element.qty ? sumAct += parseInt(element.qty) : sumAct += 0; }); setAvgActivity(sum / dataRes.length); setSumVolPlan(sumPlan); @@ -536,9 +567,9 @@ const ReportAnalysis = ({ openDialog, closeDialog, toggleDialog, projectId }) => @@ -573,9 +604,9 @@ const ReportAnalysis = ({ openDialog, closeDialog, toggleDialog, projectId }) =>