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