diff --git a/frontend-js/src/main/js/map/AbstractCustomMap.js b/frontend-js/src/main/js/map/AbstractCustomMap.js index c2b258c9df331d0117442c7d28766a7ef1943ee7..ed71b6879ef27b60dd014ef3400ec88753cf6c64 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 fbfa2cc70091f192b3eeb34ffcacd2706bb9caf3..e0902caddd9c4bc365f6fdbede0188ff7f6aeecb 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 365bef56a1fec31fffac2fef9618fa70602ace22..4c30bd8636998902e51bad71ffe212fdc6c11436 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 772c4724cef350cbc28b2c9b1369d58dccd8c8fb..af1eec90f6e5f61263436d1160408f73943073d7 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 9267f8971083fd37b4e436283281ec2d59bea323..b1db324c214c2ee703ad1eab8dec5c9b712dbefe 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() {