UnitBisnis.js 34.2 KB
Newer Older
Deni Rinaldi's avatar
Deni Rinaldi committed
1 2 3 4 5
import React, { Component } from "react";
import { Container, Row, Col } from "react-bootstrap";
import { makeStyles, createMuiTheme, MuiThemeProvider } from '@material-ui/core/styles';
import SearchIcon from '@material-ui/icons/Search';
import Images from "../../assets/Images";
6
import UploadFile from "../../library/Upload";
Deni Rinaldi's avatar
Deni Rinaldi committed
7 8
import MUIDataTable from "mui-datatables";
import CreateUnitBisnis from "./formUnitBisnis/CreateUnitBisnis";
Deni Rinaldi's avatar
Deni Rinaldi committed
9
import ReactTooltip from 'react-tooltip';
Deni Rinaldi's avatar
Deni Rinaldi committed
10
import MuiAlert from '@material-ui/lab/Alert';
Deni Rinaldi's avatar
Deni Rinaldi committed
11
import { TextField, InputBase, Snackbar, withStyles, LinearProgress } from "@material-ui/core";
12 13
import { ExcelRenderer } from 'react-excel-renderer';
import api from "../../api";
Deni Rinaldi's avatar
Deni Rinaldi committed
14
import { isThisSecond } from "date-fns";
Deni Rinaldi's avatar
Deni Rinaldi committed
15
import PopUpFailedSave from "../../library/PopUpFailedSave";
a.bairuha's avatar
a.bairuha committed
16
import Constant from "../../library/Constant";
Deni Rinaldi's avatar
Deni Rinaldi committed
17 18 19 20

var ct = require("../../library/CustomTable");
const getMuiTheme = () => createMuiTheme(ct.customTable());
const options = ct.customOptions();
Deni Rinaldi's avatar
Deni Rinaldi committed
21
const options2 = ct.customOptions2();
Deni Rinaldi's avatar
Deni Rinaldi committed
22

Deni Rinaldi's avatar
Deni Rinaldi committed
23 24 25
const Alert = withStyles({
})((props) => <MuiAlert elevation={6} variant="filled" {...props} />);

Deni Rinaldi's avatar
Deni Rinaldi committed
26 27 28 29
export default class UnitBisnis extends Component {
    constructor(props) {
        super(props)
        this.state = {
Deni Rinaldi's avatar
Deni Rinaldi committed
30 31
            visibleCreate: false,
            visibleEdit: false,
32 33
            dataTable: [],
            listData: [],
Deni Rinaldi's avatar
Deni Rinaldi committed
34 35 36 37 38
            data: [],
            search: "",
            visibleUnitBisnis: true,
            cols: null,
            rows: null,
Deni Rinaldi's avatar
Deni Rinaldi committed
39
            dataLoaded: false,
Deni Rinaldi's avatar
Deni Rinaldi committed
40 41 42
            popupError: false,
            alert: false,
            tipeAlert: '',
Deni Rinaldi's avatar
Deni Rinaldi committed
43 44
            messageAlert: '',
            create: false,
Deni Rinaldi's avatar
Deni Rinaldi committed
45
            edit: false,
Deni Rinaldi's avatar
Deni Rinaldi committed
46
            load: false,
Deni Rinaldi's avatar
Deni Rinaldi committed
47 48
            judul: '',
            // visibleLoad: true
Deni Rinaldi's avatar
Deni Rinaldi committed
49
        }
50 51 52 53 54 55
        this.fileHandler = this.fileHandler.bind(this);
    }

    fileHandler = (event) => {
        let fileObj = event
        ExcelRenderer(fileObj, (err, resp) => {
Deni Rinaldi's avatar
Deni Rinaldi committed
56
            // console.log(resp)
Deni Rinaldi's avatar
Deni Rinaldi committed
57 58 59 60
            if (err) {
                console.log(err);
            }
            else {
Deni Rinaldi's avatar
1  
Deni Rinaldi committed
61
                let isi = resp.rows.slice(3)
Deni Rinaldi's avatar
Deni Rinaldi committed
62
                console.log(isi);
Deni Rinaldi's avatar
1  
Deni Rinaldi committed
63 64
                let payload = []
                isi.map((item, index) => {
Deni Rinaldi's avatar
Deni Rinaldi committed
65 66 67
                    if (item.length > 0) {
                        payload.push({
                            id: index + 1,
Deni Rinaldi's avatar
Deni Rinaldi committed
68 69 70
                            business_unit_name: item[0] === undefined ? "" : item[0],
                            start_date: item[1] == undefined ? "" : item[1],
                            end_date: item[2] === undefined ? "" : item[2],
Deni Rinaldi's avatar
Deni Rinaldi committed
71 72
                        })
                    }
Deni Rinaldi's avatar
1  
Deni Rinaldi committed
73 74 75 76
                })
                let body = {
                    business_unit: payload
                }
Deni Rinaldi's avatar
Deni Rinaldi committed
77 78
                console.log(resp.rows[1])
                this.setState({ payload: body, buttonError: false, judul: resp.rows[1][0] })
Deni Rinaldi's avatar
Deni Rinaldi committed
79 80 81 82 83 84 85 86 87 88 89 90 91 92 93 94 95 96 97 98 99 100 101 102 103
            }
        });
    }

    checkUpload(){
        api.create().checkUploadUnitBisnis(this.state.payload).then(response => {
            console.log(response)
            let dataRow = []
            if (response.data) {
                if (response.ok) {
                    if (response.data.status === "success") {
                        dataRow = response.data.data.map((item, index) => {
                            return [
                                item.business_unit_name,
                                item.start_date,
                                item.end_date,
                                item.error
                            ]
                        })
                        let columns = [
                            {
                                name: "Business Unit",
                                options: {
                                    customBodyRender: (val, tableMeta) => {
                                        let check = null
Deni Rinaldi's avatar
Deni Rinaldi committed
104 105
                                        if (tableMeta.rowData[3] != null) {
                                            check = tableMeta.rowData[3].findIndex((val) => val.field.includes('business_unit_name'))
Deni Rinaldi's avatar
Deni Rinaldi committed
106 107
                                            if (check > -1) {
                                                this.setState({ buttonError: true })
a.bairuha's avatar
a.bairuha committed
108
                                            }
Deni Rinaldi's avatar
Deni Rinaldi committed
109
                                        }
Deni Rinaldi's avatar
Deni Rinaldi committed
110 111
                                        return (
                                            <div style={{ display: 'flex' }}>
Deni Rinaldi's avatar
Deni Rinaldi committed
112 113 114
                                                {tableMeta.rowData[3] != null && check > -1 ?
                                                    <a data-tip={tableMeta.rowData[3][check].message} data-for="unitbisnis">
                                                        <span style={{ color: check != null && check > -1 ? "red" : 'black' }}>{val === "" ? "-" : val}</span>
Deni Rinaldi's avatar
Deni Rinaldi committed
115
                                                    </a> :
Deni Rinaldi's avatar
Deni Rinaldi committed
116
                                                    <span style={{ color: check != null && check > -1 ? "red" : 'black' }}>{val === "" ? "-" : val}</span>
Deni Rinaldi's avatar
Deni Rinaldi committed
117
                                                }
Deni Rinaldi's avatar
Deni Rinaldi committed
118 119 120 121 122 123 124 125 126 127 128
                                                <ReactTooltip border={true} id="unitbisnis" place="bottom" type="light" effect="solid" />
                                            </div >
                                        );
                                    }
                                }
                            },
                            {
                                name: "Valid From",
                                options: {
                                    customBodyRender: (val, tableMeta) => {
                                        let check = null
Deni Rinaldi's avatar
Deni Rinaldi committed
129 130
                                        if (tableMeta.rowData[3] != null) {
                                            check = tableMeta.rowData[3].findIndex((val) => val.field.includes('start_date'))
Deni Rinaldi's avatar
Deni Rinaldi committed
131 132
                                            if (check > -1) {
                                                this.setState({ buttonError: true })
a.bairuha's avatar
a.bairuha committed
133
                                            }
Deni Rinaldi's avatar
Deni Rinaldi committed
134
                                        }
Deni Rinaldi's avatar
Deni Rinaldi committed
135 136
                                        return (
                                            <div style={{ display: 'flex' }}>
Deni Rinaldi's avatar
Deni Rinaldi committed
137 138 139
                                                {tableMeta.rowData[3] != null && check > -1 ?
                                                    <a data-tip={tableMeta.rowData[3][check].message} data-for="startdate">
                                                        <span style={{ color: check != null && check > -1 ? "red" : 'black' }}>{val === "" ? "-" : val}</span>
Deni Rinaldi's avatar
Deni Rinaldi committed
140
                                                    </a> :
Deni Rinaldi's avatar
Deni Rinaldi committed
141
                                                    <span style={{ color: check != null && check > -1 ? "red" : 'black' }}>{val === "" ? "-" : val}</span>
Deni Rinaldi's avatar
Deni Rinaldi committed
142
                                                }
Deni Rinaldi's avatar
Deni Rinaldi committed
143 144 145 146 147 148 149 150 151 152 153
                                                <ReactTooltip border={true} id="startdate" place="bottom" type="light" effect="solid" />
                                            </div >
                                        );
                                    }
                                }
                            },
                            {
                                name: "Valid To",
                                options: {
                                    customBodyRender: (val, tableMeta) => {
                                        let check = null
Deni Rinaldi's avatar
Deni Rinaldi committed
154 155
                                        if (tableMeta.rowData[3] != null) {
                                            check = tableMeta.rowData[3].findIndex((val) => val.field.includes('end_date'))
Deni Rinaldi's avatar
Deni Rinaldi committed
156 157
                                            if (check > -1) {
                                                this.setState({ buttonError: true })
a.bairuha's avatar
a.bairuha committed
158 159
                                            }
                                        }
Deni Rinaldi's avatar
Deni Rinaldi committed
160 161
                                        return (
                                            <div style={{ display: 'flex' }}>
Deni Rinaldi's avatar
Deni Rinaldi committed
162 163 164
                                                {tableMeta.rowData[3] != null && check > -1 ?
                                                    <a data-tip={tableMeta.rowData[3][check].message} data-for="enddate">
                                                        <span style={{ color: check != null && check > -1 ? "red" : 'black' }}>{val === "" ? "-" : val}</span>
Deni Rinaldi's avatar
Deni Rinaldi committed
165
                                                    </a> :
Deni Rinaldi's avatar
Deni Rinaldi committed
166
                                                    <span style={{ color: check != null && check > -1 ? "red" : 'black' }}>{val === "" ? "-" : val}</span>
Deni Rinaldi's avatar
Deni Rinaldi committed
167 168 169 170
                                                }
                                                <ReactTooltip border={true} id="enddate" place="bottom" type="light" effect="solid" />
                                            </div >
                                        );
a.bairuha's avatar
a.bairuha committed
171
                                    }
Deni Rinaldi's avatar
Deni Rinaldi committed
172 173 174 175 176 177 178
                                }
                            },
                            {
                                name: "",
                                options: {
                                    display: false
                                }
a.bairuha's avatar
a.bairuha committed
179
                            }
Deni Rinaldi's avatar
Deni Rinaldi committed
180 181 182
                        ]

                        // console.log(dataRow);
183
                        this.setState({
Deni Rinaldi's avatar
Deni Rinaldi committed
184 185 186 187
                            dataLoaded: true,
                            cols: columns,
                            rows: dataRow, visibleUpload: false, 
                            visibleUnitBisnis: false
188
                        });
Deni Rinaldi's avatar
Deni Rinaldi committed
189 190 191 192 193 194 195 196 197
                    } else {
                        this.setState({ alert: true, messageAlert: response.data.message, tipeAlert: 'warning' }, () => {
                            if (response.data.message.includes("Token")) {
                                setTimeout(() => {
                                    localStorage.removeItem(Constant.TOKEN)
                                    window.location.reload();
                                }, 1000);
                            }
                        })
198
                    }
Deni Rinaldi's avatar
Deni Rinaldi committed
199 200 201 202 203 204 205 206
                } else {
                    this.setState({ alert: true, messageAlert: response.data.message, tipeAlert: 'error' })
                }
            } else {
                this.setState({
                    dataLoaded: false,
                    alert: true, messageAlert: response.problem, tipeAlert: 'error'
                });
Deni Rinaldi's avatar
Deni Rinaldi committed
207
            }
Deni Rinaldi's avatar
Deni Rinaldi committed
208
        })
Deni Rinaldi's avatar
Deni Rinaldi committed
209
    }
Deni Rinaldi's avatar
Deni Rinaldi committed
210 211

    componentDidMount() {
212
        this.getData()
Deni Rinaldi's avatar
Deni Rinaldi committed
213 214 215 216 217 218 219 220 221 222 223 224 225
        this.getPermission()
    }

    getPermission() {
        let payload = {
            menu: "business unit"
        }
        api.create().getPermission(payload).then(response => {
            console.log(response)
            if (response.data) {
                if (response.data.status === "success") {
                    this.setState({
                        create: response.data.data.create,
Deni Rinaldi's avatar
Deni Rinaldi committed
226 227 228 229 230 231
                        edit: response.data.data.edit,
                        load: true
                    })
                } else {
                    this.setState({
                        load: true
Deni Rinaldi's avatar
Deni Rinaldi committed
232 233
                    })
                }
a.bairuha's avatar
a.bairuha committed
234 235
            } else {
                this.setState({ load: true })
Deni Rinaldi's avatar
Deni Rinaldi committed
236 237
            }
        })
Deni Rinaldi's avatar
Deni Rinaldi committed
238 239
    }

240 241
    getData() {
        api.create().getUnitBisnis().then((response) => {
Deni Rinaldi's avatar
Deni Rinaldi committed
242
            // console.log(response)
243
            if (response.data) {
a.bairuha's avatar
a.bairuha committed
244 245 246 247 248 249 250 251 252 253 254 255 256 257 258 259 260
                if (response.ok) {
                    if (response.data.status == 'success') {
                        let data = response.data.data
                        let listData = data.sort((a, b) => a.business_unit_id - b.business_unit_id).map((item, index) => {
                            return [index, item.business_unit_id, item.business_unit_name, item.status]
                        })
                        this.setState({ dataTable: listData, listData: response.data.data })
                    } else {
                        this.setState({ alert: true, messageAlert: response.data.message, tipeAlert: 'warning' }, () => {
                            if (response.data.message.includes("Token")) {
                                setTimeout(() => {
                                    localStorage.removeItem(Constant.TOKEN)
                                    window.location.reload();
                                }, 1000);
                            }
                        })
                    }
261
                } else {
Deni Rinaldi's avatar
Deni Rinaldi committed
262
                    this.setState({ alert: true, messageAlert: response.data.message, tipeAlert: 'error' })
263
                }
264
            } else {
a.bairuha's avatar
a.bairuha committed
265
                this.setState({ alert: true, messageAlert: response.problem, tipeAlert: 'error' })
266 267 268 269
            }
        })
    }

270
    openPopUp(rowData, type) {
271 272
        if (type === 'edit') {
            this.setState({
273
                rowData: rowData,
274 275 276 277
                visibleEdit: true
            })
        } else {
            this.setState({
278
                rowData: rowData,
279 280 281
                visibleCreate: true
            })
        }
Deni Rinaldi's avatar
Deni Rinaldi committed
282 283
    }

Deni Rinaldi's avatar
Deni Rinaldi committed
284 285 286 287 288 289 290
    handleInputChange(e) {
        this.setState({ search: e })
        let body = {
            "keyword": e
        }
        api.create().searchUnitBisnis(body).then(response => {
            // console.log(response.data);
291
            if (response.data) {
a.bairuha's avatar
a.bairuha committed
292 293 294 295 296 297 298 299 300 301 302 303 304 305 306 307 308
                if (response.ok) {
                    if (response.data.status == 'success') {
                        let data = response.data.data
                        let listData = data.map((item, index) => {
                            return [index, item.business_unit_id, item.business_unit_name, item.status]
                        })
                        this.setState({ dataTable: listData, listData: response.data.data })
                    } else {
                        this.setState({ alert: true, messageAlert: response.data.message, tipeAlert: 'warning' }, () => {
                            if (response.data.message.includes("Token")) {
                                setTimeout(() => {
                                    localStorage.removeItem(Constant.TOKEN)
                                    window.location.reload();
                                }, 1000);
                            }
                        })
                    }
309
                } else {
Deni Rinaldi's avatar
Deni Rinaldi committed
310
                    this.setState({ alert: true, messageAlert: response.data.message, tipeAlert: 'error' })
311
                }
Deni Rinaldi's avatar
Deni Rinaldi committed
312
            } else {
313
                this.setState({ alert: true, messageAlert: response.problem, tipeAlert: 'error' })
Deni Rinaldi's avatar
Deni Rinaldi committed
314
            }
Deni Rinaldi's avatar
Deni Rinaldi committed
315
        })
Deni Rinaldi's avatar
Deni Rinaldi committed
316
    }
Deni Rinaldi's avatar
Deni Rinaldi committed
317

Deni Rinaldi's avatar
Deni Rinaldi committed
318 319 320
    updateUnitBisnis = (payload) => {
        this.setState({ visibleEdit: false })
        api.create().updateUnitBisnis(payload).then(response => {
321
            if (response.data) {
a.bairuha's avatar
a.bairuha committed
322 323 324 325 326 327 328 329 330 331 332 333 334 335
                if (response.ok) {
                    if (response.data.status == 'success') {
                        this.getData()
                        this.setState({ alert: true, messageAlert: response.data.message, tipeAlert: 'success' })
                    } else {
                        this.setState({ alert: true, messageAlert: response.data.message, tipeAlert: 'warning' }, () => {
                            if (response.data.message.includes("Token")) {
                                setTimeout(() => {
                                    localStorage.removeItem(Constant.TOKEN)
                                    window.location.reload();
                                }, 1000);
                            }
                        })
                    }
336
                } else {
Deni Rinaldi's avatar
Deni Rinaldi committed
337
                    this.setState({ alert: true, messageAlert: response.data.message, tipeAlert: 'error' })
338
                }
Deni Rinaldi's avatar
Deni Rinaldi committed
339
            } else {
340
                this.setState({ alert: true, messageAlert: response.problem, tipeAlert: 'error' })
Deni Rinaldi's avatar
Deni Rinaldi committed
341
            }
342

Deni Rinaldi's avatar
Deni Rinaldi committed
343
        })
Deni Rinaldi's avatar
Deni Rinaldi committed
344 345
    }

Deni Rinaldi's avatar
Deni Rinaldi committed
346 347 348
    createUnitBisnis = (payload) => {
        this.setState({ visibleCreate: false })
        api.create().createUnitBisnis(payload).then(response => {
349
            if (response.data) {
a.bairuha's avatar
a.bairuha committed
350 351 352 353 354 355 356 357 358 359 360 361 362 363
                if (response.ok) {
                    if (response.data.status == 'success') {
                        this.getData()
                        this.setState({ alert: true, messageAlert: response.data.message, tipeAlert: 'success' })
                    } else {
                        this.setState({ alert: true, messageAlert: response.data.message, tipeAlert: 'warning' }, () => {
                            if (response.data.message.includes("Token")) {
                                setTimeout(() => {
                                    localStorage.removeItem(Constant.TOKEN)
                                    window.location.reload();
                                }, 1000);
                            }
                        })
                    }
364
                } else {
Deni Rinaldi's avatar
Deni Rinaldi committed
365
                    this.setState({ alert: true, messageAlert: response.data.message, tipeAlert: 'error' })
366
                }
Deni Rinaldi's avatar
Deni Rinaldi committed
367
            } else {
368
                this.setState({ alert: true, messageAlert: response.problem, tipeAlert: 'error' })
Deni Rinaldi's avatar
Deni Rinaldi committed
369 370
            }
        })
371
    }
Deni Rinaldi's avatar
Deni Rinaldi committed
372

Deni Rinaldi's avatar
Deni Rinaldi committed
373 374
    downloadFile = async () => {
        let res = await fetch(
Deni Rinaldi's avatar
Deni Rinaldi committed
375
            "https://tia.eksad.com/tia-reporting-dev/public/attachment/download_file?fileName=BusinessUnitTemplate&&fileType=xlsx"
Deni Rinaldi's avatar
Deni Rinaldi committed
376 377 378 379 380 381 382 383 384 385 386 387
        )
        res = await res.blob()
        console.log(res)
        if (res.size > 0) {
            let url = window.URL.createObjectURL(res);
            let a = document.createElement('a');
            a.href = url;
            a.download = 'Template Business Unit.xlsx';
            a.click();
        }
    }

Deni Rinaldi's avatar
Deni Rinaldi committed
388 389
    downloadDataTable = async () => {
        let res = await fetch(
Deni Rinaldi's avatar
Deni Rinaldi committed
390
            "https://tia.eksad.com/tia-reporting-dev/public/business_unit/export_business_unit"
Deni Rinaldi's avatar
Deni Rinaldi committed
391 392 393 394 395 396 397 398 399 400 401 402
        )
        res = await res.blob()
        console.log(res)
        if (res.size > 0) {
            let url = window.URL.createObjectURL(res);
            let a = document.createElement('a');
            a.href = url;
            a.download = 'Business Unit.xlsx';
            a.click();
        }
    }

403 404 405
    uploadUnitBisnis() {
        api.create().uploadUnitBisnis(this.state.payload).then(response => {
            console.log(response)
Deni Rinaldi's avatar
Deni Rinaldi committed
406
            if (response.data) {
a.bairuha's avatar
a.bairuha committed
407 408 409 410 411 412 413 414 415 416 417 418 419 420
                if (response.ok) {
                    if (response.data.status === "success") {
                        this.getData()
                        this.setState({ visibleUnitBisnis: true, alert: true, messageAlert: response.data.message, tipeAlert: 'success' })
                    } else {
                        this.setState({ alert: true, messageAlert: response.data.message, tipeAlert: 'warning' }, () => {
                            if (response.data.message.includes("Token")) {
                                setTimeout(() => {
                                    localStorage.removeItem(Constant.TOKEN)
                                    window.location.reload();
                                }, 1000);
                            }
                        })
                    }
Deni Rinaldi's avatar
Deni Rinaldi committed
421
                } else {
Deni Rinaldi's avatar
Deni Rinaldi committed
422
                    this.setState({ alert: true, messageAlert: response.data.message, tipeAlert: 'error' })
Deni Rinaldi's avatar
Deni Rinaldi committed
423
                }
424 425
            } else {
                this.setState({ alert: true, messageAlert: response.problem, tipeAlert: 'error' })
426
            }
427 428
        })
    }
Deni Rinaldi's avatar
Deni Rinaldi committed
429

Deni Rinaldi's avatar
Deni Rinaldi committed
430 431 432 433
    closeAlert() {
        this.setState({ alert: false })
    }

434
    render() {
Deni Rinaldi's avatar
Deni Rinaldi committed
435
        const columns = [{
Deni Rinaldi's avatar
Deni Rinaldi committed
436 437
            name: "Action",
            options: {
Deni Rinaldi's avatar
Deni Rinaldi committed
438
                filter: false,
Deni Rinaldi's avatar
Deni Rinaldi committed
439
                sort: false,
Deni Rinaldi's avatar
Deni Rinaldi committed
440 441 442
                customBodyRender: (val, tableMeta) => {
                    return (
                        <div style={{ display: 'flex' }}>
Deni Rinaldi's avatar
Deni Rinaldi committed
443 444 445 446 447 448 449 450 451 452 453 454 455
                            {this.state.edit && (
                                <button
                                    style={{
                                        backgroundColor: 'transparent',
                                        cursor: 'pointer',
                                        borderColor: 'transparent',
                                    }}
                                    // onClick={() => console.log(tableMeta)}
                                    onClick={() => this.openPopUp(tableMeta.rowData, 'edit')}
                                >
                                    <img src={Images.editCopy} />
                                </button>
                            )}
Deni Rinaldi's avatar
Deni Rinaldi committed
456 457 458 459
                        </div >
                    );
                }
            }
Deni Rinaldi's avatar
Deni Rinaldi committed
460 461 462 463 464 465
        }, {
            name: "ID",
            options: {
                customBodyRender: (val, tableMeta) => {
                    return (
                        <div style={{ display: 'flex' }}>
Deni Rinaldi's avatar
Deni Rinaldi committed
466
                            <span style={{ color: tableMeta.rowData[3] === "Active" ? "#656565" : 'rgba(0, 0, 0, 0.25)' }}>{val}</span>
Deni Rinaldi's avatar
Deni Rinaldi committed
467 468 469 470 471
                        </div >
                    );
                }
            }
        }, {
472
            name: "Business Unit",
Deni Rinaldi's avatar
Deni Rinaldi committed
473 474 475 476
            options: {
                customBodyRender: (val, tableMeta) => {
                    return (
                        <div style={{ display: 'flex' }}>
Deni Rinaldi's avatar
Deni Rinaldi committed
477
                            <span style={{ color: tableMeta.rowData[3] === "Active" ? "#656565" : 'rgba(0, 0, 0, 0.25)' }}>{val}</span>
Deni Rinaldi's avatar
Deni Rinaldi committed
478 479 480 481 482 483 484 485 486 487
                        </div >
                    );
                }
            }
        }, {
            name: "Status",
            options: {
                customBodyRender: (val, tableMeta) => {
                    return (
                        <div style={{ display: 'flex' }}>
Deni Rinaldi's avatar
Deni Rinaldi committed
488
                            <span style={{ color: tableMeta.rowData[3] === "Active" ? "#656565" : 'rgba(0, 0, 0, 0.25)' }}>{val}</span>
Deni Rinaldi's avatar
Deni Rinaldi committed
489 490 491 492
                        </div >
                    );
                }
            }
Deni Rinaldi's avatar
Deni Rinaldi committed
493 494
        }]
        const data = [
Deni Rinaldi's avatar
Deni Rinaldi committed
495 496 497 498 499
            ["", "1", "Agribisnis", "Aktif"],
            ["", "2", "Manufacturing", "Aktif"],
            ["", "3", "Trading", "Aktif"],
            ["", "4", "Service", "Non Aktif"],
            ["", "-", "-", "-"],
Deni Rinaldi's avatar
Deni Rinaldi committed
500 501
        ]
        return (
Deni Rinaldi's avatar
Deni Rinaldi committed
502
            <div style={{ height: this.props.height }}>
Deni Rinaldi's avatar
Deni Rinaldi committed
503
                {/* <Row> */}
Deni Rinaldi's avatar
Deni Rinaldi committed
504
                <div style={{ height: 195, width: '100%' }} className={"main-color"} />
Deni Rinaldi's avatar
Deni Rinaldi committed
505 506 507 508 509
                <Snackbar open={this.state.alert} autoHideDuration={6000} onClose={() => this.closeAlert()}>
                    <Alert onClose={() => this.closeAlert()} severity={this.state.tipeAlert}>
                        {this.state.messageAlert}
                    </Alert>
                </Snackbar>
Deni Rinaldi's avatar
Deni Rinaldi committed
510
                {this.state.visibleUnitBisnis === true ?
Deni Rinaldi's avatar
Deni Rinaldi committed
511 512
                    this.state.load && (
                        <div>
Deni Rinaldi's avatar
Deni Rinaldi committed
513 514
                            <div style={{ display: 'flex', flexDirection: 'row', justifyContent: 'space-between', paddingRight: 25, paddingLeft: 25, marginTop: -182 }}>
                                <label style={{ color: 'white', fontSize: 16, alignSelf: 'center', width: '50%', }}>Master Data - Business Unit</label>
Deni Rinaldi's avatar
Deni Rinaldi committed
515
                                {/* <div style={{ color: 'white', width: '50%', height: 37, display: 'flex', backgroundColor: 'white', borderWidth: 2, alignItems: 'center', borderRadius: 6, paddingLeft: 5, paddingRight: 5, alignSelf: 'center' }}>
Deni Rinaldi's avatar
Deni Rinaldi committed
516 517 518 519 520 521 522 523
                                    <img src={Images.searchBlack} style={{ marginRight: 10 }} />
                                    <InputBase
                                        style={{ width: '100%' }}
                                        placeholder="Search"
                                        value={this.state.search}
                                        onChange={(e) => this.handleInputChange(e.target.value)}
                                        inputProps={{ 'aria-label': 'naked' }}
                                    />
Deni Rinaldi's avatar
Deni Rinaldi committed
524
                                </div> */}
Deni Rinaldi's avatar
Deni Rinaldi committed
525
                                <div style={{ width: '50%', justifyContent: 'flex-end', display: 'flex', flexFlow: 'wrap' }}>
Deni Rinaldi's avatar
Deni Rinaldi committed
526
                                    <a data-tip={'Download Template'} data-for="template">
Deni Rinaldi's avatar
Deni Rinaldi committed
527 528 529 530 531 532 533
                                        <button
                                            style={{
                                                backgroundColor: 'transparent',
                                                cursor: 'pointer',
                                                borderColor: 'transparent',
                                                margin: 5
                                            }}
Deni Rinaldi's avatar
Deni Rinaldi committed
534
                                            onClick={() => this.downloadFile()}
Deni Rinaldi's avatar
Deni Rinaldi committed
535
                                        >
Deni Rinaldi's avatar
Deni Rinaldi committed
536
                                            <img src={Images.template} />
Deni Rinaldi's avatar
Deni Rinaldi committed
537 538
                                        </button>
                                    </a>
Deni Rinaldi's avatar
Deni Rinaldi committed
539 540 541 542 543 544 545 546 547 548 549 550 551 552 553 554 555 556
                                    <ReactTooltip border={true} id="template" place="bottom" type="light" effect="solid" />
                                    {this.state.create && (
                                        <a data-tip={'Upload'} data-for="upload">
                                            <button
                                                style={{
                                                    backgroundColor: 'transparent',
                                                    cursor: 'pointer',
                                                    borderColor: 'transparent',
                                                    margin: 5
                                                }}
                                                onClick={() => this.setState({ visibleUpload: true })}
                                            >
                                                <img src={Images.upload} />
                                            </button>
                                        </a>
                                    )}
                                    <ReactTooltip border={true} id="upload" place="bottom" type="light" effect="solid" />
                                    <a data-tip={'Download'} data-for="download">
Deni Rinaldi's avatar
Deni Rinaldi committed
557 558 559 560 561 562 563
                                        <button
                                            style={{
                                                backgroundColor: 'transparent',
                                                cursor: 'pointer',
                                                borderColor: 'transparent',
                                                margin: 5
                                            }}
Deni Rinaldi's avatar
Deni Rinaldi committed
564
                                            onClick={() => this.downloadDataTable()}
Deni Rinaldi's avatar
Deni Rinaldi committed
565
                                        >
Deni Rinaldi's avatar
Deni Rinaldi committed
566
                                            <img src={Images.download} />
Deni Rinaldi's avatar
Deni Rinaldi committed
567 568
                                        </button>
                                    </a>
Deni Rinaldi's avatar
Deni Rinaldi committed
569 570 571 572 573 574 575 576 577 578 579 580 581 582 583 584 585 586 587
                                    <ReactTooltip border={true} id="download" place="bottom" type="light" effect="solid" />
                                    {this.state.create && (
                                        <a data-tip={'Add New'} data-for="create">
                                            <button
                                                style={{
                                                    backgroundColor: 'transparent',
                                                    cursor: 'pointer',
                                                    borderColor: 'transparent',
                                                    margin: 5,
                                                    marginRight: 20
                                                }}
                                                onClick={() => this.setState({ visibleCreate: true })}
                                            >
                                                <img src={Images.add} />
                                            </button>
                                        </a>
                                    )}
                                    <ReactTooltip border={true} id="create" place="bottom" type="light" effect="solid" />
                                </div>
Deni Rinaldi's avatar
Deni Rinaldi committed
588
                            </div>
Deni Rinaldi's avatar
Deni Rinaldi committed
589 590 591 592 593 594 595 596 597 598
                            <div style={{ padding: 25 }}>
                                <MuiThemeProvider theme={getMuiTheme()}>
                                    <MUIDataTable
                                        theme={getMuiTheme()}
                                        data={this.state.dataTable}
                                        columns={columns}
                                        options={options}
                                    />
                                </MuiThemeProvider>
                            </div>
Deni Rinaldi's avatar
Deni Rinaldi committed
599
                        </div>
Deni Rinaldi's avatar
Deni Rinaldi committed
600
                    )
Deni Rinaldi's avatar
Deni Rinaldi committed
601 602 603 604 605 606 607 608 609 610 611 612
                    :
                    <div>
                        <div style={{ display: 'flex', flexDirection: 'row', justifyContent: 'space-between', paddingRight: 25, paddingLeft: 25, marginTop: -150 }}>
                            <label style={{ color: 'white', fontSize: 16, alignSelf: 'center' }}>Preview Data</label>
                        </div>
                        <div style={{ padding: 25 }}>
                            {this.state.dataLoaded && (
                                <MuiThemeProvider theme={getMuiTheme()}>
                                    <MUIDataTable
                                        theme={getMuiTheme()}
                                        data={this.state.rows}
                                        columns={this.state.cols}
Deni Rinaldi's avatar
Deni Rinaldi committed
613
                                        options={options}
Deni Rinaldi's avatar
Deni Rinaldi committed
614 615 616 617 618
                                    />
                                </MuiThemeProvider>
                            )}
                        </div>
                        <div style={{ display: 'flex', width: '100%', placeContent: 'flex-end', padding: 20 }}>
Deni Rinaldi's avatar
Deni Rinaldi committed
619
                            <button
Deni Rinaldi's avatar
Deni Rinaldi committed
620 621
                                type="button"
                                onClick={() => this.setState({ visibleUnitBisnis: true })}
Deni Rinaldi's avatar
Deni Rinaldi committed
622
                                style={{ marginRight: 20 }}
Deni Rinaldi's avatar
Deni Rinaldi committed
623
                            >
Deni Rinaldi's avatar
Deni Rinaldi committed
624
                                <div style={{ width: 102, height: 30, border: 'solid 1px #354960', borderRadius: 5, alignItems: 'center', display: 'flex', justifyContent: 'center' }}>
Deni Rinaldi's avatar
Deni Rinaldi committed
625
                                    <span style={{ color: '#354960', fontSize: 11 }}>Cancel</span>
Deni Rinaldi's avatar
Deni Rinaldi committed
626
                                </div>
Deni Rinaldi's avatar
Deni Rinaldi committed
627
                            </button>
Deni Rinaldi's avatar
Deni Rinaldi committed
628 629
                            <button
                                type="button"
Deni Rinaldi's avatar
Deni Rinaldi committed
630 631
                                disabled={this.state.buttonError == true ? true : false}
                                onClick={() => this.uploadUnitBisnis()}
Deni Rinaldi's avatar
Deni Rinaldi committed
632 633 634
                                style={{}}
                            >
                                <div style={{ width: 102, height: 30, backgroundColor: '#354960', borderRadius: 5, alignItems: 'center', display: 'flex', justifyContent: 'center' }}>
Deni Rinaldi's avatar
Deni Rinaldi committed
635
                                    <span style={{ color: '#fff', fontSize: 11 }}>Save</span>
Deni Rinaldi's avatar
Deni Rinaldi committed
636 637
                                </div>
                            </button>
Deni Rinaldi's avatar
Deni Rinaldi committed
638 639
                        </div>
                    </div>
Deni Rinaldi's avatar
Deni Rinaldi committed
640
                }
Deni Rinaldi's avatar
Deni Rinaldi committed
641 642 643 644

                {this.state.visibleCreate && (
                    <CreateUnitBisnis
                        onClickClose={() => this.setState({ visibleCreate: false })}
Deni Rinaldi's avatar
Deni Rinaldi committed
645 646
                        type={"create"}
                        createUnitBisnis={this.createUnitBisnis.bind(this)}
Deni Rinaldi's avatar
Deni Rinaldi committed
647 648
                    />
                )}
Deni Rinaldi's avatar
Deni Rinaldi committed
649 650 651 652 653

                {this.state.visibleEdit && (
                    <CreateUnitBisnis
                        type={"edit"}
                        onClickClose={() => this.setState({ visibleEdit: false })}
654
                        data={this.state.rowData}
Deni Rinaldi's avatar
Deni Rinaldi committed
655
                        updateUnitBisnis={this.updateUnitBisnis.bind(this)}
Deni Rinaldi's avatar
Deni Rinaldi committed
656 657
                    />
                )}
Deni Rinaldi's avatar
Deni Rinaldi committed
658
                {this.state.popupError && (
659
                    <PopUpFailedSave onClickClose={() => this.setState({ popupError: false })} />
Deni Rinaldi's avatar
Deni Rinaldi committed
660 661
                )}

662 663 664
                {this.state.visibleUpload && (
                    <div className="test app-popup-show">
                        <div className="popup-content background-white border-radius" style={{ borderRadius: 8 }}>
Deni Rinaldi's avatar
Deni Rinaldi committed
665
                            <div className="popup-panel grid grid-2x main-color" style={{ height: 64, borderTopRightRadius: 8, borderTopLeftRadius: 8 }}>
666 667 668 669 670 671 672 673 674 675 676
                                <div className="col-1" style={{ maxWidth: "inherit", display: 'flex', alignItems: 'center' }}>
                                    <div className="popup-title">
                                        <span style={{ color: '#fff', fontSize: 16, fontWeight: 'bold' }}>Upload File</span>
                                    </div>
                                </div>
                                <div className="col-2 content-right" style={{ maxWidth: "inherit", alignSelf: 'center' }}>
                                    <button
                                        type="button"
                                        className="btn btn-circle btn-white"
                                        onClick={() => this.setState({ visibleUpload: false })}
                                    >
677
                                        <img src={Images.close} />
678 679 680 681 682 683 684
                                    </button>
                                </div>
                            </div>
                            <UploadFile
                                type={this.state.uploadStatus}
                                percentage={this.state.percentage}
                                result={this.state.result}
685
                                acceptedFiles={["xlsx"]}
686 687 688 689
                                onHandle={(dt) => {
                                    this.fileHandler(dt)
                                    this.setState({ uploadStatus: 'idle', percentage: '0' })
                                }}
Deni Rinaldi's avatar
Deni Rinaldi committed
690 691
                                onUpload={() => {
                                    this.state.judul === "MASTER DATA - BUSINESS UNIT" ?
Deni Rinaldi's avatar
Deni Rinaldi committed
692 693
                                        this.checkUpload() :
                                        this.setState({ alert: true, messageAlert: "Invalid Template", tipeAlert: 'warning' })
Deni Rinaldi's avatar
Deni Rinaldi committed
694
                                }}
695 696 697 698
                            />
                        </div>
                    </div>
                )}
Deni Rinaldi's avatar
Deni Rinaldi committed
699 700 701 702 703 704 705 706

                {/* {this.state.visibleLoad && (
                    <div className="test app-popup-show">
                        <div className="popup-content" style={{ textAlign: 'center'}}>
                            <img src={Images.triputraLogo} style={{ height: 100, width: 100}}/>
                        </div>
                    </div>
                )} */}
Deni Rinaldi's avatar
Deni Rinaldi committed
707
            </div>
Deni Rinaldi's avatar
Deni Rinaldi committed
708 709 710
        );
    }
}