From c98782a8072c1ca9b37c8d4f7554c508c7200142 Mon Sep 17 00:00:00 2001
From: juanf <juanf>
Date: Mon, 10 Jul 2017 08:55:59 +0000
Subject: [PATCH] SSDM-4032 : Force sample type

SVN: 38510
---
 .../1/as/webapps/eln-lims/html/js/util/FormUtil.js |  8 +++++++-
 .../html/js/views/SampleTable/SampleTableModel.js  |  1 +
 .../html/js/views/SampleTable/SampleTableView.js   | 14 ++++++++++++--
 .../SampleTable/widgets/TypeAndFileController.js   |  4 ++--
 .../views/SampleTable/widgets/TypeAndFileModel.js  |  4 ++--
 .../views/SampleTable/widgets/TypeAndFileView.js   |  2 +-
 6 files changed, 25 insertions(+), 8 deletions(-)

diff --git a/openbis_standard_technologies/dist/core-plugins/eln-lims/1/as/webapps/eln-lims/html/js/util/FormUtil.js b/openbis_standard_technologies/dist/core-plugins/eln-lims/1/as/webapps/eln-lims/html/js/util/FormUtil.js
index 1cde176b5f7..2b6b08297ab 100644
--- a/openbis_standard_technologies/dist/core-plugins/eln-lims/1/as/webapps/eln-lims/html/js/util/FormUtil.js
+++ b/openbis_standard_technologies/dist/core-plugins/eln-lims/1/as/webapps/eln-lims/html/js/util/FormUtil.js
@@ -236,7 +236,7 @@ var FormUtil = new function() {
 		return $component;
 	}
 	
-	this.getSampleTypeDropdown = function(id, isRequired, showEvenIfHidden) {
+	this.getSampleTypeDropdown = function(id, isRequired, showEvenIfHidden, showOnly) {
 		var sampleTypes = this.profile.getAllSampleTypes();
 		
 		var $component = $("<select>", {"id" : id, class : 'form-control'});
@@ -248,6 +248,12 @@ var FormUtil = new function() {
 		for(var i = 0; i < sampleTypes.length; i++) {
 			var sampleType = sampleTypes[i];
 			
+			if(showOnly && ($.inArray(sampleType.code, showOnly) !== -1)) {
+				//Show 
+			} else if(showOnly) {
+				continue;
+			}
+			
 			if(showEvenIfHidden && ($.inArray(sampleType.code, showEvenIfHidden) !== -1)) {
 				// Show even if hidden
 			} else if (profile.isSampleTypeHidden(sampleType.code)) {
diff --git a/openbis_standard_technologies/dist/core-plugins/eln-lims/1/as/webapps/eln-lims/html/js/views/SampleTable/SampleTableModel.js b/openbis_standard_technologies/dist/core-plugins/eln-lims/1/as/webapps/eln-lims/html/js/views/SampleTable/SampleTableModel.js
index b29556610c4..3931ddd0cf8 100644
--- a/openbis_standard_technologies/dist/core-plugins/eln-lims/1/as/webapps/eln-lims/html/js/views/SampleTable/SampleTableModel.js
+++ b/openbis_standard_technologies/dist/core-plugins/eln-lims/1/as/webapps/eln-lims/html/js/views/SampleTable/SampleTableModel.js
@@ -21,4 +21,5 @@ function SampleTableModel(title, experimentIdentifier, projectPermId, showInProj
 	this.projectPermId = projectPermId;
 	this.showInProjectOverview = showInProjectOverview;
 	this.allSamples = new Array();
+	this.sampleTypeCodeToUse = null;
 }
\ No newline at end of file
diff --git a/openbis_standard_technologies/dist/core-plugins/eln-lims/1/as/webapps/eln-lims/html/js/views/SampleTable/SampleTableView.js b/openbis_standard_technologies/dist/core-plugins/eln-lims/1/as/webapps/eln-lims/html/js/views/SampleTable/SampleTableView.js
index 7b532e56b87..3a81f2e37d3 100644
--- a/openbis_standard_technologies/dist/core-plugins/eln-lims/1/as/webapps/eln-lims/html/js/views/SampleTable/SampleTableView.js
+++ b/openbis_standard_technologies/dist/core-plugins/eln-lims/1/as/webapps/eln-lims/html/js/views/SampleTable/SampleTableView.js
@@ -67,6 +67,7 @@ function SampleTableView(sampleTableController, sampleTableModel) {
 			}
 			
 			var sampleTypeCodeToUse = (mandatorySampleTypeCode)?mandatorySampleTypeCode:sampleTypeCode;
+			this._sampleTableModel.sampleTypeCodeToUse = sampleTypeCodeToUse;
 			
 			//Add Sample Type
 			if(sampleTypeCodeToUse !== null) {
@@ -200,6 +201,10 @@ function SampleTableView(sampleTableController, sampleTableModel) {
 	
 	this.registerSamples = function(experimentIdentifier) {
 		var _this = this;
+		var allowedSampleTypes = null;
+		if(this._sampleTableModel.sampleTypeCodeToUse) {
+			allowedSampleTypes = [this._sampleTableModel.sampleTypeCodeToUse, "STORAGE_POSITION"];
+		}
 		var typeAndFileController = new TypeAndFileController('Register ' + ELNDictionary.Samples + '', "REGISTRATION", function(type, file) {
 			Util.blockUI();
 			mainController.serverFacade.fileUpload(typeAndFileController.getFile(), function(result) {
@@ -223,6 +228,8 @@ function SampleTableView(sampleTableController, sampleTableModel) {
 					if(infoData.result.identifiersPressent) {
 						mainController.serverFacade.registerSamples(typeAndFileController.getSampleTypeCode(), "sample-file-upload", null, finalCallback);
 					} else {
+						mainController.serverFacade.registerSamples(typeAndFileController.getSampleTypeCode(), "sample-file-upload", '/' + space, finalCallback);
+						
 						mainController.serverFacade.listSpacesWithProjectsAndRoleAssignments(null, function(data) {
 							var spaces = [];
 							for(var i = 0; i < data.result.length; i++) {
@@ -253,11 +260,14 @@ function SampleTableView(sampleTableController, sampleTableModel) {
 				}
 			);
 			});
-		});
+		}, allowedSampleTypes);
 		typeAndFileController.init();
 	}
 	
 	this.updateSamples = function(experimentIdentifier) {
+		if(this._sampleTableModel.sampleTypeCodeToUse) {
+			allowedSampleTypes = [this._sampleTableModel.sampleTypeCodeToUse, "STORAGE_POSITION"];
+		}
 		var typeAndFileController = new TypeAndFileController('Update ' + ELNDictionary.Samples + '', "UPDATE", function(type, file) {
 			Util.blockUI();
 			var finalCallback = function(data) {
@@ -277,7 +287,7 @@ function SampleTableView(sampleTableController, sampleTableModel) {
 				//Code After the upload
 				mainController.serverFacade.updateSamples(typeAndFileController.getSampleTypeCode(), "sample-file-upload", null,finalCallback);
 			});
-		});
+		}, allowedSampleTypes);
 		typeAndFileController.init();
 	}
 }
\ No newline at end of file
diff --git a/openbis_standard_technologies/dist/core-plugins/eln-lims/1/as/webapps/eln-lims/html/js/views/SampleTable/widgets/TypeAndFileController.js b/openbis_standard_technologies/dist/core-plugins/eln-lims/1/as/webapps/eln-lims/html/js/views/SampleTable/widgets/TypeAndFileController.js
index d9a757df7c6..17265ae1a90 100644
--- a/openbis_standard_technologies/dist/core-plugins/eln-lims/1/as/webapps/eln-lims/html/js/views/SampleTable/widgets/TypeAndFileController.js
+++ b/openbis_standard_technologies/dist/core-plugins/eln-lims/1/as/webapps/eln-lims/html/js/views/SampleTable/widgets/TypeAndFileController.js
@@ -14,8 +14,8 @@
  * limitations under the License.
  */
 
-function TypeAndFileController(title, linkType, actionFunction) {
-	this._typeAndFileModel = new TypeAndFileModel(title, linkType, actionFunction);
+function TypeAndFileController(title, linkType, actionFunction, allowedSampleTypes) {
+	this._typeAndFileModel = new TypeAndFileModel(title, linkType, actionFunction, allowedSampleTypes);
 	this._typeAndFileView = new TypeAndFileView(this, this._typeAndFileModel);
 	
 	this.getFile = function() {
diff --git a/openbis_standard_technologies/dist/core-plugins/eln-lims/1/as/webapps/eln-lims/html/js/views/SampleTable/widgets/TypeAndFileModel.js b/openbis_standard_technologies/dist/core-plugins/eln-lims/1/as/webapps/eln-lims/html/js/views/SampleTable/widgets/TypeAndFileModel.js
index 021fe40c790..f6eaf50c512 100644
--- a/openbis_standard_technologies/dist/core-plugins/eln-lims/1/as/webapps/eln-lims/html/js/views/SampleTable/widgets/TypeAndFileModel.js
+++ b/openbis_standard_technologies/dist/core-plugins/eln-lims/1/as/webapps/eln-lims/html/js/views/SampleTable/widgets/TypeAndFileModel.js
@@ -14,10 +14,10 @@
  * limitations under the License.
  */
 
-function TypeAndFileModel(title, linkType, actionFunction) {
+function TypeAndFileModel(title, linkType, actionFunction, allowedSampleTypes) {
 	this.title = title;
 	this.linkType = linkType;
 	this.actionFunction = actionFunction;
+	this.allowedSampleTypes = allowedSampleTypes;
 	this.sampleTypeCode = null;
-	this.file = null;
 }
\ No newline at end of file
diff --git a/openbis_standard_technologies/dist/core-plugins/eln-lims/1/as/webapps/eln-lims/html/js/views/SampleTable/widgets/TypeAndFileView.js b/openbis_standard_technologies/dist/core-plugins/eln-lims/1/as/webapps/eln-lims/html/js/views/SampleTable/widgets/TypeAndFileView.js
index 47624336db5..d1469443edf 100644
--- a/openbis_standard_technologies/dist/core-plugins/eln-lims/1/as/webapps/eln-lims/html/js/views/SampleTable/widgets/TypeAndFileView.js
+++ b/openbis_standard_technologies/dist/core-plugins/eln-lims/1/as/webapps/eln-lims/html/js/views/SampleTable/widgets/TypeAndFileView.js
@@ -30,7 +30,7 @@ function TypeAndFileView(typeAndFileController, typeAndFileModel) {
 		
 		$window.append($('<legend>').append(this._typeAndFileModel.title));
 		
-		var $sampleTypeDropDown = FormUtil.getSampleTypeDropdown(null, true, ["STORAGE_POSITION"]);
+		var $sampleTypeDropDown = FormUtil.getSampleTypeDropdown(null, true, ["STORAGE_POSITION"], this._typeAndFileModel.allowedSampleTypes);
 		$sampleTypeDropDown.change(function(event) {
 			_this._typeAndFileModel.sampleTypeCode = $(this).val();
 			_this.updateLink($(this).val());
-- 
GitLab