From c942c3320e5ee3ae66a1b7123bc8a1fcebf78c76 Mon Sep 17 00:00:00 2001 From: Yves Noirjean <yves.noirjean@id.ethz.ch> Date: Wed, 28 Nov 2018 11:21:23 +0100 Subject: [PATCH] SSDM-7428: using new core plugin to store searches --- .../core-plugins/eln-lims/1/as/elnTypes.py | 7 - .../1/as/initializemasterdataminimum.py | 1 - .../eln-lims/html/js/server/ServerFacade.js | 238 +++++++++++++----- .../AdvancedSearchController.js | 143 +++++++---- .../AdvancedSearch/AdvancedSearchModel.js | 1 + .../AdvancedSearch/AdvancedSearchView.js | 4 + .../dist/core-plugins/eln-lims/4 | 1 - 7 files changed, 274 insertions(+), 121 deletions(-) delete mode 120000 openbis_standard_technologies/dist/core-plugins/eln-lims/4 diff --git a/openbis_standard_technologies/dist/core-plugins/eln-lims/1/as/elnTypes.py b/openbis_standard_technologies/dist/core-plugins/eln-lims/1/as/elnTypes.py index ecf4c7a39e6..1f79772db22 100644 --- a/openbis_standard_technologies/dist/core-plugins/eln-lims/1/as/elnTypes.py +++ b/openbis_standard_technologies/dist/core-plugins/eln-lims/1/as/elnTypes.py @@ -860,13 +860,6 @@ FLY = [FIRST_TIME_VERSIONED, True, True, "FLY", "", [ [FIRST_TIME_VERSIONED, "ANNOTATIONS_STATE", "Comments", "Annotations State", DataType.XML, None, "Annotations State", "ANNOTATIONS_FLY", None] ]]; -SEARCH_QUERY = [MANDATORY_ITEM_VERSION, True, True, "SEARCH_QUERY", "Used to store saved search queries", [ - [MANDATORY_ITEM_VERSION, "NAME", "General", "Name", DataType.VARCHAR, None, "Name", None, None], - [MANDATORY_ITEM_VERSION, "CRITERIA", "General", "Criteria", DataType.XML, None, "Criteria", None, None], - [MANDATORY_ITEM_VERSION, "XMLCOMMENTS", "Comments", "Comments List", DataType.XML, None, "Several comments can be added by different users", "COMMENTS_SAMPLE", None], - [MANDATORY_ITEM_VERSION, "ANNOTATIONS_STATE", "Comments", "Annotations State", DataType.XML, None, "Annotations State", "ANNOTATIONS_CHEMICAL", None] - ]]; - ## ## Sample Types - Non Materials ## diff --git a/openbis_standard_technologies/dist/core-plugins/eln-lims/1/as/initializemasterdataminimum.py b/openbis_standard_technologies/dist/core-plugins/eln-lims/1/as/initializemasterdataminimum.py index c2be900823e..fe2669761f8 100644 --- a/openbis_standard_technologies/dist/core-plugins/eln-lims/1/as/initializemasterdataminimum.py +++ b/openbis_standard_technologies/dist/core-plugins/eln-lims/1/as/initializemasterdataminimum.py @@ -63,7 +63,6 @@ def initBasicMasterData(tr): ## Sample Types - Non Materials ## elnTypes.createSampleTypeWithProperties(tr, elnTypes.GENERAL_ELN_SETTINGS); - elnTypes.createSampleTypeWithProperties(tr, elnTypes.SEARCH_QUERY); elnTypes.createSampleTypeWithProperties(tr, elnTypes.EXPERIMENTAL_STEP); elnTypes.createSampleTypeWithProperties(tr, elnTypes.STORAGE_RACK); elnTypes.createSampleTypeWithProperties(tr, elnTypes.STORAGE_POSITION); 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 e8dd6a389c4..c487f60c029 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 @@ -701,28 +701,12 @@ function ServerFacade(openbisServer) { callbackFunction(error, result); }); } - - this.customELNASAPI = function(parameters, callackFunction) { - require([ "as/dto/service/id/CustomASServiceCode", "as/dto/service/CustomASServiceExecutionOptions" ], - function(CustomASServiceCode, CustomASServiceExecutionOptions) { - var id = new CustomASServiceCode("as-eln-lims-api"); - var options = new CustomASServiceExecutionOptions(); - - if(parameters) { - for(key in parameters) { - options.withParameter(key, parameters[key]); - } - } - - mainController.openbisV3.executeCustomASService(id, options).done(function(result) { - callackFunction(result); - }).fail(function(result) { - alert("Call failed to server: " + JSON.stringify(result)); - }); - }); - } - - this.createReportFromAggregationService = function(dataStoreCode, parameters, callbackFunction, service) { + + this.customELNASAPI = function(parameters, callbackFunction) { + this.customASService(parameters, callbackFunction, "as-eln-lims-api"); + } + + this.createReportFromAggregationService = function(dataStoreCode, parameters, callbackFunction, service) { if(!service) { service = "eln-lims-api"; } @@ -846,21 +830,39 @@ function ServerFacade(openbisServer) { // // New Advanced Search // - + + this.getSearchCriteriaAndFetchOptionsForDataSetSearch = function(advancedSearchCriteria, advancedFetchOptions, callback) { + var criteriaClass = 'as/dto/dataset/search/DataSetSearchCriteria'; + var fetchOptionsClass = 'as/dto/dataset/fetchoptions/DataSetFetchOptions'; + this.getSearchCriteriaAndFetchOptionsForEntitySearch(advancedSearchCriteria, advancedFetchOptions, callback, criteriaClass, fetchOptionsClass); + } + this.searchForDataSetsAdvanced = function(advancedSearchCriteria, advancedFetchOptions, callback) { var criteriaClass = 'as/dto/dataset/search/DataSetSearchCriteria'; var fetchOptionsClass = 'as/dto/dataset/fetchoptions/DataSetFetchOptions'; var searchMethodName = 'searchDataSets'; this.searchForEntityAdvanced(advancedSearchCriteria, advancedFetchOptions, callback, criteriaClass, fetchOptionsClass, searchMethodName); } - + + this.getSearchCriteriaAndFetchOptionsForExperimentSearch = function(advancedSearchCriteria, advancedFetchOptions, callback) { + var criteriaClass = 'as/dto/experiment/search/ExperimentSearchCriteria'; + var fetchOptionsClass = 'as/dto/experiment/fetchoptions/ExperimentFetchOptions'; + this.getSearchCriteriaAndFetchOptionsForEntitySearch(advancedSearchCriteria, advancedFetchOptions, callback, criteriaClass, fetchOptionsClass); + } + this.searchForExperimentsAdvanced = function(advancedSearchCriteria, advancedFetchOptions, callback) { var criteriaClass = 'as/dto/experiment/search/ExperimentSearchCriteria'; var fetchOptionsClass = 'as/dto/experiment/fetchoptions/ExperimentFetchOptions'; var searchMethodName = 'searchExperiments'; this.searchForEntityAdvanced(advancedSearchCriteria, advancedFetchOptions, callback, criteriaClass, fetchOptionsClass, searchMethodName); } - + + this.getSearchCriteriaAndFetchOptionsForSamplesSearch = function(advancedSearchCriteria, advancedFetchOptions, callback) { + var criteriaClass = 'as/dto/sample/search/SampleSearchCriteria'; + var fetchOptionsClass = 'as/dto/sample/fetchoptions/SampleFetchOptions'; + this.getSearchCriteriaAndFetchOptionsForEntitySearch(advancedSearchCriteria, advancedFetchOptions, callback, criteriaClass, fetchOptionsClass); + } + this.searchForSamplesAdvanced = function(advancedSearchCriteria, advancedFetchOptions, callback) { var criteriaClass = 'as/dto/sample/search/SampleSearchCriteria'; var fetchOptionsClass = 'as/dto/sample/fetchoptions/SampleFetchOptions'; @@ -881,8 +883,8 @@ function ServerFacade(openbisServer) { var searchMethodName = 'searchProjects'; this.searchForEntityAdvanced(advancedSearchCriteria, advancedFetchOptions, callback, criteriaClass, fetchOptionsClass, searchMethodName); } - - this.searchForEntityAdvanced = function(advancedSearchCriteria, advancedFetchOptions, callback, criteriaClass, fetchOptionsClass, searchMethodName) { + + this.getSearchCriteriaAndFetchOptionsForEntitySearch = function(advancedSearchCriteria, advancedFetchOptions, callback, criteriaClass, fetchOptionsClass) { require([criteriaClass, fetchOptionsClass, 'as/dto/common/search/DateObjectEqualToValue', @@ -1341,43 +1343,51 @@ function ServerFacade(openbisServer) { // // Fix For broken equals PART 1 - END // - - mainController.openbisV3[searchMethodName](searchCriteria, fetchOptions) - .done(function(apiResults) { - // - // Fix For broken equals PART 2 - // - var results = apiResults.objects; - var filteredResults = []; - if(hackFixForBrokenEquals.length > 0 && results) { - for(var rIdx = 0; rIdx < results.length; rIdx++) { - var result = results[rIdx]; - for(var fIdx = 0; fIdx < hackFixForBrokenEquals.length; fIdx++) { - if( result && - result.properties && - result.properties[hackFixForBrokenEquals[fIdx].propertyCode] === hackFixForBrokenEquals[fIdx].value) { - filteredResults.push(result); - } - } - } - } else { - filteredResults = results; - } - apiResults.objects = filteredResults; - // - // Fix For broken equals PART 2 - END - // - callback(apiResults); - }) - .fail(function(result) { - Util.showError("Call failed to server: " + JSON.stringify(result)); - }); + callback(searchCriteria, fetchOptions, hackFixForBrokenEquals); + } catch(exception) { Util.showError(exception.name + ": " + exception.message); } }); } - + + this.searchForEntityAdvanced = function(advancedSearchCriteria, advancedFetchOptions, callback, criteriaClass, fetchOptionsClass, searchMethodName) { + var searchFunction = function(searchCriteria, fetchOptions, hackFixForBrokenEquals) { + mainController.openbisV3[searchMethodName](searchCriteria, fetchOptions) + .done(function(apiResults) { + // + // Fix For broken equals PART 2 + // + var results = apiResults.objects; + var filteredResults = []; + if(hackFixForBrokenEquals.length > 0 && results) { + for(var rIdx = 0; rIdx < results.length; rIdx++) { + var result = results[rIdx]; + for(var fIdx = 0; fIdx < hackFixForBrokenEquals.length; fIdx++) { + if( result && + result.properties && + result.properties[hackFixForBrokenEquals[fIdx].propertyCode] === hackFixForBrokenEquals[fIdx].value) { + filteredResults.push(result); + } + } + } + } else { + filteredResults = results; + } + apiResults.objects = filteredResults; + // + // Fix For broken equals PART 2 - END + // + callback(apiResults); + }) + .fail(function(result) { + Util.showError("Call failed to server: " + JSON.stringify(result)); + }); + } + + this.getSearchCriteriaAndFetchOptionsForEntitySearch(advancedSearchCriteria, advancedFetchOptions, searchFunction, criteriaClass, fetchOptionsClass); + } + // // Search Samples // @@ -2013,16 +2023,15 @@ function ServerFacade(openbisServer) { // // Global Search // - this.searchGlobally = function(freeText, advancedFetchOptions, callbackFunction) - { - var _this = this; + + this.getSearchCriteriaAndFetchOptionsForGlobalSearch = function(freeText, advancedFetchOptions, callbackFunction) { require(['as/dto/global/search/GlobalSearchCriteria', 'as/dto/global/fetchoptions/GlobalSearchObjectFetchOptions'], function(GlobalSearchCriteria, GlobalSearchObjectFetchOptions){ var searchCriteria = new GlobalSearchCriteria(); searchCriteria.withText().thatContains(freeText.toLowerCase().trim()); searchCriteria.withOperator("AND"); - + var fetchOptions = new GlobalSearchObjectFetchOptions(); var sampleFetchOptions = fetchOptions.withSample(); sampleFetchOptions.withSpace(); @@ -2056,7 +2065,15 @@ function ServerFacade(openbisServer) { fetchOptions.from(advancedFetchOptions.from); fetchOptions.count(advancedFetchOptions.count); } - + + callbackFunction(searchCriteria, fetchOptions); + }); + } + + this.searchGlobally = function(freeText, advancedFetchOptions, callbackFunction) + { + this.getSearchCriteriaAndFetchOptionsForGlobalSearch(freeText, advancedFetchOptions, function(searchCriteria, fetchOptions) + { mainController.openbisV3.searchGlobally(searchCriteria, fetchOptions).done(function(results) { callbackFunction(results); }).fail(function(error) { @@ -2506,4 +2523,97 @@ function ServerFacade(openbisServer) { callbackFunction(false); }); } + + this.searchCustomASServices = function(code, callbackFunction) { + require(['as/dto/service/search/CustomASServiceSearchCriteria', 'as/dto/service/fetchoptions/CustomASServiceFetchOptions'], + function(CustomASServiceSearchCriteria, CustomASServiceFetchOptions) { + var searchCriteria = new CustomASServiceSearchCriteria(); + var fetchOptions = new CustomASServiceFetchOptions(); + searchCriteria.withCode().thatEquals(code); + mainController.openbisV3.searchCustomASServices(searchCriteria, fetchOptions).done(function(result) { + callbackFunction(result); + Â Â Â Â Â Â Â Â }).fail(function(result) { + Util.showError("Call failed to server: " + JSON.stringify(result)); + callbackFunction(false); + }); + } + ); + } + + // errorHandler: optional. if present, it is called instead of showing the error and the callbackFunction is not called + this.customASService = function(parameters, callbackFunction, serviceCode, errorHandler) { + require([ "as/dto/service/id/CustomASServiceCode", "as/dto/service/CustomASServiceExecutionOptions" ], + function(CustomASServiceCode, CustomASServiceExecutionOptions) { + var id = new CustomASServiceCode(serviceCode); + var options = new CustomASServiceExecutionOptions(); + + if(parameters) { + for(key in parameters) { + options.withParameter(key, parameters[key]); + } + } + + mainController.openbisV3.executeCustomASService(id, options).done(function(result) { + callbackFunction(result); + }).fail(function(result) { + if (errorHandler) { + errorHandler(result); + } else { + alert("Call failed to server: " + JSON.stringify(result)); + } + }); + }); + } + + // + // search-store Functions + // + + this.callSearchStoreService = function(parameters, callbackFunction) { + this.customASService(parameters, callbackFunction, 'search-store', function(errorResult) { + Util.showError("Call failed to server: " + JSON.stringify(errorResult)); + callbackFunction(false); + }); + } + + this.saveSearch = function(space, experiment, name, criteriaV3, fetchOptionsV3, criteriaEln, callbackFunction) { + var parameters = { + method: 'SAVE', + name: name, + searchCriteria: criteriaV3, + fetchOptions: fetchOptionsV3, + customData: { 'eln-lims-criteria': criteriaEln }, + spacePermId: space.permId.permId, + experimentPermId: experiment.permId.permId, + } + this.callSearchStoreService(parameters, callbackFunction); + } + + this.updateSearch = function(permId, criteriaV3, fetchOptionsV3, criteriaEln, callbackFunction) { + var parameters = { + method: 'UPDATE', + permId: permId, + searchCriteria: criteriaV3, + fetchOptions: fetchOptionsV3, + customData: { 'eln-lims-criteria': criteriaEln }, + } + this.callSearchStoreService(parameters, callbackFunction); + } + + this.loadSearches = function(callbackFunction) { + var parameters = { + method: 'LOAD', + } + this.callSearchStoreService(parameters, callbackFunction); + } + + this.deleteSearch = function(permId, reason, callbackFunction) { + parameters = { + method: 'DELETE', + permId: permId, + reason: reason, + } + this.callSearchStoreService(parameters, callbackFunction); + } + } diff --git a/openbis_standard_technologies/dist/core-plugins/eln-lims/1/as/webapps/eln-lims/html/js/views/AdvancedSearch/AdvancedSearchController.js b/openbis_standard_technologies/dist/core-plugins/eln-lims/1/as/webapps/eln-lims/html/js/views/AdvancedSearch/AdvancedSearchController.js index 1b08ef8f112..09d7f2f9b9a 100644 --- a/openbis_standard_technologies/dist/core-plugins/eln-lims/1/as/webapps/eln-lims/html/js/views/AdvancedSearch/AdvancedSearchController.js +++ b/openbis_standard_technologies/dist/core-plugins/eln-lims/1/as/webapps/eln-lims/html/js/views/AdvancedSearch/AdvancedSearchController.js @@ -21,8 +21,15 @@ function AdvancedSearchController(mainController, forceSearch) { this.init = function(views) { var _this = this; - this._loadSavedSearches(function() { - _this._advancedSearchView.repaint(views); + _this._searchStoreAvailable(function(searchStoreAvailable) { + _this._advancedSearchModel.searchStoreAvailable = searchStoreAvailable; + if (searchStoreAvailable) { + _this._loadSavedSearches(function() { + _this._advancedSearchView.repaint(views); + }); + } else { + _this._advancedSearchView.repaint(views); + } }); } @@ -220,10 +227,44 @@ function AdvancedSearchController(mainController, forceSearch) { } } + this._getSearchCriteriaV3 = function(callback) { + var criteriaToSend = $.extend(true, {}, this._advancedSearchModel.criteria); + switch(criteriaToSend.entityKind) { + case "ALL": + var freeText = ""; + for(var ruleId in criteriaToSend.rules) { + if(criteriaToSend.rules[ruleId].value) { + freeText += " " + criteriaToSend.rules[ruleId].value; + } + } + mainController.serverFacade.getSearchCriteriaAndFetchOptionsForGlobalSearch(freeText, {}, callback); + break; + case "SAMPLE": + mainController.serverFacade.getSearchCriteriaAndFetchOptionsForSamplesSearch(criteriaToSend, {}, callback); + break; + case "EXPERIMENT": + mainController.serverFacade.getSearchCriteriaAndFetchOptionsForExperimentSearch(criteriaToSend, {}, callback); + break; + case "DATASET": + mainController.serverFacade.getSearchCriteriaAndFetchOptionsForDataSetSearch(criteriaToSend, {}, callback); + break; + } + } + // // query loading / saving // + this._searchStoreAvailable = function(callback) { + this._mainController.serverFacade.searchCustomASServices('search-store', function(result) { + if (result != null && result.objects.length > 0) { + callback(true); + } else { + callback(false); + } + }) + } + this.selectSavedSearch = function(selcetedSavedSearchIndex) { var savedSearch = this._advancedSearchModel.savedSearches[selcetedSavedSearchIndex]; this._advancedSearchModel.selcetedSavedSearchIndex = selcetedSavedSearchIndex; @@ -236,22 +277,18 @@ function AdvancedSearchController(mainController, forceSearch) { // params.experiment this.saveNewSample = function(params, callback) { var _this = this; - var criteria = _this._getSerializedCriteria(); this._ensureProjectAndExperiment(params.experiment, function(experiment) { _this._doIfAdmin(experiment, function() { - _this._mainController.serverFacade.createSample('SEARCH_QUERY', experiment, { - NAME: params.name, - CRITERIA: criteria, - }, function(result) { - var permId = result[0].permId; - _this._mainController.serverFacade.getSamples([permId], function(result) { - if (result[permId]) { - var savedSearch = _this._sampleToSavedSearch(result[permId]); - _this._advancedSearchModel.savedSearches.push(savedSearch); - _this.selectSavedSearch(_this._advancedSearchModel.savedSearches.length - 1); - } - callback(); + _this._getSearchCriteriaV3(function(criteriaV3, fetchOptionsV3) { + var criteriaEln = _this._advancedSearchModel.criteria; + var space = experiment.project.space; + _this._mainController.serverFacade.saveSearch(space, experiment, params.name, criteriaV3, fetchOptionsV3, criteriaEln, function(sample) { + Util.showSuccess('Search saved.'); + var savedSearch = _this._sampleToSavedSearch(sample); + _this._advancedSearchModel.savedSearches.unshift(savedSearch); + _this.selectSavedSearch(0); + callback(); }); }); }); @@ -260,41 +297,39 @@ function AdvancedSearchController(mainController, forceSearch) { this.updateSelectedSample = function(callback) { var _this = this; - var criteria = _this._getSerializedCriteria(); var savedSearch = _this._advancedSearchModel.savedSearches[_this._advancedSearchModel.selcetedSavedSearchIndex]; _this._doIfAdmin(savedSearch.sample.experiment, function() { - _this._mainController.serverFacade.updateSample({ - permId: savedSearch.sample.permId.permId, - properties: { - CRITERIA: criteria, - }, - }, function(success) { - if (success) { - Util.showSuccess('Search updated.'); - savedSearch.criteria = _this._clone(_this._advancedSearchModel.criteria); - } - callback(); + + _this._getSearchCriteriaV3(function(criteriaV3, fetchOptionsV3) { + var criteriaEln = _this._advancedSearchModel.criteria; + var selcetedSavedSearchIndex = _this._advancedSearchModel.selcetedSavedSearchIndex; + var permId = _this._advancedSearchModel.savedSearches[selcetedSavedSearchIndex].sample.permId.permId; + _this._mainController.serverFacade.updateSearch(permId, criteriaV3, fetchOptionsV3, criteriaEln, function(result){ + if (result) { + Util.showSuccess('Search updated.'); + savedSearch.criteria = _this._clone(_this._advancedSearchModel.criteria); + } + callback(); + }); }); }); } this.delete = function(selcetedSavedSearchIndex, callback) { var _this = this; - var savedSearch = _this._advancedSearchModel.savedSearches[selcetedSavedSearchIndex]; - this._mainController.serverFacade.deleteSamples( - [savedSearch.sample.permId.permId], - 'Search query deletion by user', - function(deletionId) { - if (deletionId) { - _this._advancedSearchModel.selcetedSavedSearchIndex = -1; - Util.showSuccess('Search deleted.'); - _this._loadSavedSearches(function() { - _this._advancedSearchView.repaintContent(); - }); - } - callback(); + var selcetedSavedSearchIndex = _this._advancedSearchModel.selcetedSavedSearchIndex; + var permId = _this._advancedSearchModel.savedSearches[selcetedSavedSearchIndex].sample.permId.permId; + var reason = 'Search query deletion by user'; + this._mainController.serverFacade.deleteSearch(permId, reason, function(deletionId) { + if (deletionId) { + _this._advancedSearchModel.selcetedSavedSearchIndex = -1; + Util.showSuccess('Search deleted.'); + _this._loadSavedSearches(function() { + _this._advancedSearchView.repaintContent(); + }); } - ); + callback(); + }); } this.clearSelection = function() { @@ -307,7 +342,7 @@ function AdvancedSearchController(mainController, forceSearch) { this._mainController.serverFacade.searchSamplesV3('SEARCH_QUERY', function(result) { _this._advancedSearchModel.savedSearches = []; if(result != null && result.objects != null) { - var samples = _this._sortSavedSearchSamples(result.objects); + var samples = _this._sortSearchSamples(result.objects); for (var i=0; i<samples.length; i++) { _this._advancedSearchModel.savedSearches.push(_this._sampleToSavedSearch(samples[i])); } @@ -318,7 +353,7 @@ function AdvancedSearchController(mainController, forceSearch) { // puts own samples on top // samples are assumed to already be sorted by date - this._sortSavedSearchSamples = function(samples) { + this._sortSearchSamples = function(samples) { var ownSamples = []; var otherSamples = []; for (var i=0; i<samples.length; i++) { @@ -331,6 +366,21 @@ function AdvancedSearchController(mainController, forceSearch) { return ownSamples.concat(otherSamples); } + // puts own samples on top + // samples are assumed to already be sorted by date + this._sortSearches = function(searches) { + var ownSearches = []; + var otherSearches = []; + for (var i=0; i<searches.length; i++) { + if (searches[i].sample.registrator.userId == this._mainController.serverFacade.getUserId()) { + ownSearches.push(searches[i]); + } else { + otherSearches.push(searches[i]); + } + } + return ownSearches.concat(otherSearches); + } + this._ensureProjectAndExperiment = function(experiment, callback) { var _this = this; if (experiment.defaultDummyExperiment) { @@ -383,14 +433,10 @@ function AdvancedSearchController(mainController, forceSearch) { return { sample: sample, name: sample.properties.NAME, - criteria: JSON.parse(atob(sample.properties.CRITERIA.replace('<criteria>', '').replace('</criteria>', ''))), + criteria: JSON.parse(sample.properties.CUSTOM_DATA.replace('<xml><![CDATA[', '').replace(']]></xml>', ''))['eln-lims-criteria'], }; } - this._getSerializedCriteria = function() { - return '<criteria>' + btoa(JSON.stringify(this._advancedSearchModel.criteria)) + '</criteria>'; - } - this._doIfAdmin = function(experiment, action) { var _this = this; _this._mainController.getUserRole({ @@ -409,4 +455,5 @@ function AdvancedSearchController(mainController, forceSearch) { this._clone = function(object) { return JSON.parse(JSON.stringify(object)); } + } diff --git a/openbis_standard_technologies/dist/core-plugins/eln-lims/1/as/webapps/eln-lims/html/js/views/AdvancedSearch/AdvancedSearchModel.js b/openbis_standard_technologies/dist/core-plugins/eln-lims/1/as/webapps/eln-lims/html/js/views/AdvancedSearch/AdvancedSearchModel.js index e75a6608e04..a58e7755519 100644 --- a/openbis_standard_technologies/dist/core-plugins/eln-lims/1/as/webapps/eln-lims/html/js/views/AdvancedSearch/AdvancedSearchModel.js +++ b/openbis_standard_technologies/dist/core-plugins/eln-lims/1/as/webapps/eln-lims/html/js/views/AdvancedSearch/AdvancedSearchModel.js @@ -25,6 +25,7 @@ function AdvancedSearchModel(forceSearch) { } this.savedSearches = []; // [{ sample: v3Sample, name: "name", criteria: { see this.criteria }}, ...] this.selcetedSavedSearchIndex = -1; + this.searchStoreAvailable = null; if(typeof forceSearch === 'object') { this.criteria = forceSearch; 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 15505da7ca0..53e2f7571b1 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 @@ -161,6 +161,10 @@ function AdvancedSearchView(advancedSearchController, advancedSearchModel) { var _this = this; $container.empty(); + if (this._advancedSearchModel.searchStoreAvailable != true) { + return; + } + var savedSearchOptions = [{ label: 'load a saved search', value: -1, diff --git a/openbis_standard_technologies/dist/core-plugins/eln-lims/4 b/openbis_standard_technologies/dist/core-plugins/eln-lims/4 deleted file mode 120000 index 56a6051ca2b..00000000000 --- a/openbis_standard_technologies/dist/core-plugins/eln-lims/4 +++ /dev/null @@ -1 +0,0 @@ -1 \ No newline at end of file -- GitLab