import React, { Component } from 'react'; import { Container, Row, Col } from "react-bootstrap"; import { makeStyles, createMuiTheme, MuiThemeProvider } from '@material-ui/core/styles'; import { TextField } from '@material-ui/core'; import MenuItem from '@material-ui/core/MenuItem'; import ReactDragListView from 'react-drag-listview'; import Autocomplete from '@material-ui/lab/Autocomplete'; import api from "../../api"; import { none } from 'ramda'; import Constant from '../../library/Constant'; const type = [ { value: 'KPI', label: 'KPI', }, { value: 'Gatau', label: 'Gatau', }, ]; export default class VisualisasiAM extends Component { constructor(props) { super(props) const data = []; for (let i = 1, len = 7; i < len; i++) { data.push({ title: `rows${i}` }); } this.state = { visibleAM: false, visibleVisual: true, data, listApproval: [], listEdit: [], listOriginal: [] } } componentDidMount() { this.getTypeData() } getTypeData() { api.create().getTypeAM().then((response) => { if (response.data) { if (response.ok) { if (response.data.status == 'success') { let data = response.data.data // console.log(data) let typeData = data.map((item) => { return { approval_type_id: item.approval_type_id, approval_type_name: item.approval_type_name } }) let typeProps = { options: typeData, getOptionLabel: (option) => option.approval_type_name, }; this.setState({ types: typeProps, typeData: response.data.data }) } else { this.setState({ alert: true, messageAlert: response.data.message, tipeAlert: 'warning' }, () => { if (response.data.message.includes("Someone Logged In")) { setTimeout(() => { localStorage.removeItem(Constant.TOKEN) window.location.reload(); }, 1000); } }) } } else { this.setState({ alert: true, messageAlert: response.data.message, tipeAlert: 'error' }) } } else { this.setState({ alert: true, messageAlert: response.problem, tipeAlert: 'error' }) } }) } handleInputChange(e) { this.setState({ search: e }) let body = { "keyword": this.state.typeName } api.create().searchAM(body).then(response => { if (response.data) { if (response.ok) { if (response.data.status == 'success') { let data = response.data.data // console.log(data) let listVisual = [] data.map((item, index) => { let indexId = listVisual.findIndex((val) => val.orderId == item.orders) if(indexId == -1){ listVisual.push({ orderId: item.orders, data: [item] }) } else { listVisual[indexId].data.push(item) } }) this.setState({ listApproval: listVisual}) } else { this.setState({ alert: true, messageAlert: response.data.message, tipeAlert: 'warning' }, () => { if (response.data.message.includes("Someone Logged In")) { setTimeout(() => { localStorage.removeItem(Constant.TOKEN) window.location.reload(); }, 1000); } }) } } else { this.setState({ alert: true, messageAlert: response.data.message, tipeAlert: 'error' }) } } else { this.setState({ alert: true, messageAlert: response.problem, tipeAlert: 'error' }) } }) } handleChangeOrder(fromIndex, toIndex, that) { let listApproval = that.state.listApproval let orderIdFrom = listApproval[fromIndex].orderId listApproval[fromIndex].orderId = listApproval[toIndex].orderId listApproval[toIndex].orderId = orderIdFrom that.setState({listEdit: listApproval}) } handleSave() { let data = [] if (this.state.listEdit.length == 0) { this.state.listApproval.map((item,index) => { item.data.map((items,index) => { data.push({ approval_matrix_id: items.approval_matrix_id, approval_type_id: items.approval_type_id, operator_type_id: items.operator_type_id, orders: item.orderId, user_id: items.user_id }) }) }) } else { this.state.listEdit.map((item,index) => { item.data.map((items,index) => { data.push({ approval_matrix_id: items.approval_matrix_id, approval_type_id: items.approval_type_id, operator_type_id: items.operator_type_id, orders: item.orderId, user_id: items.user_id }) }) }) } setTimeout(() => { let payload = { approval_type_id: data[0].approval_type_id, approval_matrix_detail : data } this.setState({listOriginal: payload}) this.props.updateVAM(this.state.listOriginal) }, 500); } render() { const that = this; const dragProps = { onDragEnd(fromIndex, toIndex) { const data = [...that.state.listApproval]; const item = data.splice(fromIndex, 1)[0]; if (fromIndex !== -1 && toIndex !== -1) { that.handleChangeOrder(fromIndex, toIndex, that) data.splice(toIndex, 0, item); that.setState({ listApproval: data }); } }, nodeSelector: 'li', handleSelector: 'a' }; return (