Skip to content
Snippets Groups Projects
Commit 7d3676dd authored by Piotr Gawron's avatar Piotr Gawron
Browse files

Merge branch '373-source-of-annotation' into 'master'

Resolve "source of annotation"

Closes #373

See merge request piotr.gawron/minerva!279
parents 9b3a3b66 0ee5cbb3
No related branches found
No related tags found
1 merge request!279Resolve "source of annotation"
Pipeline #
...@@ -312,10 +312,12 @@ AbstractPanel.prototype.createTargetRow = function (target, icon) { ...@@ -312,10 +312,12 @@ AbstractPanel.prototype.createTargetRow = function (target, icon) {
descColumn.appendChild(guiUtils.createParamLine("Name: ", target.getName())); descColumn.appendChild(guiUtils.createParamLine("Name: ", target.getName()));
descColumn.appendChild(guiUtils.createAnnotations("Elements: ", target.getTargetParticipants(), { descColumn.appendChild(guiUtils.createAnnotations("Elements: ", target.getTargetParticipants(), {
showType: false, showType: false,
inline: true inline: true,
groupAnnotations: false
})); }));
descColumn.appendChild(guiUtils.createAnnotations("References: ", target.getReferences(), { descColumn.appendChild(guiUtils.createAnnotations("References: ", target.getReferences(), {
showType: false showType: false,
groupAnnotations: false
})); }));
if (submaps.length > 0) { if (submaps.length > 0) {
descColumn.appendChild(guiUtils.createLabel("Available in submaps: ")); descColumn.appendChild(guiUtils.createLabel("Available in submaps: "));
......
...@@ -42,7 +42,7 @@ ChemicalPanel.prototype.createPreamble = function (chemical) { ...@@ -42,7 +42,7 @@ ChemicalPanel.prototype.createPreamble = function (chemical) {
result.appendChild(guiUtils.createArrayParamLine("Synonyms: ", chemical.getSynonyms())); result.appendChild(guiUtils.createArrayParamLine("Synonyms: ", chemical.getSynonyms()));
result.appendChild(guiUtils.createParamLine("Direct Evidence: ", chemical.getDirectEvidence())); result.appendChild(guiUtils.createParamLine("Direct Evidence: ", chemical.getDirectEvidence()));
result.appendChild(guiUtils result.appendChild(guiUtils
.createAnnotations("Direct Evidence Publications: ", chemical.getDirectEvidenceReferences())); .createAnnotations("Direct Evidence Publications: ", chemical.getDirectEvidenceReferences(), {groupAnnotations: false}));
result.appendChild(guiUtils.createAnnotations("Sources: ", chemical.getReferences())); result.appendChild(guiUtils.createAnnotations("Sources: ", chemical.getReferences()));
result.appendChild(guiUtils.createNewLine()); result.appendChild(guiUtils.createNewLine());
} }
......
...@@ -11,17 +11,18 @@ var PanelControlElementType = require('../PanelControlElementType'); ...@@ -11,17 +11,18 @@ var PanelControlElementType = require('../PanelControlElementType');
function DrugPanel(params) { function DrugPanel(params) {
params.panelName = "drug"; params.panelName = "drug";
params.helpTip = '<p>source: <a target="_drugbank" href="http://www.drugbank.ca/">DrugBank</a> and ' params.helpTip = '<p>source: <a target="_drugbank" href="http://www.drugbank.ca/">DrugBank</a> and '
+ '<a target="_drugbank" href="https://www.ebi.ac.uk/chembl/">ChEMBL</a></p>' + '<a target="_drugbank" href="https://www.ebi.ac.uk/chembl/">ChEMBL</a></p>'
+ "<p>use of drug names, synonyms and brand names is supported<p>separate multiple search by semicolon</p>"; + "<p>use of drug names, synonyms and brand names is supported<p>separate multiple search by semicolon</p>";
params.placeholder = "drug, synonym, brand name"; params.placeholder = "drug, synonym, brand name";
AbstractDbPanel.call(this, params); AbstractDbPanel.call(this, params);
this.getControlElement(PanelControlElementType.SEARCH_LABEL).innerHTML = "SEARCH FOR TARGETS OF:"; this.getControlElement(PanelControlElementType.SEARCH_LABEL).innerHTML = "SEARCH FOR TARGETS OF:";
} }
DrugPanel.prototype = Object.create(AbstractDbPanel.prototype); DrugPanel.prototype = Object.create(AbstractDbPanel.prototype);
DrugPanel.prototype.constructor = DrugPanel; DrugPanel.prototype.constructor = DrugPanel;
DrugPanel.prototype.createPreamble = function(drug) { DrugPanel.prototype.createPreamble = function (drug) {
var self = this; var self = this;
var guiUtils = self.getGuiUtils(); var guiUtils = self.getGuiUtils();
var result = document.createElement("div"); var result = document.createElement("div");
...@@ -33,24 +34,24 @@ DrugPanel.prototype.createPreamble = function(drug) { ...@@ -33,24 +34,24 @@ DrugPanel.prototype.createPreamble = function(drug) {
result.appendChild(guiUtils.createArrayParamLine("Synonyms: ", drug.getSynonyms())); result.appendChild(guiUtils.createArrayParamLine("Synonyms: ", drug.getSynonyms()));
result.appendChild(guiUtils.createArrayParamLine("Brand names: ", drug.getBrandNames())); result.appendChild(guiUtils.createArrayParamLine("Brand names: ", drug.getBrandNames()));
result.appendChild(guiUtils.createParamLine("Blood brain barrier: ", drug.getBloodBrainBarrier())); result.appendChild(guiUtils.createParamLine("Blood brain barrier: ", drug.getBloodBrainBarrier()));
result.appendChild(guiUtils.createAnnotations("Sources: ", drug.getReferences())); result.appendChild(guiUtils.createAnnotations("Sources: ", drug.getReferences(), {groupAnnotations: false}));
result.appendChild(guiUtils.createNewLine()); result.appendChild(guiUtils.createNewLine());
} }
return result; return result;
}; };
DrugPanel.prototype.createTableElement = function(target, icon) { DrugPanel.prototype.createTableElement = function (target, icon) {
return this.createTargetRow(target, icon); return this.createTargetRow(target, icon);
}; };
DrugPanel.prototype.searchByQuery = function() { DrugPanel.prototype.searchByQuery = function () {
var self = this; var self = this;
var query = self.getControlElement(PanelControlElementType.SEARCH_INPUT).value; var query = self.getControlElement(PanelControlElementType.SEARCH_INPUT).value;
return self.getOverlayDb().searchByQuery(query); return self.getOverlayDb().searchByQuery(query);
}; };
DrugPanel.prototype.init = function() { DrugPanel.prototype.init = function () {
var query = ServerConnector.getSessionData().getDrugQuery(); var query = ServerConnector.getSessionData().getDrugQuery();
if (query !== undefined) { if (query !== undefined) {
return this.getOverlayDb().searchByEncodedQuery(query); return this.getOverlayDb().searchByEncodedQuery(query);
...@@ -60,7 +61,7 @@ DrugPanel.prototype.init = function() { ...@@ -60,7 +61,7 @@ DrugPanel.prototype.init = function() {
}; };
DrugPanel.prototype.destroy = function () { DrugPanel.prototype.destroy = function () {
return Promise.resolve(); return Promise.resolve();
}; };
DrugPanel.prototype.getAutocomplete = function (query) { DrugPanel.prototype.getAutocomplete = function (query) {
......
...@@ -3,7 +3,7 @@ ...@@ -3,7 +3,7 @@
/* exported logger */ /* exported logger */
var Alias = require('../../map/data/Alias'); var Alias = require('../../map/data/Alias');
var ConfigurationType= require('../../ConfigurationType'); var ConfigurationType = require('../../ConfigurationType');
var GuiConnector = require('../../GuiConnector'); var GuiConnector = require('../../GuiConnector');
var AbstractGuiElement = require('../AbstractGuiElement'); var AbstractGuiElement = require('../AbstractGuiElement');
...@@ -171,52 +171,20 @@ GuiUtils.prototype.createAnnotations = function (label, value, options) { ...@@ -171,52 +171,20 @@ GuiUtils.prototype.createAnnotations = function (label, value, options) {
return result; return result;
}; };
GuiUtils.prototype.createAnnotationList = function (annotations, options) { function createGroupContainer(inline, annotatorClass, annotatorsClassMapping, groupAnnotations) {
var showType = true; var automaticallyAnnotated = !(annotatorClass === undefined || annotatorClass === "undefined" || annotatorClass === null || annotatorClass === "");
var inline = false; // var desc = grouppedAnnotations.keys()[i];
if (options !== undefined) { var groupContainer = (inline ? document.createElement("span") : document.createElement("div"));
if (options.showType !== undefined) { var descContainer = (inline ? document.createElement("span") : document.createElement("div"));
showType = options.showType;
}
if (options.inline !== undefined) {
inline = options.inline;
}
}
var self = this;
var result = document.createElement("div");
var annotators = this.getConfiguration().getAnnotators();
var annotatorsClassMapping = {};
for (var i = 0; i < annotators.length; i++) {
annotatorsClassMapping[annotators[i].getClassName()] = annotators[i];
}
var grouppedAnnotations = {};
for (var i = 0; i < annotations.length; i++) {
var clazz = annotations[i].getAnnotatorClassName();
if (!(clazz in grouppedAnnotations)) grouppedAnnotations[clazz] = [];
grouppedAnnotations[clazz].push(annotations[i])
}
// = annotatorClasName ? annotatorsClassMapping[annotatorClasName].getName() : "Annotated by curator";
var cntAnnotations = 0;
Object.keys(grouppedAnnotations).sort().forEach(function (annotatorClass) {
// var desc = grouppedAnnotations.keys()[i];
var groupContainer = (inline ? document.createElement("span") : document.createElement("div"));
var descContainer = (inline ? document.createElement("span") : document.createElement("div"));
var annotatorName = annotatorClass ? annotatorsClassMapping[annotatorClass].getName() : "Annotated by curator";
if (groupAnnotations) {
var annotatorName = automaticallyAnnotated ? annotatorsClassMapping[annotatorClass].getName() : "Annotated by curator";
if (inline) { if (inline) {
descContainer.innerHTML = annotatorName + ': '; descContainer.innerHTML = annotatorName + ': ';
} else { } else {
descContainer.innerHTML = annotatorName; descContainer.innerHTML = annotatorName;
if (annotatorClass) { if (automaticallyAnnotated) {
var annotatorDescription = annotatorsClassMapping[annotatorClass].getDescription(); var annotatorDescription = annotatorsClassMapping[annotatorClass].getDescription();
if (annotatorDescription) { if (annotatorDescription) {
var tooltipContainer = Functions.createElement({ var tooltipContainer = Functions.createElement({
...@@ -239,6 +207,57 @@ GuiUtils.prototype.createAnnotationList = function (annotations, options) { ...@@ -239,6 +207,57 @@ GuiUtils.prototype.createAnnotationList = function (annotations, options) {
descContainer.className = "minerva-annotation-group-header"; descContainer.className = "minerva-annotation-group-header";
if (!inline) groupContainer.className = "minerva-annotation-group"; if (!inline) groupContainer.className = "minerva-annotation-group";
groupContainer.appendChild(descContainer); groupContainer.appendChild(descContainer);
}
return groupContainer;
}
GuiUtils.prototype.createAnnotationList = function (annotations, options) {
var showType = true;
var inline = false;
var groupAnnotations = true;
if (options !== undefined) {
if (options.showType !== undefined) {
showType = options.showType;
}
if (options.inline !== undefined) {
inline = options.inline;
}
if (options.groupAnnotations !== undefined) {
groupAnnotations = options.groupAnnotations;
}
}
var self = this;
var result = document.createElement("div");
var annotators = this.getConfiguration().getAnnotators();
var annotatorsClassMapping = {};
var grouppedAnnotations = {};
if (groupAnnotations) {
for (var i = 0; i < annotators.length; i++) {
annotatorsClassMapping[annotators[i].getClassName()] = annotators[i];
}
for (var i = 0; i < annotations.length; i++) {
var clazz = annotations[i].getAnnotatorClassName();
if (!(clazz in grouppedAnnotations)) grouppedAnnotations[clazz] = [];
grouppedAnnotations[clazz].push(annotations[i])
}
} else {
annotatorsClassMapping["undefined"] = {
getName: function () {
return ""
}
};
grouppedAnnotations["undefined"] = annotations;
}
// = annotatorClasName ? annotatorsClassMapping[annotatorClasName].getName() : "Annotated by curator";
var cntAnnotations = 0;
Object.keys(grouppedAnnotations).sort().forEach(function (annotatorClass) {
var groupContainer = createGroupContainer(inline, annotatorClass, annotatorsClassMapping, groupAnnotations);
if (inline) { if (inline) {
var par = document.createElement("span"); var par = document.createElement("span");
...@@ -434,7 +453,7 @@ GuiUtils.prototype.createReactionElement = function (params) { ...@@ -434,7 +453,7 @@ GuiUtils.prototype.createReactionElement = function (params) {
div.appendChild(self.createNewLine()); div.appendChild(self.createNewLine());
} }
if (self.getConfiguration().getOption(ConfigurationType.SHOW_REACTION_TYPE).getValue().toLowerCase()==="true") { if (self.getConfiguration().getOption(ConfigurationType.SHOW_REACTION_TYPE).getValue().toLowerCase() === "true") {
div.appendChild(self.createParamLine("Type: ", reaction.getType())); div.appendChild(self.createParamLine("Type: ", reaction.getType()));
} }
div.appendChild(self.createParamLine("Symbol: ", reaction.getSymbol())); div.appendChild(self.createParamLine("Symbol: ", reaction.getSymbol()));
......
...@@ -201,4 +201,21 @@ describe('GuiUtils', function () { ...@@ -201,4 +201,21 @@ describe('GuiUtils', function () {
button.onclick(); button.onclick();
$(".ui-dialog-titlebar-close").click(); $(".ui-dialog-titlebar-close").click();
}); });
describe('createAnnotationList', function () {
it('default', function () {
var guiUtils = new GuiUtils(helper.getConfiguration());
var annotation = helper.createAnnotation();
var element = guiUtils.createAnnotationList([annotation]);
assert.ok(element.innerHTML.indexOf("Annotated by curator") >= 0);
});
it('without annotator type separation', function () {
var guiUtils = new GuiUtils(helper.getConfiguration());
var annotation = helper.createAnnotation();
var element = guiUtils.createAnnotationList([annotation], {groupAnnotations: false});
assert.equal(element.innerHTML.indexOf("Annotated by curator"), -1, "annotator type description shouldn't be visible");
});
});
}); });
...@@ -6,6 +6,7 @@ var logger = require('./logger'); ...@@ -6,6 +6,7 @@ var logger = require('./logger');
var Alias = require("../../main/js/map/data/Alias"); var Alias = require("../../main/js/map/data/Alias");
var AbstractCustomMap = require("../../main/js/map/AbstractCustomMap"); var AbstractCustomMap = require("../../main/js/map/AbstractCustomMap");
var Annotation = require("../../main/js/map/data/Annotation");
var ChemicalDbOverlay = require("../../main/js/map/overlay/ChemicalDbOverlay"); var ChemicalDbOverlay = require("../../main/js/map/overlay/ChemicalDbOverlay");
var Comment = require("../../main/js/map/data/Comment"); var Comment = require("../../main/js/map/data/Comment");
var CommentDbOverlay = require("../../main/js/map/overlay/CommentDbOverlay"); var CommentDbOverlay = require("../../main/js/map/overlay/CommentDbOverlay");
...@@ -465,6 +466,14 @@ Helper.prototype.triggerJqueryEvent = function (element, eventType) { ...@@ -465,6 +466,14 @@ Helper.prototype.triggerJqueryEvent = function (element, eventType) {
return Promise.all(promises); return Promise.all(promises);
}; };
Helper.prototype.createAnnotation = function () {
return new Annotation({
resource: "10.1038%2Fnpjsba.2016.20",
link: "http://doi.org/10.1038%2Fnpjsba.2016.20",
id: this.idCounter++,
type: "DOI"
});
};
Helper.EPSILON = 1e-6; Helper.EPSILON = 1e-6;
......
...@@ -124,9 +124,7 @@ describe('AliasInfoWindow', function () { ...@@ -124,9 +124,7 @@ describe('AliasInfoWindow', function () {
}).then(function (data) { }).then(function (data) {
var overlayDiv = aliasWindow.createOverlayInfoDiv(oc, data); var overlayDiv = aliasWindow.createOverlayInfoDiv(oc, data);
assert.ok(functions.isDomElement(overlayDiv)); assert.ok(functions.isDomElement(overlayDiv));
logger.debug(overlayDiv.innerHTML);
assert.ok(overlayDiv.innerHTML.indexOf('NADH') >= 0); assert.ok(overlayDiv.innerHTML.indexOf('NADH') >= 0);
}); });
}); });
......
0% Loading or .
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment