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

refactor that moved implementation of getByTarget into targetting db intarace...

refactor that moved implementation of getByTarget into targetting db intarace (chemical, mirna, drugs)
parent 3790ed25
No related branches found
No related tags found
1 merge request!172Resolve "clicking on surface should open bubble"
......@@ -118,22 +118,6 @@ AbstractDbOverlay.prototype.searchByQuery = function (originalQuery, perfect, fi
});
};
AbstractDbOverlay.prototype.searchNamesByTarget = function (element) {
var self = this;
var query = self.encodeQuery(AbstractDbOverlay.QueryType.SEARCH_BY_TARGET, element);
if (self._elementsByQuery[query] !== undefined) {
return Promise.resolve(self._elementsByQuery[query]);
} else {
return self.getNamesByTargetFromServer({
target: element
}).then(function (drugNames) {
self._elementsByQuery[query] = drugNames;
return self._elementsByQuery[query];
});
}
};
AbstractDbOverlay.prototype.setQueries = function (queries) {
this._queries = queries;
};
......@@ -171,13 +155,17 @@ AbstractDbOverlay.prototype.refresh = function () {
throw new Error("Refreshing shouldn't be called");
};
AbstractDbOverlay.prototype.searchByTarget = function () {
throw new Error("Not implemented");
};
AbstractDbOverlay.prototype.searchByEncodedQuery = function (originalQuery, fitBounds) {
var query = this.decodeQuery(originalQuery);
query.fitBounds = fitBounds;
if (query.type === AbstractDbOverlay.QueryType.SEARCH_BY_QUERY) {
return this.searchByQuery(query.query, query.perfect);
} else if (query.type === AbstractDbOverlay.QueryType.SEARCH_BY_TARGET) {
return this.searchNamesByTarget(query.target);
return this.searchByTarget(new IdentifiedElement(query.target));
} else if (query.type === AbstractDbOverlay.QueryType.SEARCH_BY_COORDINATES) {
query.coordinates = new google.maps.Point(query.coordinates.x, query.coordinates.y);
return this.searchByCoordinates(query);
......
......@@ -17,9 +17,9 @@ function AbstractTargettingDbOverlay(params) {
AbstractTargettingDbOverlay.prototype = Object.create(AbstractDbOverlay.prototype);
AbstractTargettingDbOverlay.prototype.constructor = AbstractTargettingDbOverlay;
AbstractTargettingDbOverlay.prototype.getElementsByQuery = function(query) {
AbstractTargettingDbOverlay.prototype.getElementsByQuery = function (query) {
var self = this;
return new Promise(function(resolve) {
return new Promise(function (resolve) {
var i;
var queryId = null;
var queries = self.getQueries();
......@@ -49,8 +49,8 @@ AbstractTargettingDbOverlay.prototype.getElementsByQuery = function(query) {
icon = null;
}
result.push({
element : target,
icon : icon
element: target,
icon: icon
});
}
}
......@@ -58,15 +58,15 @@ AbstractTargettingDbOverlay.prototype.getElementsByQuery = function(query) {
});
};
AbstractTargettingDbOverlay.prototype.searchBySingleQuery = function(originalQuery) {
AbstractTargettingDbOverlay.prototype.searchBySingleQuery = function (originalQuery) {
var self = this;
var query = self.encodeQuery(AbstractDbOverlay.QueryType.SEARCH_BY_QUERY, originalQuery);
if (self._elementsByQuery[query] !== undefined) {
return Promise.resolve(self._elementsByQuery[query]);
} else {
return self.getElementsByQueryFromServer({
query : originalQuery
}).then(function(elements) {
query: originalQuery
}).then(function (elements) {
self._elementsByQuery[query] = elements;
var identifiedElements = [];
......@@ -80,16 +80,16 @@ AbstractTargettingDbOverlay.prototype.searchBySingleQuery = function(originalQue
}
}
return self.getMap().fetchIdentifiedElements(identifiedElements, true);
}).then(function() {
}).then(function () {
return self._elementsByQuery[query];
});
}
};
AbstractTargettingDbOverlay.prototype.getIdentifiedElements = function() {
AbstractTargettingDbOverlay.prototype.getIdentifiedElements = function () {
var self = this;
return new Promise(function(resolve) {
return new Promise(function (resolve) {
var queries = self.getQueries();
var result = [];
var colourId = 0;
......@@ -111,26 +111,47 @@ AbstractTargettingDbOverlay.prototype.getIdentifiedElements = function() {
});
};
AbstractTargettingDbOverlay.prototype.getDetailDataByIdentifiedElement = function(element, general) {
AbstractTargettingDbOverlay.prototype.searchByTarget = function (element) {
return this.searchNamesByTarget(element);
};
AbstractTargettingDbOverlay.prototype.searchNamesByTarget = function (element) {
var self = this;
var query = self.encodeQuery(AbstractDbOverlay.QueryType.SEARCH_BY_TARGET, element);
if (self._elementsByQuery[query] !== undefined) {
return Promise.resolve(self._elementsByQuery[query]);
} else {
return self.getNamesByTargetFromServer({
target: element
}).then(function (drugNames) {
self._elementsByQuery[query] = drugNames;
return self._elementsByQuery[query];
});
}
};
AbstractTargettingDbOverlay.prototype.getDetailDataByIdentifiedElement = function (element, general) {
var self = this;
if (general) {
return self.searchNamesByTarget(element).then(function(names) {
return self.searchNamesByTarget(element).then(function (names) {
var promises = [];
names.forEach(function(name) {
names.forEach(function (name) {
promises.push(self.searchBySingleQuery(name));
});
return Promise.all(promises);
}).then(function(drugs) {
}).then(function (drugs) {
var result = [];
drugs.forEach(function(drugList) {
drugList.forEach(function(drug) {
drugs.forEach(function (drugList) {
drugList.forEach(function (drug) {
result.push(drug);
});
});
return result;
});
} else {
return new Promise(function(resolve) {
return new Promise(function (resolve) {
var drugNames = [];
var result = [];
var queries = self.getQueries();
......
"use strict";
require("../../mocha-config");
var logger = require('../../logger');
var AbstractDbOverlay = require('../../../../main/js/map/overlay/AbstractDbOverlay');
var IdentifiedElement = require('../../../../main/js/map/data/IdentifiedElement');
var ChemicalDbOverlay = require('../../../../main/js/map/overlay/ChemicalDbOverlay');
var ServerConnector = require('../../ServerConnector-mock');
var assert = require('assert');
......@@ -56,4 +60,23 @@ describe('ChemicalDbOverlay', function() {
});
});
it("searchByEncodedQuery", function() {
return ServerConnector.getProject().then(function(project) {
var map = helper.createCustomMap(project);
var searchDb = helper.createChemicalDbOverlay(map);
var queryType = AbstractDbOverlay.QueryType.SEARCH_BY_TARGET;
var target = new IdentifiedElement({
type : "ALIAS",
id : 329170,
modelId : 15781
});
var query = searchDb.encodeQuery(queryType, target);
return searchDb.searchByEncodedQuery(query);
}).then(function(result) {
assert.equal(result.length, 0);
});
});
});
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