From a4bfcd3403a220282ec6e7a2f1a189b60d40e5e5 Mon Sep 17 00:00:00 2001 From: Piotr Gawron <piotr.gawron@uni.lu> Date: Mon, 17 Sep 2018 18:20:04 +0200 Subject: [PATCH] when icon is clicked and there is proper searchtab in the panel open it's focused on it --- .../js/gui/leftPanel/GenericSearchPanel.js | 37 ++++++++++++++++++- .../src/main/js/map/data/IdentifiedElement.js | 2 +- 2 files changed, 36 insertions(+), 3 deletions(-) diff --git a/frontend-js/src/main/js/gui/leftPanel/GenericSearchPanel.js b/frontend-js/src/main/js/gui/leftPanel/GenericSearchPanel.js index d0352ecdec..0b0ee47231 100644 --- a/frontend-js/src/main/js/gui/leftPanel/GenericSearchPanel.js +++ b/frontend-js/src/main/js/gui/leftPanel/GenericSearchPanel.js @@ -6,6 +6,7 @@ var Promise = require("bluebird"); var AbstractDbPanel = require('./AbstractDbPanel'); var Alias = require('../../map/data/Alias'); +var IdentifiedElement = require('../../map/data/IdentifiedElement'); var InvalidArgumentError = require('../../InvalidArgumentError'); var PanelControlElementType = require('../PanelControlElementType'); var Reaction = require('../../map/data/Reaction'); @@ -22,15 +23,47 @@ var Functions = require('../../Functions'); * @extends AbstractDbPanel */ function GenericSearchPanel(params) { + var self = this; params.panelName = "search"; params.helpTip = "<p>search tab allows to search for particular elements or interactions in the map</p>" + "<p>perfect match tick box active: only terms with an exact match to the query will be returned</p>" + "<p>separate multiple search by semicolon</p>"; params.placeholder = "keyword"; - AbstractDbPanel.call(this, params); + AbstractDbPanel.call(self, params); + + self.createSearchGui(); + + self.getMap().addListener("onBioEntityClick", function (e) { + var identifiedElement = e.arg; + var queries = self.getOverlayDb().getQueries(); + var promises = []; + for (var i = 0; i < queries.length; i++) { + promises.push(self.getOverlayDb().getElementsByQuery(queries[i])); + } + return Promise.all(promises).then(function (elements) { + var tab = -1; + for (var i = 0; i < elements.length; i++) { + for (var j = 0; j < elements[i].length; j++) { + var element = elements[i][j].element; + if (element instanceof SearchBioEntityGroup) { + for (var k = 0; k < element.getBioEntities().length; k++) { + if (new IdentifiedElement(element.getBioEntities()[k]).equals(identifiedElement)) { + tab = i; + } + } + } else if (new IdentifiedElement(element).equals(identifiedElement)) { + tab = i; + } + } + } + var link = $(".parentTabs > .nav-tabs > li > a", self.getElement())[tab]; + if (link !== undefined) { + return link.click(); + } + }); + }); - this.createSearchGui(); } GenericSearchPanel.prototype = Object.create(AbstractDbPanel.prototype); diff --git a/frontend-js/src/main/js/map/data/IdentifiedElement.js b/frontend-js/src/main/js/map/data/IdentifiedElement.js index c2bbe28b91..5b2e69861f 100644 --- a/frontend-js/src/main/js/map/data/IdentifiedElement.js +++ b/frontend-js/src/main/js/map/data/IdentifiedElement.js @@ -267,7 +267,7 @@ IdentifiedElement.prototype.setLineColor = function (lineColor) { /** * - * @param {IdentifiedElement} argument + * @param {Object} argument * @returns {boolean} */ IdentifiedElement.prototype.equals = function (argument) { -- GitLab