Browse Source

conflict

pull/2/head
ibnu 1 year ago
parent
commit
3e9edf34a2
  1. 1
      .env
  2. 970
      src/const/ApiConst.js
  3. 1529
      src/views/Dashboard/DashboardProject.js
  4. 34
      src/views/Master/MasterBroadcast/DialogDetail.js
  5. 20
      src/views/Master/MasterBroadcast/DialogForm.js
  6. 8
      src/views/Master/MasterBroadcast/index.js
  7. 2
      src/views/SimproV2/CreatedProyek/DataRequestMaterial.js
  8. 185
      src/views/SimproV2/CreatedProyek/index.js
  9. 89
      src/views/SimproV2/Gantt/index.js

1
.env

@ -1,3 +1,4 @@
PORT=3000
CHOKIDAR_USEPOLLING=true
GENERATE_SOURCEMAP=false
SKIP_PREFLIGHT_CHECK=true

970
src/const/ApiConst.js

File diff suppressed because it is too large Load Diff

1529
src/views/Dashboard/DashboardProject.js

File diff suppressed because it is too large Load Diff

34
src/views/Master/MasterBroadcast/DialogDetail.js

@ -4,10 +4,17 @@ import moment from 'moment';
import { Button, Table, FormFeedback, FormGroup, Input, Label, Modal, ModalBody, ModalFooter, ModalHeader } from 'reactstrap';
import Select from 'react-select';
import axios from 'axios';
import { BASE_URL_GEOHR_API } from '../../../const/ApiConst';
import { BASE_SIMPRO_LUMEN, BASE_URL_GEOHR_API } from '../../../const/ApiConst';
import { Transfer } from 'antd';
import { withTranslation } from 'react-i18next';
const token = window.localStorage.getItem('token');
const config = {
headers:
{
Authorization: `Bearer ${token}`,
"Content-type": `application/json`
}
};
const ERROR_TITLE = "judul is required!"
const ERROR_MESSAGE = "message is required!"
const BASE_URL = "https://oslog.id/geohr-api/";
@ -42,26 +49,23 @@ class DialogDetail extends Component {
getDataDetail = async () => {
countError++;
let url = BASE_URL_GEOHR_API + `/broadcast-detail/search?broadcastId=${this.state.id}`;
let url = BASE_SIMPRO_LUMEN + `/broadcast/search`;
const payload = {
"paging": { "start": 0, "length": 25 },
"orders": { "columns": ["id"], "ascending": true },
"columns": [
{ "name": "status_send", "logic_operator": "ilike", "value": "", "operator": "AND" }
],
"joins": [
{ "name": "m_broadcast", "column_results": ["title_notif", "message_notif", "description", "status_send"], "column_join": "broadcast_id" }
{ "name": "id", "logic_operator": "=", "value": this.state.id, "operator": "AND" }
]
}
const result = await axios
.post(url, payload)
.post(url, payload, config)
.then(res => res)
.catch((error) => error.response);
console.log('cek data detail', result.data)
if (result && result.data && result.data.code === 200) {
if (result.data.data && result.data.data.broadcast_details) {
this.setState({ dataListDetail: result.data.data.broadcast_details })
if (result.data.data && result.data.data) {
this.setState({ dataListDetail: result.data.data })
}
} else {
if (countError < 6) {
@ -97,11 +101,11 @@ class DialogDetail extends Component {
{this.state.dataListDetail.map((val, index) => {
return (
<tr key={index}>
<td>{val.join.status_send === "" ? "-" : val.status_send}</td>
<td>{val.join.created_date === "" ? "-" : moment(val.created_date).format("YYYY-MM-DD HH:mm:ss")}</td>
<td>{val.join.broadcast_description === "" ? "-" : val.join.broadcast_description}</td>
<td>{val.join.broadcast_title_notif === "" ? "-" : val.join.broadcast_title_notif}</td>
<td>{val.join.broadcast_message_notif === "" ? "-" : val.join.broadcast_message_notif}</td>
<td>{val.status_send === "" ? "-" : val.status_send}</td>
<td>{val.created_at === "" ? "-" : moment(val.created_date).format("DD-MM-YYYY HH:mm:ss")}</td>
<td>{val.description === "" ? "-" : val.description}</td>
<td>{val.title_notif === "" ? "-" : val.title_notif}</td>
<td>{val.message_notif === "" ? "-" : val.message_notif}</td>
</tr>
)
})}

20
src/views/Master/MasterBroadcast/DialogForm.js

@ -3,7 +3,7 @@ import React, { Component } from 'react';
import { Button, Form, FormFeedback, FormGroup, Input, Label, Modal, ModalBody, ModalFooter, ModalHeader } from 'reactstrap';
import Select from 'react-select';
import axios from 'axios';
import { BASE_URL_GEOHR_API2, ROLE_SEARCH, USER_WASPANG } from '../../../const/ApiConst';
import { BASE_URL_GEOHR_API2, ROLE_SEARCH, USER_WASPANG, USER_LIST } from '../../../const/ApiConst';
import { Transfer } from 'antd';
import { withTranslation } from 'react-i18next';
@ -137,7 +137,7 @@ class DialogForm extends Component {
if (penerima === "all") {
idSend = this.state.allEmployeeId;
send_to_type = "all";
} else if (penerima === "division") {
} else if (penerima === "organization") {
idSend = this.state.idOrganization;
send_to_type = "roles";
} else if (penerima === "karyawan") {
@ -145,9 +145,13 @@ class DialogForm extends Component {
send_to_type = "users";
}
if(Array.isArray(idSend)){
idSend = idSend.map(function (e) {
return e.toString()
});
} else {
idSend = idSend;
}
const data = {
title,
@ -186,7 +190,7 @@ class DialogForm extends Component {
}
setEmployeeOrganization = () => {
let arrEd = this.state.dataEmployee;
let arrEd = this.state.dataEmployee.data;
let cek = arrEd.filter(this.filterId)
this.setState({ idEmployeeDivision: cek })
@ -289,14 +293,14 @@ class DialogForm extends Component {
"ascending": false
}
}
//TODO should use search instead
const result = await axios
.post(USER_WASPANG, payload, config)
.get(USER_LIST, config)
.then(res => res)
.catch((error) => error.response);
console.log('test role', result)
if (result && result.data && result.code == "200") {
if (result && result.data && result.status == 200) {
this.setState({ dataEmployee: result.data }, () => {
this.setDataEmployee();
});
@ -307,12 +311,12 @@ class DialogForm extends Component {
setDataEmployee = () => {
const listEmployee = [];
const allIdEmployee = [];
this.state.dataEmployee.map((val, index) => {
this.state.dataEmployee.data.map((val, index) => {
allIdEmployee.push(val.id);
listEmployee.push({
key: val.id,
id: val.id,
title: val.join.m_users_name
title: val.name
});
})

8
src/views/Master/MasterBroadcast/index.js

@ -5,7 +5,7 @@ import React, { Component } from 'react';
import SweetAlert from 'react-bootstrap-sweetalert';
import axios from 'axios';
import moment from 'moment';
import { API_BROADCAST_SIMPRO, BASE_SIMPRO, BASE_URL_GEOHR_API2 } from '../../../const/ApiConst';
import { API_BROADCAST_SIMPRO, BASE_SIMPRO, BASE_SIMPRO_LUMEN, BASE_URL_GEOHR_API2 } from '../../../const/ApiConst';
import { Button, Card, CardBody, CardHeader, DropdownItem, DropdownMenu, DropdownToggle, Input, InputGroup, InputGroupButtonDropdown, Table, Row, Col } from 'reactstrap';
import { DatePicker, Pagination } from 'antd';
import { NotificationContainer, NotificationManager } from 'react-notifications';
@ -85,7 +85,7 @@ class index extends Component {
};
getDataBroadcast = async () => {
let url = BASE_SIMPRO + `/broadcast/search`;
let url = BASE_SIMPRO_LUMEN + `/broadcast/search`;
const { searchDetail } = this.state
let start = 0;
@ -180,7 +180,7 @@ class index extends Component {
}
saveBroadcast = async (type, data) => {
let url = BASE_SIMPRO + `/broadcast/add`;
let url = BASE_SIMPRO_LUMEN + `/broadcast/add`;
const param = {
"title_notif": data.title,
@ -205,7 +205,7 @@ class index extends Component {
"send_to_type": "users",
"message_notif": data.message,
"description": data.description,
"send_to_id": data.id.map((id, index) => id)
"send_to_id": data.send_to_type == "users" ? data.id.map((id, index) => id) : null
}
if (data.send_to_type === "all") {

2
src/views/SimproV2/CreatedProyek/DataRequestMaterial.js

@ -26,7 +26,7 @@ const DialogFormMaterial = ({ openDialog, closeDialog, toggleDialog, idTask, mat
useEffect(() => {
if (idTask > 0) {
getDataRequestMaterial();
// getDataRequestMaterial();
}
}, [idTask])

185
src/views/SimproV2/CreatedProyek/index.js

@ -35,6 +35,7 @@ import {
TYPE_PROYEK,
PROYEK_ADD,
PROYEK_SEARCH,
PROYEK_SEARCH_BY_USER,
PROYEK_EDIT,
PROYEK_DELETE,
TOOLS_RESOURCE_SEARCH,
@ -52,7 +53,7 @@ import {
VERSION_GANTT_SEARCH,
PHASE_PROYEK,
DIVISI_LIST,
BASE_OSPRO
BASE_OSPRO,
} from "../../../const/ApiConst";
import {
formatNumber,
@ -70,6 +71,7 @@ import DialogGantt from "./DialogGantt";
import DialogHierarchy from "./DialogHierarchy";
// import DialogAsignHr from './AsignHrProject';
import AssignHrProject from "./AsignHrProject";
import AssignCustProject from "./AsignCustProject";
import AssignK3Project from "./AssignK3Project";
import ViewProject from "./ViewProject";
import { Icon } from "@iconify/react";
@ -80,6 +82,7 @@ import { Link, useHistory } from "react-router-dom";
const url = "";
const proyek_id = localStorage.getItem("proyek_id");
const role_id = localStorage.getItem("role_id");
const user_id = localStorage.getItem("user_id");
const format = "DD-MM-YYYY";
const CreatedProyek = ({ params, ...props }) => {
@ -104,6 +107,7 @@ const CreatedProyek = ({ params, ...props }) => {
const [openDialogGantt, setOpenDialogGantt] = useState(false);
const [openDialogHierarchy, setOpenDialogHierarchy] = useState(false);
const [openDialogAsignHR, setOpenDialogAsignHR] = useState(false);
const [openDialogAsignCust, setOpenDialogAsignCust] = useState(false);
const [openDialogAssignK3, setOpenDialogAssignK3] = useState(false);
const [dataK3, setDataK3] = useState([]); // transfer list
const [idDelete, setIdDelete] = useState(0);
@ -163,10 +167,10 @@ const CreatedProyek = ({ params, ...props }) => {
handleGetDivisions();
handleGetDataPm();
}
}, [openDialogProyek])
}, [openDialogProyek]);
useEffect(() => {
getDataProyek();
role_id !== "44" ? getDataProyek() : getDataProyekByCustomer();
}, [search, rowsPerPage, currentPage]);
useEffect(() => {
@ -231,20 +235,27 @@ const CreatedProyek = ({ params, ...props }) => {
const handleDashboard = async (text) => {
const URL = `${BASE_OSPRO}/api/project/detail/${text.id}`;
const result = await axios.get(URL, HEADER).then(res => res).catch(err => err.response)
const result = await axios
.get(URL, HEADER)
.then((res) => res)
.catch((err) => err.response);
if (!result) {
NotificationManager.error(`Could not connect to internet.`, "Failed");
return;
}
if (result.status !== 200) {
NotificationManager.error(`Get project detail failed, ${result.data.message}`, "Failed");
NotificationManager.error(
`Get project detail failed, ${result.data.message}`,
"Failed"
);
return;
} else if (result.status == 200 && result.data.data) {
history.push(
`dashboard-customer/${text.id}/${result.data.gantt.last_gantt_id}/1`
);
}
else if (result.status == 200 && result.data.data) {
history.push(`dashboard-customer/${text.id}/${result.data.gantt.last_gantt_id}/1`);
}
}
};
const getDataProyek = async () => {
let start = 0;
@ -262,7 +273,15 @@ const CreatedProyek = ({ params, ...props }) => {
operator: "AND",
},
],
select: ["id", "nama", "rencana_biaya", "type_proyek_id", "currency_symbol", "mulai_proyek", "akhir_proyek"],
select: [
"id",
"nama",
"rencana_biaya",
"type_proyek_id",
"currency_symbol",
"mulai_proyek",
"akhir_proyek",
],
joins: [
{
name: "m_users",
@ -286,7 +305,6 @@ const CreatedProyek = ({ params, ...props }) => {
];
}
const result = await axios
.post(PROYEK_SEARCH, payload, HEADER)
.then((res) => res)
@ -304,6 +322,24 @@ const CreatedProyek = ({ params, ...props }) => {
}
};
const getDataProyekByCustomer = async () => {
const url = `${BASE_OSPRO}/api/project-by-customer/${user_id}`;
const result = await axios
.get(url, HEADER)
.then((res) => res)
.catch((error) => error.response);
if (result && result.data && result.data.code == 200) {
let dataRes = result.data.data || [];
setDatatable(dataRes);
setTotalPage(result.data.totalRecord);
setLoading(false);
} else {
setLoading(false);
NotificationManager.error("Gagal Mengambil Data!!", "Failed");
}
};
const getDataMaterialResource = async () => {
const result = await axios
.get(MATERIAL_RESOURCE_LIST, HEADER)
@ -435,6 +471,12 @@ const CreatedProyek = ({ params, ...props }) => {
setOpenDialogAsignHR(true);
};
const handleOpenAsignCust = (data) => {
setidTask(data.id);
setProyekName(data.nama);
setOpenDialogAsignCust(true);
};
const handleOpenAssignK3 = (data) => {
setidTask(data.id);
setProyekName(data.nama);
@ -461,23 +503,30 @@ const CreatedProyek = ({ params, ...props }) => {
const getProjectDetail = async (id) => {
const URL = `${BASE_OSPRO}/api/project/detail/${id}`;
const result = await axios.get(URL, HEADER).then(res => res).catch(err => err.response)
const result = await axios
.get(URL, HEADER)
.then((res) => res)
.catch((err) => err.response);
if (!result) {
NotificationManager.error(`Could not connect to internet.`, "Failed");
return;
}
if (result.status !== 200) {
NotificationManager.error(`Get project detail failed, ${result.data.message}`, "Failed");
NotificationManager.error(
`Get project detail failed, ${result.data.message}`,
"Failed"
);
return;
} else if (result.status == 200 && result.data.data) {
history.push(
`/dashboard-project/${id}/${result.data.gantt.last_gantt_id}/1`
);
}
else if (result.status == 200 && result.data.data) {
history.push(`/dashboard-project/${id}/${result.data.gantt.last_gantt_id}/1`);
}
}
};
const handleSCurve = async (data) => {
getProjectDetail(data.id)
getProjectDetail(data.id);
};
const getDataProject = async (proyek_id) => {
@ -532,7 +581,6 @@ const CreatedProyek = ({ params, ...props }) => {
if (result && result.data && result.data.code == 200) {
let dataRes = result.data.data;
setProjectParticipant(dataRes);
} else {
NotificationManager.error("Gagal Mengambil Data!!", "Failed");
}
@ -603,7 +651,8 @@ const CreatedProyek = ({ params, ...props }) => {
.catch((error) => error.response);
if (result && result.data && result.data.code === 200) {
getDataProyek();
role_id !== "44" ? getDataProyek() : getDataProyekByCustomer();
setIdDelete(0);
setAlertDelete(false);
NotificationManager.success(`Data proyek berhasil dihapus`, "Success!!");
@ -649,7 +698,7 @@ const CreatedProyek = ({ params, ...props }) => {
NotificationManager.success(`${result.data.message}`, "Success!!");
}
getDataProyek();
role_id !== "44" ? getDataProyek() : getDataProyekByCustomer();
} else {
NotificationManager.error(`${result.data.message}`, "Failed!!");
}
@ -730,7 +779,7 @@ const CreatedProyek = ({ params, ...props }) => {
const resultMilestone = await editMilestone(data.id, milestones);
const resultApproval = await editApproval(data.id, approval);
if (result && result.status === 200) {
getDataProyek();
role_id !== "44" ? getDataProyek() : getDataProyekByCustomer();
NotificationManager.success(`Data proyek berhasil Ubah`, "Success!!");
} else {
NotificationManager.error(`${result.data.message}`, "Failed!!");
@ -834,7 +883,6 @@ const CreatedProyek = ({ params, ...props }) => {
.then((res) => res)
.catch((error) => error.response);
if (result && result.data && result.data.code == 200) {
let resData = result.data.data;
const excelData = [];
@ -1005,6 +1053,12 @@ const CreatedProyek = ({ params, ...props }) => {
</span>
<span className="menu-text">Assign Human Resource</span>
</div>
<div className="menu-list" onClick={() => handleOpenAsignCust(text)}>
<span className="menu-icon">
<i className="fa fa-user-circle-o"></i>
</span>
<span className="menu-text">Assign Customer</span>
</div>
<div className="menu-list" onClick={() => handleOpenAssignK3(text)}>
<span className="menu-icon">
<i className="fa fa-plus-circle"></i>
@ -1068,7 +1122,7 @@ const CreatedProyek = ({ params, ...props }) => {
</div>
)}
{(!loadVersionGantt && text.type_proyek_id !== 9) && (
{!loadVersionGantt && text.type_proyek_id !== 9 && (
<>
{dataVersionGantt.slice(0, 8).map((res) => (
<Link to={`/projects/${res.id}/${text.id}/gantt`}>
@ -1094,7 +1148,7 @@ const CreatedProyek = ({ params, ...props }) => {
)}
</>
)}
{text.type_proyek_id == 9 ?
{text.type_proyek_id == 9 ? (
<div
className="menu-list"
onClick={() => handleOpenDialogHierarchy(text)}
@ -1103,7 +1157,8 @@ const CreatedProyek = ({ params, ...props }) => {
<i className="fa fa-bars"></i>
</span>
<span className="menu-text">More Hierarchy Menu ...</span>
</div> :
</div>
) : (
<div
className="menu-list"
onClick={() => handleOpenDialogGantt(text)}
@ -1112,7 +1167,8 @@ const CreatedProyek = ({ params, ...props }) => {
<i className="fa fa-bars"></i>
</span>
<span className="menu-text">More Gantt Menu ...</span>
</div>}
</div>
)}
</div>
);
};
@ -1123,17 +1179,21 @@ const CreatedProyek = ({ params, ...props }) => {
title: "Action",
dataIndex: "",
key: "x",
render: (text, record) => (
role_id == "44"
?
render: (text, record) =>
role_id == "44" ? (
<>
<Tooltip title="Dashboard Project">
<Button size="small" onClick={() => handleDashboard(text)} type="link" style={{ color: "green" }}>
<Button
size="small"
onClick={() => handleDashboard(text)}
type="link"
style={{ color: "green" }}
>
<i className="fa fa-line-chart"></i>
</Button>
</Tooltip>
</>
:
) : (
<>
<Popover
placement="rightTop"
@ -1151,15 +1211,11 @@ const CreatedProyek = ({ params, ...props }) => {
content={popupMenuGantt(text, record)}
trigger="click"
>
{
text.type_proyek_id == 9 ?
<Button
size="small"
type="link"
style={{ color: "green" }}
>
{text.type_proyek_id == 9 ? (
<Button size="small" type="link" style={{ color: "green" }}>
<i className="fa fa-bars"></i>
</Button> :
</Button>
) : (
<Button
onClick={() => getdataGantt(text.id)}
size="small"
@ -1168,7 +1224,7 @@ const CreatedProyek = ({ params, ...props }) => {
>
<i className="fa fa-bars"></i>
</Button>
}
)}
</Popover>
</>
),
@ -1235,6 +1291,11 @@ const CreatedProyek = ({ params, ...props }) => {
setOpenDialogAsignHR(false);
};
const handleCloseDialogAsignCust = () => {
setidTask(0);
setOpenDialogAsignCust(false);
};
const handleCloseDialogAssignK3 = (status) => {
if (status == "success") {
NotificationManager.success(
@ -1279,7 +1340,14 @@ const CreatedProyek = ({ params, ...props }) => {
dataPM={dataPm}
/>
),
[openDialogProyek, dataPm, dataDivisions, dataPhaseProject, dataTypeProyek, idTask]
[
openDialogProyek,
dataPm,
dataDivisions,
dataPhaseProject,
dataTypeProyek,
idTask,
]
);
const RenderDialogFormMaterial = useMemo(
@ -1295,7 +1363,14 @@ const CreatedProyek = ({ params, ...props }) => {
proyekName={proyekName}
/>
),
[openDialogMaterial, proyekName, materialResource, materialProyek, userProyek, idTask]
[
openDialogMaterial,
proyekName,
materialResource,
materialProyek,
userProyek,
idTask,
]
);
const RenderDialogTableTools = useMemo(
@ -1328,6 +1403,21 @@ const CreatedProyek = ({ params, ...props }) => {
[openDialogAsignHR]
);
// DialogAsignCust
const RenderDialogAsignCust = useMemo(
() => (
<AssignCustProject
openDialog={openDialogAsignCust}
closeDialog={() => setOpenDialogAsignCust(false)}
toggleDialog={() => setOpenDialogAsignCust(!openDialogAsignCust)}
handleClose={handleCloseDialogAsignCust}
idTask={idTask}
proyekName={proyekName}
/>
),
[openDialogAsignCust]
);
// DialogAssignK3
const RenderDialogAssignK3 = useMemo(
() => (
@ -1428,6 +1518,7 @@ const CreatedProyek = ({ params, ...props }) => {
{renderDialogGantt}
{renderDialogHierarchy}
{RenderDialogAsignHr}
{RenderDialogAsignCust}
{RenderDialogAssignK3}
<Card>
<CardHeader
@ -1447,11 +1538,7 @@ const CreatedProyek = ({ params, ...props }) => {
/>
</Col>
<Col>
{
role_id == "44" // role kustomer
?
null
:
{role_id == "44" ? null : ( // role kustomer
<Tooltip title="Add Project">
<Button
style={{ background: "#4caf50", color: "#fff" }}
@ -1460,7 +1547,7 @@ const CreatedProyek = ({ params, ...props }) => {
<i className="fa fa-plus"></i>
</Button>
</Tooltip>
}
)}
<Tooltip title="Export Excel">
<Popover
// content={<a onClick={hide}>Close</a>}

89
src/views/SimproV2/Gantt/index.js

@ -1,87 +1,98 @@
import React, { useEffect, useMemo, useState } from 'react';
import Timeline from 'react-calendar-timeline'
import 'react-calendar-timeline/lib/Timeline.css'
import { USER_VERSION_GANTT_SEARCH, BASE_SIMPRO_LUMEN, BASE_URL_GANTT } from '../../../const/ApiConst';
import axios from "../../../const/interceptorApi"
import { Fab, Action } from 'react-tiny-fab';
import 'react-tiny-fab/dist/styles.css';
import React, { useEffect, useMemo, useState } from "react";
import Timeline from "react-calendar-timeline";
import "react-calendar-timeline/lib/Timeline.css";
import {
USER_VERSION_GANTT_SEARCH,
BASE_SIMPRO_LUMEN,
BASE_URL_GANTT,
} from "../../../const/ApiConst";
import axios from "../../../const/interceptorApi";
import { Fab, Action } from "react-tiny-fab";
import "react-tiny-fab/dist/styles.css";
import { useHistory } from "react-router-dom";
import GanttFrame from './GanttFrame';
const token = localStorage.getItem("token")
import GanttFrame from "./GanttFrame";
const token = localStorage.getItem("token");
const userId = parseInt(localStorage.getItem("user_id"));
const HEADER = {
headers: {
"Content-Type": "application/json",
"Authorization": `Bearer ${token}`
}
}
Authorization: `Bearer ${token}`,
},
};
let roCount = 0;
const Gantt = (props) => {
const versionGanttId = props.match.params ? props.match.params.id : 0;
const idProject = props.match.params.project ? props.match.params.project : 0;
const timestamp = props.match.params.timestamp ? props.match.params.timestamp : 0;
const timestamp = props.match.params.timestamp
? props.match.params.timestamp
: 0;
const [ro, setRo] = useState(1)
const [listUserGant, setListUserGantt] = useState([])
const [ready, setReady] = useState(false)
const [ro, setRo] = useState(1);
const [listUserGant, setListUserGantt] = useState([]);
const [ready, setReady] = useState(false);
let history = useHistory();
useEffect(() => {
document.getElementsByClassName("breadcrumb-item active").innerHTML = "Gantt Project";
document.getElementsByClassName("breadcrumb-item active").innerHTML =
"Gantt Project";
getDataUserGantt();
}, []);
useEffect(() => {
cekPermission();
}, [listUserGant])
}, [listUserGant]);
useEffect(() => {
}, [ro])
useEffect(() => {}, [ro]);
const getDataUserGantt = async () => {
const payload = {
"columns": [
{ "name": "version_gantt_id", "logic_operator": "=", "value": versionGanttId, "operator": "AND" }
]
}
columns: [
{
name: "version_gantt_id",
logic_operator: "=",
value: versionGanttId,
operator: "AND",
},
],
};
const result = await axios
.post(USER_VERSION_GANTT_SEARCH, payload, HEADER)
.then(res => res)
.then((res) => res)
.catch((error) => error.response);
if (result && result.status == 200) {
setUserGantt(result.data.data);
} else {
cekPermission()
}
cekPermission();
}
};
const setUserGantt = (data) => {
let newTargetKeys = []
let newTargetKeys = [];
data.map((val, index) => {
newTargetKeys.push(val.user_id)
newTargetKeys.push(val.user_id);
});
setListUserGantt(newTargetKeys)
}
setListUserGantt(newTargetKeys);
};
const handleRedirect = () => {
history.push("/dashboard-project/"+idProject+"/"+versionGanttId);
}
history.push("/dashboard-project/" + idProject + "/" + versionGanttId);
};
const cekPermission = () => {
let check = listUserGant.includes(userId)
let check = listUserGant.includes(userId);
if (check) {
setRo(0)
setRo(0);
} else {
setRo(1)
setRo(1);
}
if (roCount >= 1) {
setReady(true)
setReady(true);
}
roCount = roCount + 1;
}
};
return (
<>
@ -98,6 +109,6 @@ const Gantt = (props) => {
</div>
</>
);
}
};
export default Gantt;

Loading…
Cancel
Save