From 880f878b4825181c392f261c1cca969f5cc2a9a5 Mon Sep 17 00:00:00 2001 From: Piotr Gawron <piotr.gawron@uni.lu> Date: Fri, 20 Jan 2017 14:21:34 +0100 Subject: [PATCH] chemical panel disabled when disease is not defined for panel --- frontend-js/src/main/js/gui/AbstractPanel.js | 15 ++++++ frontend-js/src/main/js/gui/ChemicalPanel.js | 4 ++ frontend-js/src/main/js/map/data/Project.js | 16 +++++++ frontend-js/src/main/js/minerva.js | 6 +++ .../api/project/ProjectMetaData.java | 47 +++++++++++++++++-- .../api/project/ProjectRestImpl.java | 9 +++- 6 files changed, 93 insertions(+), 4 deletions(-) diff --git a/frontend-js/src/main/js/gui/AbstractPanel.js b/frontend-js/src/main/js/gui/AbstractPanel.js index bcbcb5d103..90686ad498 100644 --- a/frontend-js/src/main/js/gui/AbstractPanel.js +++ b/frontend-js/src/main/js/gui/AbstractPanel.js @@ -56,6 +56,21 @@ function AbstractPanel(params) { AbstractPanel.prototype = Object.create(ObjectWithListeners.prototype); AbstractPanel.prototype.constructor = AbstractPanel; +AbstractPanel.prototype.disablePanel = function(message){ + this.getSearchQueryElement().style.visibility ="hidden"; + this.getSearchResultsElement().style.visibility ="hidden"; + var hideReasonDiv = document.createElement("div"); + hideReasonDiv.className="searchPanel"; + + var center = document.createElement("center"); + var messageDiv = document.createElement("h4"); + messageDiv .innerHTML=message; + center.appendChild(messageDiv); + hideReasonDiv.appendChild(center); + + this.getElement().insertBefore(hideReasonDiv, this.getSearchQueryElement()); +}; + AbstractPanel.prototype.setOverlayDb = function(overlayDb){ if (overlayDb === undefined) { throw new Error("Undefined overlayDb"); diff --git a/frontend-js/src/main/js/gui/ChemicalPanel.js b/frontend-js/src/main/js/gui/ChemicalPanel.js index 146eaa57b6..28f21f359e 100644 --- a/frontend-js/src/main/js/gui/ChemicalPanel.js +++ b/frontend-js/src/main/js/gui/ChemicalPanel.js @@ -8,6 +8,10 @@ var AbstractPanel = require('./AbstractPanel'); function ChemicalPanel(params) { params.panelName = "chemical"; AbstractPanel.call(this, params); + + if (params.disease===undefined) { + this.disablePanel("DISEASE NOT DEFINED FOR PROJECT. PLEASE, DEFINE IT IN THE ADMIN SECTION."); + } } ChemicalPanel.prototype = Object.create(AbstractPanel.prototype); ChemicalPanel.prototype.constructor = ChemicalPanel; diff --git a/frontend-js/src/main/js/map/data/Project.js b/frontend-js/src/main/js/map/data/Project.js index e96da041ba..22492dc096 100644 --- a/frontend-js/src/main/js/map/data/Project.js +++ b/frontend-js/src/main/js/map/data/Project.js @@ -31,6 +31,8 @@ Project.prototype.loadFromData = function(data) { this.setDescription(data.description); this.setOverviewImages(data.overviewImageViews); this.setTopOverviewImage(data.topOverviewImage); + this.setDisease(data.disease); + this.setOrganism(data.organism); this.setModel(new Model(data.map)); @@ -94,4 +96,18 @@ Project.prototype.setDescription = function(description) { this._description = description; }; +Project.prototype.getDisease = function() { + return this._disease; +}; +Project.prototype.setDisease = function(disease) { + this._disease = disease; +}; + +Project.prototype.getOrganism = function() { + return this._organism; +}; +Project.prototype.setOrganism = function(organism) { + this._organism = organism; +}; + module.exports = Project; diff --git a/frontend-js/src/main/js/minerva.js b/frontend-js/src/main/js/minerva.js index 53e6e4f22a..3eca61d335 100644 --- a/frontend-js/src/main/js/minerva.js +++ b/frontend-js/src/main/js/minerva.js @@ -66,6 +66,11 @@ function restoreDrugQuery(customMap) { }; function create(params) { + var project = params.project; + if (project===undefined) { + project = params.getProject(); + } + if (global.GuiConnector === undefined) { global.GuiConnector = OriginalGuiConnector; global.ServerConnector = OriginalServerConnector; @@ -126,6 +131,7 @@ function create(params) { collection = new ChemicalDbOverlay(collectionParams); result.registerSource(collection); new ChemicalPanel({ + disease: project.getDisease(), element : document.getElementById("chemicalTab"), customMap : result }); diff --git a/rest-api/src/main/java/lcsb/mapviewer/api/project/ProjectMetaData.java b/rest-api/src/main/java/lcsb/mapviewer/api/project/ProjectMetaData.java index e3c3c77968..6f8f5fcc44 100644 --- a/rest-api/src/main/java/lcsb/mapviewer/api/project/ProjectMetaData.java +++ b/rest-api/src/main/java/lcsb/mapviewer/api/project/ProjectMetaData.java @@ -12,6 +12,7 @@ import lcsb.mapviewer.model.map.OverviewImage; import lcsb.mapviewer.model.map.OverviewImageLink; import lcsb.mapviewer.model.map.OverviewLink; import lcsb.mapviewer.model.map.model.ModelData; +import lcsb.mapviewer.services.view.AnnotationView; import lcsb.mapviewer.services.view.OverviewImageView; import lcsb.mapviewer.services.view.OverviewImageViewFactory; @@ -28,8 +29,12 @@ public class ProjectMetaData implements Serializable { * Version of the project. */ private String version; - - private Integer idObject; + + private AnnotationView disease; + + private AnnotationView organism; + + private Integer idObject; /** * Name of the project. @@ -96,6 +101,7 @@ public class ProjectMetaData implements Serializable { this.setTopOverviewImage(factory.create(model.getOverviewImages().get(0))); } this.setMap(new ModelMetaData(model)); + } } @@ -227,11 +233,46 @@ public class ProjectMetaData implements Serializable { } /** - * @param idObject the idObject to set + * @param idObject + * the idObject to set * @see #idObject */ public void setIdObject(Integer idObject) { this.idObject = idObject; } + /** + * @return the disease + * @see #disease + */ + public AnnotationView getDisease() { + return disease; + } + + /** + * @param disease + * the disease to set + * @see #disease + */ + public void setDisease(AnnotationView disease) { + this.disease = disease; + } + + /** + * @return the organism + * @see #organism + */ + public AnnotationView getOrganism() { + return organism; + } + + /** + * @param organism + * the organism to set + * @see #organism + */ + public void setOrganism(AnnotationView organism) { + this.organism = organism; + } + } diff --git a/rest-api/src/main/java/lcsb/mapviewer/api/project/ProjectRestImpl.java b/rest-api/src/main/java/lcsb/mapviewer/api/project/ProjectRestImpl.java index e04dd109fb..0588b6d4ce 100644 --- a/rest-api/src/main/java/lcsb/mapviewer/api/project/ProjectRestImpl.java +++ b/rest-api/src/main/java/lcsb/mapviewer/api/project/ProjectRestImpl.java @@ -57,6 +57,12 @@ public class ProjectRestImpl { Project project = projectService.getProjectByProjectId(projectId, userService.getToken(token)); ProjectMetaData result = new ProjectMetaData(project); + if (project.getOrganism() != null) { + result.setOrganism(annotationViewFactory.create(project.getOrganism())); + } + if (project.getDisease() != null) { + result.setDisease(annotationViewFactory.create(project.getDisease())); + } return result; } @@ -328,7 +334,8 @@ public class ProjectRestImpl { this.searchService = searchService; } - public List<Map<String, Object>> getElementsByQuery(String projectId, String token, String query, Integer maxElements, String perfectMatch) throws SecurityException { + public List<Map<String, Object>> getElementsByQuery(String projectId, String token, String query, Integer maxElements, String perfectMatch) + throws SecurityException { List<Map<String, Object>> resultMap = new ArrayList<>(); Model model = modelService.getLastModelByProjectId(projectId, userService.getToken(token)); -- GitLab