From 095abe567fdb47990aadb9d46156eb66045354e6 Mon Sep 17 00:00:00 2001 From: parkera <parkera> Date: Fri, 11 Mar 2016 15:06:05 +0000 Subject: [PATCH] SSDM-3024 : Some facade refactoring SVN: 35888 --- .../eln-lims/html/js/server/ServerFacade.js | 227 +++++++++--------- 1 file changed, 109 insertions(+), 118 deletions(-) diff --git a/plasmid/source/core-plugins/eln-lims/1/as/webapps/eln-lims/html/js/server/ServerFacade.js b/plasmid/source/core-plugins/eln-lims/1/as/webapps/eln-lims/html/js/server/ServerFacade.js index 83311261ebb..149cd830a1a 100644 --- a/plasmid/source/core-plugins/eln-lims/1/as/webapps/eln-lims/html/js/server/ServerFacade.js +++ b/plasmid/source/core-plugins/eln-lims/1/as/webapps/eln-lims/html/js/server/ServerFacade.js @@ -599,121 +599,17 @@ function ServerFacade(openbisServer) { // // New Advanced Search // - this.searchForEntitiesAdvanced = function(advancedSearchCriteria, searchCriteria, fetchOptions, v3Api, searchFunction, callback) { - //Setting the searchCriteria given the advancedSearchCriteria model - var searchCriteria = searchCriteria; - - //Setting the fetchOptions given standard settings - var fetchOptions = fetchOptions; - fetchOptions.withTags(); - fetchOptions.withType(); - fetchOptions.withSpace(); - fetchOptions.withExperiment(); - fetchOptions.withRegistrator(); - fetchOptions.withModifier(); - fetchOptions.withParents(); - fetchOptions.withProperties(); - - //Operator - var operator = advancedSearchCriteria.logicalOperator; - if (!operator) { - operator = "AND"; - } - searchCriteria.withOperator(operator); - - //Rules - var ruleKeys = Object.keys(advancedSearchCriteria.rules); - for (var idx = 0; idx < ruleKeys.length; idx++) - { - var fieldType = advancedSearchCriteria.rules[ruleKeys[idx]].type; - var fieldName = advancedSearchCriteria.rules[ruleKeys[idx]].name; - var fieldNameType = null; - var fieldValue = advancedSearchCriteria.rules[ruleKeys[idx]].value; - - if(fieldName) { - var firstDotIndex = fieldName.indexOf("."); - fieldNameType = fieldName.substring(0, firstDotIndex); - fieldName = fieldName.substring(firstDotIndex + 1, fieldName.length); - } - - var setPropertyCriteria = function(criteria, propertyName, propertyValue) { - criteria.withProperty(propertyName).thatEquals(propertyValue); - } - - var setAttributeCriteria = function(criteria, attributeName, attributeValue) { - switch(attributeName) { - case "CODE": - criteria.withCode().thatEquals(attributeValue); - break; - case "SAMPLE_TYPE": - criteria.withType().withCode().thatEquals(attributeValue); - break; - case "PERM_ID": - criteria.withPermId().thatEquals(attributeValue); - break; - case "SPACE": - criteria.withSpace().withCode().thatEquals(attributeValue); - break; - case "METAPROJECT": - criteria.withTag().withCode().thatEquals(attributeValue); - break; - case "REGISTRATION_DATE": //must be format 2009-08-18 ? - criteria.withRegistrationDate().thatEquals(new DateObjectEqualToValue(attributeValue)); - break; - case "MODIFICATION_DATE": //must be format 2009-08-18 ? - criteria.withModificationDate().thatEquals(new DateObjectEqualToValue(attributeValue)); - break; - } - } - - switch(fieldType) { - case "All": - searchCriteria.withAnyField().thatEquals(fieldValue); - break; - case "Property": - setPropertyCriteria(searchCriteria, fieldName, fieldValue); - break; - case "Attribute": - setAttributeCriteria(searchCriteria, fieldName, fieldValue); - break; - case "Parent": - switch(fieldNameType) { - case "PROP": - setPropertyCriteria(searchCriteria.withParents(), fieldName, fieldValue); - break; - case "ATTR": - setAttributeCriteria(searchCriteria.withParents(), fieldName, fieldValue); - break; - } - break; - case "Children": - switch(fieldNameType) { - case "PROP": - setPropertyCriteria(searchCriteria.withChildren(), fieldName, fieldValue); - break; - case "ATTR": - setAttributeCriteria(searchCriteria.withChildren(), fieldName, fieldValue); - break; - } - break; - } - } - - v3Api[searchFunction](searchCriteria, fetchOptions) - .done(function(result) { - callback(result); //this will call the method defined in the AdvancedSearchController which will display the table - }) - .fail(function(result) { - Util.showError("Call failed to server: " + JSON.stringify(result)); - Util.unblockUI(); - }); + this.searchForSamplesAdvanced = function(advancedSearchCriteria, callback) { + var criteriaClass = 'as/dto/sample/search/SampleSearchCriteria'; + var fetchOptionsClass = 'as/dto/sample/fetchoptions/SampleFetchOptions'; + var searchMethodName = 'searchSamples'; + this.searchForEntityAdvanced(advancedSearchCriteria, callback, criteriaClass, fetchOptionsClass, searchMethodName); } - this.searchForSamplesAdvanced = function(advancedSearchCriteria, callback) { - var _this = this; + this.searchForEntityAdvanced = function(advancedSearchCriteria, callback, criteriaClass, fetchOptionsClass, searchMethodName) { require(['openbis', - 'as/dto/sample/search/SampleSearchCriteria', - 'as/dto/sample/fetchoptions/SampleFetchOptions', + criteriaClass, + fetchOptionsClass, 'as/dto/common/search/DateObjectEqualToValue'], function(openbis, SampleSearchCriteria, SampleFetchOptions, DateObjectEqualToValue) { //Boilerplate @@ -732,13 +628,108 @@ function ServerFacade(openbisServer) { //Setting the fetchOptions given standard settings var fetchOptions = new SampleFetchOptions(); + fetchOptions.withTags(); + fetchOptions.withType(); + fetchOptions.withSpace(); + fetchOptions.withExperiment(); + fetchOptions.withRegistrator(); + fetchOptions.withModifier(); + fetchOptions.withParents(); + fetchOptions.withProperties(); + + //Operator + var operator = advancedSearchCriteria.logicalOperator; + if (!operator) { + operator = "AND"; + } + searchCriteria.withOperator(operator); + + //Rules + var ruleKeys = Object.keys(advancedSearchCriteria.rules); + for (var idx = 0; idx < ruleKeys.length; idx++) + { + var fieldType = advancedSearchCriteria.rules[ruleKeys[idx]].type; + var fieldName = advancedSearchCriteria.rules[ruleKeys[idx]].name; + var fieldNameType = null; + var fieldValue = advancedSearchCriteria.rules[ruleKeys[idx]].value; + + if(fieldName) { + var firstDotIndex = fieldName.indexOf("."); + fieldNameType = fieldName.substring(0, firstDotIndex); + fieldName = fieldName.substring(firstDotIndex + 1, fieldName.length); + } + + var setPropertyCriteria = function(criteria, propertyName, propertyValue) { + criteria.withProperty(propertyName).thatEquals(propertyValue); + } + + var setAttributeCriteria = function(criteria, attributeName, attributeValue) { + switch(attributeName) { + case "CODE": + criteria.withCode().thatEquals(attributeValue); + break; + case "SAMPLE_TYPE": + criteria.withType().withCode().thatEquals(attributeValue); + break; + case "PERM_ID": + criteria.withPermId().thatEquals(attributeValue); + break; + case "SPACE": + criteria.withSpace().withCode().thatEquals(attributeValue); + break; + case "METAPROJECT": + criteria.withTag().withCode().thatEquals(attributeValue); + break; + case "REGISTRATION_DATE": //must be format 2009-08-18 ? + criteria.withRegistrationDate().thatEquals(new DateObjectEqualToValue(attributeValue)); + break; + case "MODIFICATION_DATE": //must be format 2009-08-18 ? + criteria.withModificationDate().thatEquals(new DateObjectEqualToValue(attributeValue)); + break; + } + } + + switch(fieldType) { + case "All": + searchCriteria.withAnyField().thatEquals(fieldValue); + break; + case "Property": + setPropertyCriteria(searchCriteria, fieldName, fieldValue); + break; + case "Attribute": + setAttributeCriteria(searchCriteria, fieldName, fieldValue); + break; + case "Parent": + switch(fieldNameType) { + case "PROP": + setPropertyCriteria(searchCriteria.withParents(), fieldName, fieldValue); + break; + case "ATTR": + setAttributeCriteria(searchCriteria.withParents(), fieldName, fieldValue); + break; + } + break; + case "Children": + switch(fieldNameType) { + case "PROP": + setPropertyCriteria(searchCriteria.withChildren(), fieldName, fieldValue); + break; + case "ATTR": + setAttributeCriteria(searchCriteria.withChildren(), fieldName, fieldValue); + break; + } + break; + } + } - _this.searchForEntitiesAdvanced(advancedSearchCriteria, - searchCriteria, - fetchOptions, - v3Api, - "searchSamples", - callback); + v3Api[searchMethodName](searchCriteria, fetchOptions) + .done(function(result) { + callback(result); //this will call the method defined in the AdvancedSearchController which will display the table + }) + .fail(function(result) { + Util.showError("Call failed to server: " + JSON.stringify(result)); + Util.unblockUI(); + }); }); } -- GitLab