AddRole.js 40.2 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';
Deni Rinaldi's avatar
Deni Rinaldi committed
6
import { DatePicker } from "@material-ui/pickers";
d.arizona's avatar
d.arizona committed
7 8
import format from "date-fns/format";
import localeID from "date-fns/locale/id"
d.arizona's avatar
d.arizona committed
9
import * as R from 'ramda'
d.arizona's avatar
d.arizona committed
10
import Images from '../../../assets/Images';
a.bairuha's avatar
a.bairuha committed
11
import MuiAlert from '@material-ui/lab/Alert';
d.arizona's avatar
d.arizona committed
12 13 14 15

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

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

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

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

    handleChecked() {
Deni Rinaldi's avatar
Deni Rinaldi committed
57
        this.setState({ checked: !this.state.checked })
d.arizona's avatar
d.arizona committed
58
    }
Deni Rinaldi's avatar
Deni Rinaldi committed
59

d.arizona's avatar
d.arizona committed
60 61
    componentDidMount() {
        this.getMenu()
a.bairuha's avatar
a.bairuha committed
62 63 64 65 66 67 68 69 70 71
        if (this.props.type === 'edit') {
            //
        } else {
            let date = format(new Date, 'yyyy-MM-dd')
            console.log(date);
            this.setState({
                startDate: date,
                endDate: date
            })
        }
d.arizona's avatar
d.arizona committed
72 73
    }

d.arizona's avatar
d.arizona committed
74
    handleChange(e, type) {
d.arizona's avatar
d.arizona committed
75
        let data = this.state
Deni Rinaldi's avatar
Deni Rinaldi committed
76
        let isDate = type !== '' ? true : false
d.arizona's avatar
d.arizona committed
77
        if (isDate && type === 'start_date') {
Deni Rinaldi's avatar
Deni Rinaldi committed
78 79
            this.setState({
                ...data, startDate: format(e, 'yyyy-MM-dd'), endDate: null,
d.arizona's avatar
d.arizona committed
80 81 82 83 84 85 86
                errorRoleName: false,
                errorStartDate: false,
                errorEndDate: false,
                msgErrorRN: '',
                msgErrorSD: '',
                msgErrorED: '',
            })
d.arizona's avatar
d.arizona committed
87
        } else if (isDate && type === 'end_date') {
Deni Rinaldi's avatar
Deni Rinaldi committed
88 89
            this.setState({
                ...data, endDate: format(e, 'yyyy-MM-dd'),
d.arizona's avatar
d.arizona committed
90 91 92 93 94 95 96
                errorRoleName: false,
                errorStartDate: false,
                errorEndDate: false,
                msgErrorRN: '',
                msgErrorSD: '',
                msgErrorED: '',
            })
d.arizona's avatar
d.arizona committed
97
        } else {
Deni Rinaldi's avatar
Deni Rinaldi committed
98 99
            this.setState({
                ...data, [e.target.name]: e.target.value,
d.arizona's avatar
d.arizona committed
100 101 102 103 104 105 106
                errorRoleName: false,
                errorStartDate: false,
                errorEndDate: false,
                msgErrorRN: '',
                msgErrorSD: '',
                msgErrorED: '',
            })
d.arizona's avatar
d.arizona committed
107
        }
Deni Rinaldi's avatar
Deni Rinaldi committed
108

d.arizona's avatar
d.arizona committed
109 110
    }

d.arizona's avatar
d.arizona committed
111 112
    validasi() {
        if (R.isEmpty(this.state.roleName)) {
d.arizona's avatar
d.arizona committed
113
            this.setState({ errorRoleName: true, msgErrorRN: 'Role Name is Required' })
d.arizona's avatar
d.arizona committed
114
        } else if (R.isNil(this.state.startDate)) {
d.arizona's avatar
d.arizona committed
115
            this.setState({ errorStartDate: true, msgErrorSD: 'Start Date is Required' })
d.arizona's avatar
d.arizona committed
116
        } else if (R.isNil(this.state.endDate)) {
d.arizona's avatar
d.arizona committed
117
            this.setState({ errorEndDate: true, msgErrorED: 'End Date is Required' })
Deni Rinaldi's avatar
Deni Rinaldi committed
118
        } else if (this.state.privileges.length < 1) {
d.arizona's avatar
d.arizona committed
119
            this.setState({ alert: true, messageAlert: 'You must choose the Access Rights!!', tipeAlert: 'warning' })
d.arizona's avatar
d.arizona committed
120 121 122 123 124 125
        } else {
            this.addRole()
        }
    }

    addRole() {
d.arizona's avatar
d.arizona committed
126 127
        // 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
128
        let payload = {
d.arizona's avatar
d.arizona committed
129 130 131 132
            "role_name": this.state.roleName,
            "start_date": this.state.startDate,
            "end_date": this.state.endDate,
            "privileges": this.state.privileges
d.arizona's avatar
d.arizona committed
133
        }
d.arizona's avatar
d.arizona committed
134 135 136
        // console.log(payload)
        api.create().addRole(payload).then((response) => {
            console.log(response)
a.bairuha's avatar
a.bairuha committed
137 138 139 140 141 142 143 144 145 146 147 148
            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
149
            } else {
a.bairuha's avatar
a.bairuha committed
150
                this.setState({ alert: true, messageAlert: response.problem, tipeAlert: 'error' })
d.arizona's avatar
d.arizona committed
151 152
            }
        })
d.arizona's avatar
d.arizona committed
153 154
    }

Deni Rinaldi's avatar
Deni Rinaldi committed
155 156 157 158 159 160 161
    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
162 163
                collapse: false,
                reference: i.reference
Deni Rinaldi's avatar
Deni Rinaldi committed
164 165 166 167 168
            }
        })
        return data
    }

d.arizona's avatar
d.arizona committed
169 170
    getMenu() {
        api.create().getMenu().then((response) => {
a.bairuha's avatar
a.bairuha committed
171 172 173 174 175 176 177 178 179 180 181 182 183 184 185 186 187
            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
188
                    } else {
a.bairuha's avatar
a.bairuha committed
189
                        this.setState({ alert: true, messageAlert: response.data.message, tipeAlert: 'warning' })
Deni Rinaldi's avatar
Deni Rinaldi committed
190
                    }
a.bairuha's avatar
a.bairuha committed
191 192 193
                } else {
                    this.setState({ alert: true, messageAlert: response.data.message, tipeAlert: 'error' })
                }
d.arizona's avatar
d.arizona committed
194
            } else {
a.bairuha's avatar
a.bairuha committed
195
                this.setState({ alert: true, messageAlert: response.problem, tipeAlert: 'error' })
d.arizona's avatar
d.arizona committed
196 197 198 199 200
            }
        })
    }

    handleItemChecked(item) {
d.arizona's avatar
d.arizona committed
201
        let indexID = this.state.privileges.findIndex((val) => val.menu_id === item.menu_id)
Deni Rinaldi's avatar
Deni Rinaldi committed
202
        return indexID === -1 ? false : true
d.arizona's avatar
d.arizona committed
203 204 205
    }

    handleItemClick(item) {
d.arizona's avatar
d.arizona committed
206
        let indexID = this.state.privileges.findIndex((val) => val.menu_id === item.menu_id)
d.arizona's avatar
d.arizona committed
207
        let privileges = this.state.privileges
d.arizona's avatar
d.arizona committed
208
        if (indexID === -1) {
d.arizona's avatar
d.arizona committed
209 210
            privileges.push({
                menu_id: item.menu_id,
Deni Rinaldi's avatar
Deni Rinaldi committed
211
                button_id: [1, 2, 3]
d.arizona's avatar
d.arizona committed
212
            })
d.arizona's avatar
d.arizona committed
213 214 215 216 217 218 219 220 221 222 223 224 225 226 227 228 229 230 231 232 233 234 235 236 237 238 239 240 241 242 243 244 245 246 247 248
            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]
                       })
                   }
                })
            }
            if (item.reference !== null && item.reference !== 13 && item.reference !== 1) {
                let indexIDapp = this.state.application.findIndex((val) => val.menu_id === item.reference)
                let indexIDset = this.state.setting.findIndex((val) => val.menu_id === item.reference)
                let indexIDref = this.state.privileges.findIndex((val) => val.menu_id === item.reference)
                let indexIDs = indexIDapp == -1? indexIDset : indexIDapp
                let total = 0
                let array = indexIDapp == -1? this.state.setting : this.state.application

                array[indexIDs].sub_menu.map((items,indexs) => {
                    let indexIDsub = this.state.privileges.findIndex((val) => val.menu_id === items.menu_id)
                    if (indexIDsub !== -1) {
                        total += 1
                    }
                })
                if (indexIDref == -1) {
                    privileges.push({
                        menu_id: item.reference,
                        button_id: [1,2,3]
                    })
                } else {
                    if (total < 1) {
                        privileges.splice(indexIDref, 1)
                    }
                }
            }
d.arizona's avatar
d.arizona committed
249
        } else {
Deni Rinaldi's avatar
Deni Rinaldi committed
250
            privileges.splice(indexID, 1)
d.arizona's avatar
d.arizona committed
251 252 253 254 255 256 257 258 259 260 261 262 263 264 265 266 267 268 269 270 271 272 273 274 275 276 277 278 279 280 281 282
            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)
                })
            }
            if (item.reference !== null && item.reference !== 13 && item.reference !== 1) {
                let indexIDapp = this.state.application.findIndex((val) => val.menu_id === item.reference)
                let indexIDset = this.state.setting.findIndex((val) => val.menu_id === item.reference)
                let indexIDref = this.state.privileges.findIndex((val) => val.menu_id === item.reference)
                let indexIDs = indexIDapp == -1? indexIDset : indexIDapp
                let total = 0
                let array = indexIDapp == -1? this.state.setting : this.state.application

                array[indexIDs].sub_menu.map((items,indexs) => {
                    let indexIDsub = this.state.privileges.findIndex((val) => val.menu_id === items.menu_id)
                    if (indexIDsub !== -1) {
                        total += 1
                    }
                })

                if (indexIDref == -1) {
                    privileges.push({
                        menu_id: item.reference,
                        button_id: [1,2,3]
                    })
                } else {
                    if (total < 1) {
                        privileges.splice(indexIDref, 1)
                    }
                }
            }
d.arizona's avatar
d.arizona committed
283
        }
Deni Rinaldi's avatar
Deni Rinaldi committed
284
        this.setState({ privileges })
d.arizona's avatar
d.arizona committed
285 286 287
    }

    handleSubItemChecked(item, index) {
d.arizona's avatar
d.arizona committed
288
        let indexID = this.state.privileges.findIndex((val) => val.menu_id === item.menu_id)
d.arizona's avatar
d.arizona committed
289
        let value = false
d.arizona's avatar
d.arizona committed
290
        if (indexID === -1) {
d.arizona's avatar
d.arizona committed
291 292
            value = false
        } else {
d.arizona's avatar
d.arizona committed
293 294
            let indexButtonID = this.state.privileges[indexID].button_id.findIndex((val) => val === index)
            if (indexButtonID === -1) {
d.arizona's avatar
d.arizona committed
295 296 297 298 299
                value = false
            } else {
                value = true
            }
        }
Deni Rinaldi's avatar
Deni Rinaldi committed
300
        return indexID === -1 ? value : value
d.arizona's avatar
d.arizona committed
301 302 303
    }

    handleSubItemClick(item, index) {
d.arizona's avatar
d.arizona committed
304 305
        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
306 307
        let privileges = this.state.privileges
        let button_id = privileges[indexID].button_id
d.arizona's avatar
d.arizona committed
308
        if (indexButtonID === -1) {
d.arizona's avatar
d.arizona committed
309 310
            button_id.push(index)
        } else {
Deni Rinaldi's avatar
Deni Rinaldi committed
311
            button_id.splice(indexButtonID, 1)
d.arizona's avatar
d.arizona committed
312 313
        }
        privileges[indexID].button_id = button_id
d.arizona's avatar
d.arizona committed
314
        if (button_id.length === 0) {
Deni Rinaldi's avatar
Deni Rinaldi committed
315
            privileges.splice(indexID, 1)
d.arizona's avatar
d.arizona committed
316
        }
Deni Rinaldi's avatar
Deni Rinaldi committed
317
        this.setState({ privileges })
d.arizona's avatar
d.arizona committed
318 319
    }

d.arizona's avatar
d.arizona committed
320 321 322 323 324
    handleDate(item) {
        let value = format(item, 'dd MMMM yyyy')
        return value
    }

Deni Rinaldi's avatar
Deni Rinaldi committed
325 326 327 328 329 330 331 332 333 334 335 336 337
    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 })
    }
a.bairuha's avatar
a.bairuha committed
338 339 340 341

    closeAlert() {
      this.setState({ alert: false })
    }
Deni Rinaldi's avatar
Deni Rinaldi committed
342
    
d.arizona's avatar
d.arizona committed
343 344
    render() {
        return (
d.arizona's avatar
d.arizona committed
345
            <div className="test app-popup-show">
a.bairuha's avatar
a.bairuha committed
346 347 348 349 350
                <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
351 352
                <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
353 354
                        <div className="col-1" style={{ maxWidth: "inherit", display: 'flex', alignItems: 'center' }}>
                            <div className="popup-title">
d.arizona's avatar
d.arizona committed
355
                                <span style={{ color: '#fff', fontSize: 16, fontWeight: 'bold' }}>Create Data</span>
d.arizona's avatar
d.arizona committed
356 357 358 359 360 361 362 363
                            </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
364
                                <img src={Images.close} />
d.arizona's avatar
d.arizona committed
365 366 367 368
                            </button>
                        </div>
                    </div>

d.arizona's avatar
d.arizona committed
369
                    <div className="grid grid-2x grid-mobile-none gap-15px" style={{ padding: 20 }}>
d.arizona's avatar
d.arizona committed
370 371 372 373
                        <div className="column-1">
                            <div className="margin-bottom-20px">
                                <TextField
                                    style={{ width: '100%' }}
d.arizona's avatar
d.arizona committed
374 375 376 377 378
                                    id="id"
                                    label="ID"
                                    disabled
                                    // id="outlined-read-only-input"
                                    variant="filled"
d.arizona's avatar
d.arizona committed
379
                                    value={'-'}
d.arizona's avatar
d.arizona committed
380
                                    onChange={(e) => null}
a.bairuha's avatar
a.bairuha committed
381 382 383 384 385 386 387 388 389 390 391 392 393
                                    inputProps={{
                                        style: {
                                            fontSize: 11,
                                            fontFamily: 'Nunito Sans, sans-serif',
                                        }
                                    }}
                                    InputLabelProps={{
                                        style: {
                                            fontSize: 11,
                                            fontFamily: 'Nunito Sans, sans-serif',
                                            color: '#7e8085',
                                        }
                                    }}
d.arizona's avatar
d.arizona committed
394 395 396 397 398 399 400 401 402 403 404
                                >
                                    {/* {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
405 406
                            <div className="margin-bottom-20px">
                                <TextField
Deni Rinaldi's avatar
Deni Rinaldi committed
407 408 409 410 411 412 413 414
                                    style={{ width: '100%', marginTop: 7 }}
                                    id="userRole"
                                    name="roleName"
                                    label="User Role"
                                    value={this.state.roleName}
                                    error={this.state.errorRoleName}
                                    helperText={this.state.msgErrorRN}
                                    onChange={(e) => this.handleChange(e, '')}
a.bairuha's avatar
a.bairuha committed
415 416 417 418 419 420 421 422 423 424 425 426 427
                                    inputProps={{
                                        style: {
                                            fontSize: 11,
                                            fontFamily: 'Nunito Sans, sans-serif',
                                        }
                                    }}
                                    InputLabelProps={{
                                        style: {
                                            fontSize: 11,
                                            fontFamily: 'Nunito Sans, sans-serif',
                                            color: '#7e8085',
                                        }
                                    }}
d.arizona's avatar
d.arizona committed
428 429 430 431 432 433 434 435 436 437
                                // defaultValue="Default Value"
                                // helperText="Some important text"
                                />
                            </div>
                        </div>
                    </div>

                    <div className="grid grid-2x grid-mobile-none gap-15px" style={{ paddingLeft: 20, paddingRight: 20 }}>
                        <div className="column-1">
                            <div className="margin-bottom-20px">
d.arizona's avatar
d.arizona committed
438
                                <DatePicker
Deni Rinaldi's avatar
Deni Rinaldi committed
439 440
                                    margin="normal"
                                    id="startDate"
d.arizona's avatar
d.arizona committed
441
                                    label="Start Date"
Deni Rinaldi's avatar
Deni Rinaldi committed
442 443 444 445 446 447 448 449
                                    format="dd MMMM yyyy"
                                    value={this.state.startDate}
                                    error={this.state.errorStartDate}
                                    helperText={this.state.msgErrorSD}
                                    onChange={(e) => this.handleChange(e, 'start_date')}
                                    KeyboardButtonProps={{
                                        'aria-label': 'change date',
                                    }}
a.bairuha's avatar
a.bairuha committed
450 451 452 453 454 455 456 457 458 459 460 461 462
                                    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
463 464

                                    style={{ padding: 0, margin: 0, width: '100%' }}
d.arizona's avatar
d.arizona committed
465 466 467 468 469 470
                                />
                            </div>
                        </div>

                        <div className="column-2">
                            <div className="margin-bottom-20px">
d.arizona's avatar
d.arizona committed
471
                                <DatePicker
Deni Rinaldi's avatar
Deni Rinaldi committed
472 473
                                    margin="normal"
                                    id="endDate"
d.arizona's avatar
d.arizona committed
474
                                    label="End Date"
Deni Rinaldi's avatar
Deni Rinaldi committed
475 476 477 478 479 480 481 482 483
                                    format="dd MMMM yyyy"
                                    value={this.state.endDate}
                                    error={this.state.errorEndDate}
                                    helperText={this.state.msgErrorED}
                                    onChange={(e) => this.handleChange(e, 'end_date')}
                                    minDate={this.state.startDate}
                                    KeyboardButtonProps={{
                                        'aria-label': 'change date',
                                    }}
a.bairuha's avatar
a.bairuha committed
484 485 486 487 488 489 490 491 492 493 494 495 496
                                    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
497 498

                                    style={{ padding: 0, margin: 0, width: '100%' }}
d.arizona's avatar
d.arizona committed
499 500 501 502 503 504 505
                                />
                            </div>
                        </div>
                    </div>

                    <div className="grid grid-2x grid-mobile-none gap-15px" style={{ paddingLeft: 20, paddingRight: 20 }}>
                        <div className="column-1">
d.arizona's avatar
d.arizona committed
506 507 508
                            <div className="margin-bottom-20px">
                                <TextField
                                    style={{ width: '100%' }}
d.arizona's avatar
d.arizona committed
509 510 511 512 513
                                    id="status"
                                    label="Status"
                                    disabled
                                    // id="outlined-read-only-input"
                                    variant="filled"
d.arizona's avatar
d.arizona committed
514
                                    value={'Active'}
a.bairuha's avatar
a.bairuha committed
515 516 517 518 519 520 521 522 523 524 525 526 527 528

                                    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
529 530 531 532 533 534 535 536 537 538
                                >
                                    {/* {periode.map((option) => (
                                        <MenuItem key={option.value} value={option.value}>
                                            {option.label}
                                        </MenuItem>
                                    ))} */}
                                </TextField>
                            </div>
                        </div>
                    </div>
d.arizona's avatar
d.arizona committed
539
                    {/* <div style={{ flexDirection: 'column', display: 'flex', paddingLeft: 20, paddingRight: 20 }}>
a.bairuha's avatar
a.bairuha committed
540 541
                        <Typography style={{ fontSize: 12 }}>{`Dibuat: `}</Typography>
                        <Typography style={{fontSize: 12}}>{`Diubah: `}</Typography>
d.arizona's avatar
d.arizona committed
542
                    </div> */}
Deni Rinaldi's avatar
Deni Rinaldi committed
543 544
                    <Divider style={{ margin: 20 }} />
                    <div style={{ paddingLeft: 20, paddingRight: 20 }}>
d.arizona's avatar
d.arizona committed
545
                        <h5>Access Rights</h5>
Deni Rinaldi's avatar
Deni Rinaldi committed
546
                        <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
547
                            <div className="column-1">
d.arizona's avatar
d.arizona committed
548
                                <Typography style={{ fontSize: 12, color: 'white' }}>Authorization Module</Typography>
d.arizona's avatar
d.arizona committed
549 550 551
                            </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
552
                                    <Typography style={{ fontSize: 12, color: 'white' }}>View</Typography>
d.arizona's avatar
d.arizona committed
553 554
                                </div>
                                <div className="column-2">
d.arizona's avatar
d.arizona committed
555
                                    <Typography style={{ fontSize: 12, color: 'white' }}>Create</Typography>
d.arizona's avatar
d.arizona committed
556 557
                                </div>
                                <div className="column 3">
d.arizona's avatar
d.arizona committed
558
                                    <Typography style={{ fontSize: 12, color: 'white' }}>Edit</Typography>
d.arizona's avatar
d.arizona committed
559 560 561
                                </div>
                            </div>
                        </div>
Deni Rinaldi's avatar
Deni Rinaldi committed
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 617 618 619 620 621 622 623 624 625 626 627 628 629 630 631 632 633 634 635 636 637 638 639 640 641 642 643 644 645 646 647

                        <div style={{ height: '25vh', overflow: 'scroll' }}>
                            {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 }}>
                                                {item.sub_menu.length > 0 && <span onClick={() => this.handleCollapse(item)} style={{ marginRight: 2, marginLeft: -22 }}>
                                                    {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
648
                                return (
d.arizona's avatar
d.arizona committed
649
                                    <div>
d.arizona's avatar
d.arizona committed
650
                                        {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
651 652 653
                                            <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
654 655
                                                </span>}
                                                <span>
Deni Rinaldi's avatar
Deni Rinaldi committed
656 657 658 659
                                                    <CustomCheckbox
                                                        checked={this.handleItemChecked(item)}
                                                        onChange={() => this.handleItemClick(item)}
                                                    />
d.arizona's avatar
d.arizona committed
660
                                                </span>
Deni Rinaldi's avatar
Deni Rinaldi committed
661
                                                <Typography style={{ fontSize: 12, marginLeft: 5 }}>{item.label}</Typography>
d.arizona's avatar
d.arizona committed
662
                                            </div>
Deni Rinaldi's avatar
Deni Rinaldi committed
663
                                            <div className="column-2 grid grid-3x content-center grid-mobile-none gap-15px margin-left-10px">
d.arizona's avatar
d.arizona committed
664 665 666 667
                                                <div className="column-1">
                                                    <CustomCheckbox
                                                        disabled={!this.handleItemChecked(item)}
                                                        checked={this.handleSubItemChecked(item, 1)}
Deni Rinaldi's avatar
Deni Rinaldi committed
668
                                                        onChange={() => this.handleSubItemClick(item, 1)}
d.arizona's avatar
d.arizona committed
669 670 671 672 673 674 675
                                                    />
                                                </div>
                                                <div className="column-2">
                                                    <CustomCheckbox
                                                        // disabled
                                                        disabled={!this.handleItemChecked(item)}
                                                        checked={this.handleSubItemChecked(item, 2)}
Deni Rinaldi's avatar
Deni Rinaldi committed
676
                                                        onChange={() => this.handleSubItemClick(item, 2)}
d.arizona's avatar
d.arizona committed
677 678 679 680 681 682 683
                                                    />
                                                </div>
                                                <div className="column 3">
                                                    <CustomCheckbox
                                                        // disabled
                                                        disabled={!this.handleItemChecked(item)}
                                                        checked={this.handleSubItemChecked(item, 3)}
Deni Rinaldi's avatar
Deni Rinaldi committed
684
                                                        onChange={() => this.handleSubItemClick(item, 3)}
d.arizona's avatar
d.arizona committed
685 686
                                                    />
                                                </div>
d.arizona's avatar
d.arizona committed
687
                                            </div>
d.arizona's avatar
d.arizona committed
688
                                        </div>}
Deni Rinaldi's avatar
Deni Rinaldi committed
689 690 691
                                        {item.sub_menu.length > 0 && item.sub_menu.map((items, indexs) => {
                                            return (
                                                <Collapse in={item.collapse} timeout="auto" unmountOnExit>
d.arizona's avatar
d.arizona committed
692
                                                    <div className="grid grid-2x grid-mobile-none gap-15px padding-left-10px padding-right-10px">
Deni Rinaldi's avatar
Deni Rinaldi committed
693
                                                        <div className="column-1" style={{ display: 'flex', flexDirection: 'row', alignItems: 'center', paddingLeft: 30 }}>
d.arizona's avatar
d.arizona committed
694 695 696 697
                                                            <CustomCheckbox
                                                                checked={this.handleItemChecked(items)}
                                                                onChange={() => this.handleItemClick(items)}
                                                            />
Deni Rinaldi's avatar
Deni Rinaldi committed
698
                                                            <Typography style={{ fontSize: 12, maxWidth: '100%', marginLeft: 5 }}>{items.label}</Typography>
d.arizona's avatar
d.arizona committed
699
                                                        </div>
Deni Rinaldi's avatar
Deni Rinaldi committed
700
                                                        <div className="column-2 grid grid-3x content-center grid-mobile-none gap-15px margin-left-10px">
d.arizona's avatar
d.arizona committed
701 702 703 704
                                                            <div className="column-1">
                                                                <CustomCheckbox
                                                                    disabled={!this.handleItemChecked(items)}
                                                                    checked={this.handleSubItemChecked(items, 1)}
Deni Rinaldi's avatar
Deni Rinaldi committed
705
                                                                    onChange={() => this.handleSubItemClick(items, 1)}
d.arizona's avatar
d.arizona committed
706 707 708 709 710 711
                                                                />
                                                            </div>
                                                            <div className="column-2">
                                                                <CustomCheckbox
                                                                    disabled={!this.handleItemChecked(items)}
                                                                    checked={this.handleSubItemChecked(items, 2)}
Deni Rinaldi's avatar
Deni Rinaldi committed
712
                                                                    onChange={() => this.handleSubItemClick(items, 2)}
d.arizona's avatar
d.arizona committed
713 714 715 716 717 718
                                                                />
                                                            </div>
                                                            <div className="column 3">
                                                                <CustomCheckbox
                                                                    disabled={!this.handleItemChecked(items)}
                                                                    checked={this.handleSubItemChecked(items, 3)}
Deni Rinaldi's avatar
Deni Rinaldi committed
719
                                                                    onChange={() => this.handleSubItemClick(items, 3)}
d.arizona's avatar
d.arizona committed
720 721 722 723 724 725 726
                                                                />
                                                            </div>
                                                        </div>
                                                    </div>
                                                </Collapse>
                                            )
                                        })}
d.arizona's avatar
d.arizona committed
727 728 729 730
                                    </div>
                                )
                            })}
                        </div>
Deni Rinaldi's avatar
Deni Rinaldi committed
731

d.arizona's avatar
d.arizona committed
732
                    </div>
d.arizona's avatar
d.arizona committed
733 734
                    <div className="border-top grid grid-2x" style={{ height: 56, backgroundColor: '#f5f5f5', paddingLeft: 20, paddingRight: 20 }}>
                        <div className="column-1" style={{ alignSelf: 'center' }}>
d.arizona's avatar
d.arizona committed
735 736 737 738 739
                            <button
                                type="button"
                                onClick={() => this.props.onClickClose()}
                            >
                                <div style={{ width: 102, height: 30, border: 'solid 1px #354960', borderRadius: 5, alignItems: 'center', display: 'flex', justifyContent: 'center' }}>
d.arizona's avatar
d.arizona committed
740
                                    <span style={{ color: '#354960', fontSize: 11 }}>Cancel</span>
d.arizona's avatar
d.arizona committed
741 742
                                </div>
                            </button>
Deni Rinaldi's avatar
Deni Rinaldi committed
743

d.arizona's avatar
d.arizona committed
744
                        </div>
Deni Rinaldi's avatar
Deni Rinaldi committed
745
                        <div className="column-2" style={{ display: 'flex', justifyContent: 'flex-end', alignItems: 'center' }}>
d.arizona's avatar
d.arizona committed
746 747 748
                            <button
                                type="button"
                                onClick={() => this.validasi()}
Deni Rinaldi's avatar
Deni Rinaldi committed
749
                            >
d.arizona's avatar
d.arizona committed
750
                                <div style={{ width: 102, height: 30, backgroundColor: '#354960', borderRadius: 5, alignItems: 'center', display: 'flex', justifyContent: 'center' }}>
d.arizona's avatar
d.arizona committed
751
                                    <span style={{ color: '#fff', fontSize: 11 }}>Save</span>
d.arizona's avatar
d.arizona committed
752 753
                                </div>
                            </button>
d.arizona's avatar
d.arizona committed
754 755 756 757 758 759 760
                        </div>
                    </div>
                </div>
            </div>
        );
    }
}