From 89e286a92cda8ad9fc8098668c36d3118ef8f61b Mon Sep 17 00:00:00 2001 From: Piotr Gawron <piotr.gawron@uni.lu> Date: Tue, 30 May 2017 16:49:46 +0200 Subject: [PATCH] setZoom and setCenter minerva api methods --- .../src/main/js/map/AbstractCustomMap.js | 6 +- frontend-js/src/main/js/minerva.js | 14 ++++ frontend-js/src/test/js/google-map-mock.js | 4 +- frontend-js/src/test/js/minerva-test.js | 83 ++++++++++++++----- frontend-js/src/test/js/mocha-config.js | 2 + 5 files changed, 86 insertions(+), 23 deletions(-) diff --git a/frontend-js/src/main/js/map/AbstractCustomMap.js b/frontend-js/src/main/js/map/AbstractCustomMap.js index c2b258c9df..ed71b6879e 100644 --- a/frontend-js/src/main/js/map/AbstractCustomMap.js +++ b/frontend-js/src/main/js/map/AbstractCustomMap.js @@ -965,9 +965,10 @@ AbstractCustomMap.prototype.setCenter = function(coordinates) { coordinates = this.fromPointToLatLng(coordinates); } if (this.initialized) { - this.getGoogleMap().setCenter(coordinates); + return Promise.resolve(this.getGoogleMap().setCenter(coordinates)); } else { logger.warn("cannot center map that is not opened yet"); + return Promise.resolve(); } }; @@ -981,9 +982,10 @@ AbstractCustomMap.prototype.setCenter = function(coordinates) { */ AbstractCustomMap.prototype.setZoom = function(zoom) { if (this.initialized) { - this.getGoogleMap().setZoom(zoom); + return Promise.resolve(this.getGoogleMap().setZoom(zoom)); } else { logger.warn("cannot center map that is not opened yet"); + return Promise.resolve(); } }; diff --git a/frontend-js/src/main/js/minerva.js b/frontend-js/src/main/js/minerva.js index fbfa2cc700..e0902caddd 100644 --- a/frontend-js/src/main/js/minerva.js +++ b/frontend-js/src/main/js/minerva.js @@ -237,6 +237,20 @@ function createResult(customMap) { return customMap.getOverlayByName("user").removeSurface(surfaceElements); }) }, + setCenter : function(params) { + var submap = customMap.getSubmapById(params.modelId); + if (submap === null) { + throw new Error("Unknown modelId: " + params.modelId); + } + return submap.setCenter(new google.maps.Point(params.x, params.y)); + }, + setZoom : function(params) { + var submap = customMap.getSubmapById(params.modelId); + if (submap === null) { + throw new Error("Unknown modelId: " + params.modelId); + } + return submap.setZoom(params.zoom); + }, }; } diff --git a/frontend-js/src/test/js/google-map-mock.js b/frontend-js/src/test/js/google-map-mock.js index 365bef56a1..4c30bd8636 100644 --- a/frontend-js/src/test/js/google-map-mock.js +++ b/frontend-js/src/test/js/google-map-mock.js @@ -186,14 +186,14 @@ var google = { }, setZoom : function(zoom) { data.zoom = zoom; - google.maps.event.trigger(this, "zoom_changed", zoom); + return google.maps.event.trigger(this, "zoom_changed", zoom); }, getCenter : function() { return data.center; }, setCenter : function(center) { data.center = center; - google.maps.event.trigger(this, "center_changed", center); + return google.maps.event.trigger(this, "center_changed", center); }, getBounds : function() { return data.bounds; diff --git a/frontend-js/src/test/js/minerva-test.js b/frontend-js/src/test/js/minerva-test.js index 772c4724ce..af1eec90f6 100644 --- a/frontend-js/src/test/js/minerva-test.js +++ b/frontend-js/src/test/js/minerva-test.js @@ -265,26 +265,26 @@ describe('minerva global', function() { }; var globalResult; var elementToShow = { - element : { - id : 329171, - modelId : 15781, - type : "ALIAS" - }, - options : { - type: "ICON" - } - }; - + element : { + id : 329171, + modelId : 15781, + type : "ALIAS" + }, + options : { + type : "ICON" + } + }; + var elementToShow2 = { - element : { - id : 329171, - modelId : 15781, - type : "ALIAS" - }, - options : { - type: "SURFACE" - } - }; + element : { + id : 329171, + modelId : 15781, + type : "ALIAS" + }, + options : { + type : "SURFACE" + } + }; return minerva.create(options).then(function(result) { globalResult = result; return globalResult.showElement(elementToShow); @@ -299,4 +299,49 @@ describe('minerva global', function() { }); }); + it("setCenter", function() { + var options = { + projectId : "sample", + element : testDiv + }; + var globalResult; + return minerva.create(options).then(function(result) { + globalResult = result; + return result.setCenter({ + modelId : 15781, + x : 10, + y : 20, + }); + }).then(function() { + var sessionData = ServerConnectorMock.getSessionData(globalResult.getProject()); + var center = sessionData.getCenter(globalResult.getProject().getModel()); + assert.ok(center instanceof google.maps.Point); + assert.closeTo(parseFloat(center.x), 10, EPSILON); + assert.closeTo(parseFloat(center.y), 20, EPSILON); + }).then(function() { + globalResult.destroy(); + }); + }); + + it("setZoom", function() { + var options = { + projectId : "sample", + element : testDiv + }; + var globalResult; + return minerva.create(options).then(function(result) { + globalResult = result; + return result.setZoom({ + modelId : 15781, + zoom : 10, + }); + }).then(function() { + var sessionData = ServerConnectorMock.getSessionData(globalResult.getProject()); + var zoom = sessionData.getZoomLevel(globalResult.getProject().getModel()); + assert.equal(zoom, 10); + }).then(function() { + globalResult.destroy(); + }); + }); + }); diff --git a/frontend-js/src/test/js/mocha-config.js b/frontend-js/src/test/js/mocha-config.js index 9267f89710..b1db324c21 100644 --- a/frontend-js/src/test/js/mocha-config.js +++ b/frontend-js/src/test/js/mocha-config.js @@ -21,6 +21,8 @@ global.$ = require('jQuery'); global.jQuery = $; global.window.$ = $; +global.EPSILON = 1e-6; + // additions to jsdom implementations: global.Option = window.Option; window.open = function() { -- GitLab