From a8392823dbb5353accdb3df20bed0126afd9701e Mon Sep 17 00:00:00 2001 From: Piotr Gawron <piotr.gawron@uni.lu> Date: Thu, 30 Aug 2018 16:11:59 +0200 Subject: [PATCH] when uploading project with semantic zooming there is possibility to include/exclude zoom-specific layouts --- .../src/main/js/gui/admin/AddProjectDialog.js | 15 +++++++++++++++ .../src/main/js/map/data/UserPreferences.js | 4 +++- .../model/user/UserAnnotationSchema.java | 9 +++++++++ ...30__add_user_preferences_semantic_zooming.sql | 2 ++ .../mapviewer/api/projects/ProjectRestImpl.java | 1 + .../lcsb/mapviewer/api/users/UserRestImpl.java | 3 +++ .../mapviewer/services/impl/ProjectService.java | 4 ++-- .../services/utils/CreateProjectParams.java | 16 +++++++++++++++- 8 files changed, 50 insertions(+), 4 deletions(-) create mode 100644 persist/src/main/resources/db/migration/12.1.0~alpha.1/V12.1.0.20180830__add_user_preferences_semantic_zooming.sql diff --git a/frontend-js/src/main/js/gui/admin/AddProjectDialog.js b/frontend-js/src/main/js/gui/admin/AddProjectDialog.js index c3c79221e1..85621deee6 100644 --- a/frontend-js/src/main/js/gui/admin/AddProjectDialog.js +++ b/frontend-js/src/main/js/gui/admin/AddProjectDialog.js @@ -291,6 +291,11 @@ AddProjectDialog.prototype.createGeneralTabContent = function () { defaultValue: false, inputName: "project-semantic-zooming" })); + table.appendChild(self.createCheckboxRow({ + labelName: "Semantic zooming contains multiple overlays:", + defaultValue: false, + inputName: "project-semantic-zooming-contains-multiple-overlays" + })); var saveProjectButton = Functions.createElement({ type: "button", @@ -705,6 +710,7 @@ AddProjectDialog.prototype.init = function () { self.bindProjectUploadPreferences(user, "validateMiriam", "project-verify-annotations"); self.bindProjectUploadPreferences(user, "cacheData", "project-cache-data"); self.bindProjectUploadPreferences(user, "semanticZooming", "project-semantic-zooming"); + self.bindProjectUploadPreferences(user, "semanticZoomingContainsMultipleOverlays", "project-semantic-zooming-contains-multiple-overlays"); self.bindProjectUploadPreferences(user, "sbgn", "project-sbgn-visualization"); }); }; @@ -1074,6 +1080,14 @@ AddProjectDialog.prototype.isSemanticZooming = function () { return $("[name='project-semantic-zooming']", this.getElement()).is(':checked'); }; +/** + * + * @returns {boolean} + */ +AddProjectDialog.prototype.isSemanticZoomingContainsMultipleOverlays = function () { + return $("[name='project-semantic-zooming-contains-multiple-overlays']", this.getElement()).is(':checked'); +}; + /** * * @param {string} filename @@ -1145,6 +1159,7 @@ AddProjectDialog.prototype.onSaveClicked = function () { "mapCanvasType": self.getMapCanvasTypeId(), "sbgn": self.isSbgn(), "semantic-zoom": self.isSemanticZooming(), + "semantic-zoom-contains-multiple-layouts": self.isSemanticZoomingContainsMultipleOverlays(), "annotate": self.isAnnotateAutomatically(), "verify-annotations": self.isVerifyAnnotations(), "zip-entries": self.getZipEntries() diff --git a/frontend-js/src/main/js/map/data/UserPreferences.js b/frontend-js/src/main/js/map/data/UserPreferences.js index 634c42897d..fba86c1bec 100644 --- a/frontend-js/src/main/js/map/data/UserPreferences.js +++ b/frontend-js/src/main/js/map/data/UserPreferences.js @@ -66,6 +66,7 @@ UserPreferences.prototype.setProjectUpload = function (projectUpload) { annotateModel: projectUpload["annotate-model"], cacheData: projectUpload["cache-data"], semanticZooming: projectUpload["semantic-zooming"], + semanticZoomingContainsMultipleOverlays: projectUpload["semantic-zooming-contains-multiple-overlays"], sbgn: projectUpload["sbgn"] }; }; @@ -182,7 +183,8 @@ UserPreferences.prototype.toExport = function () { "annotate-model": this._projectUpload.annotateModel, "cache-data": this._projectUpload.cacheData, "sbgn": this._projectUpload.sbgn, - "semantic-zooming": this._projectUpload.semanticZooming + "semantic-zooming": this._projectUpload.semanticZooming, + "semantic-zooming-contains-multiple-overlays":this._projectUpload.semanticZoomingContainsMultipleOverlays }, "element-annotators": this._elementAnnotators, "element-valid-annotations": this._elementValidAnnotations, diff --git a/model/src/main/java/lcsb/mapviewer/model/user/UserAnnotationSchema.java b/model/src/main/java/lcsb/mapviewer/model/user/UserAnnotationSchema.java index 79ae0db71f..afe8badee0 100644 --- a/model/src/main/java/lcsb/mapviewer/model/user/UserAnnotationSchema.java +++ b/model/src/main/java/lcsb/mapviewer/model/user/UserAnnotationSchema.java @@ -74,6 +74,7 @@ public class UserAnnotationSchema implements Serializable { private Boolean autoResizeMap = true; private Boolean semanticZooming = false; + private Boolean semanticZoomContainsMultipleOverlays = false; /** * Should map be visualized as sbgn? @@ -528,4 +529,12 @@ public class UserAnnotationSchema implements Serializable { option.setValue(value); } + public Boolean getSemanticZoomContainsMultipleOverlays() { + return semanticZoomContainsMultipleOverlays; + } + + public void setSemanticZoomContainsMultipleOverlays(Boolean semanticZoomContainsMultipleOverlays) { + this.semanticZoomContainsMultipleOverlays = semanticZoomContainsMultipleOverlays; + } + } diff --git a/persist/src/main/resources/db/migration/12.1.0~alpha.1/V12.1.0.20180830__add_user_preferences_semantic_zooming.sql b/persist/src/main/resources/db/migration/12.1.0~alpha.1/V12.1.0.20180830__add_user_preferences_semantic_zooming.sql new file mode 100644 index 0000000000..3b6ff23788 --- /dev/null +++ b/persist/src/main/resources/db/migration/12.1.0~alpha.1/V12.1.0.20180830__add_user_preferences_semantic_zooming.sql @@ -0,0 +1,2 @@ +--user prferences for semantic zooming +alter table user_annotation_schema_table add column semanticzoomcontainsmultipleoverlays boolean default false; diff --git a/rest-api/src/main/java/lcsb/mapviewer/api/projects/ProjectRestImpl.java b/rest-api/src/main/java/lcsb/mapviewer/api/projects/ProjectRestImpl.java index f7201f9c88..ec2559f0b9 100644 --- a/rest-api/src/main/java/lcsb/mapviewer/api/projects/ProjectRestImpl.java +++ b/rest-api/src/main/java/lcsb/mapviewer/api/projects/ProjectRestImpl.java @@ -635,6 +635,7 @@ public class ProjectRestImpl extends BaseRestImpl { params.projectOrganism(getFirstValue(data.get("organism"))); params.sbgnFormat(getFirstValue(data.get("sbgn"))); params.semanticZoom(getFirstValue(data.get("semantic-zoom"))); + params.semanticZoomContainsMultipleLayouts(getFirstValue(data.get("semantic-zoom-contains-multiple-layouts"))); params.version(getFirstValue(data.get("version"))); params.annotations(getFirstValue(data.get("annotate"))); MapCanvasType mapCanvasType; diff --git a/rest-api/src/main/java/lcsb/mapviewer/api/users/UserRestImpl.java b/rest-api/src/main/java/lcsb/mapviewer/api/users/UserRestImpl.java index 4753bfa1e5..069b94fa57 100644 --- a/rest-api/src/main/java/lcsb/mapviewer/api/users/UserRestImpl.java +++ b/rest-api/src/main/java/lcsb/mapviewer/api/users/UserRestImpl.java @@ -325,6 +325,7 @@ public class UserRestImpl extends BaseRestImpl { result.put("cache-data", schema.getCacheData()); result.put("auto-resize", schema.getAutoResizeMap()); result.put("semantic-zooming", schema.getSemanticZooming()); + result.put("semantic-zooming-contains-multiple-overlays", schema.getSemanticZoomContainsMultipleOverlays()); result.put("sbgn", schema.getSbgnFormat()); return result; } @@ -522,6 +523,8 @@ public class UserRestImpl extends BaseRestImpl { schema.setAutoResizeMap(value); } else if (key.equals("semantic-zooming")) { schema.setSemanticZooming(value); + } else if (key.equals("semantic-zooming-contains-multiple-overlays")) { + schema.setSemanticZoomContainsMultipleOverlays(value); } else if (key.equals("sbgn")) { schema.setSbgnFormat(value); } else { diff --git a/service/src/main/java/lcsb/mapviewer/services/impl/ProjectService.java b/service/src/main/java/lcsb/mapviewer/services/impl/ProjectService.java index ad62006ce7..5afc54a15a 100644 --- a/service/src/main/java/lcsb/mapviewer/services/impl/ProjectService.java +++ b/service/src/main/java/lcsb/mapviewer/services/impl/ProjectService.java @@ -643,7 +643,7 @@ public class ProjectService implements IProjectService { topModel.addLayout(0, topLayout); int submodelId = 1; List<Layout> semanticLevelOverlays = new ArrayList<>(); - if (buildInLayout.equals(BuildInLayout.SEMANTIC)) { + if (buildInLayout.equals(BuildInLayout.SEMANTIC) && params.isSemanticZoomContainsMultipleLayouts()) { for (int i = 0; i <= topModel.getZoomLevels(); i++) { String directory = params.getProjectDir() + "/" + buildInLayout.getDirectorySuffix() + "-" + i + "-" + topModel.getId() + "/"; @@ -667,7 +667,7 @@ public class ProjectService implements IProjectService { connection.getSubmodel().setZoomLevels(generator.computeZoomLevels(connection.getSubmodel().getModel())); connection.getSubmodel().setTileSize(MapGenerator.TILE_SIZE); - if (buildInLayout.equals(BuildInLayout.SEMANTIC)) { + if (buildInLayout.equals(BuildInLayout.SEMANTIC) && params.isSemanticZoomContainsMultipleLayouts()) { for (int i = 0; i <= topModel.getZoomLevels(); i++) { String directory = params.getProjectDir() + "/" + buildInLayout.getDirectorySuffix() + "-" + i + "-" + submodelId + "/"; diff --git a/service/src/main/java/lcsb/mapviewer/services/utils/CreateProjectParams.java b/service/src/main/java/lcsb/mapviewer/services/utils/CreateProjectParams.java index aa3cf038b8..80e1f978fa 100644 --- a/service/src/main/java/lcsb/mapviewer/services/utils/CreateProjectParams.java +++ b/service/src/main/java/lcsb/mapviewer/services/utils/CreateProjectParams.java @@ -64,11 +64,12 @@ public class CreateProjectParams { */ private boolean complex; private boolean semanticZoom; + private boolean semanticZoomContainsMultipleLayouts = false; /** * List of zip entries in the complex model definition. */ - private List<ZipEntryFile> zipEntries = new ArrayList<ZipEntryFile>(); + private List<ZipEntryFile> zipEntries = new ArrayList<>(); /** * Should the elements be annotated by the external resources. @@ -794,6 +795,19 @@ public class CreateProjectParams { return this.semanticZoom; } + public CreateProjectParams semanticZoomContainsMultipleLayouts(boolean semanticZoomContainsMultipleLayouts) { + this.semanticZoomContainsMultipleLayouts = semanticZoomContainsMultipleLayouts; + return this; + } + + public CreateProjectParams semanticZoomContainsMultipleLayouts(String value) { + return this.semanticZoomContainsMultipleLayouts("true".equals(value)); + } + + public boolean isSemanticZoomContainsMultipleLayouts() { + return this.semanticZoomContainsMultipleLayouts; + } + public IConverter getParser() { return this.parser; } -- GitLab