import React, { Component } from "react"; import { Container, Row, Col } from "react-bootstrap"; import { makeStyles, createMuiTheme, MuiThemeProvider } from '@material-ui/core/styles'; import SearchIcon from '@material-ui/icons/Search'; import Images from "../../assets/Images"; import MUIDataTable from "mui-datatables"; import AddRole from './UserRole/AddRole'; import EditRole from './UserRole/EditRole' import api from "../../api"; import { titleCase } from "../../library/Utils"; import { InputAdornment, TextField } from "@material-ui/core"; var ct = require("../../library/CustomTable"); const getMuiTheme = () => createMuiTheme(ct.customTable()); const options = ct.customOptions(); export default class UserRole extends Component { constructor(props) { super(props) this.state = { listRole: [], indexData: {}, add: false, edit: false } } componentDidMount() { this.getRole() } closeEdit() { this.setState({edit: false}) } closeAdd() { this.setState({add: false}) } getRole() { api.create().getRole().then((response) => { // console.log(response) if (response.data.status == 'success') { let data = response.data.data let listData = data.map((item,index) => { return [index, item.role_id, item.role_name, item.access, item.status] }) console.log(listData) this.setState({listRole: listData}) // this.setState({listRole: response.data.data}, () => { // console.log(this.state.listRole) // }) } else { alert(response.data.message) } console.log(response.data.data) }) } render() { const columns = [{ name: "Action", options: { customBodyRender: (val, tableMeta) => { return ( <div style={{ display: 'flex' }}> <button style={{ backgroundColor: 'transparent', cursor: 'pointer', borderColor: 'transparent', }} // onClick={() => console.log(tableMeta.rowData[1])} onClick={() => this.setState({edit: true, indexData: tableMeta.rowData[1]})} > <img src={Images.editCopy} /> </button> </div > ); } } }, { name: "ID", options: { customBodyRender: (val, tableMeta) => { return ( <div style={{ display: 'flex', width: 50 }}> {val} </div > ); } } }, { name: "Nama Lengkap", options: { customBodyRender: (val, tableMeta) => { return ( <div style={{ display: 'flex', width: 200 }}> {titleCase(val)} </div > ); } } }, { name: "Email", options: { customBodyRender: (val, tableMeta) => { return ( <div style={{ display: 'flex', width: 150 }}> {titleCase(val)} </div > ); } } }, { name: "Role", options: { customBodyRender: (val, tableMeta) => { return ( <div style={{ display: 'flex', width: 100 }}> {titleCase(val)} </div > ); } } }, { name: "Perusahaan", options: { customBodyRender: (val, tableMeta) => { return ( <div style={{ display: 'flex'}}> {val} </div > ); } } }, "Status"] const data = [ ["1", "1", "Juki Kudet", "Juki@gmail.com)", "Admin", "Kepo", "Aktif"], ["1", "2", "Kuji Mama", "Loro@gmail.com)", "Admin", "Kepo", "Aktif"], ["1", "3", "Sutaru", "Jaka@gmail.com)", "Admin", "Kepo", "Aktif"], ["1", "4", "Tatang Katro", "ikup@gmail.com)", "Admin", "Kepo", "Aktif"], ["1", "5", "Firman", "Sudir@gmail.com)", "Admin", "Kepo", "Aktif"], ] return ( <div style={{ height: this.props.height }}> {/* <Row> */} <div style={{ height: 199, backgroundColor: '#354960', width: '100%' }} /> <div> <div style={{ display: 'flex', flexDirection: 'row', justifyContent: 'space-between', paddingRight: 25, paddingLeft: 25, marginTop: -150 }}> <label style={{ fontFamily: 'nunito', color: 'white', width: '20%', alignSelf: 'center', fontSize: 18}}>Master Data - User</label> <div style={{width: '60%', justifyContent: 'center', display: 'flex', borderWidth: 2, alignItems: 'center' }}> <div style={{width: '50%', backgroundColor:'white', padding: 10, borderRadius: 7.5}}> <TextField id="input-with-icon-textfield" name="search" value={this.state.search} placeholder={'Search'} onChange={(e) => { this.setState({ search: e.target.value }, () => { if (this.state.search.length > 0) { this.searchRole() } else { this.getRole() } }); }} onKeyDown={(e) => this._handleKeyDown(e)} style={{width: '100%', borderBottomWidth: 0, borderBottomColor: 'red'}} InputProps={{ style: { fontFamily: 'nunito', borderBottomColor: 'white'}, startAdornment: ( <InputAdornment position="start"> <SearchIcon /> </InputAdornment> ), }} /> </div> </div> {/* <label style={{ color: 'white', width: '60%', justifyContent: 'center', display: 'flex', backgroundColor: 'white', borderWidth: 2, alignItems: 'center' }}>Search</label> */} <div style={{ width: '20%', justifyContent: 'flex-end', display: 'flex' }}> <img src={Images.template}/> <img src={Images.upload} style={{marginLeft: 20}}/> <img src={Images.download} style={{marginLeft: 20}}/> <img src={Images.add} onClick={() => this.setState({add: true})} style={{marginLeft: 20}}/> </div> </div> <div style={{ padding: 25 }}> <MuiThemeProvider theme={getMuiTheme()}> <MUIDataTable data={data} columns={columns} options={options} /> </MuiThemeProvider> </div> </div> {this.state.add && ( <AddRole onClickClose={this.closeAdd.bind(this)} data={this.state.indexData} /> )} {this.state.edit && ( <EditRole onClickClose={this.closeEdit.bind(this)} data={this.state.indexData} /> )} </div> ); } }