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 Perusahaan from "./Perusahaan"; import TreeView from '@material-ui/lab/TreeView'; import ExpandMoreIcon from '@material-ui/icons/ExpandMore'; import ChevronRightIcon from '@material-ui/icons/ChevronRight'; import TreeItem from '@material-ui/lab/TreeItem'; import Nestable from 'react-nestable/dist/Nestable'; import AddIcon from '@material-ui/icons/Add'; import RemoveIcon from '@material-ui/icons/Remove'; import api from '../../../api'; export default class VisualPerusahaan extends Component { constructor(props) { super(props) this.state = { items: [ { id: 0, GG: 'Accumulated Depreciation (negative value)', collapse: false, children: [ { id: 3, GG: 'Beginning Balance', collapse: false }, { id: 4, GG: 'Depreciation expense MTD (please fill in, if any)', collapse: false }, { id: 5, GG: 'Depreciation expense MTD (please fill in, if any)', collapse: false } ] },{ id: 1, GG: 'Control Gain/(Loss) on Fixed Assets', collapse: false },{ id: 2, GG: 'Gain/(Loss) on Fixed Assets', collapse: false, children: [ { id: 6, GG: 'NBV', collapse: false, children : [ { id: 8, GG: 'Cost', collapse: false }, { id: 9, GG: 'Accm. Depreciation', collapse: false }, ] }, { id: 7, GG: 'Proceed from sale or disposal of Fixed Assets (please fill in, if any)', collapse: false }, ] }, ], arrayCollapse: [], defaultCollapsed: false } } componentDidMount() { this.getPerusahaan() } getPerusahaan() { api.create().getPerusahaanHierarki().then((response) => { if (response.data.status == 'success') { this.setState({ items: response.data.data }) console.log(response.data.data) } }) } onDefaultCollapsed = () => this.setState({ defaultCollapsed: !this.state.defaultCollapsed }); collapse = (collapseCase) => { let arrayCollapse = this.state.arrayCollapse let index = arrayCollapse.findIndex((val) => val.id === collapseCase) if (arrayCollapse.includes(collapseCase)) { arrayCollapse.splice(index, 1) } else { arrayCollapse.push(collapseCase) } if (this.refNestable) { this.refNestable.collapse(arrayCollapse.length > 0? arrayCollapse : 'NONE'); } }; handleSave() { let payload = { "company": this.state.items } api.create().saveVisualisasiPerusahaan(payload).then((response) => { // if (response.data.status == 'ucces') { this.props.onClickClose() // } else { // alert(response.data.message) // } }) } renderItem = ({ item, collapseIcon }) => { return ( <div> <button type="button" onClick={() => this.collapse(item.id)}> {collapseIcon ? (this.state.arrayCollapse.includes(item.id)? <AddIcon/> : <RemoveIcon/>) : null} </button> <label style={{marginLeft: collapseIcon ? 10 : 0}}>{item.company_name}</label> </div> ) }; render() { return ( <div> <div style={{ height: this.props.height }}> <div style={{ width: '100%', backgroundColor: '#354960' }} /> <div> <div style={{ display: 'flex', flexDirection: 'row', justifyContent: 'space-between', paddingRight: 25, paddingLeft: 25, marginTop: -150 }}> <label style={{ color: 'white', width: '20%', fontSize: 16, paddingTop: 8 }}>Hirarki Perusahaan</label> </div> <div style={{ padding: 25, width: '100%' }}> <div style={{ width: '100%', padding: 25, backgroundColor: 'white', borderRadius: 6, border: 'solid 1px #c4c4c4'}}> <Nestable items={this.state.items} collapsed={this.state.defaultCollapsed} renderItem={this.renderItem} ref={el => this.refNestable = el} onChange={(e) => this.setState({items: e}, () => console.log(JSON.stringify(e)))} /> {/* <TreeView defaultCollapseIcon={<ExpandMoreIcon />} defaultExpandIcon={<ChevronRightIcon />} > <TreeItem nodeId="1" label="Triputra Investindo Arya"> <TreeItem nodeId="2" label="TAP Group" > <TreeItem nodeId="3" label="Gawi Bandep Sawit" /> <TreeItem nodeId="4" label="Etam Buana Lestari" /> </TreeItem> <TreeItem nodeId="11" label="Puninar Group"> <TreeItem nodeId="21" label="TAP Group" > <TreeItem nodeId="31" label="Gawi Bandep Sawit" /> <TreeItem nodeId="41" label="Etam Buana Lestari" /> </TreeItem> </TreeItem> <TreeItem nodeId="12" label="Daya Group"> <TreeItem nodeId="22" label="TAP Group" > <TreeItem nodeId="32" label="Gawi Bandep Sawit" /> <TreeItem nodeId="42" label="Etam Buana Lestari" /> </TreeItem> </TreeItem> </TreeItem> <TreeItem nodeId="5" label="Documents"> <TreeItem nodeId="10" label="OSS" /> <TreeItem nodeId="6" label="Material-UI"> <TreeItem nodeId="7" label="src"> <TreeItem nodeId="8" label="index.js" /> <TreeItem nodeId="9" label="tree-view.js" /> </TreeItem> </TreeItem> </TreeItem> </TreeView> */} </div> </div> <div className="row" style={{ display: 'flex', flexDirection: 'row', justifyContent: 'space-between', paddingRight: 15, paddingLeft: 15, paddingBottom: 25 }}> <div onClick={() => this.props.onClickClose()} style={{ width: 102, height: 30, marginLeft: 25, backgroundColor: 'dodgerblue', borderRadius: 5, alignItems: 'center', display: 'flex', justifyContent: 'center', cursor:"pointer" }}> <span style={{ color: '#fff', fontSize: 11 }}>Kembali</span> </div> <div className="row" style={{ float: 'right', marginRight: 25 }}> <div onClick={() => this.props.onClickClose()} style={{ width: 102, height: 30, border: 'solid 1px #354960', borderRadius: 5, alignItems: 'center', display: 'flex', justifyContent: 'center', cursor:"pointer" }}> <span style={{ color: '#354960', fontSize: 11 }} >Batal</span> </div> <div onClick={() => this.handleSave()} style={{ width: 102, height: 30, marginLeft: 25, backgroundColor: '#354960', borderRadius: 5, alignItems: 'center', display: 'flex', justifyContent: 'center', cursor:"pointer" }}> <span style={{ color: '#fff', fontSize: 11 }}>Simpan</span> </div> </div> </div> </div> </div> </div> ); } }