VisualCompany.js 9.63 KB
Newer Older
faisalhamdi's avatar
faisalhamdi committed
1 2
import React, { Component } from 'react';
import { Container, Row, Col } from "react-bootstrap";
faisalhamdi's avatar
faisalhamdi committed
3
import { Typography, withStyles, Snackbar } from '@material-ui/core';
syadziy's avatar
syadziy committed
4
import Perusahaan from "./Company";
faisalhamdi's avatar
faisalhamdi committed
5
import MuiAlert from '@material-ui/lab/Alert';
d.arizona's avatar
d.arizona committed
6
import Nestable from 'react-nestable/dist/Nestable';
d.arizona's avatar
d.arizona committed
7 8 9
import AddIcon from '@material-ui/icons/Add';
import RemoveIcon from '@material-ui/icons/Remove';
import api from '../../../api';
a.bairuha's avatar
a.bairuha committed
10
import Constant from '../../../library/Constant';
faisalhamdi's avatar
faisalhamdi committed
11

faisalhamdi's avatar
faisalhamdi committed
12 13 14
const Alert = withStyles({
})((props) => <MuiAlert elevation={6} variant="filled" {...props} />);

faisalhamdi's avatar
faisalhamdi committed
15 16 17 18
export default class VisualPerusahaan extends Component {
    constructor(props) {
        super(props)
        this.state = {
d.arizona's avatar
d.arizona committed
19
            items: [
Deni Rinaldi's avatar
Deni Rinaldi committed
20 21
                {
                    id: 0, GG: 'Accumulated Depreciation (negative value)', collapse: false,
d.arizona's avatar
d.arizona committed
22 23 24 25 26
                    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 }
                    ]
Deni Rinaldi's avatar
Deni Rinaldi committed
27
                }, {
d.arizona's avatar
d.arizona committed
28
                    id: 1, GG: 'Control Gain/(Loss) on Fixed Assets', collapse: false
Deni Rinaldi's avatar
Deni Rinaldi committed
29
                }, {
d.arizona's avatar
d.arizona committed
30 31
                    id: 2, GG: 'Gain/(Loss) on Fixed Assets', collapse: false,
                    children: [
Deni Rinaldi's avatar
Deni Rinaldi committed
32 33 34
                        {
                            id: 6, GG: 'NBV', collapse: false,
                            children: [
d.arizona's avatar
d.arizona committed
35 36
                                { id: 8, GG: 'Cost', collapse: false },
                                { id: 9, GG: 'Accm. Depreciation', collapse: false },
Deni Rinaldi's avatar
Deni Rinaldi committed
37
                            ]
d.arizona's avatar
d.arizona committed
38 39 40 41 42 43
                        },
                        { id: 7, GG: 'Proceed from sale or disposal of Fixed Assets (please fill in, if any)', collapse: false },
                    ]
                },
            ],
            arrayCollapse: [],
faisalhamdi's avatar
faisalhamdi committed
44 45 46 47
            defaultCollapsed: false,
            alert: false,
            tipeAlert: '',
            messageAlert: '',
faisalhamdi's avatar
faisalhamdi committed
48 49 50 51
        }
    }

    componentDidMount() {
d.arizona's avatar
d.arizona committed
52 53 54 55 56
        this.getPerusahaan()
    }

    getPerusahaan() {
        api.create().getPerusahaanHierarki().then((response) => {
faisalhamdi's avatar
faisalhamdi committed
57
            console.log(response)
Deni Rinaldi's avatar
Deni Rinaldi committed
58
            if (response.data) {
a.bairuha's avatar
a.bairuha committed
59 60 61 62 63 64
                if (response.ok) {
                    if (response.data.status == 'success') {
                        this.setState({ items: response.data.data })
                        console.log(response.data.data)
                    } else {
                        this.setState({ alert: true, messageAlert: response.data.message, tipeAlert: 'warning' }, () => {
d.arizona's avatar
d.arizona committed
65
                            if (response.data.message.includes("Someone Logged In") || response.data.message.includes("Token Expired")) {
a.bairuha's avatar
a.bairuha committed
66 67 68 69 70 71 72
                                setTimeout(() => {
                                    localStorage.removeItem(Constant.TOKEN)
                                    window.location.reload();
                                }, 1000);
                            }
                        })
                    }
faisalhamdi's avatar
faisalhamdi committed
73
                } else {
a.bairuha's avatar
a.bairuha committed
74
                    this.setState({ alert: true, messageAlert: response.data.message, tipeAlert: 'error' })
faisalhamdi's avatar
faisalhamdi committed
75 76 77
                }
            } else {
                this.setState({ alert: true, messageAlert: response.problem, tipeAlert: 'error' })
d.arizona's avatar
d.arizona committed
78 79
            }
        })
faisalhamdi's avatar
faisalhamdi committed
80 81
    }

d.arizona's avatar
d.arizona committed
82 83 84 85 86 87 88 89 90 91 92 93 94
    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) {
Deni Rinaldi's avatar
Deni Rinaldi committed
95
            this.refNestable.collapse(arrayCollapse.length > 0 ? arrayCollapse : 'NONE');
d.arizona's avatar
d.arizona committed
96 97 98 99 100 101 102
        }
    };

    handleSave() {
        let payload = {
            "company": this.state.items
        }
faisalhamdi's avatar
faisalhamdi committed
103 104 105
        this.props.updateHierarchy(payload)
        /* api.create().saveVisualisasiPerusahaan(payload).then((response) => {
            // console.log(response.data)
a.bairuha's avatar
a.bairuha committed
106 107 108
            if (response.data) {
                if (response.ok) {
                    if (response.data.status == 'success') {
a.bairuha's avatar
a.bairuha committed
109 110 111
                        this.setState({ alert: true, messageAlert: response.data.message, tipeAlert: 'success' }, () => {
                            setTimeout(() => {
                                this.props.onClickClose()
faisalhamdi's avatar
faisalhamdi committed
112
                                window.location.reload();
a.bairuha's avatar
a.bairuha committed
113 114
                            }, 1000);
                        })
a.bairuha's avatar
a.bairuha committed
115 116
                    } else {
                        this.setState({ alert: true, messageAlert: response.data.message, tipeAlert: 'warning' }, () => {
d.arizona's avatar
d.arizona committed
117
                            if (response.data.message.includes("Someone Logged In") || response.data.message.includes("Token Expired")) {
a.bairuha's avatar
a.bairuha committed
118 119 120 121 122 123 124 125 126 127 128 129 130
                                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' })
            }
d.arizona's avatar
d.arizona committed
131
            // } else {
Deni Rinaldi's avatar
Deni Rinaldi committed
132
            // alert(response.data.message)
d.arizona's avatar
d.arizona committed
133
            // }
faisalhamdi's avatar
faisalhamdi committed
134
        }) */
d.arizona's avatar
d.arizona committed
135 136 137 138 139 140
    }

    renderItem = ({ item, collapseIcon }) => {
        return (
            <div>
                <button type="button" onClick={() => this.collapse(item.id)}>
Deni Rinaldi's avatar
Deni Rinaldi committed
141
                    {collapseIcon ? (this.state.arrayCollapse.includes(item.id) ? <AddIcon /> : <RemoveIcon />) : null}
d.arizona's avatar
d.arizona committed
142
                </button>
Deni Rinaldi's avatar
Deni Rinaldi committed
143
                <label style={{ marginLeft: collapseIcon ? 10 : 0 }}>{item.company_name}</label>
d.arizona's avatar
d.arizona committed
144 145 146 147
            </div>
        )
    };

faisalhamdi's avatar
faisalhamdi committed
148 149 150
    closeAlert() {
        this.setState({ alert: false })
    }
d.arizona's avatar
d.arizona committed
151

faisalhamdi's avatar
faisalhamdi committed
152 153 154
    render() {

        return (
Deni Rinaldi's avatar
Deni Rinaldi committed
155
            <div>
faisalhamdi's avatar
faisalhamdi committed
156 157
                <div style={{ height: this.props.height }}>
                    <div style={{ width: '100%', backgroundColor: '#354960' }} />
Deni Rinaldi's avatar
Deni Rinaldi committed
158 159 160 161 162 163 164 165 166 167 168 169 170 171 172 173 174 175
                    <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 }}>Company Hierarchy</label>
                        </div>
                        <div style={{ display: 'flex', paddingRight: 25, paddingLeft: 25 }}>
                            <label style={{ color: '#51c6ea', width: '20%', fontSize: 11 }}>Master Data / Company /
                                    <span style={{ color: 'white', width: '20%', fontSize: 11 }}> Visualization</span>
                            </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)))}
                                />
faisalhamdi's avatar
faisalhamdi committed
176
                            </div>
Deni Rinaldi's avatar
Deni Rinaldi committed
177
                        </div>
faisalhamdi's avatar
faisalhamdi committed
178 179
                        <div className="row" style={{ display: 'flex', flexDirection: 'row', justifyContent: 'space-between', float: 'right', 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" }}>
Deni Rinaldi's avatar
Deni Rinaldi committed
180
                                <span style={{ color: '#fff', fontSize: 11 }}>Back</span>
faisalhamdi's avatar
faisalhamdi committed
181
                            </div> */}
Deni Rinaldi's avatar
Deni Rinaldi committed
182 183

                            {this.props.buttonEdit && (
faisalhamdi's avatar
faisalhamdi committed
184
                                <div className="row" style={{ float: 'right', marginRight: 25 }}>
Deni Rinaldi's avatar
Deni Rinaldi committed
185
                                    <div onClick={() => this.props.onClickClose()} style={{ width: 102, height: 30, border: 'solid 1px #354960', borderRadius: 5, alignItems: 'center', display: 'flex', justifyContent: 'center', cursor: "pointer" }}>
faisalhamdi's avatar
faisalhamdi committed
186
                                        <span style={{ color: '#354960', fontSize: 11 }} >Cancel</span>
faisalhamdi's avatar
faisalhamdi committed
187
                                    </div>
d.arizona's avatar
d.arizona committed
188 189 190 191
                                    <div onClick={() => {
                                        this.props.handleLoading()
                                        this.handleSave()
                                        }} style={{ width: 102, height: 30, marginLeft: 25, backgroundColor: '#354960', borderRadius: 5, alignItems: 'center', display: 'flex', justifyContent: 'center', cursor: "pointer" }}>
faisalhamdi's avatar
faisalhamdi committed
192
                                        <span style={{ color: '#fff', fontSize: 11 }}>Save</span>
faisalhamdi's avatar
faisalhamdi committed
193 194
                                    </div>
                                </div>
Deni Rinaldi's avatar
Deni Rinaldi committed
195
                            )}
faisalhamdi's avatar
faisalhamdi committed
196 197
                        </div>
                    </div>
Deni Rinaldi's avatar
Deni Rinaldi committed
198
                </div>
faisalhamdi's avatar
faisalhamdi committed
199
            </div>
Deni Rinaldi's avatar
Deni Rinaldi committed
200

faisalhamdi's avatar
faisalhamdi committed
201 202 203
        );
    }
}