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