From 21cfdbce469851415839ed046816199610a94ef4 Mon Sep 17 00:00:00 2001
From: Piotr Gawron <piotr.gawron@uni.lu>
Date: Tue, 30 May 2017 16:19:30 +0200
Subject: [PATCH] surface overlay available for user db overlay

---
 frontend-js/src/main/js/map/CustomMap.js      |  3 +-
 .../src/main/js/map/overlay/AliasOverlay.js   | 30 +++++++++++++++++++
 .../test/js/map/overlay/AliasOverlay-test.js  | 20 ++++++++++++-
 3 files changed, 51 insertions(+), 2 deletions(-)

diff --git a/frontend-js/src/main/js/map/CustomMap.js b/frontend-js/src/main/js/map/CustomMap.js
index df2b57d72d..329c195dc2 100644
--- a/frontend-js/src/main/js/map/CustomMap.js
+++ b/frontend-js/src/main/js/map/CustomMap.js
@@ -8,6 +8,7 @@ var Functions = require('../Functions');
 var AbstractCustomMap = require('./AbstractCustomMap');
 var AbstractDbOverlay = require('./overlay/AbstractDbOverlay');
 var AliasMarker = require('./marker/AliasMarker');
+var AliasOverlay = require('./overlay/AliasOverlay');
 var Alias = require('./data/Alias');
 var CommentDialog = require('../gui/CommentDialog');
 var ControlType = require('./ControlType');
@@ -1261,7 +1262,7 @@ CustomMap.prototype.createMapOverlayForDbOverlay = function(element, dbOverlay)
 
   var model = self.getSubmapById(element.getModelId());
   if (element.getType() === "ALIAS") {
-    throw new Error("Not implemented");
+    return AliasOverlay.createFromIdentifiedElement(element, self);
   } else if (element.getType() === "REACTION") {
     return model.getModel().getReactionById(element.getId()).then(function(reactionData) {
       var reactionOverlay = new ReactionOverlay(null, reactionData, model, false, element.getId());
diff --git a/frontend-js/src/main/js/map/overlay/AliasOverlay.js b/frontend-js/src/main/js/map/overlay/AliasOverlay.js
index 60e8b78a04..66d208b861 100644
--- a/frontend-js/src/main/js/map/overlay/AliasOverlay.js
+++ b/frontend-js/src/main/js/map/overlay/AliasOverlay.js
@@ -6,6 +6,7 @@ var logger = require('../../logger');
 var functions = require('../../Functions');
 
 var AbstractOverlayElement = require('./AbstractOverlayElement');
+var IdentifiedElement = require('../data/IdentifiedElement');
 
 /**
  * Class representing overlay of the alias on the map relevant for a specific
@@ -121,4 +122,33 @@ AliasOverlay.create = function(layoutAlias, aliasData, map, startX, endX) {
   });
 };
 
+AliasOverlay.createFromIdentifiedElement = function(element, map) {
+  var model = map.getModel().getSubmodelById(element.getModelId());
+  return model.getByIdentifiedElement(element).then(function(alias) {
+    var pointA = new google.maps.Point(alias.getX(), alias.getY());
+    var pointB = new google.maps.Point(alias.getX() + alias.getWidth(), alias.getY() + alias.getHeight());
+    var latLngA = map.fromPointToLatLng(pointA);
+    var latLngB = map.fromPointToLatLng(pointB);
+
+    var bounds = new google.maps.LatLngBounds();
+    bounds.extend(latLngA);
+    bounds.extend(latLngB);
+
+    var color = "#FF0000";
+    if (element.getColor() !== undefined) {
+      color = element.getColor();
+    }
+    var rectangle = new google.maps.Rectangle({
+      fillOpacity : 0.8,
+      strokeWeight : 1,
+      map : map.getGoogleMap(),
+      bounds : bounds,
+      fillColor : color
+    });
+
+    return new AliasOverlay(rectangle, map, alias);
+
+  })
+};
+
 module.exports = AliasOverlay;
diff --git a/frontend-js/src/test/js/map/overlay/AliasOverlay-test.js b/frontend-js/src/test/js/map/overlay/AliasOverlay-test.js
index 394683bf71..0df0b8fe03 100644
--- a/frontend-js/src/test/js/map/overlay/AliasOverlay-test.js
+++ b/frontend-js/src/test/js/map/overlay/AliasOverlay-test.js
@@ -5,6 +5,7 @@ var Helper = require('../../Helper');
 var logger = require('../../logger');
 
 var AliasOverlay = require('../../../../main/js/map/overlay/AliasOverlay');
+var IdentifiedElement = require('../../../../main/js/map/data/IdentifiedElement');
 
 var assert = require('assert');
 
@@ -18,10 +19,27 @@ describe('AliasOverlay', function() {
     var map = helper.createCustomMap();
     var alias = helper.createAlias(map);
     var layoutAlias = helper.createLayoutAlias(alias);
-    
+
     return AliasOverlay.create(layoutAlias, alias, map, 1, 2).then(function(result) {
       assert.ok(result instanceof AliasOverlay);
       assert.equal(logger.getWarnings.length, 0);
     });
   });
+
+  it("createFromIdentifiedElement", function() {
+    var map;
+    var alias, marker;
+    return ServerConnector.getProject().then(function(project) {
+      map = helper.createCustomMap(project);
+      return map.getModel().getAliasById(329171);
+    }).then(function(result) {
+      alias = result;
+      var identifiedElement = new IdentifiedElement(alias);
+
+      return AliasOverlay.createFromIdentifiedElement(identifiedElement, map);
+    }).then(function(result) {
+      assert.ok(result instanceof AliasOverlay);
+      assert.equal(logger.getWarnings.length, 0);
+    });
+  });
 });
-- 
GitLab