From 5817bd8b696ef2b5bc207cb7bc1b5eeb73506719 Mon Sep 17 00:00:00 2001
From: Piotr Gawron <piotr.gawron@uni.lu>
Date: Wed, 18 Jan 2017 18:30:25 +0100
Subject: [PATCH] clear of drug panel fixed

---
 frontend-js/src/main/js/ServerConnector.js    |  2 +-
 frontend-js/src/main/js/gui/DrugPanel.js      | 20 ++++++++-----
 frontend-js/src/main/js/map/data/Drug.js      | 18 ++++++-----
 frontend-js/src/test/js/gui/DrugPanel-test.js | 30 +++++++++++++++++++
 4 files changed, 53 insertions(+), 17 deletions(-)

diff --git a/frontend-js/src/main/js/ServerConnector.js b/frontend-js/src/main/js/ServerConnector.js
index d5c58832be..bfde71174a 100644
--- a/frontend-js/src/main/js/ServerConnector.js
+++ b/frontend-js/src/main/js/ServerConnector.js
@@ -299,7 +299,7 @@ ServerConnector.sendClearRequest = function(overlayName) {
     } else {
       logger.warn("Clear function for " + overlayName + " doesn't exist");
     }
-  } else if (overlayName==="search" || overlayName==="comment"){
+  } else if (overlayName==="search" || overlayName==="comment" || overlayName ==="drug"){
     logger.warn("Send clear request for overlay that doesn't support it: "+overlayName);
   } else {
     throw new Error("[Clear function] Unknown overlay: ", overlayName);
diff --git a/frontend-js/src/main/js/gui/DrugPanel.js b/frontend-js/src/main/js/gui/DrugPanel.js
index 68ab9e4b6e..72091348d1 100644
--- a/frontend-js/src/main/js/gui/DrugPanel.js
+++ b/frontend-js/src/main/js/gui/DrugPanel.js
@@ -15,13 +15,17 @@ DrugPanel.prototype.constructor = DrugPanel;
 DrugPanel.prototype.createDrugHeader = function(drug) {
   var self = this;
   var result = document.createElement("div");
-  result.appendChild(self.createParamLine("Drug: ", drug.getName()));
-  result.appendChild(self.createParamLine("Description: ", drug.getDescription()));
-  result.appendChild(self.createArrayParamLine("Synonyms: ", drug.getSynonyms()));
-  result.appendChild(self.createArrayParamLine("Brand names: ", drug.getBrandNames()));
-  result.appendChild(self.createParamLine("Blood brain barrier: ", drug.getBloodBrainBarrier()));
-  result.appendChild(self.createAnnotations("Sources: ", drug.getReferences()));
-  result.appendChild(self.createNewLine());
+  if (drug === undefined || drug.getName() === undefined) {
+    result.appendChild(self.createLabel("NOT FOUND"));
+  } else {
+    result.appendChild(self.createParamLine("Drug: ", drug.getName()));
+    result.appendChild(self.createParamLine("Description: ", drug.getDescription()));
+    result.appendChild(self.createArrayParamLine("Synonyms: ", drug.getSynonyms()));
+    result.appendChild(self.createArrayParamLine("Brand names: ", drug.getBrandNames()));
+    result.appendChild(self.createParamLine("Blood brain barrier: ", drug.getBloodBrainBarrier()));
+    result.appendChild(self.createAnnotations("Sources: ", drug.getReferences()));
+    result.appendChild(self.createNewLine());
+  }
 
   return result;
 };
@@ -39,7 +43,7 @@ DrugPanel.prototype.createTargetElement = function(target, icon) {
     var checkbox = document.createElement('input');
     checkbox.type = "checkbox";
     checkbox.checked = target.isVisible();
-    checkbox.onclick = function(){
+    checkbox.onclick = function() {
       target.setIsVisible(!target.isVisible());
       self.getOverlayDb().callListeners("onTargetVisibilityChange");
     };
diff --git a/frontend-js/src/main/js/map/data/Drug.js b/frontend-js/src/main/js/map/data/Drug.js
index f12ad3ec84..789a253bbf 100644
--- a/frontend-js/src/main/js/map/data/Drug.js
+++ b/frontend-js/src/main/js/map/data/Drug.js
@@ -3,14 +3,16 @@
 var Target = require("./Target");
 
 function Drug(javaObject) {
-  this.setBrandNames(javaObject.brandNames);
-  this.setReferences(javaObject.references);
-  this.setSynonyms(javaObject.synonyms);
-  this.setName(javaObject.name);
-  this.setId(javaObject.id);
-  this.setDescription(javaObject.description);
-  this.setTargets(javaObject.targets);
-  this.setBloodBrainBarrier(javaObject.bloodBrainBarrier);
+  if (javaObject !== undefined) {
+    this.setBrandNames(javaObject.brandNames);
+    this.setReferences(javaObject.references);
+    this.setSynonyms(javaObject.synonyms);
+    this.setName(javaObject.name);
+    this.setId(javaObject.id);
+    this.setDescription(javaObject.description);
+    this.setTargets(javaObject.targets);
+    this.setBloodBrainBarrier(javaObject.bloodBrainBarrier);
+  }
 }
 
 Drug.prototype.setBrandNames = function(brandNames) {
diff --git a/frontend-js/src/test/js/gui/DrugPanel-test.js b/frontend-js/src/test/js/gui/DrugPanel-test.js
index 0b6a1ff140..6df217322a 100644
--- a/frontend-js/src/test/js/gui/DrugPanel-test.js
+++ b/frontend-js/src/test/js/gui/DrugPanel-test.js
@@ -4,8 +4,10 @@ var Helper = require('../helper');
 
 require("../mocha-config.js");
 
+var Drug = require('../../../main/js/map/data/Drug');
 var DrugPanel = require('../../../main/js/gui/DrugPanel');
 
+
 var chai = require('chai');
 var assert = chai.assert;
 var logger = require('../logger');
@@ -30,6 +32,34 @@ describe('DrugPanel', function() {
     assert.equal(logger.getWarnings().length, 0);
   });
 
+  it('createDrugeader for empty', function() {
+    var div = helper.createDrugTab();
+
+    var map = helper.createCustomMap();
+    helper.createDrugDbOverlay(map);
+
+    var panel = new DrugPanel({
+      element : div,
+      customMap : map
+    });
+
+    assert.ok(panel.createDrugHeader().innerHTML.indexOf("NOT FOUND") > 0);
+  });
+
+  it('createDrugeader for empty', function() {
+    var div = helper.createDrugTab();
+
+    var map = helper.createCustomMap();
+    helper.createDrugDbOverlay(map);
+
+    var panel = new DrugPanel({
+      element : div,
+      customMap : map
+    });
+
+    assert.ok(panel.createDrugHeader(new Drug()).innerHTML.indexOf("NOT FOUND") > 0);
+  });
+
   it('on searchResults changed', function() {
     var div = helper.createDrugTab();
     var map = helper.createCustomMap();
-- 
GitLab