From b76b2ad9fda1d1632638d0dd334e5ede5ff4cd81 Mon Sep 17 00:00:00 2001
From: juanf <juanf>
Date: Mon, 24 Feb 2014 10:01:54 +0000
Subject: [PATCH] BIS-627 / SP-1141: ELN UI - Improve Workspace Uploader
 (Selective delete functionality)

SVN: 30578
---
 .../cisd/openbis/public/resources/js/openbis.js      |  7 +++++--
 .../public/resources/uploader/js/src/upload.js       | 10 +++++++++-
 .../as/webapps/newbrowser/html/js/UI/DataSetForm.js  | 12 +++++++++++-
 3 files changed, 25 insertions(+), 4 deletions(-)

diff --git a/openbis/source/java/ch/systemsx/cisd/openbis/public/resources/js/openbis.js b/openbis/source/java/ch/systemsx/cisd/openbis/public/resources/js/openbis.js
index 2d2fd500fde..20d4836efed 100644
--- a/openbis/source/java/ch/systemsx/cisd/openbis/public/resources/js/openbis.js
+++ b/openbis/source/java/ch/systemsx/cisd/openbis/public/resources/js/openbis.js
@@ -1483,9 +1483,12 @@ openbis.prototype.createSessionWorkspaceUploaderForDataStore = function(uploader
 				       sessionID: $this.getSession()
 			};
 			
-			for(var key in uploaderSettings) {
-				finalSettings[key] = uploaderSettings[key];
+			if(uploaderSettings) {
+				for(var key in uploaderSettings) {
+					finalSettings[key] = uploaderSettings[key];
+				}
 			}
+			
 			Uploader.init(finalSettings);
 		});
 	});
diff --git a/openbis/source/java/ch/systemsx/cisd/openbis/public/resources/uploader/js/src/upload.js b/openbis/source/java/ch/systemsx/cisd/openbis/public/resources/uploader/js/src/upload.js
index 900e9cf7401..236c566d3c7 100644
--- a/openbis/source/java/ch/systemsx/cisd/openbis/public/resources/uploader/js/src/upload.js
+++ b/openbis/source/java/ch/systemsx/cisd/openbis/public/resources/uploader/js/src/upload.js
@@ -28,6 +28,7 @@ var Uploader = new function () {
         file_input_button: "#fileinput-button",
         //file_list_clear_button: "#filelist-clear-button",
         oncomplete: function(file) { },
+        ondelete: function(file) {},
         chunk_size: 100*1024,
         smart_mode: window.File && window.FileReader && window.XMLHttpRequest,
         main_title_container : "#session-workspace-uploader-main-title",
@@ -258,6 +259,7 @@ var Uploader = new function () {
         ++current_upload_id;
         $(settings.file_list)
             .append("<li class=\"upload\" id=\"upload-" + id + "\">" +
+            		"<span id='delete-" + id + "' style='font-size: 20px;'>X</span> " +
                     "<span id=\"progress-" + id + "\" class=\"progressbar-container\">" +
                     "<span id=\"progressbar-" + id + "\" class=\"progressbar\"></span>" + 
                     "</span>" +
@@ -266,6 +268,12 @@ var Uploader = new function () {
                     " (" + styleSize(file.size) + ", " +
                     "<span id=\"speed-" + id + "\">? KB/s</span>)" +
                     "</li>");
+        $("#delete-"+id).click(function() {
+        	var fileData = file;
+        	$( "#upload-"+id).remove();
+        	settings.ondelete(fileData);
+        });
+        
         $("#upload-" + id).addClass("starting");
         if (settings.smart_mode) {
             $("#stop-button").clone().attr("id", "stop-button-" + id)
@@ -433,4 +441,4 @@ var Uploader = new function () {
             $(settings.main_title_container).append(settings.main_title);
             $(settings.uploads_title_container).append(settings.uploads_title);
         }
-}
\ No newline at end of file
+}
diff --git a/plasmid/source/core-plugins/newbrowser/1/as/webapps/newbrowser/html/js/UI/DataSetForm.js b/plasmid/source/core-plugins/newbrowser/1/as/webapps/newbrowser/html/js/UI/DataSetForm.js
index 443e0faa016..f1cf2b0d6e1 100644
--- a/plasmid/source/core-plugins/newbrowser/1/as/webapps/newbrowser/html/js/UI/DataSetForm.js
+++ b/plasmid/source/core-plugins/newbrowser/1/as/webapps/newbrowser/html/js/UI/DataSetForm.js
@@ -113,9 +113,19 @@ function DataSetForm(serverFacade, containerId, profile, sample, mode) {
 			}
 		}
 		
+		var onDelete = function(data) {
+			for(var i=0; localInstance.files.length; i++) {
+				if(localInstance.files[i] === data.name) {
+					localInstance.files.splice(i, 1);
+					break;
+				}
+			}
+		}
+		
 		this.serverFacade.openbisServer.createSessionWorkspaceUploader($("#APIUploader"), onComplete, {
 			main_title : $('<legend>').text('Files Uploader'),
-			uploads_title : $('<legend>').text('File list')
+			uploads_title : $('<legend>').text('File list'),
+			ondelete:onDelete
 		});
 	}
 	
-- 
GitLab