Skip to content
Snippets Groups Projects
Commit b7c44aa3 authored by Piotr Gawron's avatar Piotr Gawron
Browse files

icons are merged on the map

parent e92ffa3b
No related branches found
No related tags found
1 merge request!227Resolve "search results should be merged"
...@@ -1084,7 +1084,13 @@ CustomMap.prototype.fetchIdentifiedElements = function (elements, complete) { ...@@ -1084,7 +1084,13 @@ CustomMap.prototype.fetchIdentifiedElements = function (elements, complete) {
var modelId = modelIds[i]; var modelId = modelIds[i];
promises.push(this.getSubmapById(modelId).getModel().getByIdentifiedElements(modelElements[modelId], complete)); promises.push(this.getSubmapById(modelId).getModel().getByIdentifiedElements(modelElements[modelId], complete));
} }
return Promise.all(promises); var result = [];
return Promise.all(promises).then(function (data) {
for (var i = 0; i < data.length; i++) {
result.push.apply(result, data[i]);
}
return result;
});
}; };
......
...@@ -11,6 +11,8 @@ var Alias = require('../data/Alias'); ...@@ -11,6 +11,8 @@ var Alias = require('../data/Alias');
var IdentifiedElement = require('../data/IdentifiedElement'); var IdentifiedElement = require('../data/IdentifiedElement');
var InvalidArgumentException = require('../../InvalidArgumentError'); var InvalidArgumentException = require('../../InvalidArgumentError');
var Reaction = require('../data/Reaction'); var Reaction = require('../data/Reaction');
var SearchBioEntityGroup = require('../data/SearchBioEntityGroup');
var ServerConnector = require('../../ServerConnector'); var ServerConnector = require('../../ServerConnector');
...@@ -236,27 +238,50 @@ SearchDbOverlay.prototype.searchByTarget = function (element) { ...@@ -236,27 +238,50 @@ SearchDbOverlay.prototype.searchByTarget = function (element) {
SearchDbOverlay.prototype.getIdentifiedElements = function () { SearchDbOverlay.prototype.getIdentifiedElements = function () {
var self = this; var self = this;
var queries = self.getQueries();
var result = [];
return new Promise(function (resolve) { return Promise.each(queries, function (query, index) {
var queries = self.getQueries(); var identifiedElements = self._elementsByQuery[query];
var result = []; return self.getMap().fetchIdentifiedElements(identifiedElements).then(function (elements) {
for (var i = 0; i < queries.length; i++) {
var query = queries[i];
var elements = self._elementsByQuery[query];
var iconCounter = 1; var iconCounter = 1;
for (var j = 0; j < elements.length; j++) { var groups = [];
var element = elements[j]; for (var i = 0; i < elements.length; i++) {
var element = elements[i];
var alreadyExists = false;
var icon = null;
var group;
for (var j = 0; j < groups.length; j++) {
group = groups[j];
if (group.bioEntityMatch(element)) {
alreadyExists = true;
group.addBioEntity(element);
icon = group.getIcon();
}
}
if (!alreadyExists) {
if (element instanceof Alias) {
icon = self.getIcon(index, iconCounter++)
}
group = new SearchBioEntityGroup(element);
group.setIcon(icon);
groups.push(group);
}
var ie = new IdentifiedElement(element); var ie = new IdentifiedElement(element);
if (element.getType() === "ALIAS") { if (element instanceof Alias) {
ie.setIcon(self.getIcon(i, iconCounter++)); ie.setIcon(icon);
} else if (element.getType() !== "REACTION") { } else if (!(element instanceof Reaction)) {
throw new Error("Unknown element type: " + element.getType()); throw new Error("Unknown element type: " + ie.getType());
} }
result.push(ie); result.push(ie);
} }
} });
resolve(result);
}).then(function () {
return result;
}); });
}; };
......
0% Loading or .
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment