diff --git a/frontend-js/src/main/js/gui/AbstractPanel.js b/frontend-js/src/main/js/gui/AbstractPanel.js index bcbcb5d103946b3bdc51d99b1482c73e50462481..90686ad498ed7ff3d7b5fdb3a364dec211934326 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 146eaa57b6fca71513ed2a1fafa6696fe6720dba..28f21f359e5c0e98465fe8d8c18160c4ca1008b8 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 e96da041ba75a827f90e0f771c819f57162e26ab..22492dc0964e4fdd11dd50983a1352ad395cc36d 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 53e6e4f22a5da60e9ae3e5393abd96818632bd67..3eca61d3356f6a2d0065f91b85b57a2a82cbcd3b 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 e3c3c7796804ab2ea3148ae20b57aabd594ac08e..6f8f5fcc44d609b57ba02c3b2932f8cd839734c4 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 e04dd109fb7389fc9f9c2e72698285b23259e0ca..0588b6d4cef169988978cde0c4d0baac0e58b7bf 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));