From 449b8e25b34173ffe5ecfbe8627c72c6fa3991d9 Mon Sep 17 00:00:00 2001
From: juanf <juanf>
Date: Mon, 15 Jan 2018 10:34:06 +0000
Subject: [PATCH] SSDM-3250 : Piping pagination information from Search Grid to
 Sample Form

SVN: 39097
---
 .../AdvancedSearch/AdvancedSearchView.js      | 58 ++++++++++++++++---
 1 file changed, 50 insertions(+), 8 deletions(-)

diff --git a/openbis_standard_technologies/dist/core-plugins/eln-lims/1/as/webapps/eln-lims/html/js/views/AdvancedSearch/AdvancedSearchView.js b/openbis_standard_technologies/dist/core-plugins/eln-lims/1/as/webapps/eln-lims/html/js/views/AdvancedSearch/AdvancedSearchView.js
index 9fdbf30e08e..71573066433 100644
--- a/openbis_standard_technologies/dist/core-plugins/eln-lims/1/as/webapps/eln-lims/html/js/views/AdvancedSearch/AdvancedSearchView.js
+++ b/openbis_standard_technologies/dist/core-plugins/eln-lims/1/as/webapps/eln-lims/html/js/views/AdvancedSearch/AdvancedSearchView.js
@@ -563,14 +563,18 @@ function AdvancedSearchView(advancedSearchController, advancedSearchModel) {
 	}
 	
 	this._getGridForResults = function(criteria, isGlobalSearch) {
-		
-			var getLinkOnClick = function(code, data) {
+			var _this = this;
+			
+			var getLinkOnClick = function(code, data, paginationInfo) {
+				if(data.entityKind !== "Sample") {
+					paginationInfo = null;  // TODO - Only supported for samples for now
+				}
 				switch(data.entityKind) {
 					case "Experiment":
-						return FormUtil.getFormLink(code, data.entityKind, data.identifier);
+						return FormUtil.getFormLink(code, data.entityKind, data.identifier, paginationInfo);
 						break;
 					default:
-						return FormUtil.getFormLink(code, data.entityKind, data.permId);
+						return FormUtil.getFormLink(code, data.entityKind, data.permId, paginationInfo);
 						break;
 				}
 			}
@@ -611,16 +615,54 @@ function AdvancedSearchView(advancedSearchController, advancedSearchModel) {
 				property : 'code',
 				isExportable: true,
 				sortable : !isGlobalSearch,
-				render : function(data) {
-					return getLinkOnClick(data.code, data);
+				render : function(data, grid) {
+					var paginationInfo = null;
+					if(!isGlobalSearch) {
+						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._advancedSearchController.searchWithPagination(_this._advancedSearchModel.criteria, false),
+									pagOptions : grid.lastUsedOptions,
+									currentIndex : indexFound,
+									totalCount : grid.lastReceivedData.totalCount
+							}
+						}
+					}
+					return getLinkOnClick(data.code, data, paginationInfo);
 				}
 			}, {
 				label : 'Identifier',
 				property : 'identifier',
 				isExportable: true,
 				sortable : !isGlobalSearch,
-				render : function(data) {
-					return getLinkOnClick(data.identifier, data);
+				render : function(data, grid) {
+					var paginationInfo = null;
+					if(!isGlobalSearch) {
+						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._advancedSearchController.searchWithPagination(_this._advancedSearchModel.criteria, false),
+									pagOptions : grid.lastUsedOptions,
+									currentIndex : indexFound,
+									totalCount : grid.lastReceivedData.totalCount
+							}
+						}
+					}
+					return getLinkOnClick(data.identifier, data, paginationInfo);
 				}
 			}, {
 				label : ELNDictionary.ExperimentELN + '/' + ELNDictionary.ExperimentInventory,
-- 
GitLab