From 65516f1e51c58876da7bbe586a6a56789c0c1471 Mon Sep 17 00:00:00 2001
From: Piotr Gawron <piotr.gawron@uni.lu>
Date: Thu, 3 May 2018 13:46:54 +0200
Subject: [PATCH] google maps api canvas JS doc

---
 .../canvas/GoogleMaps/GoogleMapsApiCanvas.js  | 28 +++++++++++++++--
 .../GoogleMaps/GoogleMapsApiInfoWindow.js     |  2 ++
 .../canvas/GoogleMaps/GoogleMapsApiMarker.js  |  3 +-
 .../GoogleMaps/GoogleMapsApiPolyline.js       | 31 +++++++++++++++++++
 .../GoogleMaps/GoogleMapsApiRectangle.js      | 31 ++++++++++++++++++-
 .../src/main/js/map/canvas/InfoWindow.js      |  1 +
 .../map/canvas/OpenLayers/OpenLayerCanvas.js  |  7 ++++-
 .../canvas/OpenLayers/OpenLayerPolyline.js    |  4 +++
 frontend-js/src/main/js/map/canvas/Point.js   |  4 +--
 .../src/main/js/map/canvas/Rectangle.js       |  2 ++
 frontend-js/src/test/js/google-map-mock.js    | 10 ++++++
 11 files changed, 115 insertions(+), 8 deletions(-)

diff --git a/frontend-js/src/main/js/map/canvas/GoogleMaps/GoogleMapsApiCanvas.js b/frontend-js/src/main/js/map/canvas/GoogleMaps/GoogleMapsApiCanvas.js
index 4386bbdc3f..564ffe53fa 100644
--- a/frontend-js/src/main/js/map/canvas/GoogleMaps/GoogleMapsApiCanvas.js
+++ b/frontend-js/src/main/js/map/canvas/GoogleMaps/GoogleMapsApiCanvas.js
@@ -13,6 +13,21 @@ var GoogleMapsApiMarker = require('./GoogleMapsApiMarker');
 var GoogleMapsApiPolyline = require('./GoogleMapsApiPolyline');
 var GoogleMapsApiRectangle = require('./GoogleMapsApiRectangle');
 
+/**
+ *
+ * @param {HTMLElement} element
+ * @param {Object} options
+ * @param {number} options.tileSize
+ * @param {number} options.minZoom
+ * @param {number} options.height
+ * @param {number} options.width
+ * @param {number} options.zoom
+ * @param {Point} options.center
+ * @param {Object[]} options.backgroundOverlays
+ * @constructor
+ * @extends MapCanvas
+ */
+
 function GoogleMapsApiCanvas(element, options) {
   MapCanvas.call(this, element, options);
 
@@ -48,6 +63,10 @@ function GoogleMapsApiCanvas(element, options) {
 GoogleMapsApiCanvas.prototype = Object.create(MapCanvas.prototype);
 GoogleMapsApiCanvas.prototype.constructor = GoogleMapsApiCanvas;
 
+/**
+ *
+ * @param {google.maps.Map} map
+ */
 GoogleMapsApiCanvas.prototype.setGoogleMap = function (map) {
   this._map = map;
 };
@@ -177,14 +196,14 @@ GoogleMapsApiCanvas.prototype.addCenterButton = function () {
  *
  * @param {google.maps.LatLng} latLng
  *          coordinates in LatLng format
- * @param {number} z
+ * @param {number} zoom
  *          zoom level at which we want to find coordinates of tile
  * @return {Point} coordinates of a tile
  */
-GoogleMapsApiCanvas.prototype.latLngToTile = function (latLng, z) {
+GoogleMapsApiCanvas.prototype.latLngToTile = function (latLng, zoom) {
   var self = this;
   var worldCoordinate = self.fromLatLngToPoint(latLng);
-  var pixelCoordinate = new Point(worldCoordinate.x * Math.pow(2, z), worldCoordinate.y * Math.pow(2, z));
+  var pixelCoordinate = new Point(worldCoordinate.x * Math.pow(2, zoom), worldCoordinate.y * Math.pow(2, zoom));
   return new Point(Math.floor(pixelCoordinate.x / self.getOptions().tileSize), Math
     .floor(pixelCoordinate.y / self.getOptions().tileSize));
 };
@@ -467,6 +486,8 @@ GoogleMapsApiCanvas.prototype.isDrawingOn = function () {
 /**
  * Sets selectedArea on this map.
  *
+ *
+ * @param {Object} area
  */
 GoogleMapsApiCanvas.prototype.setSelectedArea = function (area) {
   this._selectedArea = area;
@@ -475,6 +496,7 @@ GoogleMapsApiCanvas.prototype.setSelectedArea = function (area) {
 /**
  * Returns selectedArea on this map.
  *
+ * @returns {Object}
  */
 GoogleMapsApiCanvas.prototype.getSelectedArea = function () {
   return this._selectedArea;
diff --git a/frontend-js/src/main/js/map/canvas/GoogleMaps/GoogleMapsApiInfoWindow.js b/frontend-js/src/main/js/map/canvas/GoogleMaps/GoogleMapsApiInfoWindow.js
index dd97344612..d3f3e12ed1 100644
--- a/frontend-js/src/main/js/map/canvas/GoogleMaps/GoogleMapsApiInfoWindow.js
+++ b/frontend-js/src/main/js/map/canvas/GoogleMaps/GoogleMapsApiInfoWindow.js
@@ -11,7 +11,9 @@ var logger = require('../../../logger');
  * @param {GoogleMapsApiMarker} [options.marker]
  * @param {string} options.id
  * @param {GoogleMapsApiCanvas} options.map
+ *
  * @constructor
+ * @extends InfoWindow
  */
 function GoogleMapsApiInfoWindow(options) {
   InfoWindow.call(this, options);
diff --git a/frontend-js/src/main/js/map/canvas/GoogleMaps/GoogleMapsApiMarker.js b/frontend-js/src/main/js/map/canvas/GoogleMaps/GoogleMapsApiMarker.js
index 43085484e2..15ee96ce6c 100644
--- a/frontend-js/src/main/js/map/canvas/GoogleMaps/GoogleMapsApiMarker.js
+++ b/frontend-js/src/main/js/map/canvas/GoogleMaps/GoogleMapsApiMarker.js
@@ -14,7 +14,8 @@ var logger = require('../../../logger');
  * @param {string} options.id
  * @param {GoogleMapsApiCanvas} options.map
 
- * @returns {GoogleMapsApiMarker}
+ * @constructor
+ * @extends {Marker}
  */
 
 function GoogleMapsApiMarker(options) {
diff --git a/frontend-js/src/main/js/map/canvas/GoogleMaps/GoogleMapsApiPolyline.js b/frontend-js/src/main/js/map/canvas/GoogleMaps/GoogleMapsApiPolyline.js
index 9b0ea4dfcf..dcf4ca9a7a 100644
--- a/frontend-js/src/main/js/map/canvas/GoogleMaps/GoogleMapsApiPolyline.js
+++ b/frontend-js/src/main/js/map/canvas/GoogleMaps/GoogleMapsApiPolyline.js
@@ -6,6 +6,16 @@ var Bounds = require('../Bounds');
 // noinspection JSUnusedLocalSymbols
 var logger = require('../../../logger');
 
+/**
+ * @param {MapCanvas} options.map
+ * @param {Point[]} options.path
+ * @param {string} options.strokeColor
+ * @param {number} options.strokeWeight
+ * @param {number} options.strokeOpacity
+ *
+ * @constructor
+ * @augments {Polyline}
+ */
 function GoogleMapsApiPolyline(options) {
   Polyline.call(this, options);
 
@@ -28,10 +38,18 @@ function GoogleMapsApiPolyline(options) {
 GoogleMapsApiPolyline.prototype = Object.create(Polyline.prototype);
 GoogleMapsApiPolyline.prototype.constructor = GoogleMapsApiPolyline;
 
+/**
+ *
+ * @param {google.maps.Polyline} polyline
+ */
 GoogleMapsApiPolyline.prototype.setGooglePolyline = function (polyline) {
   this._polyline = polyline;
 };
 
+/**
+ *
+ * @returns {google.maps.Polyline}
+ */
 GoogleMapsApiPolyline.prototype.getGooglePolyline = function () {
   return this._polyline;
 };
@@ -53,11 +71,20 @@ GoogleMapsApiPolyline.prototype.hide = function () {
     this.getGooglePolyline().setMap(null);
   }
 };
+
+/**
+ *
+ * @returns {boolean}
+ */
 GoogleMapsApiPolyline.prototype.isShown = function () {
   var googlePolyline = this.getGooglePolyline();
   return googlePolyline.getMap() !== null && googlePolyline.getMap() !== undefined;
 };
 
+/**
+ *
+ * @returns {Bounds}
+ */
 GoogleMapsApiPolyline.prototype.getBounds = function () {
   var result = new Bounds();
   for (var i = 0; i < this.getGooglePolyline().getPath().getLength(); i++) {
@@ -68,6 +95,10 @@ GoogleMapsApiPolyline.prototype.getBounds = function () {
   return result;
 };
 
+/**
+ *
+ * @param {Object} options
+ */
 GoogleMapsApiPolyline.prototype.setOptions = function (options) {
   this.getGooglePolyline().setOptions(options);
 };
diff --git a/frontend-js/src/main/js/map/canvas/GoogleMaps/GoogleMapsApiRectangle.js b/frontend-js/src/main/js/map/canvas/GoogleMaps/GoogleMapsApiRectangle.js
index 5a1ae4545c..ba6b277e1e 100644
--- a/frontend-js/src/main/js/map/canvas/GoogleMaps/GoogleMapsApiRectangle.js
+++ b/frontend-js/src/main/js/map/canvas/GoogleMaps/GoogleMapsApiRectangle.js
@@ -8,7 +8,15 @@ var logger = require('../../../logger');
 
 /**
  *
- * @param options
+ * @param {MapCanvas} options.map
+ * @param {Bounds} options.bounds
+ * @param {MapCanvas} options.fillOpacity
+ * @param {number} options.id
+ * @param {number} options.strokeWeight
+ * @param {string} options.fillColor
+ * @param {string} options.strokeColor
+ * @param {number} options.strokeOpacity
+ *
  * @constructor
  * @extends Rectangle
  */
@@ -37,10 +45,18 @@ function GoogleMapsApiRectangle(options) {
 GoogleMapsApiRectangle.prototype = Object.create(Rectangle.prototype);
 GoogleMapsApiRectangle.prototype.constructor = GoogleMapsApiRectangle;
 
+/**
+ *
+ * @param {google.maps.Rectangle} rectangle
+ */
 GoogleMapsApiRectangle.prototype.setGoogleRectangle = function (rectangle) {
   this._rectangle = rectangle;
 };
 
+/**
+ *
+ * @returns {google.maps.Rectangle}
+ */
 GoogleMapsApiRectangle.prototype.getGoogleRectangle = function () {
   return this._rectangle;
 };
@@ -62,6 +78,11 @@ GoogleMapsApiRectangle.prototype.hide = function () {
     this.getGoogleRectangle().setMap(null);
   }
 };
+
+/**
+ *
+ * @returns {boolean}
+ */
 GoogleMapsApiRectangle.prototype.isShown = function () {
   var googleRectangle = this.getGoogleRectangle();
   return googleRectangle.getMap() !== null && googleRectangle.getMap() !== undefined;
@@ -78,6 +99,10 @@ GoogleMapsApiRectangle.prototype.setBounds = function (bounds) {
   this.getGoogleRectangle().setBounds(latLngBounds);
 };
 
+/**
+ *
+ * @returns {Bounds}
+ */
 GoogleMapsApiRectangle.prototype.getBounds = function () {
   var latLngBounds = this.getGoogleRectangle().getBounds();
   var result = new Bounds();
@@ -86,6 +111,10 @@ GoogleMapsApiRectangle.prototype.getBounds = function () {
   return result;
 };
 
+/**
+ *
+ * @param {Object} options
+ */
 GoogleMapsApiRectangle.prototype.setOptions = function (options) {
   this.getGoogleRectangle().setOptions(options);
 };
diff --git a/frontend-js/src/main/js/map/canvas/InfoWindow.js b/frontend-js/src/main/js/map/canvas/InfoWindow.js
index 9072826958..03061229dd 100644
--- a/frontend-js/src/main/js/map/canvas/InfoWindow.js
+++ b/frontend-js/src/main/js/map/canvas/InfoWindow.js
@@ -1,6 +1,7 @@
 "use strict";
 
 var MapCanvas = require('./MapCanvas');
+var Marker = require('./Marker');
 
 // noinspection JSUnusedLocalSymbols
 var logger = require('../../logger');
diff --git a/frontend-js/src/main/js/map/canvas/OpenLayers/OpenLayerCanvas.js b/frontend-js/src/main/js/map/canvas/OpenLayers/OpenLayerCanvas.js
index 2d25020b91..1eb40e1a5a 100644
--- a/frontend-js/src/main/js/map/canvas/OpenLayers/OpenLayerCanvas.js
+++ b/frontend-js/src/main/js/map/canvas/OpenLayers/OpenLayerCanvas.js
@@ -221,7 +221,7 @@ OpenLayerCanvas.prototype.createLayers = function (options) {
         }
       })
     });
-    layer.on('change:visible', function (e) {
+    layer.on('change:visible', function () {
       if (layer.getVisible()) {
         return self.callListeners("maptypeid_changed");
       }
@@ -272,6 +272,11 @@ OpenLayerCanvas.prototype.createRectangle = function (options) {
   return new OpenLayerRectangle(options);
 };
 
+/**
+ *
+ * @param options
+ * @returns {OpenLayerPolyline}
+ */
 OpenLayerCanvas.prototype.createPolyline = function (options) {
   options.map = this;
   options.source = this._polylineLayer.getSource();
diff --git a/frontend-js/src/main/js/map/canvas/OpenLayers/OpenLayerPolyline.js b/frontend-js/src/main/js/map/canvas/OpenLayers/OpenLayerPolyline.js
index b1770a9dce..e87a516537 100644
--- a/frontend-js/src/main/js/map/canvas/OpenLayers/OpenLayerPolyline.js
+++ b/frontend-js/src/main/js/map/canvas/OpenLayers/OpenLayerPolyline.js
@@ -92,6 +92,10 @@ OpenLayerPolyline.prototype.getBounds = function () {
   return new Bounds(p1, p2);
 };
 
+/**
+ *
+ * @param options
+ */
 OpenLayerPolyline.prototype.setOptions = function (options) {
   var self = this;
   self._options = Object.assign(self._options, options);
diff --git a/frontend-js/src/main/js/map/canvas/Point.js b/frontend-js/src/main/js/map/canvas/Point.js
index fc4bbd218d..ae53c33437 100644
--- a/frontend-js/src/main/js/map/canvas/Point.js
+++ b/frontend-js/src/main/js/map/canvas/Point.js
@@ -5,8 +5,8 @@ var logger = require('../../logger');
 
 /**
  *
- * @param {number} x
- * @param {number} y
+ * @param {number|string||Point} x
+ * @param {number|string} [y]
  * @constructor
  */
 function Point(x, y) {
diff --git a/frontend-js/src/main/js/map/canvas/Rectangle.js b/frontend-js/src/main/js/map/canvas/Rectangle.js
index 01c5986b1c..b30ec9c9ea 100644
--- a/frontend-js/src/main/js/map/canvas/Rectangle.js
+++ b/frontend-js/src/main/js/map/canvas/Rectangle.js
@@ -37,6 +37,7 @@ Rectangle.prototype.getBounds = function () {
   throw new Error("Not implemented");
 };
 
+// noinspection JSUnusedLocalSymbols
 /**
  *
  * @param {Bounds} bounds
@@ -45,6 +46,7 @@ Rectangle.prototype.setBounds = function (bounds) {
   throw new Error("Not implemented");
 };
 
+// noinspection JSUnusedLocalSymbols
 /**
  *
  * @param {Object} options
diff --git a/frontend-js/src/test/js/google-map-mock.js b/frontend-js/src/test/js/google-map-mock.js
index 013407b5a6..921f1604be 100644
--- a/frontend-js/src/test/js/google-map-mock.js
+++ b/frontend-js/src/test/js/google-map-mock.js
@@ -2,6 +2,10 @@
 
 var Promise = require("bluebird");
 
+/**
+ * @typedef {Object} google.maps.Marker
+ */
+
 /* exported logger */
 
 // noinspection JSUnusedLocalSymbols
@@ -154,6 +158,12 @@ var google = {
       this.setContent = function () {
       };
     },
+    /**
+     *
+     * @param options
+     * @returns {google.maps.Marker}
+     * @constructor
+     */
     Marker: function (options) {
       this.options = options;
       this.position = options.position;
-- 
GitLab