|
|
@ -59,21 +59,57 @@ const ReportAnalysis = ({ openDialog, closeDialog, toggleDialog, projectId }) => |
|
|
|
|
|
|
|
|
|
|
|
const columns = [ |
|
|
|
const columns = [ |
|
|
|
{title: "Gantt", dataIndex: "name_version", key: "name_version"}, |
|
|
|
{title: "Gantt", dataIndex: "name_version", key: "name_version"}, |
|
|
|
{title: "Start Date", dataIndex: "start_date", key: "start_date", |
|
|
|
{title: "Baseline Start", dataIndex: "planned_start", key: "planned_start", |
|
|
|
render: (text, record) => ( |
|
|
|
render: (text, record) => ( |
|
|
|
<> |
|
|
|
<> |
|
|
|
{moment(record.start_date).format("DD-MM-YYYY")} |
|
|
|
{moment(record.planned_start).format("DD-MM-YY")} |
|
|
|
</> |
|
|
|
</> |
|
|
|
), |
|
|
|
), |
|
|
|
}, |
|
|
|
}, |
|
|
|
{title: "End Date", dataIndex: "end_date", key: "end_date", |
|
|
|
{title: "Baseline Finish", dataIndex: "planned_end", key: "planned_end", |
|
|
|
render: (text, record) => ( |
|
|
|
render: (text, record) => ( |
|
|
|
<> |
|
|
|
<> |
|
|
|
{moment(record.end_date).format("DD-MM-YYYY")} |
|
|
|
{moment(record.planned_end).format("DD-MM-YY")} |
|
|
|
</> |
|
|
|
</> |
|
|
|
), |
|
|
|
), |
|
|
|
}, |
|
|
|
}, |
|
|
|
{title: "Assign HR", dataIndex: "user_name", key: "user_name"}, |
|
|
|
{title: "Early Start", dataIndex: "start_date", key: "start_date", |
|
|
|
|
|
|
|
render: (text, record) => ( |
|
|
|
|
|
|
|
<> |
|
|
|
|
|
|
|
{moment(record.start_date).format("DD-MM-YY")} |
|
|
|
|
|
|
|
</> |
|
|
|
|
|
|
|
), |
|
|
|
|
|
|
|
}, |
|
|
|
|
|
|
|
{title: "Early Finish", dataIndex: "end_date", key: "end_date", |
|
|
|
|
|
|
|
render: (text, record) => ( |
|
|
|
|
|
|
|
<> |
|
|
|
|
|
|
|
{moment(record.end_date).format("DD-MM-YY")} |
|
|
|
|
|
|
|
</> |
|
|
|
|
|
|
|
), |
|
|
|
|
|
|
|
}, |
|
|
|
|
|
|
|
{title: "Actual Start", dataIndex: "actual_start", key: "actual_start", |
|
|
|
|
|
|
|
render: (text, record) => ( |
|
|
|
|
|
|
|
<> |
|
|
|
|
|
|
|
{record.actual_start ? moment(record.actual_start).format("DD-MM-YY") : ""} |
|
|
|
|
|
|
|
</> |
|
|
|
|
|
|
|
), |
|
|
|
|
|
|
|
}, |
|
|
|
|
|
|
|
{title: "Actual Finish", dataIndex: "actual_end", key: "actual_end", |
|
|
|
|
|
|
|
render: (text, record) => ( |
|
|
|
|
|
|
|
<> |
|
|
|
|
|
|
|
{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) => |
|
|
|
|
|
|
|
<Tooltip placement="topLeft" title={text}> |
|
|
|
|
|
|
|
{text} |
|
|
|
|
|
|
|
</Tooltip> |
|
|
|
|
|
|
|
}, |
|
|
|
{title: "Volume Plan", dataIndex: "qty_planning", key: "qty_planning", |
|
|
|
{title: "Volume Plan", dataIndex: "qty_planning", key: "qty_planning", |
|
|
|
render: (text, record) => |
|
|
|
render: (text, record) => |
|
|
|
<> |
|
|
|
<> |
|
|
@ -97,7 +133,7 @@ const ReportAnalysis = ({ openDialog, closeDialog, toggleDialog, projectId }) => |
|
|
|
); |
|
|
|
); |
|
|
|
}, |
|
|
|
}, |
|
|
|
}, |
|
|
|
}, |
|
|
|
{title: "Progress Actual (%)", dataIndex: "persentase_progress", key: "persentase_progress"}, |
|
|
|
{title: "Progress Actual (%)", dataIndex: "persentase_progress", key: "persentase_progress", width: "8%"}, |
|
|
|
{ |
|
|
|
{ |
|
|
|
title: 'Action', |
|
|
|
title: 'Action', |
|
|
|
dataIndex: '', |
|
|
|
dataIndex: '', |
|
|
@ -116,17 +152,45 @@ const ReportAnalysis = ({ openDialog, closeDialog, toggleDialog, projectId }) => |
|
|
|
const columnActivityToHr = [ |
|
|
|
const columnActivityToHr = [ |
|
|
|
{title: "Activity", dataIndex: "join_second_name", key: "join_second_name"}, |
|
|
|
{title: "Activity", dataIndex: "join_second_name", key: "join_second_name"}, |
|
|
|
{title: "Gantt", dataIndex: "join_fourth_name_version", key: "join_fourth_name_version"}, |
|
|
|
{title: "Gantt", dataIndex: "join_fourth_name_version", key: "join_fourth_name_version"}, |
|
|
|
{title: "Start Date", dataIndex: "start_date", key: "start_date", |
|
|
|
{title: "Baseline Start", dataIndex: "join_second_planned_start", key: "join_second_planned_start", |
|
|
|
render: (text, record) => ( |
|
|
|
render: (text, record) => ( |
|
|
|
<> |
|
|
|
<> |
|
|
|
{moment(record.start_date).format("DD-MM-YYYY")} |
|
|
|
{moment(record.join_second_planned_start).format("DD-MM-YY")} |
|
|
|
</> |
|
|
|
</> |
|
|
|
), |
|
|
|
), |
|
|
|
}, |
|
|
|
}, |
|
|
|
{title: "End Date", dataIndex: "end_date", key: "end_date", |
|
|
|
{title: "Baseline Finish", dataIndex: "join_second_planned_end", key: "join_second_planned_end", |
|
|
|
render: (text, record) => ( |
|
|
|
render: (text, record) => ( |
|
|
|
<> |
|
|
|
<> |
|
|
|
{moment(record.end_date).format("DD-MM-YYYY")} |
|
|
|
{moment(record.join_second_planned_end).format("DD-MM-YY")} |
|
|
|
|
|
|
|
</> |
|
|
|
|
|
|
|
), |
|
|
|
|
|
|
|
}, |
|
|
|
|
|
|
|
{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")} |
|
|
|
|
|
|
|
</> |
|
|
|
|
|
|
|
), |
|
|
|
|
|
|
|
}, |
|
|
|
|
|
|
|
{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")} |
|
|
|
|
|
|
|
</> |
|
|
|
|
|
|
|
), |
|
|
|
|
|
|
|
}, |
|
|
|
|
|
|
|
{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") : ""} |
|
|
|
|
|
|
|
</> |
|
|
|
|
|
|
|
), |
|
|
|
|
|
|
|
}, |
|
|
|
|
|
|
|
{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") : ""} |
|
|
|
</> |
|
|
|
</> |
|
|
|
), |
|
|
|
), |
|
|
|
}, |
|
|
|
}, |
|
|
@ -295,7 +359,7 @@ const ReportAnalysis = ({ openDialog, closeDialog, toggleDialog, projectId }) => |
|
|
|
{ |
|
|
|
{ |
|
|
|
name: "m_activity", |
|
|
|
name: "m_activity", |
|
|
|
column_join: "activity_id", |
|
|
|
column_join: "activity_id", |
|
|
|
column_results: ["name", "persentase_progress", "start_date", "end_date", "duration"] |
|
|
|
column_results: ["name", "persentase_progress", "actual_start", "actual_end", "planned_start", "planned_end", "start_date", "end_date", "duration"] |
|
|
|
}, |
|
|
|
}, |
|
|
|
{ |
|
|
|
{ |
|
|
|
name1: "m_activity", |
|
|
|
name1: "m_activity", |
|
|
@ -458,21 +522,23 @@ const ReportAnalysis = ({ openDialog, closeDialog, toggleDialog, projectId }) => |
|
|
|
</Col> |
|
|
|
</Col> |
|
|
|
</Row> |
|
|
|
</Row> |
|
|
|
</CardHeader> |
|
|
|
</CardHeader> |
|
|
|
<CardBody> |
|
|
|
<CardBody style={{ width: '100%' }}> |
|
|
|
<div style={{ textAlign: 'center' }}> |
|
|
|
<div style={{ textAlign: 'center' }}> |
|
|
|
<h1> |
|
|
|
<h1> |
|
|
|
{ |
|
|
|
{ |
|
|
|
search ? `Activity ${search} Plan : ${sumVolPlan ? sumVolPlan.toFixed(0) : 0}, Actual : ${sumVolAct ? sumVolAct.toFixed(0) : 0}` : null |
|
|
|
search ? `Activity ${search}, Total Plan = ${sumVolPlan ? sumVolPlan.toFixed(0) : 0} dan Total Actual = ${sumVolAct ? sumVolAct.toFixed(0) : 0}` : null |
|
|
|
} |
|
|
|
} |
|
|
|
</h1> |
|
|
|
</h1> |
|
|
|
</div> |
|
|
|
</div> |
|
|
|
|
|
|
|
<div style={{ width: '100%', overflowX: 'auto' }}> |
|
|
|
<Table |
|
|
|
<Table |
|
|
|
size="small" |
|
|
|
size="small" |
|
|
|
columns={columns} |
|
|
|
columns={columns} |
|
|
|
dataSource={dataTable} |
|
|
|
dataSource={dataTable} |
|
|
|
pagination={false} |
|
|
|
pagination={false} |
|
|
|
rowKey={"id"} |
|
|
|
rowKey="id" |
|
|
|
/> |
|
|
|
/> |
|
|
|
|
|
|
|
</div> |
|
|
|
</CardBody> |
|
|
|
</CardBody> |
|
|
|
</Card> |
|
|
|
</Card> |
|
|
|
</TabPane> |
|
|
|
</TabPane> |
|
|
@ -491,7 +557,8 @@ const ReportAnalysis = ({ openDialog, closeDialog, toggleDialog, projectId }) => |
|
|
|
</Col> |
|
|
|
</Col> |
|
|
|
</Row> |
|
|
|
</Row> |
|
|
|
</CardHeader> |
|
|
|
</CardHeader> |
|
|
|
<CardBody> |
|
|
|
<CardBody style={{ width: '100%' }}> |
|
|
|
|
|
|
|
<div style={{ width: '100%', overflowX: 'auto' }}> |
|
|
|
<Table |
|
|
|
<Table |
|
|
|
size="small" |
|
|
|
size="small" |
|
|
|
columns={columnActivityToHr} |
|
|
|
columns={columnActivityToHr} |
|
|
@ -499,6 +566,7 @@ const ReportAnalysis = ({ openDialog, closeDialog, toggleDialog, projectId }) => |
|
|
|
pagination={false} |
|
|
|
pagination={false} |
|
|
|
rowKey={"id"} |
|
|
|
rowKey={"id"} |
|
|
|
/> |
|
|
|
/> |
|
|
|
|
|
|
|
</div> |
|
|
|
</CardBody> |
|
|
|
</CardBody> |
|
|
|
</Card> |
|
|
|
</Card> |
|
|
|
</TabPane> |
|
|
|
</TabPane> |
|
|
|