ibnu
2 years ago
3 changed files with 351 additions and 18 deletions
@ -0,0 +1,246 @@ |
|||||||
|
import React, { useEffect, useState, useMemo } from 'react' |
||||||
|
import { Modal, ModalHeader, ModalBody, } from 'reactstrap'; |
||||||
|
import { Button } from 'reactstrap'; |
||||||
|
import { Table, Tooltip } from 'antd'; |
||||||
|
import 'antd/dist/antd.css'; |
||||||
|
import moment from 'moment'; |
||||||
|
import SweetAlert from 'react-bootstrap-sweetalert'; |
||||||
|
import { HIERARCHY_FTTH_DELETE, HIERARCHY_FTTH_SEARCH, USER_LIST } from '../../../const/ApiConst'; |
||||||
|
import axios from "../../../const/interceptorApi" |
||||||
|
import { NotificationContainer, NotificationManager } from 'react-notifications'; |
||||||
|
import DialogForm from './DialogFormHierarchy'; |
||||||
|
import DialogUserGantt from './DialogUserGantt'; |
||||||
|
|
||||||
|
const DialogHierarchy = ({ openDialog, closeDialog, toggleDialog, idTask, proyekName }) => { |
||||||
|
const token = localStorage.getItem("token") |
||||||
|
const HEADER = { |
||||||
|
headers: { |
||||||
|
"Content-Type": "application/json", |
||||||
|
"Authorization": `Bearer ${token}` |
||||||
|
} |
||||||
|
} |
||||||
|
|
||||||
|
const [openDialogForm, setOpenDialogForm] = useState(false) |
||||||
|
const [openDialogUserGantt, setOpenDialogUserGantt] = useState(false) |
||||||
|
const [dataHierarchy, setDataHierarchy] = useState([]) |
||||||
|
const [alertDelete, setAlertDelete] = useState(false) |
||||||
|
const [idDelete, setIdDelete] = useState(0) |
||||||
|
const [idGantt, setIdGantt] = useState(0) |
||||||
|
const [humanResource, setHumanResource] = useState([]) |
||||||
|
|
||||||
|
useEffect(() => { |
||||||
|
if (idTask > 0) { |
||||||
|
getdataHierarchy(); |
||||||
|
} |
||||||
|
}, [idTask, openDialog]) |
||||||
|
|
||||||
|
useEffect(() => { |
||||||
|
getDataHumanResource(); |
||||||
|
}, []) |
||||||
|
|
||||||
|
useEffect(() => { |
||||||
|
if (!openDialog) { |
||||||
|
setDataHierarchy([]); |
||||||
|
} else { |
||||||
|
|
||||||
|
} |
||||||
|
}, [openDialog]) |
||||||
|
|
||||||
|
const getDataHumanResource = async () => { |
||||||
|
const result = await axios |
||||||
|
.get(USER_LIST, HEADER) |
||||||
|
.then(res => res) |
||||||
|
.catch((error) => error.response); |
||||||
|
|
||||||
|
if (result && result.status == 200) { |
||||||
|
setTransferUser(result.data.data); |
||||||
|
} else { |
||||||
|
|
||||||
|
} |
||||||
|
} |
||||||
|
|
||||||
|
const setTransferUser = (data) => { |
||||||
|
const finalData = [] |
||||||
|
data.map((val, index) => { |
||||||
|
let data = { |
||||||
|
key: val.id, |
||||||
|
title: val.name |
||||||
|
} |
||||||
|
finalData.push(data) |
||||||
|
}); |
||||||
|
setHumanResource(finalData) |
||||||
|
} |
||||||
|
|
||||||
|
|
||||||
|
const getdataHierarchy = async () => { |
||||||
|
|
||||||
|
const payload = { |
||||||
|
"columns": [ |
||||||
|
{ "name": "project_id", "logic_operator": "=", "value": idTask, "operator": "AND" } |
||||||
|
] |
||||||
|
} |
||||||
|
const result = await axios |
||||||
|
.post(HIERARCHY_FTTH_SEARCH, payload, HEADER) |
||||||
|
.then(res => res) |
||||||
|
.catch((error) => error.response); |
||||||
|
|
||||||
|
if (result && result.status == 200) { |
||||||
|
setDataHierarchy(result.data.data); |
||||||
|
} else { |
||||||
|
NotificationManager.error(`Data gantt project gagal terload silahkan coba lagi!`, 'Failed!!'); |
||||||
|
} |
||||||
|
} |
||||||
|
|
||||||
|
const handleCancel = () => { |
||||||
|
setDataHierarchy([]); |
||||||
|
closeDialog('cancel', 'none') |
||||||
|
} |
||||||
|
|
||||||
|
const handleDelete = (id) => { |
||||||
|
setIdDelete(id) |
||||||
|
setAlertDelete(true) |
||||||
|
} |
||||||
|
|
||||||
|
const handleUserGant = (id) => { |
||||||
|
setIdGantt(id) |
||||||
|
setOpenDialogUserGantt(true) |
||||||
|
} |
||||||
|
|
||||||
|
const RenderTable = useMemo(() => { |
||||||
|
const columns = [ |
||||||
|
{ |
||||||
|
title: 'Action', |
||||||
|
dataIndex: '', |
||||||
|
key: 'id', |
||||||
|
className: "nowrap", |
||||||
|
render: (text, record) => |
||||||
|
<> |
||||||
|
<Tooltip title="Delete Gantt"> |
||||||
|
<Button size="small" size={"sm"} color='danger' onClick={() => handleDelete(text.id)}><i className="fa fa-trash"></i></Button> |
||||||
|
</Tooltip>{" "} |
||||||
|
</> |
||||||
|
, |
||||||
|
}, |
||||||
|
{ title: 'Nama', dataIndex: 'name', key: 'name' }, |
||||||
|
{ title: 'Tanggal dibuat', dataIndex: 'created_at', key: 'created_at', render: (text, record) => (<div style={{ whiteSpace: "nowrap" }}>{text ? moment(text).format("D-M-YYYY") : "-"}</div>) }, |
||||||
|
|
||||||
|
]; |
||||||
|
|
||||||
|
return ( |
||||||
|
<Table |
||||||
|
size="small" |
||||||
|
columns={columns} |
||||||
|
rowKey={"id"} |
||||||
|
dataSource={dataHierarchy} |
||||||
|
pagination={{ position: ["bottomLeft"] }} |
||||||
|
/> |
||||||
|
) |
||||||
|
}, [dataHierarchy]) |
||||||
|
|
||||||
|
const cancelDelete = () => { |
||||||
|
setAlertDelete(false) |
||||||
|
setIdDelete(0) |
||||||
|
} |
||||||
|
|
||||||
|
const onConfirmDelete = async () => { |
||||||
|
let urlDel = HIERARCHY_FTTH_DELETE(idDelete) |
||||||
|
const result = await axios.delete(urlDel, HEADER) |
||||||
|
.then(res => res) |
||||||
|
.catch((error) => error.response); |
||||||
|
|
||||||
|
if (result && result.data && result.data.code === 200) { |
||||||
|
getdataHierarchy() |
||||||
|
setIdDelete(0) |
||||||
|
setAlertDelete(false) |
||||||
|
NotificationManager.success(`Data Hierarchy berhasil dihapus`, 'Success!!'); |
||||||
|
} else { |
||||||
|
setIdDelete(0) |
||||||
|
setAlertDelete(false) |
||||||
|
NotificationManager.error(`Data Hierarchy gagal dihapus`, 'Failed!!'); |
||||||
|
} |
||||||
|
} |
||||||
|
|
||||||
|
const handleOpenDialogForm = () => { |
||||||
|
setOpenDialogForm(true) |
||||||
|
} |
||||||
|
|
||||||
|
const toggleDialogForm = () => { |
||||||
|
setOpenDialogForm(!openDialogForm) |
||||||
|
} |
||||||
|
|
||||||
|
const closeDialogForm = (status) => { |
||||||
|
if (status == "success") { |
||||||
|
getdataHierarchy() |
||||||
|
NotificationManager.success(`Gantt berhasil dibuat!`, 'Success!!'); |
||||||
|
} else if (status == "failed") { |
||||||
|
NotificationManager.error(`Gantt gagal dibuat!`, 'Failed!!'); |
||||||
|
} |
||||||
|
setOpenDialogForm(false) |
||||||
|
} |
||||||
|
|
||||||
|
const toggleDialogUser = () => { |
||||||
|
if (openDialogUserGantt) { |
||||||
|
setIdGantt(0) |
||||||
|
} |
||||||
|
setOpenDialogUserGantt(!openDialogUserGantt) |
||||||
|
} |
||||||
|
|
||||||
|
const closeDialogUser = (status) => { |
||||||
|
if (status == "success") { |
||||||
|
NotificationManager.success(`Gantt Permission berhasil disimpan!`, 'Success!!'); |
||||||
|
} else if (status == "failed") { |
||||||
|
NotificationManager.error(`Gantt Permission gagal disimpan!`, 'Failed!!'); |
||||||
|
} |
||||||
|
setOpenDialogUserGantt(false) |
||||||
|
setIdGantt(0) |
||||||
|
} |
||||||
|
|
||||||
|
return ( |
||||||
|
<> |
||||||
|
<Modal size="xl" isOpen={openDialog} toggle={toggleDialog}> |
||||||
|
<ModalHeader className="capitalize withBtn" toggle={closeDialog} style={{ width: "100%" }}> |
||||||
|
<div>Hierarchy Project {proyekName} </div> |
||||||
|
</ModalHeader> |
||||||
|
<ModalBody> |
||||||
|
<div style={{ width: '100%', overflow: "auto" }}> |
||||||
|
{RenderTable} |
||||||
|
</div> |
||||||
|
</ModalBody> |
||||||
|
{/* <ModalFooter> |
||||||
|
<Button className="capitalize" color="secondary" onClick={() => handleCancel()}>Batal</Button> |
||||||
|
</ModalFooter> */} |
||||||
|
</Modal> |
||||||
|
<NotificationContainer /> |
||||||
|
<SweetAlert |
||||||
|
show={alertDelete} |
||||||
|
warning |
||||||
|
showCancel |
||||||
|
confirmBtnText="Delete" |
||||||
|
confirmBtnBsStyle="danger" |
||||||
|
title={`Are you sure?`} |
||||||
|
onConfirm={onConfirmDelete} |
||||||
|
onCancel={() => cancelDelete()} |
||||||
|
focusCancelBtn |
||||||
|
> |
||||||
|
Delete this data |
||||||
|
</SweetAlert> |
||||||
|
<DialogForm |
||||||
|
idTask={idTask} |
||||||
|
openDialog={openDialogForm} |
||||||
|
toggleDialog={toggleDialogForm} |
||||||
|
closeDialog={closeDialogForm} |
||||||
|
/> |
||||||
|
|
||||||
|
<DialogUserGantt |
||||||
|
idGantt={idGantt} |
||||||
|
humanResource={humanResource} |
||||||
|
openDialog={openDialogUserGantt} |
||||||
|
toggleDialog={toggleDialogUser} |
||||||
|
closeDialog={closeDialogUser} |
||||||
|
/> |
||||||
|
</> |
||||||
|
) |
||||||
|
|
||||||
|
} |
||||||
|
|
||||||
|
export default DialogHierarchy;
|
Loading…
Reference in new issue