import React, { Component } from 'react'; import { TextField, Typography } from '@material-ui/core'; import * as R from 'ramda' import { DateTimePicker, KeyboardDatePicker, DatePicker } from "@material-ui/pickers"; import format from "date-fns/format"; export default class CreateUnitBisnis extends Component { constructor(props) { super(props) this.state = { id: '', name: '', startDate: '', endDate: '' } } render() { let { type } = this.props return type === 'edit' ? this.renderEdit() : this.renderCreate() } componentDidMount() { if (this.props.type === 'edit') { let data = this.props.data this.setState({ id: data.business_unit_id, name: data.business_unit_name, startDate: data.start_date, endDate: data.end_date }) } } handleChange(e, type) { let data = this.state let isDate = type !== '' ? true : false if (isDate && type == 'start_date') { this.setState({ startDate: format(e, 'yyyy-MM-dd') }, () => { console.log(this.state.startDate) }) } else if (isDate && type == 'end_date') { this.setState({ endDate: format(e, 'yyyy-MM-dd') }, () => { console.log(this.state.endDate) }) } else { // this.setState({...data, tempData: {...this.state.tempData, [e.target.name] : e.target.value}}) } } validasi() { if (R.isEmpty(this.state.name)) return alert("Unit Bisnis Name is Required."); if (!R.isEmpty(this.state.startDate) && !R.isEmpty(this.state.endDate) && (this.state.startDate > this.state.endDate)) return alert("Masa Berlaku Tidak Boleh Kurang Dari Tanggal Mulai"); if (R.isEmpty(this.state.startDate)) return alert("Tanggal Mulai is Required."); if (R.isEmpty(this.state.endDate)) return alert("Tanggal Berakhir is Required."); console.log('masuk'); if (this.props.type == 'edit') { let payload = { "business_unit_id": this.state.id, "business_unit_name": this.state.name, "start_date": this.state.startDate, "end_date": this.state.endDate } this.props.updateUnitBisnis(payload) } else if (this.props.type == 'create') { let payload = { "business_unit_name": this.state.name, "start_date": this.state.startDate, "end_date": this.state.endDate } this.props.createUnitBisnis(payload) } } renderEdit() { return ( <div className="test app-popup-show"> <div className="popup-content background-white border-radius" style={{ borderRadius: 8 }}> <div className="popup-panel grid grid-2x" style={{ backgroundColor: '#51c6ea', height: 64, borderTopRightRadius: 8, borderTopLeftRadius: 8 }}> <div className="col-1" style={{ maxWidth: "inherit", display: 'flex', alignItems: 'center' }}> <div className="popup-title"> <span style={{ color: '#fff', fontSize: 16, fontWeight: 'bold' }}>Edit Data</span> </div> </div> <div className="col-2 content-right" style={{ maxWidth: "inherit", alignSelf: 'center' }}> <button type="button" className="btn btn-circle btn-white" onClick={() => this.props.onClickClose()} > <i className="fa fa-lg fa-times" style={{ color: 'white' }} /> </button> </div> </div> <div className="border-bottom grid grid-2x grid-mobile-none gap-15px" style={{ padding: 20 }}> <div className="column-1"> <div style={{ backgroundColor: '#e8e8e8', padding: 10, borderRadius: 5 }}> <TextField style={{ width: '100%' }} value={this.props.data.business_unit_id} id="status" label="ID" disabled inputProps={{ style: { fontSize: 11 } }} InputLabelProps={{ style: { fontSize: 11, color: '#7e8085' } }} /> </div> <div className="margin-top-10px" style={{ padding: 10, borderRadius: 5 }}> <DatePicker margin="normal" id="startDate" label="Berlaku Mulai" format="dd MMMM yyyy" value={this.state.startDate} onChange={(e) => this.handleChange(e, 'start_date')} KeyboardButtonProps={{ 'aria-label': 'change date', }} inputProps={{ style: { fontSize: 11 } }} InputLabelProps={{ style: { fontSize: 11, color: '#7e8085' } }} style={{ padding: 0, margin: 0, width: '100%' }} /> </div> <div className="margin-top-10px" style={{ backgroundColor: '#e8e8e8', padding: 10, borderRadius: 5 }}> <TextField style={{ width: '100%' }} value={this.props.data.status} id="status" label="Status" disabled inputProps={{ style: { fontSize: 11 } }} InputLabelProps={{ style: { fontSize: 11, color: '#7e8085' } }} /> </div> <div className="margin-top-10px" style={{ padding: 10, borderRadius: 5 }}> <div style={{ display: 'flex' }}> <Typography style={{ fontSize: 11, width: '20%' }}>Dibuat</Typography> <Typography style={{ fontSize: 11 }}>: {this.props.data.created}</Typography> </div> <div style={{ display: 'flex' }}> <Typography style={{ fontSize: 11, width: '20%' }}>Diubah</Typography> <Typography style={{ fontSize: 11 }}>: {this.props.data.updated == - null ? "" : this.props.data.updated}</Typography> </div> </div> </div> <div className="column-2"> <div style={{ padding: 10, borderRadius: 5 }}> <TextField style={{ width: '100%' }} id="unit" label="Unit Bisnis" value={this.state.name} inputProps={{ style: { fontSize: 11 } }} InputLabelProps={{ style: { fontSize: 11, color: '#7e8085' } }} onChange={(e) => this.setState({ name: e.target.value })} > </TextField> </div> <div className="margin-top-10px" style={{ padding: 10, borderRadius: 5 }}> <DatePicker margin="normal" id="startDate" label="Berlaku Hingga" format="dd MMMM yyyy" value={this.state.endDate} onChange={(e) => this.handleChange(e, 'end_date')} KeyboardButtonProps={{ 'aria-label': 'change date', }} inputProps={{ style: { fontSize: 11 } }} InputLabelProps={{ style: { fontSize: 11, color: '#7e8085' } }} style={{ padding: 0, margin: 0, width: '100%' }} /> </div> </div> </div> <div className="border-top grid grid-2x" style={{ height: 56, backgroundColor: '#f5f5f5', paddingLeft: 20, paddingRight: 20 }}> <div className="column-1" style={{ alignSelf: 'center' }}> <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' }}> <span style={{ color: '#354960', fontSize: 11 }}>Batal</span> </div> </button> </div> <div className="column-2" style={{ display: 'flex', justifyContent: 'flex-end', alignItems: 'center' }}> <button type="button" onClick={() => this.validasi()} > <div style={{ width: 102, height: 30, backgroundColor: '#354960', borderRadius: 5, alignItems: 'center', display: 'flex', justifyContent: 'center' }}> <span style={{ color: '#fff', fontSize: 11 }}>Simpan</span> </div> </button> </div> </div> </div> </div> ) } renderCreate() { return ( <div className="test app-popup-show" style={{ paddingTop: 100 }}> <div className="popup-content background-white border-radius" style={{ borderRadius: 8 }}> <div className="popup-panel grid grid-2x" style={{ backgroundColor: '#51c6ea', height: 64, borderTopRightRadius: 8, borderTopLeftRadius: 8 }}> <div className="col-1" style={{ maxWidth: "inherit", display: 'flex', alignItems: 'center' }}> <div className="popup-title"> <span style={{ color: '#fff', fontSize: 16, fontWeight: 'bold' }}>Create Data</span> </div> </div> <div className="col-2 content-right" style={{ maxWidth: "inherit", alignSelf: 'center' }}> <button type="button" className="btn btn-circle btn-white" onClick={() => this.props.onClickClose()} > <i className="fa fa-lg fa-times" style={{ color: 'white' }} /> </button> </div> </div> <div className="border-bottom grid grid-2x grid-mobile-none gap-15px" style={{ padding: 20 }}> <div className="column-1"> <div style={{ backgroundColor: '#e8e8e8', padding: 10, borderRadius: 5 }}> <TextField style={{ width: '100%' }} // value={this.props.data.business_unit_id} id="status" label="ID" disabled inputProps={{ style: { fontSize: 11 } }} InputLabelProps={{ style: { fontSize: 11, color: '#7e8085' } }} /> </div> <div className="margin-top-10px" style={{ padding: 10, borderRadius: 5 }}> <DatePicker margin="normal" id="startDate" label="Berlaku Mulai" format="dd MMMM yyyy" value={this.state.startDate == "" ? null : this.state.startDate} onChange={(e) => this.handleChange(e, 'start_date')} KeyboardButtonProps={{ 'aria-label': 'change date', }} inputProps={{ style: { fontSize: 11 } }} InputLabelProps={{ style: { fontSize: 11, color: '#7e8085' } }} style={{ padding: 0, margin: 0, width: '100%' }} /> </div> <div className="margin-top-10px" style={{ padding: 10, borderRadius: 5, backgroundColor: '#e8e8e8', }}> <TextField style={{ width: '100%' }} defaultValue={"Aktif"} id="status" label="Status" disabled inputProps={{ style: { fontSize: 11 } }} InputLabelProps={{ style: { fontSize: 11, color: '#7e8085' } }} /> </div> <div className="margin-top-10px" style={{ padding: 10, borderRadius: 5 }}> <Typography style={{ fontSize: 11 }}>Dibuat : Admin - 21 Jul 2020, 18:45</Typography> <Typography style={{ fontSize: 11 }}>Diubah : Admin - 21 Jul 2020, 18:45</Typography> </div> </div> <div className="column-2"> <div style={{ padding: 10, borderRadius: 5 }}> <TextField style={{ width: '100%' }} id="unit" label="Unit Bisnis" value={this.state.name} inputProps={{ style: { fontSize: 11 } }} InputLabelProps={{ style: { fontSize: 11, color: '#7e8085' } }} onChange={(e) => this.setState({ name: e.target.value })} > </TextField> </div> <div className="margin-top-10px" style={{ padding: 10, borderRadius: 5 }}> <DatePicker margin="normal" id="endDate" label="Berlaku Hingga" format="dd MMMM yyyy" value={this.state.endDate == "" ? null : this.state.endDate} onChange={(e) => this.handleChange(e, 'end_date')} KeyboardButtonProps={{ 'aria-label': 'change date', }} inputProps={{ style: { fontSize: 11 } }} InputLabelProps={{ style: { fontSize: 11, color: '#7e8085' } }} style={{ padding: 0, margin: 0, width: '100%' }} /> </div> </div> </div> <div className="border-top grid grid-2x" style={{ height: 56, backgroundColor: '#f5f5f5', paddingLeft: 20, paddingRight: 20 }}> <div className="column-1" style={{ alignSelf: 'center' }}> <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' }}> <span style={{ color: '#354960', fontSize: 11 }}>Batal</span> </div> </button> </div> <div className="column-2" style={{ display: 'flex', justifyContent: 'flex-end', alignItems: 'center' }}> <button type="button" onClick={() => this.validasi()} > <div style={{ width: 102, height: 30, backgroundColor: '#354960', borderRadius: 5, alignItems: 'center', display: 'flex', justifyContent: 'center' }}> <span style={{ color: '#fff', fontSize: 11 }}>Simpan</span> </div> </button> </div> </div> </div> </div > ); } }