diff --git a/frontend-js/src/main/js/map/overlay/AbstractDbOverlay.js b/frontend-js/src/main/js/map/overlay/AbstractDbOverlay.js index 03e3cee5129e6fafe42564ab7274a03d27e7b979..8b12820fa500965f0c93835c803eabce730d87ef 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;