meraproject/lib/js/bws/react/ui/dropper.min.js

3 lines
3.8 KiB
JavaScript
Raw Normal View History

var Dropper,FileUploadBar;export default window.Dropper=Dropper=class extends React.Component{constructor(e){var t,s;switch(super(e),this.state={files:[],uploads:[]},this.buttonTitle=null!=(t=e.buttonTitle)?t:"Загрузить",this.file=null,this.type=null!=(s=e.type)?s:"image",this.sendFiles=this.sendFiles.bind(this),this.sendFile=this.sendFile.bind(this),this.changeFiles=this.changeFiles.bind(this),this.url="",this.type){case"image":this.url="/api/common.image/upload/";break;case"dsek_file":this.url="/api/themes.dsek.file/upload/";break;case"kptracking_file":this.url="/api/themes.kptracking.file/upload/"}}changeFiles(){return this.sendFiles()}clickChooseFile(){return console.log("click clack",this.file),$(this.file).click()}sendFiles(){var e,t,s,a,i,n,l,r,o;for(t in o=[],s=this.file.files)void 0!==(e=s[t])&&void 0!==e.type&&((null!=e&&null!=(a=e.type)?a.match(/image.*/):void 0)||(null!=e&&null!=(i=e.type)?i.match(/audio.*/):void 0)||(null!=e&&null!=(n=e.type)?n.match(/text.*/):void 0)||(null!=e&&null!=(l=e.type)?l.match(/application.*/):void 0)||(null!=e&&null!=(r=e.type)?r.match(/video.*/):void 0))?o.push(this.sendFile(e)):o.push(void 0);return o}sendFile(e){var t;return({uploads:t}=this.state),t.push(React.createElement(FileUploadBar,{file:e,url:this.url,callback:this.props.callback,data:this.props.data})),this.setState({uploads:t})}render(){var e,t=this;return e=this.state.uploads,React.createElement("div",null,React.createElement("div",{className:"uploads"},e),React.createElement("input",{type:"file",ref:function(e){return t.file=e},onChange:this.changeFiles,className:"dn"}),React.createElement("button",{type:"button",className:"btn blue small ml-0",onClick:this.clickChooseFile.bind(this)},this.buttonTitle))}};FileUploadBar=class extends React.Component{constructor(e){var t,s;super(e),this.file=e.file,this.reader=null,this.url=e.url,this.data=null!=(t=e.data)?t:[],this.callback=null!=(s=e.callback)?s:null,this.state={percent:0,uploaded:!1},this.createRequestObject=this.createRequestObject.bind(this),this.onLoadEnd=this.onLoadEnd.bind(this),this.onProgress=this.onProgress.bind(this),this.onReadyStateChange=this.onReadyStateChange.bind(this)}createRequestObject(){if("undefined"==typeof XMLHttpRequest){try{return new ActiveXObject("Msxml2.XMLHTTP.6.0")}catch(e){}try{return new ActiveXObject("Msxml2.XMLHTTP.3.0")}catch(e){}try{return new ActiveXObject("Msxml2.XMLHTTP")}catch(e){}try{return new ActiveXObject("Microsoft.XMLHTTP")}catch(e){}throw new Error("This browser does not support XMLHttpRequest.")}return new XMLHttpRequest}onLoadEnd(e){var t,s,a,i,n;for(s in i=this.file,a=this.data,console.log("upload_to",this.url,a),(n=this.createRequestObject()).upload.addEventListener("progress",this.onProgress,!1),n.onreadystatechange=this.onReadyStateChange,n.open("POST",this.url),"xxxxxxxxx",n.setRequestHeader("Content-Type","multipart/form-data; boundary=xxxxxxxxx"),n.setRequestHeader("Cache-Control","no-cache"),t="--xxxxxxxxx\r\n",t+="Content-Disposition: form-data; name='myFile'; filename='"+i.name+"'\r\n",t+="Content-Type: "+i.type+"\r\n\r\n",t+=this.reader.result+"\r\n",t+="--xxxxxxxxx\r\n",a)t+='Content-Disposition: form-data; name="'+s+'"\r\n\r\n',t+=a[s]+"\r\n",t+="--xxxxxxxxx\r\n";return n.sendAsBinary?n.sendAsBinary(t):n.send(t)}onReadyStateChange(e){var t,s;if(4===(s=e.target).readyState&&200===s.status&&null!=this.callback){t=s.responseText;try{t=JSON.parse(t)}catch(e){t=s.responseText}return this.callback(t),this.setState({uploaded:!0})}}onProgress(e){var t;return t=0,e.lengthComputable&&(t=100*e.loaded/e.total),this.setState({percent:t})}componentDidMount(){return this.sendFile()}sendFile(){return this.reader=new FileReader,this.reader.onloadend=this.onLoadEnd,this.reader.readAsDataURL(this.file)}render(){var e,t;return({percent:e,uploaded:t}=this.state),t?null:React.createElement("div",null,e,"%")}};
//# sourceMappingURL=dropper.min.js.map