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

promise chain simplified

parent 5e5a8a7a
No related branches found
No related tags found
1 merge request!5Frontend refactor
......@@ -19,36 +19,39 @@ AbstractTargettingDbOverlay.prototype.constructor = AbstractTargettingDbOverlay;
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();
for (i=0;i<queries.length;i++) {
if (queries[i]===query) {
var queries = self.getQueries();
for (i = 0; i < queries.length; i++) {
if (queries[i] === query) {
queryId = i;
}
}
if (queryId===null) {
throw new Error("Invalid query: "+query);
if (queryId === null) {
throw new Error("Invalid query: " + query);
}
var colourId = queryId;
var elements = self._elementsByQuery[query];
var result = [];
if (elements.length>0) {
if (elements.length>1) {
if (elements.length > 0) {
if (elements.length > 1) {
logger.warn("More than one element per query not implemented");
}
var element = elements[0];
result.element = element;
var iconCounter = 1;
for (i=0; i<element.getTargets().length; i++) {
for (i = 0; i < element.getTargets().length; i++) {
var target = element.getTargets()[i];
var icon = self.getIcon(colourId, iconCounter++);
if (target.getTargetElements().length===0) {
if (target.getTargetElements().length === 0) {
icon = null;
}
result.push({element:target, icon:icon});
result.push({
element : target,
icon : icon
});
}
}
resolve(result);
......@@ -57,52 +60,50 @@ AbstractTargettingDbOverlay.prototype.getElementsByQuery = function(query) {
AbstractTargettingDbOverlay.prototype.searchBySingleQuery = function(originalQuery) {
var self = this;
return new Promise(function(resolve, reject) {
var query = self.encodeQuery(AbstractDbOverlay.QueryType.SEARCH_BY_QUERY, originalQuery);
if (self._elementsByQuery[query] !== undefined) {
resolve(self._elementsByQuery[query]);
} else {
return self.getElementsByQueryFromServer({
query:originalQuery
}).then(function(elements) {
self._elementsByQuery[query] = elements;
var identifiedElements = [];
for (var i=0;i<elements.length;i++) {
var targets = elements[i].getTargets();
for (var j=0;j<targets.length;j++) {
var target = targets[j];
for (var k=0;k<target.targetElements;k++) {
identifiedElements.push(new IdentifiedElement(target.targetElements[i]));
}
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) {
self._elementsByQuery[query] = elements;
var identifiedElements = [];
for (var i = 0; i < elements.length; i++) {
var targets = elements[i].getTargets();
for (var j = 0; j < targets.length; j++) {
var target = targets[j];
for (var k = 0; k < target.targetElements; k++) {
identifiedElements.push(new IdentifiedElement(target.targetElements[i]));
}
}
return self.getMap().fetchIdentifiedElements(identifiedElements, true);
}).then(function(){
resolve(self._elementsByQuery[query]);
}).catch(reject);
}
});
}
return self.getMap().fetchIdentifiedElements(identifiedElements, true);
}).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;
for (var i=0;i<queries.length;i++) {
for (var i = 0; i < queries.length; i++) {
var query = queries[i];
var elements = self._elementsByQuery[query];
for (var j=0;j<elements.length;j++) {
for (var j = 0; j < elements.length; j++) {
var element = elements[j];
var targetElements = self.createIdentifiedElementsForTargetingClass(element, colourId);
result.push.apply(result, targetElements);
colourId++;
}
}
......@@ -115,20 +116,20 @@ AbstractTargettingDbOverlay.prototype.getDetailDataByIdentifiedElement = functio
if (general) {
return self.searchNamesByTarget(element);
} else {
return new Promise(function(resolve){
var result =[];
var queries =self.getQueries();
for (var i=0;i<queries.length;i++) {
return new Promise(function(resolve) {
var result = [];
var queries = self.getQueries();
for (var i = 0; i < queries.length; i++) {
var drugs = self._elementsByQuery[queries[i]];
if (drugs===undefined) {
if (drugs === undefined) {
drugs = [];
}
for (var j=0;j<drugs.length;j++){
for (var j = 0; j < drugs.length; j++) {
var drug = drugs[j];
var targets = drug.getTargets();
for (var k=0;k<targets.length;k++) {
for (var k = 0; k < targets.length; k++) {
var elements = targets[k].getTargetElements();
for (var l=0;l<elements.length;l++) {
for (var l = 0; l < elements.length; l++) {
if (element.equals(elements[l])) {
result.push(drug.getName());
}
......
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