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

SVN: 39037
---
 .../js/views/DataGrid/SampleDataGridUtil.js   | 18 +++++++++++++---
 .../js/views/SampleForm/SampleFormView.js     | 21 +++++++++++--------
 .../webapps/eln-lims/html/lib/grid/js/Grid.js |  2 +-
 3 files changed, 28 insertions(+), 13 deletions(-)

diff --git a/openbis_standard_technologies/dist/core-plugins/eln-lims/1/as/webapps/eln-lims/html/js/views/DataGrid/SampleDataGridUtil.js b/openbis_standard_technologies/dist/core-plugins/eln-lims/1/as/webapps/eln-lims/html/js/views/DataGrid/SampleDataGridUtil.js
index 3b74c35f0a4..52b50aab9f5 100644
--- a/openbis_standard_technologies/dist/core-plugins/eln-lims/1/as/webapps/eln-lims/html/js/views/DataGrid/SampleDataGridUtil.js
+++ b/openbis_standard_technologies/dist/core-plugins/eln-lims/1/as/webapps/eln-lims/html/js/views/DataGrid/SampleDataGridUtil.js
@@ -14,9 +14,21 @@ var SampleDataGridUtil = new function() {
 			render : function(data, grid) {
 				var paginationInfo = null;
 				if(isDynamic) {
-					paginationInfo = {
-							pagFunction : _this.getDataListDynamic(samplesOrCriteria, false),
-							pagOptions : grid.lastUsedOptions
+					var indexFound = null;
+					for(var idx = 0; idx < grid.lastReceivedData.objects.length; idx++) {
+						if(grid.lastReceivedData.objects[idx].permId === data.permId) {
+							indexFound = idx + (grid.lastUsedOptions.pageIndex * grid.lastUsedOptions.pageSize);
+							break;
+						}
+					}
+					
+					if(indexFound !== null) {
+						paginationInfo = {
+								pagFunction : _this.getDataListDynamic(samplesOrCriteria, false),
+								pagOptions : grid.lastUsedOptions,
+								currentIndex : indexFound,
+								totalCount : grid.lastReceivedData.totalCount
+						}
 					}
 				}
 				return (isLinksDisabled)?data.identifier:FormUtil.getFormLink(data.identifier, "Sample", data.permId, paginationInfo);
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 e7c071f2180..6ed44188414 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
@@ -265,16 +265,19 @@ function SampleFormView(sampleFormController, sampleFormModel) {
 		}
 		
 		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" });
+			if(this._sampleFormModel.paginationInfo.currentIndex > 0) {
+				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" });
-
+			if(this._sampleFormModel.paginationInfo.currentIndex+1 < this._sampleFormModel.paginationInfo.totalCount) {
+				var $nextBtn = FormUtil.getButtonWithIcon("glyphicon-arrow-right", function () {
+					
+				});
+				toolbarModel.push({ component : $nextBtn, tooltip: "Go to next Object from list" });
+			}
 		}
 		
 		var $header = views.header;
diff --git a/openbis_standard_technologies/dist/core-plugins/eln-lims/1/as/webapps/eln-lims/html/lib/grid/js/Grid.js b/openbis_standard_technologies/dist/core-plugins/eln-lims/1/as/webapps/eln-lims/html/lib/grid/js/Grid.js
index be184f40b44..0e2c5ce124f 100644
--- a/openbis_standard_technologies/dist/core-plugins/eln-lims/1/as/webapps/eln-lims/html/lib/grid/js/Grid.js
+++ b/openbis_standard_technologies/dist/core-plugins/eln-lims/1/as/webapps/eln-lims/html/lib/grid/js/Grid.js
@@ -631,7 +631,7 @@ $.extend(Grid.prototype, {
 			
 			if(isDynamic) {
 				dataList = dataListResult.objects;		
-				
+				thisGrid.lastReceivedData = dataListResult;
 				if(thisGrid.onChangeState && thisGrid.tableSettings) {
 					thisGrid.tableSettings.sort = {
 							sortProperty : options.sortProperty,
-- 
GitLab