diff --git a/frontend-js/package.json b/frontend-js/package.json index 2e4d1c8983234bfb7d30c5744ed812ef5731ec46..ac69a29834509bca2addeb4f4a8ebb63347899c8 100644 --- a/frontend-js/package.json +++ b/frontend-js/package.json @@ -28,7 +28,7 @@ "istanbul": "0.4.5", "jquery": "3.1.1", "jquery-ui-dist": "^1.12.1", - "jsdom": "^11.1.0", + "jsdom": "11.1.0", "jsdom-global": "^2.1.1", "jshint": "^2.9.4", "log4js-memory-appender": "1.0.5", diff --git a/frontend-js/src/main/js/ServerConnector.js b/frontend-js/src/main/js/ServerConnector.js index 2899a28b5400eb2e3aff549e27026301cb19775d..f75bd1ded45626424829e6e27898b810887ef691 100644 --- a/frontend-js/src/main/js/ServerConnector.js +++ b/frontend-js/src/main/js/ServerConnector.js @@ -44,7 +44,7 @@ ServerConnector.registerListenerType("onDataLoadStart"); ServerConnector.registerListenerType("onDataLoadStop"); ServerConnector._configurationParam = []; -ServerConnector._serverBaseUrl= undefined; +ServerConnector._serverBaseUrl = undefined; ServerConnector.getMinOverlayColorInt = function () { @@ -275,8 +275,8 @@ ServerConnector.getApiBaseUrl = function () { ServerConnector.getServerBaseUrl = function () { if (this._serverBaseUrl === undefined) { var url = "" + window.location.href; - if (url.indexOf("?")>=0) { - url = url.substr(0,url.indexOf("?")); + if (url.indexOf("?") >= 0) { + url = url.substr(0, url.indexOf("?")); } if (!url.endsWith("/")) { url = url.substr(0, url.lastIndexOf("/") + 1); @@ -1264,6 +1264,9 @@ ServerConnector.updateOverlay = function (params) { if (params.description !== undefined) { filterParams.overlay.description = params.description; } + if (params.googleLicenseConsent !== undefined) { + filterParams.overlay.googleLicenseConsent = params.googleLicenseConsent; + } return self.getProjectId(params.projectId).then(function (result) { queryParams.projectId = result; return self.sendPatchRequest(self.updateOverlayUrl(queryParams), filterParams); diff --git a/frontend-js/src/main/js/gui/Panel.js b/frontend-js/src/main/js/gui/Panel.js index d4c85402ef7ad3016073ef23f540018e21145813..d9ac68da4b0eacccac389110a6ba5f7a0df2f2b9 100644 --- a/frontend-js/src/main/js/gui/Panel.js +++ b/frontend-js/src/main/js/gui/Panel.js @@ -190,6 +190,8 @@ Panel.prototype.assignDialogOptions = function(div, params) { dialog.dialog('option', 'dialogClass', params[key]); } else if (key === "title") { dialog.dialog('option', 'title', params[key]); + } else if (key === "width") { + dialog.dialog('option', 'width', params[key]); } else { throw new Error("Unknown dialog param: " + key + " - " + params[key]); } diff --git a/frontend-js/src/main/js/gui/leftPanel/OverlayPanel.js b/frontend-js/src/main/js/gui/leftPanel/OverlayPanel.js index 3b0ebabd8b80900a8aad3b997dbb854b8b89f183..4f9d56c7d3f3b84b6b076fbfeafae6fcdfc0c1bf 100644 --- a/frontend-js/src/main/js/gui/leftPanel/OverlayPanel.js +++ b/frontend-js/src/main/js/gui/leftPanel/OverlayPanel.js @@ -141,7 +141,7 @@ OverlayPanel.prototype.createTableHeader = function (edit) { return result; }; -OverlayPanel.prototype.createOverlayRow = function (overlay, checked) { +OverlayPanel.prototype.createOverlayRow = function (overlay, checked, disabled) { var self = this; var guiUtils = self.getGuiUtils(); var result = document.createElement("tr"); @@ -172,6 +172,7 @@ OverlayPanel.prototype.createOverlayRow = function (overlay, checked) { $(thisCheckbox).prop("disabled", false); }); }; + $(checkbox).prop("disabled", disabled); viewTd.appendChild(checkbox); } else { var img = guiUtils.createIcon("icons/search.png"); @@ -230,6 +231,13 @@ 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 this map is displayed under the terms of the <a href='https://cloud.google.com/maps-platform/terms/'>license of Google Maps Platform</a> and I agree to these terms. " + + "In particular, I warrant that this dataset does not contain Protected Health Information (as defined in and subject to HIPAA). "), consentCheckbox]); + content.appendChild(row); + var buttons = [{ text: "SAVE", click: function () { @@ -237,7 +245,8 @@ OverlayPanel.prototype.openEditOverlayDialog = function (overlay) { return ServerConnector.updateOverlay({ overlayId: overlay.id, name: nameInput.value, - description: descriptionInput.value + description: descriptionInput.value, + googleLicenseConsent: consentCheckbox.checked }).then(function () { return self.refresh(); }).then(function () { @@ -265,6 +274,7 @@ OverlayPanel.prototype.openEditOverlayDialog = function (overlay) { } }]; self.openDialog(content, { + width: "600px", id: overlay.getId(), buttons: buttons, title: "Data overlay: " + overlay.getName(), @@ -317,7 +327,7 @@ OverlayPanel.prototype.refresh = function () { table.appendChild(body); for (i = 0; i < generalOverlays.length; i++) { overlay = generalOverlays[i]; - body.appendChild(self.createOverlayRow(overlay, selectedOverlay[overlay.getId()])); + body.appendChild(self.createOverlayRow(overlay, selectedOverlay[overlay.getId()], false)); } var title = self.getControlElement(PanelControlElementType.OVERLAY_CUSTOM_OVERLAY_TITLE); @@ -342,7 +352,7 @@ OverlayPanel.prototype.refresh = function () { table.appendChild(body); for (i = 0; i < customOverlays.length; i++) { overlay = customOverlays[i]; - body.appendChild(self.createOverlayRow(overlay, selectedOverlay[overlay.getId()])); + body.appendChild(self.createOverlayRow(overlay, selectedOverlay[overlay.getId()], !overlay.isGoogleLicenseConsent())); } } diff --git a/frontend-js/src/main/js/map/data/LayoutData.js b/frontend-js/src/main/js/map/data/LayoutData.js index a31227f460dcbf779f5ee24a5c5a3778011a32f4..25ec19b0252a9ab2758e0ce7878c016425928656 100644 --- a/frontend-js/src/main/js/map/data/LayoutData.js +++ b/frontend-js/src/main/js/map/data/LayoutData.js @@ -23,6 +23,7 @@ function LayoutData(layoutId, name) { this.setDirectory(object.directory); this.setDescription(object.description); this.setCreator(object.creator); + this.setGoogleLicenseConsent(object.googleLicenseConsent); this.setInputDataAvailable(object.inputDataAvailable); if (!this.getInputDataAvailable()) { this.setInitialized(true); @@ -155,6 +156,15 @@ LayoutData.prototype.isInitialized = function() { return this._initialized; }; +LayoutData.prototype.setGoogleLicenseConsent = function(value) { + this._googleLicenseConsent = value; +}; + +LayoutData.prototype.isGoogleLicenseConsent = function() { + return this._googleLicenseConsent; +}; + + LayoutData.prototype.getAliases = function() { return this.aliases; }; diff --git a/frontend-js/src/test/js/mocha-config.js b/frontend-js/src/test/js/mocha-config.js index 1caaad71486c6cd3b0172a02a2f0dfa3f6e76143..6bec611e44f57cfb73d15bb0561f9cde5e9b0af5 100644 --- a/frontend-js/src/test/js/mocha-config.js +++ b/frontend-js/src/test/js/mocha-config.js @@ -97,7 +97,7 @@ before(function() { }; return Promise.resolve(); }; - + Promise.longStackTraces(); mockBootstrap();