From a198011a43d7fde7f6a0be347a942a3bdc9a721f Mon Sep 17 00:00:00 2001 From: Piotr Gawron <piotr.gawron@uni.lu> Date: Wed, 21 Feb 2018 15:43:36 +0100 Subject: [PATCH] searches separated by semicolon are always separated (semicolon cannot be part of the name) --- .../main/js/map/overlay/AbstractDbOverlay.js | 50 ++++++++++++------- 1 file changed, 33 insertions(+), 17 deletions(-) diff --git a/frontend-js/src/main/js/map/overlay/AbstractDbOverlay.js b/frontend-js/src/main/js/map/overlay/AbstractDbOverlay.js index 03e3cee512..8b12820fa5 100644 --- a/frontend-js/src/main/js/map/overlay/AbstractDbOverlay.js +++ b/frontend-js/src/main/js/map/overlay/AbstractDbOverlay.js @@ -2,6 +2,7 @@ /* exported logger */ +// noinspection JSUnusedLocalSymbols var logger = require('../../logger'); var Promise = require("bluebird"); @@ -43,7 +44,7 @@ AbstractDbOverlay.prototype.constructor = AbstractDbOverlay; AbstractDbOverlay.QueryType = { SEARCH_BY_COORDINATES: "SEARCH_BY_COORDINATES", SEARCH_BY_TARGET: "SEARCH_BY_TARGET", - SEARCH_BY_QUERY: "SEARCH_BY_QUERY", + SEARCH_BY_QUERY: "SEARCH_BY_QUERY" }; AbstractDbOverlay.prototype.encodeQuery = function (type, arg0, arg1, arg2) { @@ -90,33 +91,48 @@ AbstractDbOverlay.prototype.searchByQuery = function (originalQuery, perfect, fi var res; var encodedQueries = []; - return self.searchBySingleQuery(originalQuery, perfect).then(function (results) { - if (results.length > 0) { - encodedQueries.push(query); - return [results]; - } else { - var queries = self.splitQuery(originalQuery); - - var promises = []; - for (var i = 0; i < queries.length; i++) { - encodedQueries.push(self.encodeQuery(AbstractDbOverlay.QueryType.SEARCH_BY_QUERY, queries[i], perfect)); - promises.push(self.searchBySingleQuery(queries[i], perfect)); - } - return Promise.all(promises); + var resultPromise; + if (originalQuery.indexOf(";") >= 0) { + var queries = self.splitQuery(originalQuery); + + var promises = []; + for (var i = 0; i < queries.length; i++) { + encodedQueries.push(self.encodeQuery(AbstractDbOverlay.QueryType.SEARCH_BY_QUERY, queries[i], perfect)); + promises.push(self.searchBySingleQuery(queries[i], perfect)); } - }).then(function (results) { + resultPromise = Promise.all(promises); + } else { + resultPromise = self.searchBySingleQuery(originalQuery, perfect).then(function (results) { + if (results.length > 0) { + encodedQueries.push(query); + return [results]; + } else { + var queries = self.splitQuery(originalQuery); + + var promises = []; + for (var i = 0; i < queries.length; i++) { + encodedQueries.push(self.encodeQuery(AbstractDbOverlay.QueryType.SEARCH_BY_QUERY, queries[i], perfect)); + promises.push(self.searchBySingleQuery(queries[i], perfect)); + } + + return Promise.all(promises); + } + }); + } + return resultPromise.then(function (results) { self.setQueries(encodedQueries); res = results; return self.callListeners('onSearch', { fitBounds: fitBounds, identifiedElements: res, - type: AbstractDbOverlay.QueryType.SEARCH_BY_QUERY, + type: AbstractDbOverlay.QueryType.SEARCH_BY_QUERY }); }).then(function () { return res; }); -}; +} +; AbstractDbOverlay.prototype.setQueries = function (queries) { this._queries = queries; -- GitLab