From 07701e0cc542ed19c50dbdd3056ea8a7b369a83a Mon Sep 17 00:00:00 2001
From: Piotr Gawron <piotr.gawron@uni.lu>
Date: Mon, 22 May 2017 17:24:52 +0200
Subject: [PATCH] promise chain simplified

---
 .../overlay/AbstractTargettingDbOverlay.js    | 101 +++++++++---------
 1 file changed, 51 insertions(+), 50 deletions(-)

diff --git a/frontend-js/src/main/js/map/overlay/AbstractTargettingDbOverlay.js b/frontend-js/src/main/js/map/overlay/AbstractTargettingDbOverlay.js
index c2b467e39d..f7b7b1eff6 100644
--- a/frontend-js/src/main/js/map/overlay/AbstractTargettingDbOverlay.js
+++ b/frontend-js/src/main/js/map/overlay/AbstractTargettingDbOverlay.js
@@ -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());
               }
-- 
GitLab