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>
            
        );
    }
}