From 71f905d73b13f6e729e4736bc1f00f8693c792d3 Mon Sep 17 00:00:00 2001
From: juanf <juanf>
Date: Wed, 13 Dec 2017 12:41:47 +0000
Subject: [PATCH] SSDM-3250 : Piping pagination information from Grid to Sample
 Form

SVN: 39035
---
 .../html/js/controllers/MainController.js     | 33 +++++++++++++++----
 .../views/SampleForm/SampleFormController.js  |  4 +--
 .../js/views/SampleForm/SampleFormModel.js    |  3 +-
 .../js/views/SampleForm/SampleFormView.js     | 20 ++++++++++-
 4 files changed, 49 insertions(+), 11 deletions(-)

diff --git a/openbis_standard_technologies/dist/core-plugins/eln-lims/1/as/webapps/eln-lims/html/js/controllers/MainController.js b/openbis_standard_technologies/dist/core-plugins/eln-lims/1/as/webapps/eln-lims/html/js/controllers/MainController.js
index dc741d9fa6d..fde937da3dd 100644
--- a/openbis_standard_technologies/dist/core-plugins/eln-lims/1/as/webapps/eln-lims/html/js/controllers/MainController.js
+++ b/openbis_standard_technologies/dist/core-plugins/eln-lims/1/as/webapps/eln-lims/html/js/controllers/MainController.js
@@ -496,13 +496,22 @@ function MainController(profile) {
 					break;
 				case "showEditSamplePageFromPermId":
 					var _this = this;
-					this.serverFacade.searchWithUniqueId(arg, function(data) {
+					var permId = null;
+					var paginationInfo = null;
+					if((typeof arg) !== "string") {
+						permId = arg.permIdOrIdentifier;
+						paginationInfo = arg.paginationInfo;
+						arg = permId;
+					} else {
+						permId = arg;
+					}
+					this.serverFacade.searchWithUniqueId(permId, function(data) {
 						if(!data[0]) {
 							window.alert("The item is no longer available, refresh the page, if the problem persists tell your admin that the Lucene index is probably corrupted.");
 						} else {
 							document.title = "" + ELNDictionary.Sample + " " + data[0].code;
 							var isELNSubExperiment = $.inArray(data[0].spaceCode, _this.profile.inventorySpaces) === -1 && _this.profile.inventorySpaces.length > 0;
-							_this._showEditSamplePage(data[0], isELNSubExperiment);
+							_this._showEditSamplePage(data[0], isELNSubExperiment, paginationInfo);
 							//window.scrollTo(0,0);
 						}
 					});
@@ -510,8 +519,13 @@ function MainController(profile) {
 				case "showViewSamplePageFromPermId":
 					var _this = this;
 					var permId = null;
+					var paginationInfo = null;
 					if((typeof arg) !== "string") {
 						permId = arg.permIdOrIdentifier;
+						paginationInfo = arg.paginationInfo;
+						arg = permId;
+					} else {
+						permId = arg;
 					}
 					this.serverFacade.searchWithUniqueId(permId, function(data) {
 						if(!data[0]) {
@@ -519,7 +533,7 @@ function MainController(profile) {
 						} else {
 							document.title = "" + ELNDictionary.Sample + " " + data[0].code;
 							var isELNSubExperiment = $.inArray(data[0].spaceCode, _this.profile.inventorySpaces) === -1&& _this.profile.inventorySpaces.length > 0;
-							_this._showViewSamplePage(data[0], isELNSubExperiment, arg.paginationInfo);
+							_this._showViewSamplePage(data[0], isELNSubExperiment, paginationInfo);
 							//window.scrollTo(0,0);
 						}
 					});
@@ -527,8 +541,13 @@ function MainController(profile) {
 				case "showViewSamplePageFromIdentifier":
 					var _this = this;
 					var identifier = null;
+					var paginationInfo = null;
 					if((typeof arg) !== "string") {
 						identifier = arg.permIdOrIdentifier;
+						paginationInfo = arg.paginationInfo;
+						arg = permId;
+					} else {
+						identifier = arg;
 					}
 					this.serverFacade.searchWithIdentifiers([identifier], function(data) {
 						if(!data[0]) {
@@ -536,7 +555,7 @@ function MainController(profile) {
 						} else {
 							document.title = "" + ELNDictionary.Sample + " " + data[0].code;
 							var isELNSubExperiment = $.inArray(data[0].spaceCode, _this.profile.inventorySpaces) === -1&& _this.profile.inventorySpaces.length > 0;
-							_this._showViewSamplePage(data[0], isELNSubExperiment, arg.paginationInfo);
+							_this._showViewSamplePage(data[0], isELNSubExperiment, paginationInfo);
 							//window.scrollTo(0,0);
 						}
 					});
@@ -908,17 +927,17 @@ function MainController(profile) {
 	
 	this._showViewSamplePage = function(sample, isELNSubExperiment, paginationInfo) {
 		//Show Form
-		var sampleFormController = new SampleFormController(this, FormMode.VIEW, sample);
+		var sampleFormController = new SampleFormController(this, FormMode.VIEW, sample, paginationInfo);
 		this.currentView = sampleFormController;
 		var views = this._getNewViewModel(true, true, true);
 		sampleFormController.init(views);
 	}
 	
-	this._showEditSamplePage = function(sample, isELNSubExperiment) {
+	this._showEditSamplePage = function(sample, isELNSubExperiment, paginationInfo) {
 		//Show Form
 		var localInstance = this;
 		this.serverFacade.searchWithUniqueId(sample.permId, function(data) {
-			var sampleFormController = new SampleFormController(localInstance, FormMode.EDIT, data[0]);
+			var sampleFormController = new SampleFormController(localInstance, FormMode.EDIT, data[0], paginationInfo);
 			localInstance.currentView = sampleFormController;
 			var views = localInstance._getNewViewModel(true, true, false);
 			sampleFormController.init(views);
diff --git a/openbis_standard_technologies/dist/core-plugins/eln-lims/1/as/webapps/eln-lims/html/js/views/SampleForm/SampleFormController.js b/openbis_standard_technologies/dist/core-plugins/eln-lims/1/as/webapps/eln-lims/html/js/views/SampleForm/SampleFormController.js
index 68db0c55deb..45a216cbfcb 100644
--- a/openbis_standard_technologies/dist/core-plugins/eln-lims/1/as/webapps/eln-lims/html/js/views/SampleForm/SampleFormController.js
+++ b/openbis_standard_technologies/dist/core-plugins/eln-lims/1/as/webapps/eln-lims/html/js/views/SampleForm/SampleFormController.js
@@ -14,9 +14,9 @@
  * limitations under the License.
  */
 
-function SampleFormController(mainController, mode, sample) {
+function SampleFormController(mainController, mode, sample, paginationInfo) {
 	this._mainController = mainController;
-	this._sampleFormModel = new SampleFormModel(mode, sample);
+	this._sampleFormModel = new SampleFormModel(mode, sample, paginationInfo);
 	this._sampleFormView = new SampleFormView(this, this._sampleFormModel);
 //	this._storageControllers = [];
 	this._plateController = null;
diff --git a/openbis_standard_technologies/dist/core-plugins/eln-lims/1/as/webapps/eln-lims/html/js/views/SampleForm/SampleFormModel.js b/openbis_standard_technologies/dist/core-plugins/eln-lims/1/as/webapps/eln-lims/html/js/views/SampleForm/SampleFormModel.js
index b475d1fac0c..e749c4a2972 100644
--- a/openbis_standard_technologies/dist/core-plugins/eln-lims/1/as/webapps/eln-lims/html/js/views/SampleForm/SampleFormModel.js
+++ b/openbis_standard_technologies/dist/core-plugins/eln-lims/1/as/webapps/eln-lims/html/js/views/SampleForm/SampleFormModel.js
@@ -14,7 +14,7 @@
  * limitations under the License.
  */
 
-function SampleFormModel(mode, sample) {
+function SampleFormModel(mode, sample, paginationInfo) {
 	this.mode = mode;
 	this.sample = sample;
 	this.datasets = [];
@@ -31,4 +31,5 @@ function SampleFormModel(mode, sample) {
 	this.sampleLinksParents = null;
 	this.sampleLinksChildren = null;
 	this.sampleLinksNone = null;
+	this.paginationInfo = paginationInfo;
 }
\ 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/SampleForm/SampleFormView.js b/openbis_standard_technologies/dist/core-plugins/eln-lims/1/as/webapps/eln-lims/html/js/views/SampleForm/SampleFormView.js
index 71debc3c1c8..e7c071f2180 100644
--- a/openbis_standard_technologies/dist/core-plugins/eln-lims/1/as/webapps/eln-lims/html/js/views/SampleForm/SampleFormView.js
+++ b/openbis_standard_technologies/dist/core-plugins/eln-lims/1/as/webapps/eln-lims/html/js/views/SampleForm/SampleFormView.js
@@ -133,7 +133,12 @@ function SampleFormView(sampleFormController, sampleFormModel) {
 			//Edit
 			if(this._sampleFormModel.mode === FormMode.VIEW) {
 				var $editButton = FormUtil.getButtonWithIcon("glyphicon-edit", function () {
-					mainController.changeView('showEditSamplePageFromPermId', _this._sampleFormModel.sample.permId);
+					var args = {
+							permIdOrIdentifier : _this._sampleFormModel.sample.permId,
+							paginationInfo : _this._sampleFormModel.paginationInfo
+					}
+					
+					mainController.changeView('showEditSamplePageFromPermId', args);
 				});
 				toolbarModel.push({ component : $editButton, tooltip: "Edit" });
 			}
@@ -259,6 +264,19 @@ function SampleFormView(sampleFormController, sampleFormModel) {
 			toolbarModel.push({ component : $saveBtn, tooltip: "Save" });
 		}
 		
+		if(this._sampleFormModel.mode !== FormMode.CREATE && this._sampleFormModel.paginationInfo) {
+			var $backBtn = FormUtil.getButtonWithIcon("glyphicon-arrow-left", function () {
+				
+			});
+			toolbarModel.push({ component : $backBtn, tooltip: "Go to previous Object from list" });
+			
+			var $nextBtn = FormUtil.getButtonWithIcon("glyphicon-arrow-right", function () {
+				
+			});
+			toolbarModel.push({ component : $nextBtn, tooltip: "Go to next Object from list" });
+
+		}
+		
 		var $header = views.header;
 		
 		$header.append($formTitle);
-- 
GitLab