4055: Workspace Uploder enhancement: work with multiple-instances of DnD Workspace Uploader in the DOM
Task-Url: https://support.d4science.org/issues/4055 Added a unique XMLHttRequest to send file/s via DnD, so we are switching for sequential upload instead of parallel git-svn-id: https://svn.d4science.research-infrastructures.eu/gcube/trunk/portlets/widgets/workspace-uploader@128686 82a268e6-3cf1-43bd-a215-b396298e98cf
This commit is contained in:
parent
efea5d3c8f
commit
8cc2a28cf1
|
@ -222,6 +222,18 @@ public class MultipleDNDUpload extends LayoutPanel implements HasWorskpaceUpload
|
|||
field.createJsonKeyForFiles();
|
||||
}
|
||||
|
||||
|
||||
/**
|
||||
* Gets the json key for files.
|
||||
*
|
||||
* @param uploadUUID the upload uuid
|
||||
* @return the json key for files
|
||||
*/
|
||||
private String getJsonKeyForFiles(String uploadUUID) {
|
||||
WorkspaceFieldsUploadManager field = getFieldsUploadManager(uploadUUID);
|
||||
return field.getJsonKeys();
|
||||
}
|
||||
|
||||
/**
|
||||
* Generate fake uploaders.
|
||||
*
|
||||
|
@ -581,52 +593,46 @@ public class MultipleDNDUpload extends LayoutPanel implements HasWorskpaceUpload
|
|||
|
||||
console.log("# of file/s: " + files.length);
|
||||
|
||||
var filesSelected = "";
|
||||
|
||||
for (i = 0; i < files.length; i++) {
|
||||
filesSelected += files[i].name + fileDelimiter;
|
||||
}
|
||||
console.log("filesSelected: " + filesSelected);
|
||||
|
||||
instance.@org.gcube.portlets.widgets.workspaceuploader.client.uploader.dragdrop.MultipleDNDUpload::generateFakeUploaders(Ljava/lang/String;Ljava/lang/String;Ljava/lang/String;)(filesSelected,idfolder,uploadUUID);
|
||||
instance.@org.gcube.portlets.widgets.workspaceuploader.client.uploader.dragdrop.MultipleDNDUpload::createJsonKeyForFiles(Ljava/lang/String;)(uploadUUID);
|
||||
instance.@org.gcube.portlets.widgets.workspaceuploader.client.uploader.dragdrop.MultipleDNDUpload::updateJsonKeys(Ljava/lang/String;)(uploadUUID);
|
||||
instance.@org.gcube.portlets.widgets.workspaceuploader.client.uploader.dragdrop.MultipleDNDUpload::setCurrentJsonKeValue(Ljava/lang/String;)(uploadUUID);
|
||||
var jsonKeys = instance.@org.gcube.portlets.widgets.workspaceuploader.client.uploader.dragdrop.MultipleDNDUpload::currentJsonKey;
|
||||
// var jsonKeys = instance.@org.gcube.portlets.widgets.workspaceuploader.client.uploader.dragdrop.MultipleDNDUpload::getJsonKeyForFiles(Ljava/lang/String;)
|
||||
// var jsonKeysMap = instance.@org.gcube.portlets.widgets.workspaceuploader.client.uploader.dragdrop.MultipleDNDUpload::jsonKeys;
|
||||
console.log("jsonKeys: " + jsonKeys);
|
||||
|
||||
var xhr = new XMLHttpRequest();
|
||||
xhr.open(opts.type, opts.url, true);
|
||||
|
||||
var formdata = new FormData();
|
||||
formdata.append("client_upload_keys", jsonKeys);
|
||||
formdata.append("uploadType", uploadType);
|
||||
formdata.append("idFolder", idfolder);
|
||||
|
||||
var overwrite = false;
|
||||
formdata.append("isOverwrite", overwrite);
|
||||
|
||||
var numFolder = 0;
|
||||
for (var i = 0; i < files.length; i++) {
|
||||
var file = files[i];
|
||||
var fileSelected = files[i].name + fileDelimiter;
|
||||
if (!isFolder(file)) {
|
||||
|
||||
console.log("fileSelected: " + fileSelected);
|
||||
console.log("files: " + files);
|
||||
instance.@org.gcube.portlets.widgets.workspaceuploader.client.uploader.dragdrop.MultipleDNDUpload::generateFakeUploaders(Ljava/lang/String;Ljava/lang/String;Ljava/lang/String;)(fileSelected,idfolder,uploadUUID);
|
||||
instance.@org.gcube.portlets.widgets.workspaceuploader.client.uploader.dragdrop.MultipleDNDUpload::createJsonKeyForFiles(Ljava/lang/String;)(uploadUUID);
|
||||
instance.@org.gcube.portlets.widgets.workspaceuploader.client.uploader.dragdrop.MultipleDNDUpload::updateJsonKeys(Ljava/lang/String;)(uploadUUID);
|
||||
// var jsonKeysMap = instance.@org.gcube.portlets.widgets.workspaceuploader.client.uploader.dragdrop.MultipleDNDUpload::jsonKeys;
|
||||
// console.log("jsonKeysMap: " + jsonKeysMap);
|
||||
// instance.@org.gcube.portlets.widgets.workspaceuploader.client.uploader.dragdrop.MultipleDNDUpload::setCurrentJsonKeValue(Ljava/lang/String;)(uploadUUID);
|
||||
// var keyVal = instance.@org.gcube.portlets.widgets.workspaceuploader.client.uploader.dragdrop.MultipleDNDUpload::currentJsonKey;
|
||||
// console.log("keyVal: " + keyVal);
|
||||
|
||||
var jsonKeysMap = instance.@org.gcube.portlets.widgets.workspaceuploader.client.uploader.dragdrop.MultipleDNDUpload::jsonKeys;
|
||||
console.log("jsonKeysMap: " + jsonKeysMap);
|
||||
instance.@org.gcube.portlets.widgets.workspaceuploader.client.uploader.dragdrop.MultipleDNDUpload::setCurrentJsonKeValue(Ljava/lang/String;)(uploadUUID);
|
||||
var keyVal = instance.@org.gcube.portlets.widgets.workspaceuploader.client.uploader.dragdrop.MultipleDNDUpload::currentJsonKey;
|
||||
console.log("keyVal: " + keyVal);
|
||||
var xhr = new XMLHttpRequest();
|
||||
// var upload = xhr.upload;
|
||||
|
||||
// upload.fileIndex = i;
|
||||
// upload.fileObj = file;
|
||||
// upload.downloadStartTime = new Date().getTime();
|
||||
// upload.currentStart = upload.downloadStartTime;
|
||||
// upload.currentProgress = 0;
|
||||
// upload.startData = 0;
|
||||
|
||||
// console.log("upload: " + upload.toString());
|
||||
// add listeners
|
||||
|
||||
// upload.addEventListener("progress", progress, false);
|
||||
// upload.addEventListener("load", load, false);
|
||||
|
||||
xhr.open(opts.type, opts.url, true);
|
||||
// var boundary = "AJAX--------------" + (new Date).getTime();
|
||||
// var contentType = "multipart/form-data; boundary=" + boundary;
|
||||
// xhr.setRequestHeader("Content-Type", contentType);
|
||||
// Use native function(Chrome 5+ ,Safari 5+ and Firefox 4+), for dealing
|
||||
// with multipart/form-data and boundray generation
|
||||
|
||||
var formdata = new FormData();
|
||||
formdata.append("client_upload_keys", keyVal);
|
||||
formdata.append("uploadType", uploadType);
|
||||
formdata.append("idFolder", idfolder);
|
||||
//OVERWRITE??
|
||||
var overwrite = false;
|
||||
if(files.length == 1){
|
||||
console.log("one drag, overwrite?");
|
||||
var wsUtil = instance.@org.gcube.portlets.widgets.workspaceuploader.client.uploader.dragdrop.MultipleDNDUpload::workspaceUtil;
|
||||
|
@ -649,18 +655,22 @@ public class MultipleDNDUpload extends LayoutPanel implements HasWorskpaceUpload
|
|||
}
|
||||
}
|
||||
|
||||
// var xhr = new XMLHttpRequest();
|
||||
// xhr.open(opts.type, opts.url, true);
|
||||
formdata.append("isOverwrite", overwrite);
|
||||
// formdata.append("isOverwrite", overwrite);
|
||||
//*********uploadFormElement MUST BE THE LAST!!!
|
||||
formdata.append('uploadFormElement', file);
|
||||
xhr.send(formdata);
|
||||
instance.@org.gcube.portlets.widgets.workspaceuploader.client.uploader.dragdrop.MultipleDNDUpload::addNewSubmitToMonitor(Ljava/lang/String;)(uploadUUID);
|
||||
|
||||
// xhr.send(formdata);
|
||||
// reader.readAsText(file);
|
||||
}else{
|
||||
numFolder++;
|
||||
}
|
||||
}
|
||||
|
||||
xhr.send(formdata);
|
||||
instance.@org.gcube.portlets.widgets.workspaceuploader.client.uploader.dragdrop.MultipleDNDUpload::addNewSubmitToMonitor(Ljava/lang/String;)(uploadUUID);
|
||||
|
||||
if(numFolder>0){
|
||||
var msg;
|
||||
if(numFolder==files.length){
|
||||
|
|
Loading…
Reference in New Issue