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();
|
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.
|
* Generate fake uploaders.
|
||||||
*
|
*
|
||||||
|
@ -581,52 +593,46 @@ public class MultipleDNDUpload extends LayoutPanel implements HasWorskpaceUpload
|
||||||
|
|
||||||
console.log("# of file/s: " + files.length);
|
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;
|
var numFolder = 0;
|
||||||
for (var i = 0; i < files.length; i++) {
|
for (var i = 0; i < files.length; i++) {
|
||||||
var file = files[i];
|
var file = files[i];
|
||||||
var fileSelected = files[i].name + fileDelimiter;
|
var fileSelected = files[i].name + fileDelimiter;
|
||||||
if (!isFolder(file)) {
|
if (!isFolder(file)) {
|
||||||
|
|
||||||
console.log("fileSelected: " + fileSelected);
|
console.log("fileSelected: " + fileSelected);
|
||||||
console.log("files: " + files);
|
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);
|
// var jsonKeysMap = instance.@org.gcube.portlets.widgets.workspaceuploader.client.uploader.dragdrop.MultipleDNDUpload::jsonKeys;
|
||||||
instance.@org.gcube.portlets.widgets.workspaceuploader.client.uploader.dragdrop.MultipleDNDUpload::createJsonKeyForFiles(Ljava/lang/String;)(uploadUUID);
|
// console.log("jsonKeysMap: " + jsonKeysMap);
|
||||||
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 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){
|
if(files.length == 1){
|
||||||
console.log("one drag, overwrite?");
|
console.log("one drag, overwrite?");
|
||||||
var wsUtil = instance.@org.gcube.portlets.widgets.workspaceuploader.client.uploader.dragdrop.MultipleDNDUpload::workspaceUtil;
|
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);
|
||||||
|
// formdata.append("isOverwrite", overwrite);
|
||||||
//*********uploadFormElement MUST BE THE LAST!!!
|
//*********uploadFormElement MUST BE THE LAST!!!
|
||||||
formdata.append('uploadFormElement', file);
|
formdata.append('uploadFormElement', file);
|
||||||
xhr.send(formdata);
|
// xhr.send(formdata);
|
||||||
instance.@org.gcube.portlets.widgets.workspaceuploader.client.uploader.dragdrop.MultipleDNDUpload::addNewSubmitToMonitor(Ljava/lang/String;)(uploadUUID);
|
|
||||||
|
|
||||||
// reader.readAsText(file);
|
// reader.readAsText(file);
|
||||||
}else{
|
}else{
|
||||||
numFolder++;
|
numFolder++;
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
|
xhr.send(formdata);
|
||||||
|
instance.@org.gcube.portlets.widgets.workspaceuploader.client.uploader.dragdrop.MultipleDNDUpload::addNewSubmitToMonitor(Ljava/lang/String;)(uploadUUID);
|
||||||
|
|
||||||
if(numFolder>0){
|
if(numFolder>0){
|
||||||
var msg;
|
var msg;
|
||||||
if(numFolder==files.length){
|
if(numFolder==files.length){
|
||||||
|
|
Loading…
Reference in New Issue