import React, { Component, createRef } from "react"
import Dropzone from 'react-dropzone'
import LinearProgress from '@material-ui/core/LinearProgress'
import Images from "../assets/Images"
import MuiAlert from '@material-ui/lab/Alert';
import { withStyles, Snackbar } from "@material-ui/core";
const dropzoneRef = createRef()
const Alert = withStyles({
})((props) => );
class Upload extends Component {
constructor(props) {
super(props)
this.state = {
file: '',
nameFile: 'File name',
typeFile: '',
sizeFile: '0',
inputVisible: true,
previewVisible: false,
labelUploadVisible: false,
iconButtonUpload: 'fa fa-1x fa-upload',
uploadProgress: false,
percentage: '0',
completed: '0',
alert: false,
alertMessage: '',
sizeUpload: this.props.sizeUpload === undefined ? 1 : this.props.sizeUpload
}
}
componentDidUpdate(prevs, next) {
if (prevs.percentage > 0 && prevs.percentage <= 100) {
// console.log('old percentage', prevs.percentage)
// console.log('new percentage', this.state.percentage)
if (this.state.percentage !== prevs.percentage) {
this.setState({ percentage: prevs.percentage })
}
}
if (prevs.result === 'success' || prevs.result === 'error') {
if (this.state.uploadProgress === true) {
this.setState({ uploadProgress: false, percentage: '100', iconButtonUpload: 'fa fa-1x fa-check' })
}
}
}
componentDidMount() {
if (this.props.docName !== undefined && this.props.docName !== "") {
// console.log('masuk');
this.setState({ docName: this.props.docName, docSize: this.props.docSize, inputVisible: false, editVisible: true })
}
}
onDrop = (acceptedFiles) => {
const formData = new FormData()
let length = acceptedFiles[0].name.split(".").length
let fileType = acceptedFiles[0].name.split(".")[length - 1]
formData.append('file', acceptedFiles[0])
// console.log(sizeFile);
if (this.props.intent === 'management') {
if (acceptedFiles) {
// if (this.props.acceptedFiles.includes(fileType)) {
if ((acceptedFiles[0].size / 1000).toFixed(0) < (this.props.sizeUpload * 1000)) {
this.setState({
file: acceptedFiles[0],
typeFile: fileType,
nameFile: acceptedFiles[0].name,
sizeFile: (acceptedFiles[0].size / 1000).toFixed(0),
previewVisible: true,
inputVisible: false,
uploadProgress: false,
percentage: '0'
})
this.props.onHandle(acceptedFiles[0])
} else {
this.setState({ alertMessage: `The file is too large. Allowed maximum size is ${this.props.sizeUpload} MB`, alert: true })
// alert('File Tidak Boleh Lebih Dari 1MB')
}
// } else {
// this.setState({ alertMessage: 'File extension not allowed', alert: true })
// // alert('File Tidak Mendukung')
// }
}
else {
this.setState({
previewVisible: false,
inputVisible: true,
uploadProgress: false,
percentage: '0'
})
this.setState({ alertMessage: "File extension not allowed", alert: true })
// alert("Unsupported Media Type")
}
} else {
if (acceptedFiles) {
this.setState({
file: acceptedFiles[0],
typeFile: fileType,
nameFile: acceptedFiles[0].name,
sizeFile: (acceptedFiles[0].size / 1000).toFixed(0),
previewVisible: true,
inputVisible: false,
uploadProgress: false,
percentage: '0'
})
this.props.onHandle(acceptedFiles[0])
}
else {
this.setState({
previewVisible: false,
inputVisible: true,
uploadProgress: false,
percentage: '0'
})
this.setState({ alertMessage: "File extension not allowed", alert: true })
// alert("Unsupported Media Type")
}
}
}
onRemove = () => {
if (this.props.intent === "management") {
this.setState({
previewVisible: false,
editVisible: false,
inputVisible: true,
uploadProgress: false,
percentage: '0'
})
this.props.onDelete("delete")
} else {
this.setState({
previewVisible: false,
editVisible: false,
inputVisible: true,
uploadProgress: false,
percentage: '0'
})
}
}
onUpload = () => {
// this.props.onUpload()
var strProps = this.props.acceptedFiles
var strState = this.state.typeFile
// console.log(strProps);
// console.log(strState);
if (strProps.includes(strState)) {
if (this.props.intent === 'management') {
if (this.state.sizeFile < this.state.sizeUpload * 1000) {
this.props.onUpload()
} else {
this.setState({ alertMessage: 'The file is too large. Allowed maximum size is 1MB', alert: true })
// alert('File Tidak Boleh Lebih Dari 1MB')
}
} else {
if (this.state.sizeFile < this.state.sizeUpload * 1000) {
this.props.onUpload()
} else {
this.setState({ alertMessage: 'The file is too large. Allowed maximum size is 1MB', alert: true })
// alert('File Tidak Boleh Lebih Dari 1MB')
}
}
} else {
this.setState({ alertMessage: 'File extension not allowed', alert: true })
// alert('File Tidak Mendukung')
}
}
closeAlert() {
this.setState({ alert: false })
}
render() {
return (
{({ getRootProps, getInputProps }) => (
this.closeAlert()}>
this.closeAlert()} severity={"warning"}>
{this.state.alertMessage}
{/* label */}
{this.state.inputVisible
?
: null}
{/* edit */}
{this.state.editVisible ?
{this.state.docName}
{this.state.docSize/1000} KB
: null}
{/* file */}
{this.state.previewVisible
?
{this.state.nameFile}
{this.state.sizeFile} KB
{/* this.state.uploadProgress === true
? (
({this.state.percentage})%
) : null */}
{this.props.type === 'upload' ?
Uploading {this.state.percentage}%
: null}
{this.props.disableButtonUpload !== true ? (
) : null}
{this.props.type === 'upload' ?
: null}
{/* this.state.uploadProgress === true
? (
) : null */}
: null}
{/* image */}
{/*
*/}
)}
)
}
}
export default Upload