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

Merge branch '149-chrome-error' into 'master'

clicking on map without reaction produced error

Closes #149

See merge request !63
parents c7b88a18 ac835810
No related branches found
No related tags found
1 merge request!63clicking on map without reaction produced error
......@@ -119,8 +119,9 @@ SearchDbOverlay.prototype.searchByCoordinates = function(params) {
var searchResult = null;
var maxDistance;
var model = self.getMap().getSubmapById(modelId).getModel();
return ServerConnector.getMaxSearchDistance().then(function(distance) {
var maxZoom = self.getMap().getSubmapById(modelId).getModel().getMaxZoom();
var maxZoom = model.getMaxZoom();
var zoomDiff = maxZoom - zoom;
for (var i = 0; i < zoomDiff; i++) {
distance = distance * 1.5;
......@@ -131,33 +132,42 @@ SearchDbOverlay.prototype.searchByCoordinates = function(params) {
coordinates : coordinates,
count : 1
});
}).then(
function(elements) {
var nestedOverlay = "Pathways and compartments";
if (self.getMap().getBackgroundDataOverlay().getName() === nestedOverlay) {
return self._getFirstVisibleParentOrObject(elements[0], zoom
- self.getMap().getSubmapById(modelId).getModel().getMinZoom());
} else {
return elements[0];
}
}).then(function(visibleObject) {
searchResult = [ visibleObject ];
if (searchResult[0].getType() === "REACTION") {
var model = self.getMap().getSubmapById(searchResult[0].getModelId()).getModel();
return model.getReactionById(searchResult[0].getId(), true).then(function(reaction) {
var i = 0;
var reactionElements = reaction.getElements();
for (i = 0; i < reactionElements.length; i++) {
searchResult.push(new IdentifiedElement(reactionElements[i]));
}
});
}).then(function(elements) {
var nestedOverlay = "Pathways and compartments";
if (elements.length === 0) {
return undefined;
} else {
if (self.getMap().getBackgroundDataOverlay().getName() === nestedOverlay) {
return self._getFirstVisibleParentOrObject(elements[0], zoom - model.getMinZoom());
} else {
return elements[0];
}
}
}).then(function(visibleObject) {
if (visibleObject !== undefined) {
searchResult = [ visibleObject ];
if (searchResult[0].getType() === "REACTION") {
return model.getReactionById(searchResult[0].getId(), true).then(function(reaction) {
var i = 0;
var reactionElements = reaction.getElements();
for (i = 0; i < reactionElements.length; i++) {
searchResult.push(new IdentifiedElement(reactionElements[i]));
}
});
}
} else {
searchResult = [];
}
}).then(function() {
return self.getMap().getDistance({
modelId : modelId,
coordinates : coordinates,
element : searchResult[0],
});
if (searchResult.length > 0) {
return self.getMap().getDistance({
modelId : modelId,
coordinates : coordinates,
element : searchResult[0],
});
} else {
return Number.POSITIVE_INFINITY;
}
}).then(function(distance) {
if (distance <= maxDistance) {
self._elementsByQuery[query] = searchResult;
......
......@@ -27,7 +27,6 @@ describe('SearchDbOverlay', function() {
it("searchByCoordinates with too far alias as result", function() {
return ServerConnector.getProject().then(function(project) {
var map = helper.createCustomMap(project);
map.getModel().setId(15781);
var searchDb = helper.createSearchDbOverlay(map);
var searchParams = {
......@@ -86,60 +85,77 @@ describe('SearchDbOverlay', function() {
});
});
it("searchByCoordinates with too far reaction as result", function() {
return ServerConnector.getProject().then(function(project) {
var map = helper.createCustomMap(project);
map.getModel().setId(15781);
var searchDb = helper.createSearchDbOverlay(map);
describe("searchByCoordinates", function() {
it("with too far reaction as result", function() {
return ServerConnector.getProject().then(function(project) {
var map = helper.createCustomMap(project);
var searchDb = helper.createSearchDbOverlay(map);
var searchParams = {
modelId : map.getModel().getId(),
coordinates : new google.maps.Point(553.10, 479.18),
zoom : 4,
};
return searchDb.searchByCoordinates(searchParams);
}).then(function(result) {
assert.equal(result.length, 0);
});
var searchParams = {
modelId : map.getModel().getId(),
coordinates : new google.maps.Point(553.10, 479.18),
zoom : 4,
};
return searchDb.searchByCoordinates(searchParams);
}).then(function(result) {
assert.equal(result.length, 0);
});
});
it("on empty map", function() {
helper.setUrl("http://test/?id=empty");
return ServerConnector.getProject().then(function(project) {
var map = helper.createCustomMap(project);
var searchDb = helper.createSearchDbOverlay(map);
it("searchByCoordinates on hidden nested object", function() {
return ServerConnector.getProject().then(function(project) {
var map = helper.createCustomMap(project);
map.getModel().setId(15781);
var searchDb = helper.createSearchDbOverlay(map);
var searchParams = {
modelId : map.getModel().getId(),
coordinates : new google.maps.Point(553.10, 479.18),
zoom : 4,
};
return searchDb.searchByCoordinates(searchParams);
}).then(function(result) {
assert.equal(result.length, 0);
});
var searchParams = {
modelId : map.getModel().getId(),
coordinates : new google.maps.Point(316.05, 253.61),
zoom : 2,
};
return searchDb.searchByCoordinates(searchParams);
}).then(function(result) {
// id of the parent
assert.equal(result[0].getId(), 329159);
});
});
it("on hidden nested object", function() {
return ServerConnector.getProject().then(function(project) {
var map = helper.createCustomMap(project);
var searchDb = helper.createSearchDbOverlay(map);
it("searchByCoordinates on nested object", function() {
return ServerConnector.getProject().then(function(project) {
var map = helper.createCustomMap(project);
map.getModel().setId(15781);
var searchDb = helper.createSearchDbOverlay(map);
var searchParams = {
modelId : map.getModel().getId(),
coordinates : new google.maps.Point(316.05, 253.61),
zoom : 2,
};
return searchDb.searchByCoordinates(searchParams);
}).then(function(result) {
// id of the parent
assert.equal(result[0].getId(), 329159);
});
var searchParams = {
modelId : map.getModel().getId(),
coordinates : new google.maps.Point(316.05, 253.61),
zoom : 4,
};
return searchDb.searchByCoordinates(searchParams);
}).then(function(result) {
assert.equal(result[0].getId(), 329159);
});
it("on nested object", function() {
return ServerConnector.getProject().then(function(project) {
var map = helper.createCustomMap(project);
var searchDb = helper.createSearchDbOverlay(map);
var searchParams = {
modelId : map.getModel().getId(),
coordinates : new google.maps.Point(316.05, 253.61),
zoom : 4,
};
return searchDb.searchByCoordinates(searchParams);
}).then(function(result) {
assert.equal(result[0].getId(), 329159);
});
});
});
describe("getDetailDataByIdentifiedElement", function() {
it("get by alias", function() {
return ServerConnector.getProject().then(function(project) {
......
[]
\ No newline at end of file
{"version":"0","disease":null,"organism":null,"idObject":19187,"name":"UNKNOWN DISEASE MAP","projectId":"empty","description":"","map":{"version":null,"name":"UNKNOWN DISEASE MAP","idObject":20638,"tileSize":256,"width":600,"height":400,"minZoom":2,"maxZoom":4,"layouts":[{"idObject":19774,"modelId":20638,"name":"Pathways and compartments","description":null,"status":"Not available","progress":"0.00","directory":"a2e4822a98337283e39f7b60acf85ec9/_nested0","creator":"","inputDataAvailable":"false"},{"idObject":19775,"modelId":20638,"name":"Network","description":null,"status":"Not available","progress":"0.00","directory":"a2e4822a98337283e39f7b60acf85ec9/_normal0","creator":"","inputDataAvailable":"false"},{"idObject":19776,"modelId":20638,"name":"Empty","description":null,"status":"Not available","progress":"0.00","directory":"a2e4822a98337283e39f7b60acf85ec9/_empty0","creator":"","inputDataAvailable":"false"}],"submodels":[],"centerLatLng":{"lat":79.17133464081945,"lng":-135.0},"topLeftLatLng":{"lat":85.05112877980659,"lng":-180.0},"bottomRightLatLng":{"lat":75.95934455387827,"lng":-90.0},"submodelType":"UNKNOWN"},"publicationCount":0,"overviewImageViews":[],"topOverviewImage":null}
\ No newline at end of file
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