From dc6957b7cf1abffaaa42d9ba83eccaaca9b8f36e Mon Sep 17 00:00:00 2001
From: Piotr Gawron <piotr.gawron@uni.lu>
Date: Tue, 20 Nov 2018 16:11:30 +0100
Subject: [PATCH] when adding/editing overlay hide checkbox with google maps
 consent if it's not necessary

---
 .../src/main/js/gui/AddOverlayDialog.js       | 21 +++--
 .../src/main/js/gui/leftPanel/OverlayPanel.js | 22 +++--
 .../src/test/js/gui/AddOverlayDialog-test.js  | 42 ++++++++--
 .../js/gui/leftPanel/OverlayPanel-test.js     | 83 ++++++++++++-------
 4 files changed, 115 insertions(+), 53 deletions(-)

diff --git a/frontend-js/src/main/js/gui/AddOverlayDialog.js b/frontend-js/src/main/js/gui/AddOverlayDialog.js
index 1754a7c1ed..8a978010b5 100644
--- a/frontend-js/src/main/js/gui/AddOverlayDialog.js
+++ b/frontend-js/src/main/js/gui/AddOverlayDialog.js
@@ -107,15 +107,20 @@ AddOverlayDialog.prototype.createGui = function () {
   content.appendChild(contentInput);
   content.appendChild(guiUtils.createNewLine());
 
-  var consentCheckbox = Functions.createElement({type: "input", name: "overlay-google-consent"});
-  consentCheckbox.type = "checkbox";
-  content.appendChild(consentCheckbox);
-  content.appendChild(guiUtils.createLabel("I am aware that if this map is displayed using Google Maps API, " +
-    "it falls under their license <a href='https://cloud.google.com/maps-platform/terms/' target='_blank'>" +
-    "https://cloud.google.com/maps-platform/terms/</a>, to which I agree. I warrant that this dataset contains no " +
-    "Protected Health Information (as defined in and subject to HIPAA)."));
+  if (self.getProject().getMapCanvasType() === "GOOGLE_MAPS_API") {
+    var consentCheckbox = Functions.createElement({
+      type: "input",
+      name: "overlay-google-consent",
+      inputType: "checkbox"
+    });
+    content.appendChild(consentCheckbox);
+    content.appendChild(guiUtils.createLabel("I am aware that if this map is displayed using Google Maps API, " +
+      "it falls under their license <a href='https://cloud.google.com/maps-platform/terms/' target='_blank'>" +
+      "https://cloud.google.com/maps-platform/terms/</a>, to which I agree. I warrant that this dataset contains no " +
+      "Protected Health Information (as defined in and subject to HIPAA)."));
 
-  content.appendChild(guiUtils.createNewLine());
+    content.appendChild(guiUtils.createNewLine());
+  }
 
   self.getElement().appendChild(content);
 };
diff --git a/frontend-js/src/main/js/gui/leftPanel/OverlayPanel.js b/frontend-js/src/main/js/gui/leftPanel/OverlayPanel.js
index 53bf6d32b6..6409037991 100644
--- a/frontend-js/src/main/js/gui/leftPanel/OverlayPanel.js
+++ b/frontend-js/src/main/js/gui/leftPanel/OverlayPanel.js
@@ -355,15 +355,19 @@ OverlayPanel.prototype.openEditOverlayDialog = function (overlay) {
   row = guiUtils.createTableRow([guiUtils.createLabel("Description: "), descriptionInput]);
   content.appendChild(row);
 
-  var consentCheckbox = document.createElement("input");
-  consentCheckbox.type = "checkbox";
-  consentCheckbox.checked = overlay.isGoogleLicenseConsent();
-
-  row = guiUtils.createTableRow([guiUtils.createLabel("I am aware that if this map is displayed using Google Maps API, " +
-    "it falls under their license <a href='https://cloud.google.com/maps-platform/terms/' target='_blank'>" +
-    "https://cloud.google.com/maps-platform/terms/</a>, to which I agree. I warrant that this dataset contains no " +
-    "Protected Health Information (as defined in and subject to HIPAA)."), consentCheckbox]);
-  content.appendChild(row);
+  var consentCheckbox = Functions.createElement({
+    type: "input",
+    name: "overlay-google-consent",
+    inputType: "checkbox"
+  });
+
+  if (self.getProject().getMapCanvasType() === "GOOGLE_MAPS_API") {
+    row = guiUtils.createTableRow([guiUtils.createLabel("I am aware that if this map is displayed using Google Maps API, " +
+      "it falls under their license <a href='https://cloud.google.com/maps-platform/terms/' target='_blank'>" +
+      "https://cloud.google.com/maps-platform/terms/</a>, to which I agree. I warrant that this dataset contains no " +
+      "Protected Health Information (as defined in and subject to HIPAA)."), consentCheckbox]);
+    content.appendChild(row);
+  }
 
   var buttons = [{
     text: "SAVE",
diff --git a/frontend-js/src/test/js/gui/AddOverlayDialog-test.js b/frontend-js/src/test/js/gui/AddOverlayDialog-test.js
index c823a62672..509a417300 100644
--- a/frontend-js/src/test/js/gui/AddOverlayDialog-test.js
+++ b/frontend-js/src/test/js/gui/AddOverlayDialog-test.js
@@ -14,13 +14,7 @@ describe('AddOverlayDialog', function () {
   it('addOverlay', function () {
     var dialog;
     return ServerConnector.getProject().then(function (project) {
-      dialog = new AddOverlayDialog({
-        element: testDiv,
-        project: project,
-        customMap: null,
-        configuration: helper.getConfiguration(),
-        serverConnector: ServerConnector
-      });
+      dialog = createDialog(project);
 
       dialog.setFileContent("s1\n");
       assert.equal(0, logger.getWarnings().length);
@@ -28,4 +22,38 @@ describe('AddOverlayDialog', function () {
     });
   });
 
+  /**
+   *
+   * @param {Project} project
+   * @returns {AddOverlayDialog}
+   */
+  function createDialog(project) {
+    return new AddOverlayDialog({
+      element: testDiv,
+      project: project,
+      customMap: null,
+      configuration: helper.getConfiguration(),
+      serverConnector: ServerConnector
+    });
+  }
+
+  describe('constructor', function () {
+    it('hide consent checkbox for non google maps api project', function () {
+      var dialog;
+      return ServerConnector.getProject().then(function (project) {
+        project.setMapCanvasType("OPEN_LAYERS");
+        dialog = createDialog(project);
+        assert.equal(0, $("[name='overlay-google-consent']", dialog.getElement()).length);
+      });
+    });
+    it('hide consent checkbox for non google maps api project', function () {
+      var dialog;
+      return ServerConnector.getProject().then(function (project) {
+        project.setMapCanvasType("GOOGLE_MAPS_API");
+        dialog = createDialog(project);
+        assert.ok($("[name='overlay-google-consent']", dialog.getElement()).length > 0);
+      });
+    });
+  });
+
 });
diff --git a/frontend-js/src/test/js/gui/leftPanel/OverlayPanel-test.js b/frontend-js/src/test/js/gui/leftPanel/OverlayPanel-test.js
index e36f55db5a..b6a96eef7b 100644
--- a/frontend-js/src/test/js/gui/leftPanel/OverlayPanel-test.js
+++ b/frontend-js/src/test/js/gui/leftPanel/OverlayPanel-test.js
@@ -149,47 +149,72 @@ describe('OverlayPanel', function () {
 
   describe('openAddOverlayDialog', function () {
     it('open', function () {
-      var map = helper.createCustomMap();
+      it('open', function () {
+        var map = helper.createCustomMap();
 
-      var panel = createOverlayPanel(map);
+        var panel = createOverlayPanel(map);
 
-      return panel.openAddOverlayDialog().then(function () {
-        return panel.destroy();
+        return panel.openAddOverlayDialog().then(function () {
+          return panel.destroy();
+        });
       });
-    });
 
-    it('trigger onAddOverlay event handler', function () {
-      var map = helper.createCustomMap();
-      var panel = createOverlayPanel(map);
+      it('trigger onAddOverlay event handler', function () {
+        var map = helper.createCustomMap();
+        var panel = createOverlayPanel(map);
+
+        return panel.init().then(function () {
+          return panel.openAddOverlayDialog();
+        }).then(function () {
+          var overlay = helper.createOverlay(panel.getProject().getModels()[0]);
+          return panel._addOverlayDialog.callListeners("onAddOverlay", overlay);
+        }).then(function () {
+          return panel.destroy();
+        });
+      });
+    });
+  });
 
-      return panel.init().then(function () {
-        return panel.openAddOverlayDialog();
+  describe('openEditOverlayDialog', function () {
+    it('open for map with Google Maps Api', function () {
+      helper.loginAsAdmin();
+      var panel;
+      return ServerConnector.getProject().then(function (project) {
+        project.setMapCanvasType("GOOGLE_MAPS_API");
+        panel = new OverlayPanel({
+          element: testDiv,
+          customMap: helper.createCustomMap(project)
+        });
+        return panel.init();
       }).then(function () {
-        var overlay = helper.createOverlay(panel.getProject().getModels()[0]);
-        return panel._addOverlayDialog.callListeners("onAddOverlay", overlay);
+        var backgroundLink = $("[name='editButton']", panel.getElement())[0];
+        assert.ok($(backgroundLink).attr("data"));
+        return helper.triggerJqueryEvent(backgroundLink, "click");
       }).then(function () {
+        assert.equal(1, $("[name='overlay-google-consent']").length);
         return panel.destroy();
       });
     });
-  });
 
-  it('openEditOverlayDialog', function () {
-    helper.loginAsAdmin();
-    var panel;
-    return ServerConnector.getProject().then(function (project) {
-      panel = new OverlayPanel({
-        element: testDiv,
-        customMap: helper.createCustomMap(project)
+    it('open for map without Google Maps Api', function () {
+      helper.loginAsAdmin();
+      var panel;
+      return ServerConnector.getProject().then(function (project) {
+        project.setMapCanvasType("OPEN_LAYERS");
+        panel = new OverlayPanel({
+          element: testDiv,
+          customMap: helper.createCustomMap(project)
+        });
+        return panel.init();
+      }).then(function () {
+        var backgroundLink = $("[name='editButton']", panel.getElement())[0];
+        assert.ok($(backgroundLink).attr("data"));
+        return helper.triggerJqueryEvent(backgroundLink, "click");
+      }).then(function () {
+        assert.equal(0, $("[name='overlay-google-consent']").length);
+        return panel.destroy();
       });
-      return panel.init();
-    }).then(function () {
-      var backgroundLink = $("[name='editButton']", panel.getElement())[0];
-      assert.ok($(backgroundLink).attr("data"));
-      return helper.triggerJqueryEvent(backgroundLink, "click");
-    }).then(function () {
-      return panel.destroy();
     });
-  });
-
 
+  });
 });
-- 
GitLab