mirror of
https://github.com/galaxyproject/galaxy.git
synced 2026-09-24 16:30:27 +08:00
3 lines
3.3 KiB
JavaScript
Executable File
3 lines
3.3 KiB
JavaScript
Executable File
"use strict";!function(e){jQuery.event.props.push("dataTransfer"),e.uploadpost=function(r){var n=e.extend({},{data:{},success:function(){},error:function(){},progress:function(){},url:null,maxfilesize:2048,error_filesize:"File exceeds 2GB. Please use a FTP client.",error_default:"Please make sure the file is available.",error_server:"Upload request failed.",error_login:"Uploads require you to log in."},r),t=n.data;if(t.error_message)n.error(t.error_message);else{var o=new FormData;for(var a in t.payload)o.append(a,t.payload[a]);var i=0;for(var a in t.files){var s=t.files[a];o.append(s.name,s.file,s.file.name),i+=s.file.size}i>1048576*n.maxfilesize?n.error(n.error_filesize):(xhr=new XMLHttpRequest,xhr.open("POST",n.url,!0),xhr.setRequestHeader("Accept","application/json"),xhr.setRequestHeader("Cache-Control","no-cache"),xhr.setRequestHeader("X-Requested-With","XMLHttpRequest"),xhr.onreadystatechange=function(){if(xhr.readyState==xhr.DONE){var e=null;if(xhr.responseText)try{e=jQuery.parseJSON(xhr.responseText)}catch(r){e=xhr.responseText}if(xhr.status<200||xhr.status>299){var r=xhr.statusText;403==xhr.status?r=n.error_login:0==xhr.status?r=n.error_server:r||(r=n.error_default),n.error(r+" ("+xhr.status+")")}else n.success(e)}},xhr.upload.addEventListener("progress",function(e){e.lengthComputable&&n.progress(Math.round(100*e.loaded/e.total))},!1),Galaxy.emit.debug("uploadbox::uploadpost()","Posting following data.",n),xhr.send(o))}},e.fn.uploadinput=function(r){var n=this,t=e.extend({},{ondragover:function(){},ondragleave:function(){},onchange:function(){},multiple:!1},r),o=e('<input type="file" style="display: none" '+(t.multiple&&"multiple"||"")+"/>");return n.append(o.change(function(r){t.onchange(r.target.files),e(this).val("")})),n.on("drop",function(e){t.ondragleave(e),e.dataTransfer&&(t.onchange(e.dataTransfer.files),e.preventDefault())}),n.on("dragover",function(e){e.preventDefault(),t.ondragover(e)}),n.on("dragleave",function(e){e.stopPropagation(),t.ondragleave(e)}),{dialog:function(){o.trigger("click")}}},e.fn.uploadbox=function(r){function n(e){if(e&&e.length&&!l){var r=s;return _.each(e,function(e,r){"new"!==e.mode&&_.filter(i,function(r){return r.name===e.name&&r.size===e.size}).length&&(e.duplicate=!0)}),_.each(e,function(e){if(!e.duplicate){var r=String(s++);i[r]=e,a.announce(r,i[r]),u++}}),r}}function t(e){i[e]&&(delete i[e],u--)}function o(){if(0==u||c)return c=!1,l=!1,void a.complete();l=!0;var r=-1;for(var n in i){r=n;break}i[r];t(r),e.uploadpost({url:a.url,data:a.initialize(r),success:function(e){a.success(r,e),o()},error:function(e){a.error(r,e),o()},progress:function(e){a.progress(r,e)}})}var a=e.extend({},{dragover:function(){},dragleave:function(){},announce:function(e){},initialize:function(e){},progress:function(e,r){},success:function(e,r){},error:function(e,r){alert(r)},complete:function(){}},r),i={},s=0,u=0,l=!1,c=!1,f=e(this).uploadinput({multiple:!0,onchange:function(e){n(e)},ondragover:r.ondragover,ondragleave:r.ondragleave});return{select:function(){f.dialog()},add:n,remove:t,start:function(){l||(l=!0,o())},stop:function(){c=!0},reset:function(e){for(e in i)t(e)},configure:function(r){return a=e.extend({},a,r)},compatible:function(){return window.File&&window.FormData&&window.XMLHttpRequest&&window.FileList}}}}(jQuery);
|
|
//# sourceMappingURL=../../maps/utils/uploadbox.js.map
|