From 2f161d9caed5efde7face860718db404af60171a Mon Sep 17 00:00:00 2001
From: juanf <juanf>
Date: Wed, 1 Oct 2014 12:00:45 +0000
Subject: [PATCH] ELN UI - PAPER - Support Domain-specific searching

SVN: 32535
---
 .../html/js/controllers/MainController.js     | 41 +++++++++++++------
 .../newbrowser/html/js/server/ServerFacade.js | 22 ++++++++++
 .../newbrowser/html/js/util/FormUtil.js       |  5 +--
 .../newbrowser/html/js/views/SampleTable.js   | 10 +++--
 4 files changed, 58 insertions(+), 20 deletions(-)

diff --git a/plasmid/source/core-plugins/newbrowser/1/as/webapps/newbrowser/html/js/controllers/MainController.js b/plasmid/source/core-plugins/newbrowser/1/as/webapps/newbrowser/html/js/controllers/MainController.js
index 3ae79a231d2..cd34f5a6bfc 100644
--- a/plasmid/source/core-plugins/newbrowser/1/as/webapps/newbrowser/html/js/controllers/MainController.js
+++ b/plasmid/source/core-plugins/newbrowser/1/as/webapps/newbrowser/html/js/controllers/MainController.js
@@ -482,24 +482,39 @@ function MainController(profile) {
 				if(value.length < 3) {
 					var isOk = window.confirm("Are you sure you want to make a search with " + value.length +" characters? You can expect a lot of results.");
 					if(!isOk) {
+						$("#search").removeClass("search-query-searching");
 						return;
 					}
 				}
 				
-				//Update Main Container
-				var sampleTable = new SampleTable(localReference.serverFacade, "mainContainer", localReference.profile, localReference.profile.searchType["TYPE"], true, false, false, true, false, localReference.inspector);
 				$("#search").addClass("search-query-searching");
-				localReference.serverFacade.searchWithText(value, function(data) {
-					if(localSearchId === localReference.lastSearchId) {
-						$("#search").removeClass("search-query-searching");
-						sampleTable.reloadWithSamples(data);
-						localReference.currentView = sampleTable;
-						Util.unblockUI();
-						history.pushState(null, "", ""); //History Push State
-					} else {
-						//Discard old response, was triggered but a new one was started
-					}
-				});
+				var searchDomain = $("#prefix-selected-search-domain").attr("selected-name");
+				if(!searchDomain || searchDomain === profile.getSearchDomains()[0].name) { //Global Search
+					localReference.serverFacade.searchWithText(value, function(data) {
+						if(localSearchId === localReference.lastSearchId) {
+							$("#search").removeClass("search-query-searching");
+							//Update Main Container
+							var sampleTable = new SampleTable(localReference.serverFacade, "mainContainer", localReference.profile, localReference.profile.searchType["TYPE"], true, false, false, true, false, localReference.inspector);
+							sampleTable.reloadWithSamples(data);
+							localReference.currentView = sampleTable;
+							Util.unblockUI();
+							history.pushState(null, "", ""); //History Push State
+						} else {
+							//Discard old response, was triggered but a new one was started
+						}
+					});
+				} else { //Search Domain
+					localReference.serverFacade.searchOnSearchDomain(searchDomain, value, function(data) {
+						if(localSearchId === localReference.lastSearchId) {
+							$("#search").removeClass("search-query-searching");
+							var asdf = 0;
+						} else {
+							//Discard old response, was triggered but a new one was started
+						}
+						
+					});
+				}
+				
 			} else {
 				//Discard it
 			}
diff --git a/plasmid/source/core-plugins/newbrowser/1/as/webapps/newbrowser/html/js/server/ServerFacade.js b/plasmid/source/core-plugins/newbrowser/1/as/webapps/newbrowser/html/js/server/ServerFacade.js
index 72cb8f7ee08..2e3d6d61cfc 100644
--- a/plasmid/source/core-plugins/newbrowser/1/as/webapps/newbrowser/html/js/server/ServerFacade.js
+++ b/plasmid/source/core-plugins/newbrowser/1/as/webapps/newbrowser/html/js/server/ServerFacade.js
@@ -161,6 +161,28 @@ function ServerFacade(openbisServer) {
 			callbackFunction();
 		}
 	}
+	
+	this.searchOnSearchDomain = function(preferredSearchDomainOrNull, searchText, callbackFunction) {
+		
+		var optionalParametersOrNull = {
+				"SEQ-1" : JSON.stringify({
+					"searchDomain" : "Echo database",
+					"dataSetCode" : "20130412142205843-196",
+					"pathInDataSet" : "PATH-1",
+					"sequenceIdentifier" : "ID-1",
+					"positionInSequence" : "1"
+				}),
+				"SEQ-2" : JSON.stringify({
+					"searchDomain" : "Echo database",
+					"dataSetCode" : "20130415093804724-403",
+					"pathInDataSet" : "PATH-2",
+					"sequenceIdentifier" : "ID-2",
+					"positionInSequence" : "2"
+				})
+		}
+		
+		this.openbisServer.searchOnSearchDomain(preferredSearchDomainOrNull, searchText, optionalParametersOrNull, callbackFunction);
+	}
 	//
 	// Others
 	//
diff --git a/plasmid/source/core-plugins/newbrowser/1/as/webapps/newbrowser/html/js/util/FormUtil.js b/plasmid/source/core-plugins/newbrowser/1/as/webapps/newbrowser/html/js/util/FormUtil.js
index a201b85cd9b..e42622eb424 100644
--- a/plasmid/source/core-plugins/newbrowser/1/as/webapps/newbrowser/html/js/util/FormUtil.js
+++ b/plasmid/source/core-plugins/newbrowser/1/as/webapps/newbrowser/html/js/util/FormUtil.js
@@ -25,7 +25,7 @@ var FormUtil = new function() {
 		if(prefixElement) {
 			$dropDownToogle.append(prefixElement);
 		}
-		$dropDownToogle.append($('<a>', { 'href' : '#', 'data-toggle' : 'dropdown', 'class' : 'dropdown-toggle btn btn-default'}).append($('<b>', { 'class' : 'caret' })));
+		$dropDownToogle.append($('<button>', { 'href' : '#', 'data-toggle' : 'dropdown', 'class' : 'dropdown-toggle btn btn-default'}).append($('<b>', { 'class' : 'caret' })));
 		
 		var $dropDownToogleOptions = $('<ul>', { class : 'dropdown-menu', 'role' : 'menu' });
 		$dropDownToogle.append($dropDownToogleOptions);
@@ -44,10 +44,9 @@ var FormUtil = new function() {
 				return function() {
 					if(isSelectedFeedback) {
 						for(var j = 0; j < labelWithEvents.length; j++) {
+							$("#" + 'dropdown-' + labelWithEvents[j].id).empty();
 							if(j === selectedIndex) {
 								$("#" + 'dropdown-' + labelWithEvents[j].id).append("<span class='glyphicon glyphicon-ok'></span>");
-							} else {
-								$("#" + 'dropdown-' + labelWithEvents[j].id).empty();
 							}
 						}
 					}
diff --git a/plasmid/source/core-plugins/newbrowser/1/as/webapps/newbrowser/html/js/views/SampleTable.js b/plasmid/source/core-plugins/newbrowser/1/as/webapps/newbrowser/html/js/views/SampleTable.js
index bdfe2162ae7..486c9009d3f 100644
--- a/plasmid/source/core-plugins/newbrowser/1/as/webapps/newbrowser/html/js/views/SampleTable.js
+++ b/plasmid/source/core-plugins/newbrowser/1/as/webapps/newbrowser/html/js/views/SampleTable.js
@@ -886,10 +886,12 @@ function SampleTable(serverFacade, sampleTableId, profile, sampleTypeCode, inspe
 		}
 		
 		//filter samples to contain only samples from the selected type
-		this.samples = [];
-		for(var i = 0; i < this.allSamplesFromExperiment.length; i++) {
-			if(this.allSamplesFromExperiment[i].sampleTypeCode === this.sampleTypeCode) {
-				this.samples.push(this.allSamplesFromExperiment[i]);
+		if(this.sampleTypeCode != profile.searchType["TYPE"]) {
+			this.samples = [];
+			for(var i = 0; i < this.allSamplesFromExperiment.length; i++) {
+				if(this.allSamplesFromExperiment[i].sampleTypeCode === this.sampleTypeCode) {
+					this.samples.push(this.allSamplesFromExperiment[i]);
+				}
 			}
 		}
 		
-- 
GitLab