import React, { Component } from 'react'; import { TextField, Typography, withStyles, Snackbar } from '@material-ui/core'; import { DatePicker } from '@material-ui/pickers'; import format from "date-fns/format"; import Autocomplete from '@material-ui/lab/Autocomplete'; import MuiAlert from '@material-ui/lab/Alert'; import api from '../../../api'; import * as R from 'ramda' import { titleCase } from '../../../library/Utils'; import Images from '../../../assets/Images'; const Alert = withStyles({ })((props) => ); export default class EditReportItems extends Component { constructor(props) { super(props) this.state = { tempData: null, InputType: null, company: null, parent: null, reportType: null, startDate: null, endDate: null, order: null, description: '', uom: '', weight: "", formula: '', realVal: '', condition: null, date: new Date(), listInputType: null, listCompany: null, listReportType: null, listParent: null, errorOrder: false, errorDesc: false, errorFormula: false, errorRV: false, errorStartDate: false, errorEndDate: false, errorJenisLaporan: false, errorPerusahaan: false, msgErrorJenisLaporan: '', msgErrorPerusahaan: '', msgErrorOrder: '', msgErrorDesc: '', msgErrorFormula: '', errorTipeData: false, msgErrorTipeData: '', errorCondition: false, msgErrorCondition: '', msgErrorRV: '', msgErrorSD: '', msgErrorED: '', disabledFormula: true, disabledCondt: true, disabledValue: true, options: ['WARNING', 'STOPPER'], alert: false, tipeAlert: '', messageAlert: '' } } componentDidMount() { this.getDetailReportItems(); } handleChange(e, type) { let data = this.state let isDate = type !== '' ? true : false if (isDate && type === 'start_date') { this.setState({ ...data, tempData: { ...this.state.tempData, start_date: format(e, 'yyyy-MM-dd'), end_date: null }, errorOrder: false, errorDesc: false, errorFormula: false, errorRV: false, errorStartDate: false, errorEndDate: false, msgErrorOrder: '', msgErrorDesc: '', msgErrorFormula: '', msgErrorRV: '', msgErrorSD: '', msgErrorED: '', }) } else if (isDate && type === 'end_date') { this.setState({ ...data, tempData: { ...this.state.tempData, end_date: format(e, 'yyyy-MM-dd') }, errorOrder: false, errorDesc: false, errorFormula: false, errorRV: false, errorStartDate: false, errorEndDate: false, msgErrorOrder: '', msgErrorDesc: '', msgErrorFormula: '', msgErrorRV: '', msgErrorSD: '', msgErrorED: '', }) } else { this.setState({ ...data, tempData: { ...this.state.tempData, [e.target.name]: e.target.value }, errorOrder: false, errorDesc: false, errorFormula: false, errorRV: false, errorStartDate: false, errorEndDate: false, msgErrorOrder: '', msgErrorDesc: '', msgErrorFormula: '', msgErrorRV: '', msgErrorSD: '', msgErrorED: '', }) } } validasi() { // alert('coba ya') if (R.isNil(this.state.reportType)){ this.setState({errorJenisLaporan: true, msgErrorJenisLaporan: 'Jenis Laporan Harus Diisi'}) } else if (R.isNil(this.state.company)){ this.setState({ errorPerusahaan: true, msgErrorPerusahaan: 'Perusahaan Harus Diisi'}) } else if (R.isEmpty(this.state.tempData.order)) { this.setState({ errorOrder: true, msgErrorOrder: 'Order Harus Diisi' }) } else if (R.isEmpty(this.state.tempData.description)) { this.setState({ errorDesc: true, msgErrorDesc: 'Deskripsi Harus Diisi' }) } else if (R.isNil(this.state.InputType)) { this.setState({ errorTipeData: true, msgErrorTipeData: 'Tipe Data Harus Diisi' }) } else if ((this.state.InputType.type_report_name === 'Formula' && R.isEmpty(this.state.tempData.formula)) || (this.state.InputType.type_report_name === 'Validation' && R.isEmpty(this.state.tempData.formula))) { this.setState({ errorFormula: true, msgErrorFormula: 'Formula Harus Diisi' }) } else if (this.state.InputType.type_report_name === 'Validation' && R.isEmpty(this.state.tempData.condition_it_should_be)) { this.setState({ errorRV: true, msgErrorRV: 'Nilai Seharusnya Harus Diisi' }) } else if (this.state.InputType.type_report_name === 'Validation' && R.isNil(this.state.tempData.condition_if_wrong)) { this.setState({ errorCondition: true, msgErrorCondition: 'Kondisi Jika Salah Harus Diisi' }) } else if (R.isNil(this.state.tempData.start_date)) { this.setState({ errorStartDate: true, msgErrorSD: 'Start Date Harus Diisi' }) } else if (R.isNil(this.state.tempData.end_date)) { this.setState({ errorEndDate: true, msgErrorED: 'End Date Harus Diisi' }) } else { this.updateReportItems() } } updateReportItems() { // alert('test') let payload = { "item_report_id": this.state.tempData.item_report_id, "report_id": this.state.reportType == null ? this.state.tempData.report_id : this.state.reportType.report_id, "company_id": this.state.company == null ? this.state.tempData.company_id : this.state.company.company_id, "description": this.state.tempData.description, "orders": this.state.tempData.order, "parent": this.state.parent == null ? this.state.tempData.parent : this.state.parent.item_report_id, "type_report_id": this.state.InputType == null ? this.state.tempData.type_report_id : this.state.InputType.type_report_id, "formula": this.state.tempData.formula, "uom": this.state.tempData.uom, "weight": this.state.tempData.weight == null ? "" : this.state.tempData.weight, "condition_if_wrong": this.state.tempData.condition_if_wrong, "condition_it_should_be": this.state.tempData.condition_it_should_be, "start_date": this.state.tempData.start_date, "end_date": this.state.tempData.end_date } console.log(payload) this.props.updateReportItems(payload) } getDetailReportItems() { api.create().getDetailReportItems(this.props.data[1]).then((response) => { if (response.data) { if (response.data.status === 'success') { this.setState({ tempData: response.data.data }, () => this.getInputType(), this.getPerusahaan(), this.getReportType(),) console.log(response.data.data) } else { this.setState({ alert: true, messageAlert: response.data.message, tipeAlert: 'warning' }) } } else { this.setState({ alert: true, messageAlert: response.problem, tipeAlert: 'error' }) } }) } getInputType() { api.create().getInputType().then((response) => { // console.log(response) if (response.data) { if (response.data.status === 'success') { let data = response.data.data let inputData = data.map((item) => { return { type_report_id: item.type_report_id, type_report_name: item.type_report_name } }) let defaultProps = { options: inputData, getOptionLabel: (option) => titleCase(option.type_report_name), }; let index = inputData.findIndex((val) => val.type_report_id === this.state.tempData.type_report_id) this.setState({ listInputType: defaultProps, InputType: index === -1 ? null : inputData[index] }) } else { this.setState({ alert: true, messageAlert: response.data.message, tipeAlert: 'warning' }) } } else { this.setState({ alert: true, messageAlert: response.problem, tipeAlert: 'error' }) } }) } getPerusahaan() { api.create().getPerusahaanActive().then((response) => { console.log(response) if (response.data) { if (response.data.status === 'success') { let data = response.data.data let companyData = data.map((item) => { return { company_id: item.company_id, company_name: item.company_name } }) let defaultProps = { options: companyData, getOptionLabel: (option) => titleCase(option.company_name), }; let index = companyData.findIndex((val) => val.company_id === this.state.tempData.company_id) this.setState({ listCompany: defaultProps, company: index === -1 ? null : companyData[index] }, () => this.getParent()) } else { this.setState({ alert: true, messageAlert: response.data.message, tipeAlert: 'warning' }) } } else { this.setState({ alert: true, messageAlert: response.problem, tipeAlert: 'error' }) } }) } getReportType() { api.create().getReportType().then((response) => { console.log(response) if (response.data) { if (response.data.status === 'success') { let data = response.data.data let reportTypeData = data.map((item) => { return { report_id: item.report_id, report_name: item.report_name, } }) let defaultProps = { options: reportTypeData, getOptionLabel: (option) => titleCase(option.report_name), }; let index = reportTypeData.findIndex((val) => val.report_id === this.state.tempData.report_id) this.setState({ listReportType: defaultProps, reportType: index === -1 ? null : reportTypeData[index] }, () => this.getParent()) } else { this.setState({ alert: true, messageAlert: response.data.message, tipeAlert: 'warning' }) } } else { this.setState({ alert: true, messageAlert: response.problem, tipeAlert: 'error' }) } }) } getParent() { if (this.state.reportType !== null && this.state.company !== null) { let payload = { "report_id": this.state.reportType.report_id, "company_id": this.state.company.company_id } api.create().getReportParent(payload).then((response) => { console.log(response) if (response.data) { if (response.data.status === 'success') { let data = response.data.data let parentData = data.map((item) => { return { item_report_id: item.item_report_id, description: item.description } }) let defaultProps = { options: parentData, getOptionLabel: (option) => titleCase(option.description), }; let index = parentData.findIndex((val) => val.item_report_id === this.state.tempData.parent) this.setState({ listParent: defaultProps, parent: index == -1 ? null : parentData[index] }) } else { this.setState({ alert: true, messageAlert: response.data.message, tipeAlert: 'warning' }) } } else { this.setState({ alert: true, messageAlert: response.problem, tipeAlert: 'error' }) } }) } } clearMessage() { this.setState({ errorFormula: false, msgErrorFormula: '', errorTipeData: false, msgErrorTipeData: '', errorCondition: false, msgErrorCondition: '', errorRV: false, msgErrorRV: '', errorJenisLaporan: false, msgErrorJenisLaporan: '', errorPerusahaan: false, msgErrorPerusahaan: '' }) } closeAlert() { this.setState({ alert: false }) } render() { return (
Edit Data
this.closeAlert()}> this.closeAlert()} severity={this.state.tipeAlert}> {this.state.messageAlert}
null} inputProps={{ style: { fontSize: 11, fontFamily: 'Nunito Sans, sans-serif' } }} InputLabelProps={{ style: { fontSize: 11, fontFamily: 'Nunito Sans, sans-serif', color: '#7e8085' } }} />
this.setState({ reportType: newInputValue }, () => this.getParent(), this.clearMessage() )} debug renderInput={(params) => } value={this.state.reportType} />
this.setState({ company: newInputValue }, () => this.getParent(), this.clearMessage())} debug renderInput={(params) => } value={this.state.company} />
this.handleChange(e, '')} inputProps={{ min: 0, style: { fontSize: 11, fontFamily: 'Nunito Sans, sans-serif' } }} InputLabelProps={{ style: { fontSize: 11, fontFamily: 'Nunito Sans, sans-serif', color: '#7e8085' } }} >
this.handleChange(e, '')} value={this.state.tempData === null ? '' : this.state.tempData.description} inputProps={{ style: { fontSize: 11, fontFamily: 'Nunito Sans, sans-serif' } }} InputLabelProps={{ style: { fontSize: 11, fontFamily: 'Nunito Sans, sans-serif', color: '#7e8085' } }} >
this.setState({ parent: newInputValue })} disabled={this.state.reportType == null || this.state.company == null} debug renderInput={(params) => } value={this.state.parent} />
this.handleChange(e, '')} value={this.state.tempData === null ? '' : this.state.tempData.uom} inputProps={{ style: { fontSize: 11, fontFamily: 'Nunito Sans, sans-serif' } }} InputLabelProps={{ style: { fontSize: 11, fontFamily: 'Nunito Sans, sans-serif', color: '#7e8085' } }} >
this.handleChange(e, '')} value={this.state.tempData === null ? '' : this.state.tempData.weight} inputProps={{ style: { fontSize: 11, fontFamily: 'Nunito Sans, sans-serif' } }} InputLabelProps={{ style: { fontSize: 11, fontFamily: 'Nunito Sans, sans-serif', color: '#7e8085' } }} >
this.setState({ InputType: newInputValue, tempData: { ...this.state.tempData, formula: '', condition_it_should_be: '', condition_if_wrong: '' }, }, () => console.log(this.state.InputType), this.clearMessage())} debug renderInput={(params) => } value={this.state.InputType} />
this.handleChange(e, '')} value={this.state.tempData === null ? '' : this.state.tempData.formula} inputProps={{ style: { fontSize: 11, fontFamily: 'Nunito Sans, sans-serif' } }} InputLabelProps={{ style: { fontSize: 11, fontFamily: 'Nunito Sans, sans-serif', color: '#7e8085' } }} >
this.handleChange(e, '')} value={this.state.tempData === null ? '' : this.state.tempData.condition_it_should_be} inputProps={{ style: { fontSize: 11, fontFamily: 'Nunito Sans, sans-serif' } }} InputLabelProps={{ style: { fontSize: 11, fontFamily: 'Nunito Sans, sans-serif', color: '#7e8085' } }} />
{ this.setState({ tempData: { ...this.state.tempData, condition_if_wrong: newValue } }, () => this.clearMessage()); }} options={this.state.options} renderInput={(params) => } />
this.handleChange(e, 'start_date')} KeyboardButtonProps={{ 'aria-label': 'change date', }} style={{ padding: 0, margin: 0, width: '100%' }} />
this.handleChange(e, 'end_date')} KeyboardButtonProps={{ 'aria-label': 'change date', }} style={{ padding: 0, margin: 0, width: '100%' }} />
Dibuat : {this.state.tempData === null ? "" : this.state.tempData.created}
Diubah : {this.state.tempData === null ? "" : this.state.tempData.updated}
) } }