EditRole.js 39.4 KB
Newer Older
d.arizona's avatar
d.arizona committed
1
import React, { Component } from 'react';
a.bairuha's avatar
a.bairuha committed
2
import { TextField, Divider, Typography, Checkbox, withStyles, Collapse, Snackbar } from '@material-ui/core';
d.arizona's avatar
d.arizona committed
3
import api from '../../../api';
d.arizona's avatar
d.arizona committed
4 5
import AddIcon from '@material-ui/icons/Add';
import RemoveIcon from '@material-ui/icons/Remove';
d.arizona's avatar
d.arizona committed
6
import { DatePicker } from "@material-ui/pickers";
d.arizona's avatar
d.arizona committed
7
import format from "date-fns/format";
d.arizona's avatar
d.arizona committed
8
import * as R from 'ramda'
d.arizona's avatar
d.arizona committed
9
import Images from '../../../assets/Images';
a.bairuha's avatar
a.bairuha committed
10 11
import MuiAlert from '@material-ui/lab/Alert';

d.arizona's avatar
d.arizona committed
12 13 14
const CustomCheckbox = withStyles({
    root: {
        color: '#51c6ea',
Deni Rinaldi's avatar
Deni Rinaldi committed
15 16 17 18
        '&$checked': {
            color: '#51c6ea',
        },
        padding: 5
d.arizona's avatar
d.arizona committed
19 20
    },
    checked: {},
Deni Rinaldi's avatar
Deni Rinaldi committed
21
})((props) => <Checkbox color="default" {...props} />);
d.arizona's avatar
d.arizona committed
22

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

d.arizona's avatar
d.arizona committed
26
export default class EditRole extends Component {
Deni Rinaldi's avatar
Deni Rinaldi committed
27

d.arizona's avatar
d.arizona committed
28 29 30 31 32 33 34
    constructor(props) {
        super(props)
        this.state = {
            paramsId: this.props.data,
            tempData: null,
            menuData: null,
            privileges: [],
d.arizona's avatar
d.arizona committed
35 36
            checked: false,
            selectedIndex: 0,
d.arizona's avatar
d.arizona committed
37 38 39 40 41 42 43
            date: new Date(),
            errorRoleName: false,
            errorStartDate: false,
            errorEndDate: false,
            msgErrorRN: '',
            msgErrorSD: '',
            msgErrorED: '',
Deni Rinaldi's avatar
Deni Rinaldi committed
44 45
            application: [],
            setting: [],
a.bairuha's avatar
a.bairuha committed
46 47 48
            alert: false,
            tipeAlert: '',
            messageAlert: ''
d.arizona's avatar
d.arizona committed
49 50 51 52
        }
    }

    handleChecked() {
Deni Rinaldi's avatar
Deni Rinaldi committed
53
        this.setState({ checked: !this.state.checked })
d.arizona's avatar
d.arizona committed
54
    }
Deni Rinaldi's avatar
Deni Rinaldi committed
55

d.arizona's avatar
d.arizona committed
56 57 58 59 60
    componentDidMount() {
        this.getDetailRole()
        this.getMenu()
    }

d.arizona's avatar
d.arizona committed
61
    handleChange(e, type) {
d.arizona's avatar
d.arizona committed
62
        let data = this.state
Deni Rinaldi's avatar
Deni Rinaldi committed
63
        let isDate = type !== '' ? true : false
d.arizona's avatar
d.arizona committed
64
        if (isDate && type === 'start_date') {
Deni Rinaldi's avatar
Deni Rinaldi committed
65 66
            this.setState({
                ...data, tempData: { ...this.state.tempData, start_date: format(e, 'yyyy-MM-dd'), end_date: null },
d.arizona's avatar
d.arizona committed
67 68 69 70 71 72
                errorRoleName: false,
                errorStartDate: false,
                errorEndDate: false,
                msgErrorRN: '',
                msgErrorSD: '',
                msgErrorED: '',
d.arizona's avatar
d.arizona committed
73
            })
d.arizona's avatar
d.arizona committed
74
        } else if (isDate && type === 'end_date') {
Deni Rinaldi's avatar
Deni Rinaldi committed
75 76
            this.setState({
                ...data, tempData: { ...this.state.tempData, end_date: format(e, 'yyyy-MM-dd') },
d.arizona's avatar
d.arizona committed
77 78 79 80 81 82
                errorRoleName: false,
                errorStartDate: false,
                errorEndDate: false,
                msgErrorRN: '',
                msgErrorSD: '',
                msgErrorED: '',
d.arizona's avatar
d.arizona committed
83 84
            })
        } else {
Deni Rinaldi's avatar
Deni Rinaldi committed
85 86
            this.setState({
                ...data, tempData: { ...this.state.tempData, [e.target.name]: e.target.value },
d.arizona's avatar
d.arizona committed
87 88 89 90 91
                errorRoleName: false,
                errorStartDate: false,
                errorEndDate: false,
                msgErrorRN: '',
                msgErrorSD: '',
Deni Rinaldi's avatar
Deni Rinaldi committed
92
                msgErrorED: '',
d.arizona's avatar
d.arizona committed
93
            })
d.arizona's avatar
d.arizona committed
94
        }
Deni Rinaldi's avatar
Deni Rinaldi committed
95

d.arizona's avatar
d.arizona committed
96 97 98 99
    }

    getDetailRole() {
        api.create().getDetailRole(this.state.paramsId).then((response) => {
a.bairuha's avatar
a.bairuha committed
100 101 102 103 104 105 106 107 108 109 110
            if (response.data) {
                if (response.ok) {
                    if (response.data.status === 'success') {
                        this.setState({ tempData: response.data.data, privileges: response.data.data.privileges })
                        console.log(response.data.data.start_date)
                    } else {
                        this.setState({ alert: true, messageAlert: response.data.message, tipeAlert: 'warning' })
                    }
                } else {
                    this.setState({ alert: true, messageAlert: response.data.message, tipeAlert: 'error' })
                }
d.arizona's avatar
d.arizona committed
111
            } else {
a.bairuha's avatar
a.bairuha committed
112
                this.setState({ alert: true, messageAlert: response.problem, tipeAlert: 'error' })
d.arizona's avatar
d.arizona committed
113 114 115 116
            }
        })
    }

d.arizona's avatar
d.arizona committed
117 118
    validasi() {
        if (R.isEmpty(this.state.tempData.role_name)) {
d.arizona's avatar
d.arizona committed
119
            this.setState({ errorRoleName: true, msgErrorRN: 'Role Name is Required' })
d.arizona's avatar
d.arizona committed
120
        } else if (R.isNil(this.state.tempData.start_date)) {
d.arizona's avatar
d.arizona committed
121
            this.setState({ errorStartDate: true, msgErrorSD: 'Start Date is Required' })
d.arizona's avatar
d.arizona committed
122
        } else if (R.isNil(this.state.tempData.end_date)) {
d.arizona's avatar
d.arizona committed
123
            this.setState({ errorEndDate: true, msgErrorED: 'End Date is Required' })
Deni Rinaldi's avatar
Deni Rinaldi committed
124
        } else if (this.state.privileges.length < 1) {
d.arizona's avatar
d.arizona committed
125
            this.setState({ alert: true, messageAlert: 'You must choose the Access Rights', tipeAlert: 'warning' })
d.arizona's avatar
d.arizona committed
126 127 128 129
        } else {
            this.updateRole()
        }
    }
d.arizona's avatar
d.arizona committed
130 131

    updateRole() {
d.arizona's avatar
d.arizona committed
132 133
        // let startDate = format(this.state.tempData.start_date, 'yyyy-MM-dd')
        // let endDate = format(this.state.tempData.end_date, 'yyyy-MM-dd')
d.arizona's avatar
d.arizona committed
134 135 136 137 138 139 140 141 142 143 144 145 146
        let privileges = this.state.privileges
        privileges.push({
            menu_id: 23,
            button_id: [1,2,3]
        })
        privileges.push({
            menu_id: 24,
            button_id: [1,2,3]
        })
        privileges.push({
            menu_id: 25,
            button_id: [1,2,3]
        })
d.arizona's avatar
d.arizona committed
147
        let payload = {
d.arizona's avatar
d.arizona committed
148 149 150 151
            "role_id": this.state.tempData.role_id,
            "role_name": this.state.tempData.role_name,
            "start_date": this.state.tempData.start_date,
            "end_date": this.state.tempData.end_date,
d.arizona's avatar
d.arizona committed
152
            "privileges": privileges
d.arizona's avatar
d.arizona committed
153
        }
d.arizona's avatar
d.arizona committed
154 155 156
        // console.log(payload)
        api.create().editRole(payload).then((response) => {
            console.log(response)
a.bairuha's avatar
a.bairuha committed
157 158 159 160 161 162 163 164 165 166 167 168
            if (response.data) {
                if (response.ok) {
                    if (response.data.status === 'success') {
                        this.setState({ alert: true, messageAlert: response.data.message, tipeAlert: 'success' })
                        this.props.refresh()
                        this.props.onClickClose()
                    } else {
                        this.setState({ alert: true, messageAlert: response.data.message, tipeAlert: 'warning' })
                    }
                } else {
                    this.setState({ alert: true, messageAlert: response.data.message, tipeAlert: 'error' })
                }
d.arizona's avatar
d.arizona committed
169
            } else {
a.bairuha's avatar
a.bairuha committed
170
                this.setState({ alert: true, messageAlert: response.problem, tipeAlert: 'error' })
d.arizona's avatar
d.arizona committed
171 172
            }
        })
d.arizona's avatar
d.arizona committed
173 174
    }

Deni Rinaldi's avatar
Deni Rinaldi committed
175 176 177 178 179 180 181
    parseChildren(val) {
        let data = Object.assign([], val)
        data = data.sort((a, b) => a.menu_id - b.menu_id).map((i) => {
            return {
                menu_id: i.menu_id,
                label: i.menu_name,
                sub_menu: this.parseChildren(i.sub_menu),
d.arizona's avatar
d.arizona committed
182 183
                collapse: false,
                reference: i.reference
Deni Rinaldi's avatar
Deni Rinaldi committed
184 185 186 187 188
            }
        })
        return data
    }

d.arizona's avatar
d.arizona committed
189 190
    getMenu() {
        api.create().getMenu().then((response) => {
a.bairuha's avatar
a.bairuha committed
191 192 193 194 195 196 197 198 199 200 201 202 203 204 205 206 207
            if (response.data) {
                if (response.ok) {
                    if (response.data.status === 'success') {
                        let app = null
                        let set = null
                        response.data.data.map((item) => {
                            if (item.menu_name === "Application") {
                                app = this.parseChildren(item.sub_menu)
                                return app
                            } else {
                                set = this.parseChildren(item.sub_menu)
                                return set
                            }
                        })
                        console.log(app)
                        this.setState({ application: app, setting: set, isLoad: true }, () => console.log(this.state.application))
                        // this.setState({ menuData: response.data.data })
Deni Rinaldi's avatar
Deni Rinaldi committed
208
                    } else {
a.bairuha's avatar
a.bairuha committed
209
                        this.setState({ alert: true, messageAlert: response.data.message, tipeAlert: 'warning' })
Deni Rinaldi's avatar
Deni Rinaldi committed
210
                    }
a.bairuha's avatar
a.bairuha committed
211 212 213
                } else {
                    this.setState({ alert: true, messageAlert: response.data.message, tipeAlert: 'error' })
                }
d.arizona's avatar
d.arizona committed
214
            } else {
a.bairuha's avatar
a.bairuha committed
215
                this.setState({ alert: true, messageAlert: response.problem, tipeAlert: 'error' })
d.arizona's avatar
d.arizona committed
216 217 218 219 220
            }
        })
    }

    handleItemChecked(item) {
d.arizona's avatar
d.arizona committed
221 222
        let indexID = this.state.privileges.findIndex((val) => val.menu_id === item.menu_id)
        return indexID === -1 ? false : true
d.arizona's avatar
d.arizona committed
223 224 225
    }

    handleItemClick(item) {
d.arizona's avatar
d.arizona committed
226
        let indexID = this.state.privileges.findIndex((val) => val.menu_id === item.menu_id)
d.arizona's avatar
d.arizona committed
227
        console.log(item)
d.arizona's avatar
d.arizona committed
228
        let privileges = this.state.privileges
d.arizona's avatar
d.arizona committed
229
        if (indexID === -1) {
d.arizona's avatar
d.arizona committed
230 231
            privileges.push({
                menu_id: item.menu_id,
Deni Rinaldi's avatar
Deni Rinaldi committed
232
                button_id: [1, 2, 3]
d.arizona's avatar
d.arizona committed
233
            })
d.arizona's avatar
d.arizona committed
234 235 236 237 238 239 240 241 242 243 244
            if (item.sub_menu.length > 0) {
                item.sub_menu.map((items,indexs) => {
                let indexIDs = this.state.privileges.findIndex((val) => val.menu_id === items.menu_id)
                if (indexIDs === -1) {
                    privileges.push({
                        menu_id: items.menu_id,
                        button_id: [1,2,3]
                    })
                }
                })
            }
d.arizona's avatar
d.arizona committed
245
        } else {
Deni Rinaldi's avatar
Deni Rinaldi committed
246
            privileges.splice(indexID, 1)
d.arizona's avatar
d.arizona committed
247 248 249 250 251 252
            if (item.sub_menu.length > 0) {
                item.sub_menu.map((items,indexs) => {
                    let indexIDs = this.state.privileges.findIndex((val) => val.menu_id === items.menu_id)
                    privileges.splice(indexIDs, 1)
                })
            }
d.arizona's avatar
d.arizona committed
253
        }
Deni Rinaldi's avatar
Deni Rinaldi committed
254
        this.setState({ privileges })
d.arizona's avatar
d.arizona committed
255 256 257
    }

    handleSubItemChecked(item, index) {
d.arizona's avatar
d.arizona committed
258
        let indexID = this.state.privileges.findIndex((val) => val.menu_id === item.menu_id)
d.arizona's avatar
d.arizona committed
259
        let value = false
d.arizona's avatar
d.arizona committed
260
        if (indexID === -1) {
d.arizona's avatar
d.arizona committed
261 262
            value = false
        } else {
d.arizona's avatar
d.arizona committed
263 264
            let indexButtonID = this.state.privileges[indexID].button_id.findIndex((val) => val === index)
            if (indexButtonID === -1) {
d.arizona's avatar
d.arizona committed
265 266 267 268 269
                value = false
            } else {
                value = true
            }
        }
d.arizona's avatar
d.arizona committed
270
        return indexID === -1 ? value : value
d.arizona's avatar
d.arizona committed
271 272 273
    }

    handleSubItemClick(item, index) {
d.arizona's avatar
d.arizona committed
274 275
        let indexID = this.state.privileges.findIndex((val) => val.menu_id === item.menu_id)
        let indexButtonID = this.state.privileges[indexID].button_id.findIndex((val) => val === index)
d.arizona's avatar
d.arizona committed
276 277
        let privileges = this.state.privileges
        let button_id = privileges[indexID].button_id
d.arizona's avatar
d.arizona committed
278
        if (indexButtonID === -1) {
d.arizona's avatar
d.arizona committed
279 280
            button_id.push(index)
        } else {
Deni Rinaldi's avatar
Deni Rinaldi committed
281
            button_id.splice(indexButtonID, 1)
d.arizona's avatar
d.arizona committed
282 283
        }
        privileges[indexID].button_id = button_id
d.arizona's avatar
d.arizona committed
284
        if (button_id.length === 0) {
Deni Rinaldi's avatar
Deni Rinaldi committed
285
            privileges.splice(indexID, 1)
d.arizona's avatar
d.arizona committed
286
        }
Deni Rinaldi's avatar
Deni Rinaldi committed
287
        this.setState({ privileges })
d.arizona's avatar
d.arizona committed
288
    }
d.arizona's avatar
d.arizona committed
289

Deni Rinaldi's avatar
Deni Rinaldi committed
290 291 292 293 294 295 296 297 298 299 300 301 302 303
    handleCollapse(item) {
        let arr = this.state.application
        let index = arr.findIndex((val) => val.label === item.label)
        arr[index].collapse = !arr[index].collapse
        this.setState({ ...this.state.application, application: arr })
    }

    handleCollapseSetting(item) {
        let arr = this.state.setting
        let index = arr.findIndex((val) => val.label === item.label)
        arr[index].collapse = !arr[index].collapse
        this.setState({ ...this.state.setting, setting: arr })
    }

d.arizona's avatar
d.arizona committed
304 305 306 307 308
    handleDate(item) {
        let value = format(item, 'dd MMMM yyyy')
        return value
    }

a.bairuha's avatar
a.bairuha committed
309 310 311 312
    closeAlert() {
      this.setState({ alert: false })
    }
    
d.arizona's avatar
d.arizona committed
313 314
    render() {
        return (
d.arizona's avatar
d.arizona committed
315
            <div className="test app-popup-show">
a.bairuha's avatar
a.bairuha committed
316 317 318 319 320
                <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
321 322
                <div className="popup-content-middle background-white border-radius" style={{ borderRadius: 8 }}>
                    <div className="popup-panel grid grid-2x main-color" style={{ height: 64, borderTopRightRadius: 8, borderTopLeftRadius: 8 }}>
d.arizona's avatar
d.arizona committed
323 324
                        <div className="col-1" style={{ maxWidth: "inherit", display: 'flex', alignItems: 'center' }}>
                            <div className="popup-title">
d.arizona's avatar
d.arizona committed
325
                                <span style={{ color: '#fff', fontSize: 16, fontWeight: 'bold' }}>Edit Data</span>
d.arizona's avatar
d.arizona committed
326 327 328 329 330 331 332 333
                            </div>
                        </div>
                        <div className="col-2 content-right" style={{ maxWidth: "inherit", alignSelf: 'center' }}>
                            <button
                                type="button"
                                className="btn btn-circle btn-white"
                                onClick={() => this.props.onClickClose()}
                            >
Deni Rinaldi's avatar
Deni Rinaldi committed
334
                                <img src={Images.close} />
d.arizona's avatar
d.arizona committed
335 336 337 338
                            </button>
                        </div>
                    </div>

d.arizona's avatar
d.arizona committed
339
                    <div className="grid grid-2x grid-mobile-none gap-15px" style={{ padding: 20 }}>
d.arizona's avatar
d.arizona committed
340 341 342 343
                        <div className="column-1">
                            <div className="margin-bottom-20px">
                                <TextField
                                    style={{ width: '100%' }}
d.arizona's avatar
d.arizona committed
344 345 346 347 348
                                    id="id"
                                    label="ID"
                                    disabled
                                    // id="outlined-read-only-input"
                                    variant="filled"
d.arizona's avatar
d.arizona committed
349
                                    value={this.state.tempData === null ? '' : this.state.tempData.role_id}
d.arizona's avatar
d.arizona committed
350
                                    onChange={(e) => null}
a.bairuha's avatar
a.bairuha committed
351 352 353 354 355 356 357 358 359 360 361 362 363
                                    inputProps={{
                                        style: {
                                            fontSize: 11,
                                            fontFamily: 'Nunito Sans, sans-serif',
                                        }
                                    }}
                                    InputLabelProps={{
                                        style: {
                                            fontSize: 11,
                                            color: '#7e8085',
                                            fontFamily: 'Nunito Sans, sans-serif',
                                        }
                                    }}
d.arizona's avatar
d.arizona committed
364 365 366 367 368 369 370 371 372 373 374
                                >
                                    {/* {periode.map((option) => (
                                        <MenuItem key={option.value} value={option.value}>
                                            {option.label}
                                        </MenuItem>
                                    ))} */}
                                </TextField>
                            </div>
                        </div>

                        <div className="column-2">
d.arizona's avatar
d.arizona committed
375 376
                            <div className="margin-bottom-20px">
                                <TextField
Deni Rinaldi's avatar
Deni Rinaldi committed
377 378 379 380
                                    style={{ width: '100%', marginTop: 7 }}
                                    id="userRole"
                                    name="role_name"
                                    label="User Role"
d.arizona's avatar
d.arizona committed
381
                                    value={this.state.tempData === null ? '' : this.state.tempData.role_name}
d.arizona's avatar
d.arizona committed
382 383
                                    error={this.state.errorRoleName}
                                    helperText={this.state.msgErrorRN}
Deni Rinaldi's avatar
Deni Rinaldi committed
384
                                    onChange={(e) => this.handleChange(e, '')}
a.bairuha's avatar
a.bairuha committed
385 386 387 388 389 390 391 392 393 394 395 396 397
                                    inputProps={{
                                        style: {
                                            fontSize: 11,
                                            fontFamily: 'Nunito Sans, sans-serif',
                                        }
                                    }}
                                    InputLabelProps={{
                                        style: {
                                            fontSize: 11,
                                            color: '#7e8085',
                                            fontFamily: 'Nunito Sans, sans-serif',
                                        }
                                    }}
d.arizona's avatar
d.arizona committed
398
                                // defaultValue="Default Value"
d.arizona's avatar
d.arizona committed
399 400 401 402 403 404
                                // helperText="Some important text"
                                />
                            </div>
                        </div>
                    </div>

d.arizona's avatar
d.arizona committed
405
                    <div className="grid grid-2x grid-mobile-none gap-15px" style={{ paddingLeft: 20, paddingRight: 20 }}>
d.arizona's avatar
d.arizona committed
406
                        <div className="column-1">
d.arizona's avatar
d.arizona committed
407
                            <div className="margin-bottom-20px">
d.arizona's avatar
d.arizona committed
408
                                <DatePicker
Deni Rinaldi's avatar
Deni Rinaldi committed
409 410
                                    margin="normal"
                                    id="startDate"
d.arizona's avatar
d.arizona committed
411
                                    label="Start Date"
Deni Rinaldi's avatar
Deni Rinaldi committed
412
                                    format="dd MMMM yyyy"
d.arizona's avatar
d.arizona committed
413
                                    value={this.state.tempData === null ? null : this.state.tempData.start_date}
d.arizona's avatar
d.arizona committed
414 415
                                    error={this.state.errorStartDate}
                                    helperText={this.state.msgErrorSD}
Deni Rinaldi's avatar
Deni Rinaldi committed
416 417 418 419
                                    onChange={(e) => this.handleChange(e, 'start_date')}
                                    KeyboardButtonProps={{
                                        'aria-label': 'change date',
                                    }}
a.bairuha's avatar
a.bairuha committed
420 421 422 423 424 425 426 427 428 429 430 431 432
                                    inputProps={{
                                        style: {
                                            fontSize: 11,
                                            fontFamily: 'Nunito Sans, sans-serif',
                                        }
                                    }}
                                    InputLabelProps={{
                                        style: {
                                            fontSize: 11,
                                            color: '#7e8085',
                                            fontFamily: 'Nunito Sans, sans-serif',
                                        }
                                    }}
Deni Rinaldi's avatar
Deni Rinaldi committed
433 434

                                    style={{ padding: 0, margin: 0, width: '100%' }}
d.arizona's avatar
d.arizona committed
435
                                />
d.arizona's avatar
d.arizona committed
436 437 438
                            </div>
                        </div>

d.arizona's avatar
d.arizona committed
439 440
                        <div className="column-2">
                            <div className="margin-bottom-20px">
d.arizona's avatar
d.arizona committed
441
                                <DatePicker
Deni Rinaldi's avatar
Deni Rinaldi committed
442 443
                                    margin="normal"
                                    id="endDate"
d.arizona's avatar
d.arizona committed
444
                                    label="End Date"
Deni Rinaldi's avatar
Deni Rinaldi committed
445
                                    format="dd MMMM yyyy"
d.arizona's avatar
d.arizona committed
446
                                    value={this.state.tempData === null ? null : this.state.tempData.end_date}
d.arizona's avatar
d.arizona committed
447 448
                                    error={this.state.errorEndDate}
                                    helperText={this.state.msgErrorED}
d.arizona's avatar
d.arizona committed
449
                                    minDate={this.state.tempData === null ? null : this.state.tempData.start_date}
Deni Rinaldi's avatar
Deni Rinaldi committed
450 451 452 453
                                    onChange={(e) => this.handleChange(e, 'end_date')}
                                    KeyboardButtonProps={{
                                        'aria-label': 'change date',
                                    }}
a.bairuha's avatar
a.bairuha committed
454 455 456 457 458 459 460 461 462 463 464 465 466
                                    inputProps={{
                                        style: {
                                            fontSize: 11,
                                            fontFamily: 'Nunito Sans, sans-serif',
                                        }
                                    }}
                                    InputLabelProps={{
                                        style: {
                                            fontSize: 11,
                                            color: '#7e8085',
                                            fontFamily: 'Nunito Sans, sans-serif',
                                        }
                                    }}
Deni Rinaldi's avatar
Deni Rinaldi committed
467 468

                                    style={{ padding: 0, margin: 0, width: '100%' }}
d.arizona's avatar
d.arizona committed
469 470 471 472 473
                                />
                            </div>
                        </div>
                    </div>

d.arizona's avatar
d.arizona committed
474
                    <div className="grid grid-2x grid-mobile-none gap-15px" style={{ paddingLeft: 20, paddingRight: 20 }}>
d.arizona's avatar
d.arizona committed
475 476 477 478
                        <div className="column-1">
                            <div className="margin-bottom-20px">
                                <TextField
                                    style={{ width: '100%' }}
d.arizona's avatar
d.arizona committed
479 480
                                    id="status"
                                    label="Status"
d.arizona's avatar
d.arizona committed
481 482 483
                                    disabled
                                    // id="outlined-read-only-input"
                                    variant="filled"
d.arizona's avatar
d.arizona committed
484
                                    value={this.state.tempData === null ? '' : this.state.tempData.status}
a.bairuha's avatar
a.bairuha committed
485 486 487 488 489 490 491 492 493 494 495 496 497
                                    inputProps={{
                                        style: {
                                            fontSize: 11,
                                            fontFamily: 'Nunito Sans, sans-serif',
                                        }
                                    }}
                                    InputLabelProps={{
                                        style: {
                                            fontSize: 11,
                                            color: '#7e8085',
                                            fontFamily: 'Nunito Sans, sans-serif',
                                        }
                                    }}
d.arizona's avatar
d.arizona committed
498 499 500 501 502 503 504 505 506
                                >
                                    {/* {periode.map((option) => (
                                        <MenuItem key={option.value} value={option.value}>
                                            {option.label}
                                        </MenuItem>
                                    ))} */}
                                </TextField>
                            </div>
                        </div>
d.arizona's avatar
d.arizona committed
507
                    </div>
Deni Rinaldi's avatar
Deni Rinaldi committed
508
                    <div style={{ flexDirection: 'column', display: 'flex', paddingLeft: 20, paddingRight: 20 }}>
d.arizona's avatar
d.arizona committed
509 510
                        <Typography style={{ fontSize: 12 }}>{`Created by  : ${this.state.tempData === null ? '' : (this.state.tempData.created === null ? '-' : this.state.tempData.created)}`}</Typography>
                        <Typography style={{ fontSize: 12 }}>{`Updated by: ${this.state.tempData === null ? '' : (this.state.tempData.updated === null ? '-' : this.state.tempData.updated)}`}</Typography>
d.arizona's avatar
d.arizona committed
511
                    </div>
Deni Rinaldi's avatar
Deni Rinaldi committed
512 513
                    <Divider style={{ margin: 20 }} />
                    <div style={{ paddingLeft: 20, paddingRight: 20 }}>
d.arizona's avatar
d.arizona committed
514
                        <h5>Access Rights</h5>
Deni Rinaldi's avatar
Deni Rinaldi committed
515
                        <div className="grid grid-2x grid-mobile-none gap-15px padding-top-5px padding-bottom-5px padding-left-10px padding-right-10px " style={{ backgroundColor: '#4b4b4b' }}>
d.arizona's avatar
d.arizona committed
516
                            <div className="column-1">
d.arizona's avatar
d.arizona committed
517
                                <Typography style={{ fontSize: 12, color: 'white' }}>Authorization Module</Typography>
d.arizona's avatar
d.arizona committed
518 519 520
                            </div>
                            <div className="column-2 grid grid-3x content-center grid-mobile-none gap-15px">
                                <div className="column-1">
d.arizona's avatar
d.arizona committed
521
                                    <Typography style={{ fontSize: 12, color: 'white' }}>View</Typography>
d.arizona's avatar
d.arizona committed
522 523
                                </div>
                                <div className="column-2">
d.arizona's avatar
d.arizona committed
524
                                    <Typography style={{ fontSize: 12, color: 'white' }}>Create</Typography>
d.arizona's avatar
d.arizona committed
525 526
                                </div>
                                <div className="column 3">
d.arizona's avatar
d.arizona committed
527
                                    <Typography style={{ fontSize: 12, color: 'white' }}>Edit</Typography>
d.arizona's avatar
d.arizona committed
528 529 530
                                </div>
                            </div>
                        </div>
Deni Rinaldi's avatar
Deni Rinaldi committed
531 532

                        <div style={{ height: '25vh', overflow: 'scroll' }}>
Deni Rinaldi's avatar
Deni Rinaldi committed
533 534 535 536 537
                            {this.state.application.map((item, index) => {
                                return (
                                    <div>
                                        <div className="grid grid-2x grid-mobile-none gap-15px padding-left-10px padding-right-10px">
                                            <div className="column-1" style={{ display: 'flex', flexDirection: 'row', alignItems: 'center', justifyContent: 'flex-start', paddingLeft: 8 }}>
d.arizona's avatar
d.arizona committed
538
                                                {item.sub_menu.length > 0 && <span onClick={() => this.handleCollapse(item)} style={{ marginRight: 2, marginLeft: -22, alignItems:'center', justifyContent:'center', display:'flex' }}>
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 557 558 559 560 561 562 563 564 565 566 567 568 569 570 571 572 573 574 575 576 577 578 579 580 581 582 583 584 585 586 587 588 589 590 591 592 593 594 595 596 597 598 599 600 601 602 603 604 605 606 607 608 609 610 611 612 613 614 615 616
                                                    {item.collapse ? <RemoveIcon color={'action'} fontSize={'small'} /> : <AddIcon color={'action'} fontSize={'small'} />}
                                                </span>}
                                                <span>
                                                    <CustomCheckbox
                                                        checked={this.handleItemChecked(item)}
                                                        onChange={() => this.handleItemClick(item)}
                                                    />
                                                </span>
                                                <Typography style={{ fontSize: 12, marginLeft: 5 }}>{item.label}</Typography>
                                            </div>
                                            <div className="column-2 grid grid-3x content-center grid-mobile-none gap-15px margin-left-10px">
                                                <div className="column-1">
                                                    <CustomCheckbox
                                                        disabled={!this.handleItemChecked(item)}
                                                        checked={this.handleSubItemChecked(item, 1)}
                                                        onChange={() => this.handleSubItemClick(item, 1)}
                                                    />
                                                </div>
                                                <div className="column-2">
                                                    <CustomCheckbox
                                                        // disabled
                                                        disabled={!this.handleItemChecked(item)}
                                                        checked={this.handleSubItemChecked(item, 2)}
                                                        onChange={() => this.handleSubItemClick(item, 2)}
                                                    />
                                                </div>
                                                <div className="column 3">
                                                    <CustomCheckbox
                                                        // disabled
                                                        disabled={!this.handleItemChecked(item)}
                                                        checked={this.handleSubItemChecked(item, 3)}
                                                        onChange={() => this.handleSubItemClick(item, 3)}
                                                    />
                                                </div>
                                            </div>
                                        </div>
                                        {item.sub_menu.length > 0 && item.sub_menu.map((items, indexs) => {
                                            return (
                                                <Collapse in={item.collapse} timeout="auto" unmountOnExit>
                                                    <div className="grid grid-2x grid-mobile-none gap-15px padding-left-10px padding-right-10px">
                                                        <div className="column-1" style={{ display: 'flex', flexDirection: 'row', alignItems: 'center', paddingLeft: 30 }}>
                                                            <CustomCheckbox
                                                                checked={this.handleItemChecked(items)}
                                                                onChange={() => this.handleItemClick(items)}
                                                            />
                                                            <Typography style={{ fontSize: 12, maxWidth: '100%', marginLeft: 5 }}>{items.label}</Typography>
                                                        </div>
                                                        <div className="column-2 grid grid-3x content-center grid-mobile-none gap-15px margin-left-10px">
                                                            <div className="column-1">
                                                                <CustomCheckbox
                                                                    disabled={!this.handleItemChecked(items)}
                                                                    checked={this.handleSubItemChecked(items, 1)}
                                                                    onChange={() => this.handleSubItemClick(items, 1)}
                                                                />
                                                            </div>
                                                            <div className="column-2">
                                                                <CustomCheckbox
                                                                    disabled={!this.handleItemChecked(items)}
                                                                    checked={this.handleSubItemChecked(items, 2)}
                                                                    onChange={() => this.handleSubItemClick(items, 2)}
                                                                />
                                                            </div>
                                                            <div className="column 3">
                                                                <CustomCheckbox
                                                                    disabled={!this.handleItemChecked(items)}
                                                                    checked={this.handleSubItemChecked(items, 3)}
                                                                    onChange={() => this.handleSubItemClick(items, 3)}
                                                                />
                                                            </div>
                                                        </div>
                                                    </div>
                                                </Collapse>
                                            )
                                        })}
                                    </div>
                                )
                            })}
                            {this.state.setting.map((item, index) => {
d.arizona's avatar
d.arizona committed
617
                                return (
d.arizona's avatar
d.arizona committed
618
                                    <div>
d.arizona's avatar
d.arizona committed
619
                                        {item.menu_id !== 23 && <div className="grid grid-2x grid-mobile-none gap-15px padding-left-10px padding-right-10px">
Deni Rinaldi's avatar
Deni Rinaldi committed
620 621 622
                                            <div className="column-1" style={{ display: 'flex', flexDirection: 'row', alignItems: 'center', justifyContent: 'flex-start', paddingLeft: 8 }}>
                                                {item.sub_menu.length > 0 && <span onClick={() => this.handleCollapseSetting(item)} style={{ marginRight: 2, marginLeft: -22 }}>
                                                    {item.collapse ? <RemoveIcon color={'action'} fontSize={'small'} /> : <AddIcon color={'action'} fontSize={'small'} />}
d.arizona's avatar
d.arizona committed
623 624
                                                </span>}
                                                <span>
Deni Rinaldi's avatar
Deni Rinaldi committed
625 626 627 628
                                                    <CustomCheckbox
                                                        checked={this.handleItemChecked(item)}
                                                        onChange={() => this.handleItemClick(item)}
                                                    />
d.arizona's avatar
d.arizona committed
629
                                                </span>
Deni Rinaldi's avatar
Deni Rinaldi committed
630
                                                <Typography style={{ fontSize: 12, marginLeft: 5 }}>{item.label}</Typography>
d.arizona's avatar
d.arizona committed
631
                                            </div>
Deni Rinaldi's avatar
Deni Rinaldi committed
632
                                            <div className="column-2 grid grid-3x content-center grid-mobile-none gap-15px margin-left-10px">
d.arizona's avatar
d.arizona committed
633 634 635 636
                                                <div className="column-1">
                                                    <CustomCheckbox
                                                        disabled={!this.handleItemChecked(item)}
                                                        checked={this.handleSubItemChecked(item, 1)}
Deni Rinaldi's avatar
Deni Rinaldi committed
637
                                                        onChange={() => this.handleSubItemClick(item, 1)}
d.arizona's avatar
d.arizona committed
638 639 640 641 642 643 644
                                                    />
                                                </div>
                                                <div className="column-2">
                                                    <CustomCheckbox
                                                        // disabled
                                                        disabled={!this.handleItemChecked(item)}
                                                        checked={this.handleSubItemChecked(item, 2)}
Deni Rinaldi's avatar
Deni Rinaldi committed
645
                                                        onChange={() => this.handleSubItemClick(item, 2)}
d.arizona's avatar
d.arizona committed
646 647 648 649 650 651 652
                                                    />
                                                </div>
                                                <div className="column 3">
                                                    <CustomCheckbox
                                                        // disabled
                                                        disabled={!this.handleItemChecked(item)}
                                                        checked={this.handleSubItemChecked(item, 3)}
Deni Rinaldi's avatar
Deni Rinaldi committed
653
                                                        onChange={() => this.handleSubItemClick(item, 3)}
d.arizona's avatar
d.arizona committed
654 655
                                                    />
                                                </div>
d.arizona's avatar
d.arizona committed
656
                                            </div>
d.arizona's avatar
d.arizona committed
657
                                        </div>}
Deni Rinaldi's avatar
Deni Rinaldi committed
658 659
                                        {item.sub_menu.length > 0 && item.sub_menu.map((items, indexs) => {
                                            return (
Deni Rinaldi's avatar
Deni Rinaldi committed
660
                                                <Collapse in={item.collapse} timeout="auto" unmountOnExit>
d.arizona's avatar
d.arizona committed
661
                                                    <div className="grid grid-2x grid-mobile-none gap-15px padding-left-10px padding-right-10px">
Deni Rinaldi's avatar
Deni Rinaldi committed
662
                                                        <div className="column-1" style={{ display: 'flex', flexDirection: 'row', alignItems: 'center', paddingLeft: 30 }}>
d.arizona's avatar
d.arizona committed
663 664 665 666
                                                            <CustomCheckbox
                                                                checked={this.handleItemChecked(items)}
                                                                onChange={() => this.handleItemClick(items)}
                                                            />
Deni Rinaldi's avatar
Deni Rinaldi committed
667
                                                            <Typography style={{ fontSize: 12, maxWidth: '100%', marginLeft: 5 }}>{items.label}</Typography>
d.arizona's avatar
d.arizona committed
668
                                                        </div>
Deni Rinaldi's avatar
Deni Rinaldi committed
669
                                                        <div className="column-2 grid grid-3x content-center grid-mobile-none gap-15px margin-left-10px">
d.arizona's avatar
d.arizona committed
670 671 672 673
                                                            <div className="column-1">
                                                                <CustomCheckbox
                                                                    disabled={!this.handleItemChecked(items)}
                                                                    checked={this.handleSubItemChecked(items, 1)}
Deni Rinaldi's avatar
Deni Rinaldi committed
674
                                                                    onChange={() => this.handleSubItemClick(items, 1)}
d.arizona's avatar
d.arizona committed
675 676 677 678 679 680
                                                                />
                                                            </div>
                                                            <div className="column-2">
                                                                <CustomCheckbox
                                                                    disabled={!this.handleItemChecked(items)}
                                                                    checked={this.handleSubItemChecked(items, 2)}
Deni Rinaldi's avatar
Deni Rinaldi committed
681
                                                                    onChange={() => this.handleSubItemClick(items, 2)}
d.arizona's avatar
d.arizona committed
682 683 684 685 686 687
                                                                />
                                                            </div>
                                                            <div className="column 3">
                                                                <CustomCheckbox
                                                                    disabled={!this.handleItemChecked(items)}
                                                                    checked={this.handleSubItemChecked(items, 3)}
Deni Rinaldi's avatar
Deni Rinaldi committed
688
                                                                    onChange={() => this.handleSubItemClick(items, 3)}
d.arizona's avatar
d.arizona committed
689 690 691 692 693 694 695
                                                                />
                                                            </div>
                                                        </div>
                                                    </div>
                                                </Collapse>
                                            )
                                        })}
d.arizona's avatar
d.arizona committed
696
                                    </div>
d.arizona's avatar
d.arizona committed
697 698 699
                                )
                            })}
                        </div>
Deni Rinaldi's avatar
Deni Rinaldi committed
700

d.arizona's avatar
d.arizona committed
701
                    </div>
d.arizona's avatar
d.arizona committed
702 703
                    <div className="border-top grid grid-2x" style={{ height: 56, backgroundColor: '#f5f5f5', paddingLeft: 20, paddingRight: 20 }}>
                        <div className="column-1" style={{ alignSelf: 'center' }}>
Deni Rinaldi's avatar
Deni Rinaldi committed
704 705 706 707 708
                            <button
                                type="button"
                                onClick={() => this.props.onClickClose()}
                            >
                                <div onClick={() => this.props.onClickClose()} style={{ width: 102, height: 30, border: 'solid 1px #354960', borderRadius: 5, alignItems: 'center', display: 'flex', justifyContent: 'center' }}>
d.arizona's avatar
d.arizona committed
709
                                    <span style={{ color: '#354960', fontSize: 11 }}>Cancel</span>
Deni Rinaldi's avatar
Deni Rinaldi committed
710 711
                                </div>
                            </button>
d.arizona's avatar
d.arizona committed
712
                        </div>
Deni Rinaldi's avatar
Deni Rinaldi committed
713 714 715
                        <div className="column-2" style={{ display: 'flex', justifyContent: 'flex-end', alignItems: 'center' }}>
                            <button
                                type="button"
d.arizona's avatar
d.arizona committed
716
                                onClick={() => this.validasi()}
Deni Rinaldi's avatar
Deni Rinaldi committed
717 718
                            >
                                <div style={{ width: 102, height: 30, backgroundColor: '#354960', borderRadius: 5, alignItems: 'center', display: 'flex', justifyContent: 'center' }}>
d.arizona's avatar
d.arizona committed
719
                                    <span style={{ color: '#fff', fontSize: 11 }}>Save</span>
Deni Rinaldi's avatar
Deni Rinaldi committed
720 721
                                </div>
                            </button>
d.arizona's avatar
d.arizona committed
722 723 724 725 726 727 728
                        </div>
                    </div>
                </div>
            </div>
        );
    }
}