From 6d52799e0eac0444c8cde58cb781cae45c4ba476 Mon Sep 17 00:00:00 2001
From: juanf <juanf>
Date: Thu, 16 Mar 2017 09:23:08 +0000
Subject: [PATCH] SSDM-4184 : Range queries for Registration Date and
 Modification Date

SVN: 37916
---
 .../eln-lims/html/js/server/ServerFacade.js   | 44 +++++++++++++++----
 .../AdvancedSearch/AdvancedSearchView.js      | 17 +++++--
 2 files changed, 48 insertions(+), 13 deletions(-)

diff --git a/openbis_standard_technologies/dist/core-plugins/eln-lims/1/as/webapps/eln-lims/html/js/server/ServerFacade.js b/openbis_standard_technologies/dist/core-plugins/eln-lims/1/as/webapps/eln-lims/html/js/server/ServerFacade.js
index 1a82bad8267..f48356bafb7 100644
--- a/openbis_standard_technologies/dist/core-plugins/eln-lims/1/as/webapps/eln-lims/html/js/server/ServerFacade.js
+++ b/openbis_standard_technologies/dist/core-plugins/eln-lims/1/as/webapps/eln-lims/html/js/server/ServerFacade.js
@@ -899,7 +899,7 @@ function ServerFacade(openbisServer) {
 						}
 					}
 				
-					var setAttributeCriteria = function(criteria, attributeName, attributeValue) {
+					var setAttributeCriteria = function(criteria, attributeName, attributeValue, comparisonOperator) {
 						switch(attributeName) {
 							//Used by all entities
 							case "CODE":
@@ -912,10 +912,36 @@ function ServerFacade(openbisServer) {
 								criteria.withTag().withCode().thatEquals(attributeValue); //TO-DO To Test, currently not supported by ELN UI
 								break;
 							case "REGISTRATION_DATE": //Must be a string object with format 2009-08-18
-								criteria.withRegistrationDate().thatEquals(attributeValue);
+								if(comparisonOperator) {
+									switch(comparisonOperator) {
+										case "thatEqualsDate":
+											criteria.withRegistrationDate().thatEquals(attributeValue);
+										case "thatIsLaterThanOrEqualToDate":
+											criteria.withRegistrationDate().thatIsLaterThanOrEqualTo(attributeValue);
+											break;
+										case "thatIsEarlierThanOrEqualToDate":
+											criteria.withRegistrationDate().thatIsEarlierThanOrEqualTo(attributeValue);
+											break;
+									}
+								} else {
+									criteria.withRegistrationDate().thatEquals(attributeValue);
+								}
 								break;
 							case "MODIFICATION_DATE": //Must be a string object with format 2009-08-18
-								criteria.withModificationDate().thatEquals(attributeValue);
+								if(comparisonOperator) {
+									switch(comparisonOperator) {
+										case "thatEqualsDate":
+											criteria.withModificationDate().thatEquals(attributeValue);
+										case "thatIsLaterThanOrEqualToDate":
+											criteria.withModificationDate().thatIsLaterThanOrEqualTo(attributeValue);
+											break;
+										case "thatIsEarlierThanOrEqualToDate":
+											criteria.withModificationDate().thatIsEarlierThanOrEqualTo(attributeValue);
+											break;
+									}
+								} else {
+									criteria.withModificationDate().thatEquals(attributeValue);
+								}
 								break;
 							case "SAMPLE_TYPE":
 							case "EXPERIMENT_TYPE":
@@ -949,7 +975,7 @@ function ServerFacade(openbisServer) {
 							setPropertyCriteria(setOperator(searchCriteria, advancedSearchCriteria.logicalOperator), fieldName, fieldValue, fieldOperator);
 							break;
 						case "Attribute":
-							setAttributeCriteria(setOperator(searchCriteria, advancedSearchCriteria.logicalOperator), fieldName, fieldValue);
+							setAttributeCriteria(setOperator(searchCriteria, advancedSearchCriteria.logicalOperator), fieldName, fieldValue, fieldOperator);
 							break;
 						case "Property/Attribute":
 							switch(fieldNameType) {
@@ -957,7 +983,7 @@ function ServerFacade(openbisServer) {
 									setPropertyCriteria(setOperator(searchCriteria, advancedSearchCriteria.logicalOperator), fieldName, fieldValue, fieldOperator);
 									break;
 								case "ATTR":
-									setAttributeCriteria(setOperator(searchCriteria, advancedSearchCriteria.logicalOperator), fieldName, fieldValue);
+									setAttributeCriteria(setOperator(searchCriteria, advancedSearchCriteria.logicalOperator), fieldName, fieldValue, fieldOperator);
 									break;
 							}
 							break;
@@ -967,7 +993,7 @@ function ServerFacade(openbisServer) {
 									setPropertyCriteria(setOperator(searchCriteria.withSample(),advancedSearchCriteria.logicalOperator), fieldName, fieldValue, fieldOperator);
 									break;
 								case "ATTR":
-									setAttributeCriteria(setOperator(searchCriteria.withSample(),advancedSearchCriteria.logicalOperator), fieldName, fieldValue);
+									setAttributeCriteria(setOperator(searchCriteria.withSample(),advancedSearchCriteria.logicalOperator), fieldName, fieldValue, fieldOperator);
 									break;
 								case "NULL":
 									searchCriteria.withoutSample();
@@ -980,7 +1006,7 @@ function ServerFacade(openbisServer) {
 									setPropertyCriteria(setOperator(searchCriteria.withExperiment(),advancedSearchCriteria.logicalOperator), fieldName, fieldValue, fieldOperator);
 									break;
 								case "ATTR":
-									setAttributeCriteria(setOperator(searchCriteria.withExperiment(),advancedSearchCriteria.logicalOperator), fieldName, fieldValue);
+									setAttributeCriteria(setOperator(searchCriteria.withExperiment(),advancedSearchCriteria.logicalOperator), fieldName, fieldValue, fieldOperator);
 									break;
 								case "NULL":
 									searchCriteria.withoutExperiment();
@@ -993,7 +1019,7 @@ function ServerFacade(openbisServer) {
 									setPropertyCriteria(setOperator(searchCriteria.withParents(),advancedSearchCriteria.logicalOperator), fieldName, fieldValue, fieldOperator);
 									break;
 								case "ATTR":
-									setAttributeCriteria(setOperator(searchCriteria.withParents(),advancedSearchCriteria.logicalOperator), fieldName, fieldValue);
+									setAttributeCriteria(setOperator(searchCriteria.withParents(),advancedSearchCriteria.logicalOperator), fieldName, fieldValue, fieldOperator);
 									break;
 							}
 							break;
@@ -1003,7 +1029,7 @@ function ServerFacade(openbisServer) {
 									setPropertyCriteria(setOperator(searchCriteria.withChildren(),advancedSearchCriteria.logicalOperator), fieldName, fieldValue, fieldOperator);
 									break;
 								case "ATTR":
-									setAttributeCriteria(setOperator(searchCriteria.withChildren(),advancedSearchCriteria.logicalOperator), fieldName, fieldValue);
+									setAttributeCriteria(setOperator(searchCriteria.withChildren(),advancedSearchCriteria.logicalOperator), fieldName, fieldValue, fieldOperator);
 									break;
 							}
 							break;
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 3a5553fec55..bfab1bb8c65 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
@@ -319,13 +319,22 @@ function AdvancedSearchView(advancedSearchController, advancedSearchModel) {
 			$newFieldOperatorContainer.empty();
 			delete _this._advancedSearchModel.criteria.rules[uuid].operator;
 			
-			if(selectedValue && selectedValue.startsWith("PROP.")) {
+			var dataType = null;
+			
+			if(selectedValue && 
+							(selectedValue === "ATTR.REGISTRATION_DATE" || 
+							selectedValue === "ATTR.MODIFICATION_DATE")) {
+				dataType = "TIMESTAMP";
+			} else if(selectedValue && selectedValue.startsWith("PROP.")) {
 				var propertyTypeCode = selectedValue.substring(5);
 				var propertyType = profile.getPropertyType(propertyTypeCode);
-				
+				dataType = propertyType.dataType;
+			}
+			
+			if(dataType) {
 				var operatorOptions = null;
 				
-				if (propertyType.dataType === "INTEGER" || propertyType.dataType === "NUMBER") {
+				if (dataType === "INTEGER" || dataType === "NUMBER") {
 					operatorOptions = [
 					                       { value : "thatEqualsNumber", 					label : "thatEquals (Number)", selected : true },
 					                       { value : "thatIsLessThanNumber", 				label : "thatIsLessThan (Number)" },
@@ -333,7 +342,7 @@ function AdvancedSearchView(advancedSearchController, advancedSearchModel) {
 					                       { value : "thatIsGreaterThanNumber", 			label : "thatIsGreaterThan (Number)" },
 					                       { value : "thatIsGreaterThanOrEqualToNumber", 	label : "thatIsGreaterThanOrEqualTo (Number)" }
 					                       ];
-				} else if(propertyType.dataType === "TIMESTAMP") {
+				} else if(dataType === "TIMESTAMP") {
 					operatorOptions = [
 					                       { value : "thatEqualsDate", 						label : "thatEquals (Date)", selected : true },
 					                       { value : "thatIsLaterThanOrEqualToDate", 		label : "thatIsLaterThanOrEqualTo (Date)" },
-- 
GitLab