From b16ed5f4eb67e4c1a1896d62f14551a8dc6a6773 Mon Sep 17 00:00:00 2001
From: juanf <juanf>
Date: Fri, 11 Mar 2016 10:47:12 +0000
Subject: [PATCH] SSDM-3288 : ELN: DSS errors detection and show image preview
 when click on an image file.

SVN: 35879
---
 .../widgets/DatasetViewerController.js        | 17 ---------
 .../DataSetForm/widgets/DatasetViewerModel.js | 30 +++++++++++++++
 .../DataSetForm/widgets/DatasetViewerView.js  | 38 +++++++++++--------
 3 files changed, 53 insertions(+), 32 deletions(-)

diff --git a/plasmid/source/core-plugins/eln-lims/1/as/webapps/eln-lims/html/js/views/DataSetForm/widgets/DatasetViewerController.js b/plasmid/source/core-plugins/eln-lims/1/as/webapps/eln-lims/html/js/views/DataSetForm/widgets/DatasetViewerController.js
index 7d8874328ee..69411a0a3fc 100644
--- a/plasmid/source/core-plugins/eln-lims/1/as/webapps/eln-lims/html/js/views/DataSetForm/widgets/DatasetViewerController.js
+++ b/plasmid/source/core-plugins/eln-lims/1/as/webapps/eln-lims/html/js/views/DataSetForm/widgets/DatasetViewerController.js
@@ -32,23 +32,6 @@ function DataSetViewerController(containerId, profile, sample, serverFacade, dat
 	this._datasetViewerModel = new DataSetViewerModel(containerId, profile, sample, serverFacade, datastoreDownloadURL, datasets, enableUpload, enableOpenDataset);
 	this._datasetViewerView = new DataSetViewerView(this, this._datasetViewerModel);
 	
-	this._isPreviewable = function(file) {
-		if(!file.isDirectory) {
-			var haveExtension = file.pathInDataSet.lastIndexOf(".");
-			if( haveExtension !== -1 && (haveExtension + 1 < file.pathInDataSet.length)) {
-				var extension = file.pathInDataSet.substring(haveExtension + 1, file.pathInDataSet.length).toLowerCase();
-				
-				return 	extension === "svg" || 
-						extension === "jpg" || extension === "jpeg" ||
-						extension === "png" ||
-						extension === "gif" ||
-						extension === "html" ||
-						extension === "pdf";
-			}
-		}
-		return false;
-	}
-	
 	this.init = function() {
 		// Loading the datasets
 		if(this._datasetViewerModel.datasets) {
diff --git a/plasmid/source/core-plugins/eln-lims/1/as/webapps/eln-lims/html/js/views/DataSetForm/widgets/DatasetViewerModel.js b/plasmid/source/core-plugins/eln-lims/1/as/webapps/eln-lims/html/js/views/DataSetForm/widgets/DatasetViewerModel.js
index be299450846..92aeff36b94 100644
--- a/plasmid/source/core-plugins/eln-lims/1/as/webapps/eln-lims/html/js/views/DataSetForm/widgets/DatasetViewerModel.js
+++ b/plasmid/source/core-plugins/eln-lims/1/as/webapps/eln-lims/html/js/views/DataSetForm/widgets/DatasetViewerModel.js
@@ -54,4 +54,34 @@ function DataSetViewerModel(containerId, profile, sample, serverFacade, datastor
 		return $link;
 	}
 	
+	this._isPreviewableImage = function(pathInDataSet) {
+		var haveExtension = pathInDataSet.lastIndexOf(".");
+		if( haveExtension !== -1 && (haveExtension + 1 < pathInDataSet.length)) {
+			var extension = pathInDataSet.substring(haveExtension + 1, pathInDataSet.length).toLowerCase();
+			
+			return 	extension === "svg" || 
+					extension === "jpg" || extension === "jpeg" ||
+					extension === "png" ||
+					extension === "gif" ||
+					extension === "html" ||
+					extension === "pdf";
+		}
+		return false;
+	}
+	
+	this.getPreviewLink = function(datasetCode, datasetFile) {
+		var previewLink = null;
+		if(this._isPreviewableImage(datasetFile.pathInDataSet)) {
+			var imageURLAsString = profile.getDefaultDataStoreURL() + "/" + datasetCode + "/" + datasetFile.pathInDataSet + "?sessionID=" + mainController.serverFacade.getSession();
+			var onclick = "Util.showImage(\"" + imageURLAsString + "\");"
+			previewLink = "<span onclick='" + onclick + "' class='glyphicon glyphicon-search'></span>";
+//			previewLink = FormUtil.getButtonWithIcon("glyphicon-search", function() {
+//				var imageURL = profile.getDefaultDataStoreURL() + '/' + datasetCode + "/" + datasetFile.pathInDataSet + "?sessionID=" + mainController.serverFacade.getSession();
+//				Util.showImage(imageURL);
+//				event.stopPropagation();
+//			});
+		}
+		return previewLink;
+	}
+	
 }
\ No newline at end of file
diff --git a/plasmid/source/core-plugins/eln-lims/1/as/webapps/eln-lims/html/js/views/DataSetForm/widgets/DatasetViewerView.js b/plasmid/source/core-plugins/eln-lims/1/as/webapps/eln-lims/html/js/views/DataSetForm/widgets/DatasetViewerView.js
index b3479b2480c..593e6522dfe 100644
--- a/plasmid/source/core-plugins/eln-lims/1/as/webapps/eln-lims/html/js/views/DataSetForm/widgets/DatasetViewerView.js
+++ b/plasmid/source/core-plugins/eln-lims/1/as/webapps/eln-lims/html/js/views/DataSetForm/widgets/DatasetViewerView.js
@@ -86,7 +86,7 @@ function DataSetViewerView(dataSetViewerController, dataSetViewerModel) {
         	}
     	};
     	
-    	var onClick = function(event, data){
+    	var onClick = function(event, data) {
     		
     	};
     	
@@ -98,21 +98,29 @@ function DataSetViewerView(dataSetViewerController, dataSetViewerModel) {
     		var parentDatasetCode = data.node.data.datasetCode;
     		
     		var repaintEvent = function(code, files) {
-    			var results = [];
-    			for(var fIdx = 0; fIdx < files.result.length; fIdx++) {
-    				var file = files.result[fIdx];
-    				
-    				var titleValue = null;
-    				if(file.isDirectory) {
-    					titleValue = file.pathInListing;
-    				} else {
-    					var $fileLink = _this._dataSetViewerModel.getDownloadLink(code, file, true);
-    					titleValue = $fileLink[0].outerHTML;
-    				}
-    				results.push({ title : titleValue, key : file.pathInDataSet, folder : file.isDirectory, lazy : file.isDirectory, datasetCode : parentDatasetCode });
+    			if(!files.result) {
+    				Util.showError("Files can't be found, most probably the DSS is down, contact your admin.");
+    			} else {
+    				var results = [];
+        			for(var fIdx = 0; fIdx < files.result.length; fIdx++) {
+        				var file = files.result[fIdx];
+        				
+        				var titleValue = null;
+        				if(file.isDirectory) {
+        					titleValue = file.pathInListing;
+        				} else {
+        					var $fileLink = _this._dataSetViewerModel.getDownloadLink(code, file, true);
+        					titleValue = $fileLink[0].outerHTML;
+        					var previewLink = _this._dataSetViewerModel.getPreviewLink(code, file);
+        					if(previewLink) {
+        						titleValue = previewLink + " " + titleValue;
+        					}
+        				}
+        				results.push({ title : titleValue, key : file.pathInDataSet, folder : file.isDirectory, lazy : file.isDirectory, datasetCode : parentDatasetCode });
+        			}
+        			
+        			dfd.resolve(results);
     			}
-    			
-    			dfd.resolve(results);
 			};
 			
 			_this.updateDirectoryView(parentDatasetCode, pathToLoad, true, repaintEvent);
-- 
GitLab