From b3e40bfcd8ffd3ef04013f916032d492f803f62d Mon Sep 17 00:00:00 2001 From: Piotr Gawron <piotr.gawron@uni.lu> Date: Fri, 29 Jun 2018 12:44:28 +0200 Subject: [PATCH] list of genomes provided in admin panel --- frontend-js/src/main/js/Admin.js | 9 +- frontend-js/src/main/js/ServerConnector.js | 40 ++++ .../src/main/js/gui/AbstractGuiElement.js | 47 ++++- frontend-js/src/main/js/gui/Panel.js | 30 +-- .../main/js/gui/admin/AbstractAdminPanel.js | 44 ++++- .../src/main/js/gui/admin/GenomeAdminPanel.js | 186 ++++++++++++++++++ .../src/main/js/map/data/PrivilegeType.js | 3 +- .../src/main/js/map/data/ReferenceGenome.js | 133 ++++++++++++- .../js/gui/admin/GenomeAdminPanel-test.js | 31 +++ .../test/js/map/data/ReferenceGenome-test.js | 25 ++- .../apiCalls/genomics/token=ADMIN_TOKEN_ID& | 1 + .../api/genomics/ReferenceGenomeRestImpl.java | 2 + 12 files changed, 510 insertions(+), 41 deletions(-) create mode 100644 frontend-js/src/main/js/gui/admin/GenomeAdminPanel.js create mode 100644 frontend-js/src/test/js/gui/admin/GenomeAdminPanel-test.js create mode 100644 frontend-js/testFiles/apiCalls/genomics/token=ADMIN_TOKEN_ID& diff --git a/frontend-js/src/main/js/Admin.js b/frontend-js/src/main/js/Admin.js index 8d779cee92..db99eea31a 100644 --- a/frontend-js/src/main/js/Admin.js +++ b/frontend-js/src/main/js/Admin.js @@ -9,6 +9,7 @@ var GuiUtils = require('./gui/leftPanel/GuiUtils'); var ObjectWithListeners = require('./ObjectWithListeners'); var ConfigurationAdminPanel = require('./gui/admin/ConfigurationAdminPanel'); +var GenomeAdminPanel = require('./gui/admin/GenomeAdminPanel'); var MapsAdminPanel = require('./gui/admin/MapsAdminPanel'); var UsersAdminPanel = require('./gui/admin/UsersAdminPanel'); @@ -19,9 +20,8 @@ var Functions = require('./Functions'); /** * Default constructor. * - * @param options - * CustomMapOptions object representing all parameters needed for map - * creation + * @param {CustomMapOptions} options + * object representing all parameters needed for map creation */ function Admin(options) { var self = this; @@ -55,6 +55,9 @@ Admin.prototype._createGui = function () { }, { name: "CONFIGURATION", panelClass: ConfigurationAdminPanel + }, { + name: "GENOMES", + panelClass: GenomeAdminPanel }]; var tabDiv = Functions.createElement({ diff --git a/frontend-js/src/main/js/ServerConnector.js b/frontend-js/src/main/js/ServerConnector.js index dff12e596f..b75bca3bcd 100644 --- a/frontend-js/src/main/js/ServerConnector.js +++ b/frontend-js/src/main/js/ServerConnector.js @@ -307,6 +307,15 @@ ServerConnector.createGetParams = function (params, prefix) { return result; }; +/** + * + * @param {Object} paramObj + * @param {string} paramObj.type + * @param {string} [paramObj.url] + * @param {Object} [paramObj.params] + * + * @returns {string} + */ ServerConnector.getApiUrl = function (paramObj) { var type = paramObj.type; var params = this.createGetParams(paramObj.params); @@ -718,6 +727,21 @@ ServerConnector.getUsersUrl = function (queryParams, filterParams) { }); }; +/** + * + * @param {Object} queryParams + * @param {Object} filterParams + * + * @returns {string} + */ +ServerConnector.getReferenceGenomesUrl = function (queryParams, filterParams) { + return this.getApiUrl({ + type: "genomics/", + params: filterParams + }); +}; + + ServerConnector.getUserUrl = function (queryParams, filterParams) { return this.getApiUrl({ url: this.getUsersUrl() + queryParams.login, @@ -1160,9 +1184,25 @@ ServerConnector.getUsers = function (forceRefresh) { return self.processNetworkError(error); }); } +}; +ServerConnector.getReferenceGenomes = function () { + var self = this; + + return self.sendGetRequest(self.getReferenceGenomesUrl()).then(function (content) { + var result = []; + var parsedData = JSON.parse(content); + for (var i = 0; i < parsedData.length; i++) { + var genome = new ReferenceGenome(parsedData[i]); + result.push(genome) + } + return result; + }).catch(function (error) { + return self.processNetworkError(error); + }); }; + ServerConnector.getOverlays = function (params) { var self = this; if (params === undefined) { diff --git a/frontend-js/src/main/js/gui/AbstractGuiElement.js b/frontend-js/src/main/js/gui/AbstractGuiElement.js index 3ba1e7fdc6..529a523dcf 100644 --- a/frontend-js/src/main/js/gui/AbstractGuiElement.js +++ b/frontend-js/src/main/js/gui/AbstractGuiElement.js @@ -10,7 +10,13 @@ var logger = require('../logger'); /** * - * @param params + * @param {Object} params + * @param {HTMLElement} params.element + * @param {CustomMap} params.customMap + * @param {Configuration} params.configuration + * @param {Project} [params.project] + * @param {ServerConnector} [params.serverConnector] + * * @constructor * * @extends ObjectWithListeners @@ -24,6 +30,7 @@ function AbstractGuiElement(params) { self.setProject(params.project); self.setMap(params.customMap); self.setConfiguration(params.configuration); + self.setServerConnector(params.serverConnector); self._controlElements = []; @@ -91,6 +98,11 @@ AbstractGuiElement.prototype.getProject = function () { }; +/** + * + * @param {string} type + * @param {HTMLElement} element + */ AbstractGuiElement.prototype.setControlElement = function (type, element) { if (type === null || type === undefined) { throw new Error("Unknown control element type"); @@ -102,6 +114,11 @@ AbstractGuiElement.prototype.setControlElement = function (type, element) { this._controlElements[type] = element; }; +/** + * + * @param {string} type + * @returns {HTMLElement} + */ AbstractGuiElement.prototype.getControlElement = function (type) { if (type === null || type === undefined) { throw new Error("Unknown control element type"); @@ -113,11 +130,19 @@ AbstractGuiElement.prototype.getControlElement = function (type) { return this._controlElements[type]; }; +/** + * + * @param {string} url + */ AbstractGuiElement.prototype.downloadFile = function (url) { this._downloadFile = url; window.open(url, '_blank'); }; +/** + * + * @returns {string} + */ AbstractGuiElement.prototype.getLastDownloadUrl = function () { return this._downloadFile; }; @@ -138,6 +163,26 @@ AbstractGuiElement.prototype.getConfiguration = function () { return this._configuration; }; +/** + * + * @param {ServerConnector} serverConnector + */ +AbstractGuiElement.prototype.setServerConnector = function (serverConnector) { + this._serverConnector = serverConnector; +}; + +/** + * + * @returns {ServerConnector} + */ +AbstractGuiElement.prototype.getServerConnector = function () { + if (this._serverConnector !== undefined) { + return this._serverConnector; + } else { + return this.getMap().getServerConnector(); + } +}; + /** * * @param {string} [params.content] diff --git a/frontend-js/src/main/js/gui/Panel.js b/frontend-js/src/main/js/gui/Panel.js index 3a931f2420..75ebb3459b 100644 --- a/frontend-js/src/main/js/gui/Panel.js +++ b/frontend-js/src/main/js/gui/Panel.js @@ -20,7 +20,6 @@ var xss = require('xss'); * @param {string} params.panelName * @param {boolean} params.scrollable * @param {string} [params.helpTip] - * @param {ServerConnector} [params.serverConnector] * @param params.parent * * @constructor @@ -33,7 +32,6 @@ function Panel(params) { var self = this; self.setParent(params.parent); - self.setServerConnector(params.serverConnector); var configuration = params.configuration; if (params.configuration === undefined) { configuration = self.getMap().getConfiguration(); @@ -239,10 +237,18 @@ Panel.prototype.getParent = function () { return this._parent; }; +/** + * + * @param {GuiUtils} guiUtils + */ Panel.prototype.setGuiUtils = function (guiUtils) { this._guiUtils = guiUtils; }; +/** + * + * @returns {GuiUtils} + */ Panel.prototype.getGuiUtils = function () { return this._guiUtils; }; @@ -300,24 +306,4 @@ Panel.prototype.destroy = function () { } }; -/** - * - * @returns {ServerConnector} - */ -Panel.prototype.getServerConnector = function () { - if (this._serverConnector !== undefined) { - return this._serverConnector; - } - return this.getMap().getServerConnector(); -}; - -/** - * - * @param {ServerConnector} serverConnector - */ -Panel.prototype.setServerConnector = function (serverConnector) { - this._serverConnector = serverConnector; -}; - - module.exports = Panel; diff --git a/frontend-js/src/main/js/gui/admin/AbstractAdminPanel.js b/frontend-js/src/main/js/gui/admin/AbstractAdminPanel.js index 58a37304c3..ba0ddf3b12 100644 --- a/frontend-js/src/main/js/gui/admin/AbstractAdminPanel.js +++ b/frontend-js/src/main/js/gui/admin/AbstractAdminPanel.js @@ -9,15 +9,29 @@ var GuiConnector = require('../../GuiConnector'); // noinspection JSUnusedLocalSymbols var logger = require('../../logger'); +// noinspection JSUnusedLocalSymbols var Functions = require('../../Functions'); var Promise = require("bluebird"); +/** + * + * @param {Configuration} [params.configuration] + * @param {HTMLElement} params.element + * @param {Project} params.project + * @param {CustomMap} params.customMap + * @param {string} params.panelName + * @param {string} [params.helpTip] + * @param params.parent + * + * @constructor + */ function AbstractAdminPanel(params) { - params.scrollable = true; + params["scrollable"] = true; Panel.call(this, params); this._createHeader(params.name); this._initPromises = []; + this._eventBinds = []; } AbstractAdminPanel.prototype = Object.create(Panel.prototype); @@ -30,17 +44,31 @@ AbstractAdminPanel.prototype._createHeader = function (name) { // })); }; +/** + * + * @returns {Promise} + */ AbstractAdminPanel.prototype.init = function () { return Promise.all(this._initPromises); }; +/** + * + * @param {Object} params + * @param {string} params.event + * @param {jQuery} params.jQueryObject + * @param {string} params.preferenceName + * @param {Object} params.defaultValue + * @param {function} params.getter + * @param {function} params.setter + */ AbstractAdminPanel.prototype.bindUserGuiPreference = function (params) { - params.jQueryObject.on(params.event, function () { return ServerConnector.getLoggedUser().then(function (user) { var oldValue = user.getPreferences().getGuiPreference(params.preferenceName, params.defaultValue); var newValue = params.getter(); if (oldValue !== newValue) { + console.log(oldValue, newValue); user.getPreferences().setGuiPreference(params.preferenceName, newValue); var data = new UserPreferences(); @@ -53,6 +81,18 @@ AbstractAdminPanel.prototype.bindUserGuiPreference = function (params) { var value = user.getPreferences().getGuiPreference(params.preferenceName, params.defaultValue); return params.setter(value); })); + + this._eventBinds.push(params); +}; + +/** + * + * @returns {Promise} + */ +AbstractAdminPanel.prototype.destroy = function () { + return Promise.each(this._eventBinds, function (params) { + params.jQueryObject.off(params.event); + }); }; diff --git a/frontend-js/src/main/js/gui/admin/GenomeAdminPanel.js b/frontend-js/src/main/js/gui/admin/GenomeAdminPanel.js new file mode 100644 index 0000000000..bfb7483b08 --- /dev/null +++ b/frontend-js/src/main/js/gui/admin/GenomeAdminPanel.js @@ -0,0 +1,186 @@ +"use strict"; + +/* exported Promise*/ + +var AbstractAdminPanel = require('./AbstractAdminPanel'); + +var Functions = require('../../Functions'); +var PrivilegeType = require('../../map/data/PrivilegeType'); + +// noinspection JSUnusedLocalSymbols +var logger = require('../../logger'); + +/** + * + * @param {Configuration} params.configuration + * @param {HTMLElement} params.element + * + * @constructor + */ +function GenomeAdminPanel(params) { + params["panelName"] = "genomes"; + AbstractAdminPanel.call(this, params); + + var self = this; + $(self.getElement()).addClass("minerva-genome-tab"); + + self._createGui(); +} + +GenomeAdminPanel.prototype = Object.create(AbstractAdminPanel.prototype); +GenomeAdminPanel.prototype.constructor = GenomeAdminPanel; + +/** + * + * @private + */ +GenomeAdminPanel.prototype._createGui = function () { + var self = this; + var genomeDiv = Functions.createElement({ + type: "div" + }); + self.getElement().appendChild(genomeDiv); + + genomeDiv.appendChild(Functions.createElement({ + type: "h3", + content: 'Configured reference genomes:' + })); + + var genomesTable = Functions.createElement({ + type: "table", + name: "genomeTable", + className: "display", + style: "width:100%" + }); + genomeDiv.appendChild(genomesTable); + + // noinspection JSUnusedGlobalSymbols + $(genomesTable).DataTable({ + columns: [{ + title: 'Type' + }, { + title: 'Organism' + }, { + title: 'Version' + }, { + title: 'Progress' + }, { + title: 'Source' + }, { + title: 'Edit', + orderable: false + }, { + title: 'Remove', + orderable: false + }], + order: [[1, "asc"]] + }); + self.bindUserGuiPreference({ + jQueryObject: $(genomesTable), + event: 'length.dt', + preferenceName: 'admin-genome-datatable-length', + defaultValue: '10', + getter: function () { + return $(genomesTable).DataTable().page.len() + ''; + }, + setter: function (value) { + return $(genomesTable).DataTable().page.len(value).draw(); + } + }); + +}; + +/** + * + * @returns {Promise} + */ +GenomeAdminPanel.prototype.init = function () { + var self = this; + return AbstractAdminPanel.prototype.init.call(this).then(function () { + return self.getServerConnector().getLoggedUser(); + }).then(function (user) { + if (user.hasPrivilege(self.getConfiguration().getPrivilegeType(PrivilegeType.MANAGE_GENOMES))) { + return self.getServerConnector().getReferenceGenomes().then(function (referenceGenomes) { + return self.setReferenceGenomes(referenceGenomes); + }); + } else { + self.disablePanel("You have no privilege to manage genomes"); + } + }); +}; + +/** + * + * @param {ReferenceGenome[]} referenceGenomes + * + * @returns {Promise} + * + */ +GenomeAdminPanel.prototype.setReferenceGenomes = function (referenceGenomes) { + var self = this; + + return self.getServerConnector().getLoggedUser().then(function (user) { + + var dataTable = $("[name='genomeTable']", self.getElement()).DataTable(); + var data = []; + var page = dataTable.page(); + + for (var i = 0; i < referenceGenomes.length; i++) { + var genome = referenceGenomes[i]; + var rowData = self.genomeToTableRow(genome, user); + data.push(rowData); + } + //it should be simplified, but I couldn't make it work + dataTable.clear().rows.add(data).page(page).draw(false).page(page).draw(false); + }) +}; + +/** + * + * @param {ReferenceGenome} genome + * @param {User} user + * @returns {Array} + */ +GenomeAdminPanel.prototype.genomeToTableRow = function (genome, user) { + var self = this; + var row = []; + + row[0] = genome.getType(); + row[1] = self.getGuiUtils().createAnnotationLink(genome.getOrganism()).outerHTML; + row[2] = genome.getVersion(); + if (genome.getDownloadProgress() === 100) { + if (genome.getLocalUrl() !== undefined) { + row[3] = "READY"; + } else { + row[3] = "ERROR"; + } + } else { + row[3] = genome.getDownloadProgress(); + } + row[4] = genome.getSourceUrl(); + + var disabled = " disabled "; + if (user.hasPrivilege(self.getConfiguration().getPrivilegeType(PrivilegeType.MANAGE_GENOMES))) { + disabled = ""; + } + row[5] = "<button name='showEditDialog' data='" + genome.getId() + "'" + disabled + "><i class='fa fa-edit' style='font-size:17px'></i></button>"; + row[6] = "<button name='removeGenome' data='" + genome.getId() + "'" + disabled + "><i class='fa fa-trash-o' style='font-size:17px'></button>"; + + return row; +}; + + +/** + * + * @returns {Promise} + */ +GenomeAdminPanel.prototype.destroy = function () { + var self = this; + var table = $("[name='genomeTable']", self.getElement())[0]; + if ($.fn.DataTable.isDataTable(table)) { + $(table).DataTable().destroy(); + } + return AbstractAdminPanel.prototype.destroy.call(self); +}; + +module.exports = GenomeAdminPanel; diff --git a/frontend-js/src/main/js/map/data/PrivilegeType.js b/frontend-js/src/main/js/map/data/PrivilegeType.js index 54e528f121..45af426283 100644 --- a/frontend-js/src/main/js/map/data/PrivilegeType.js +++ b/frontend-js/src/main/js/map/data/PrivilegeType.js @@ -17,8 +17,9 @@ PrivilegeType.prototype = Object.create(ObjectWithListeners.prototype); PrivilegeType.prototype.constructor = PrivilegeType; PrivilegeType.CONFIGURATION_MANAGE = 'CONFIGURATION_MANAGE'; -PrivilegeType.USER_MANAGEMENT = 'USER_MANAGEMENT'; +PrivilegeType.MANAGE_GENOMES = 'MANAGE_GENOMES'; PrivilegeType.PROJECT_MANAGEMENT = 'PROJECT_MANAGEMENT'; +PrivilegeType.USER_MANAGEMENT = 'USER_MANAGEMENT'; PrivilegeType.prototype.setObjectType = function (objectType) { this._objectType = objectType; diff --git a/frontend-js/src/main/js/map/data/ReferenceGenome.js b/frontend-js/src/main/js/map/data/ReferenceGenome.js index 38756a6bd0..f484559a1b 100644 --- a/frontend-js/src/main/js/map/data/ReferenceGenome.js +++ b/frontend-js/src/main/js/map/data/ReferenceGenome.js @@ -1,16 +1,22 @@ "use strict"; +var Annotation = require('./Annotation'); var ReferenceGenomeGeneMapping = require('./ReferenceGenomeGeneMapping'); function ReferenceGenome(javaObject) { if (javaObject !== undefined && javaObject !== null) { + this.setId(javaObject.idObject); this.setType(javaObject.type); this.setVersion(javaObject.version); + this.setLocalUrl(javaObject.localUrl); + this.setSourceUrl(javaObject.sourceUrl); if (javaObject.localUrl !== undefined) { this.setUrl(javaObject.localUrl); } else { this.setUrl(javaObject.sourceUrl); } + this.setOrganism(new Annotation(javaObject.organism)); + this.setDownloadProgress(javaObject.downloadProgress); this._geneMapping = []; if (javaObject.geneMapping !== undefined) { for (var i = 0; i < javaObject.geneMapping.length; i++) { @@ -20,31 +26,144 @@ function ReferenceGenome(javaObject) { } } -ReferenceGenome.prototype.setType = function(type) { +/** + * + * @param {string} type + */ +ReferenceGenome.prototype.setType = function (type) { this._type = type; }; -ReferenceGenome.prototype.getType = function() { +/** + * + * @returns {string} + */ +ReferenceGenome.prototype.getType = function () { return this._type; }; -ReferenceGenome.prototype.setUrl = function(url) { +/** + * + * @param {number} id + */ +ReferenceGenome.prototype.setId = function (id) { + this._id = id; +}; + +/** + * + * @returns {number} + */ +ReferenceGenome.prototype.getId = function () { + return this._id; +}; + +/** + * + * @returns {number} + */ +ReferenceGenome.prototype.getDownloadProgress = function () { + return this._downloadProgress; +}; + +/** + * + * @param {number} downloadProgress + */ +ReferenceGenome.prototype.setDownloadProgress = function (downloadProgress) { + this._downloadProgress = downloadProgress; +}; + + +/** + * + * @param {Annotation} organism + */ +ReferenceGenome.prototype.setOrganism = function (organism) { + this._organism = organism; +}; + +/** + * + * @returns {Annotation} + */ +ReferenceGenome.prototype.getOrganism = function () { + return this._organism; +}; + +/** + * + * @param {string} url + */ +ReferenceGenome.prototype.setUrl = function (url) { this._url = url; }; -ReferenceGenome.prototype.getUrl = function() { +/** + * + * @returns {string} + */ +ReferenceGenome.prototype.getUrl = function () { return this._url; }; -ReferenceGenome.prototype.setVersion = function(version) { +/** + * + * @returns {string} + */ +ReferenceGenome.prototype.getSourceUrl = function () { + return this._sourceUrl; +}; + +/** + * + * @param {string} sourceUrl + */ +ReferenceGenome.prototype.setSourceUrl = function (sourceUrl) { + this._sourceUrl = sourceUrl; +}; + +/** + * + * @returns {string} + */ +ReferenceGenome.prototype.getLocalUrl = function () { + return this._localUrl; +}; + +/** + * + * @param {string} localUrl + */ +ReferenceGenome.prototype.setLocalUrl = function (localUrl) { + if (localUrl === null) { + this._localUrl = undefined; + } else { + this._localUrl = localUrl; + } +}; + +/** + * + * @param {string} version + */ +ReferenceGenome.prototype.setVersion = function (version) { this._version = version; }; -ReferenceGenome.prototype.getVersion = function() { +/** + * + * @returns {string} + */ +ReferenceGenome.prototype.getVersion = function () { return this._version; }; -ReferenceGenome.prototype.getGeneMappings = function() { +/** + * + * @returns {ReferenceGenomeGeneMapping[]} + */ +ReferenceGenome.prototype.getGeneMappings = function () { return this._geneMapping; }; diff --git a/frontend-js/src/test/js/gui/admin/GenomeAdminPanel-test.js b/frontend-js/src/test/js/gui/admin/GenomeAdminPanel-test.js new file mode 100644 index 0000000000..a1a4567a41 --- /dev/null +++ b/frontend-js/src/test/js/gui/admin/GenomeAdminPanel-test.js @@ -0,0 +1,31 @@ +"use strict"; + +require("../../mocha-config"); + +var GenomeAdminPanel = require('../../../../main/js/gui/admin/GenomeAdminPanel'); +var ConfigurationType = require('../../../../main/js/ConfigurationType'); +var ServerConnector = require('../../ServerConnector-mock'); +var logger = require('../../logger'); + +var chai = require('chai'); +var assert = chai.assert; + +describe('GenomeAdminPanel', function () { + describe('init', function () { + it('admin', function () { + helper.loginAsAdmin(); + var mapTab; + return ServerConnector.getConfiguration().then(function (configuration) { + mapTab = new GenomeAdminPanel({ + element: testDiv, + configuration: configuration, + serverConnector: ServerConnector + }); + return mapTab.init(); + }).then(function () { + assert.equal(0, logger.getWarnings().length); + return mapTab.destroy(); + }); + }); + }); +}); diff --git a/frontend-js/src/test/js/map/data/ReferenceGenome-test.js b/frontend-js/src/test/js/map/data/ReferenceGenome-test.js index b001486d62..204ff22eed 100644 --- a/frontend-js/src/test/js/map/data/ReferenceGenome-test.js +++ b/frontend-js/src/test/js/map/data/ReferenceGenome-test.js @@ -10,7 +10,16 @@ describe('ReferenceGenome', function () { type: "TYP", version: "v3", localUrl: "http://google.pl/", - sourceUrl: "http://google.pl/" + sourceUrl: "http://google.pl/", + organism: { + "annotatorClassName": "", + "descriptionByType": "", + "descriptionByTypeRelation": "", + "id": 517528, + "link": "http://www.ncbi.nlm.nih.gov/Taxonomy/Browser/wwwtax.cgi?mode=Info&id=8822", + "resource": "8822", + "type": "TAXONOMY" + } }; var genome = new ReferenceGenome(data); assert.equal(genome.getType(), data.type); @@ -21,7 +30,16 @@ describe('ReferenceGenome', function () { it("simple", function () { var data = { sourceUrl: "http://google.pl/", - geneMapping: [{}] + geneMapping: [{}], + organism: { + "annotatorClassName": "", + "descriptionByType": "", + "descriptionByTypeRelation": "", + "id": 517528, + "link": "http://www.ncbi.nlm.nih.gov/Taxonomy/Browser/wwwtax.cgi?mode=Info&id=8822", + "resource": "8822", + "type": "TAXONOMY" + } }; var genome = new ReferenceGenome(data); assert.equal(genome.getUrl(), data.sourceUrl); @@ -37,8 +55,5 @@ describe('ReferenceGenome', function () { var genome = new ReferenceGenome(null); assert.ok(genome); }); - }); - - }); diff --git a/frontend-js/testFiles/apiCalls/genomics/token=ADMIN_TOKEN_ID& b/frontend-js/testFiles/apiCalls/genomics/token=ADMIN_TOKEN_ID& new file mode 100644 index 0000000000..e6582c8cbf --- /dev/null +++ b/frontend-js/testFiles/apiCalls/genomics/token=ADMIN_TOKEN_ID& @@ -0,0 +1 @@ +[{"downloadProgress":100.0,"geneMapping":[],"idObject":43,"localUrl":null,"organism":{"annotatorClassName":"","descriptionByType":"","descriptionByTypeRelation":"","id":517528,"link":"http://www.ncbi.nlm.nih.gov/Taxonomy/Browser/wwwtax.cgi?mode=Info&id=8822","resource":"8822","type":"TAXONOMY"},"sourceUrl":"ftp://hgdownload.cse.ucsc.edu/goldenPath/aptMan1/bigZips/aptMan1.2bit","type":"UCSC","version":"aptMan1"},{"downloadProgress":100.0,"geneMapping":[{"downloadProgress":100.0,"localUrl":null,"name":"refGene","sourceUrl":"http://pg-sandbox.uni.lu/data/refGene.txt.bb"}],"idObject":154,"localUrl":null,"organism":{"annotatorClassName":"","descriptionByType":"","descriptionByTypeRelation":"","id":523719,"link":"http://www.ncbi.nlm.nih.gov/Taxonomy/Browser/wwwtax.cgi?mode=Info&id=9606","resource":"9606","type":"TAXONOMY"},"sourceUrl":"ftp://hgdownload.cse.ucsc.edu/goldenPath/hg19/bigZips/hg19.2bit","type":"UCSC","version":"hg19"},{"downloadProgress":100.0,"geneMapping":[],"idObject":1563,"localUrl":"../minerva-big//5280/hg38.2bit","organism":{"annotatorClassName":"","descriptionByType":"","descriptionByTypeRelation":"","id":927074,"link":"http://www.ncbi.nlm.nih.gov/Taxonomy/Browser/wwwtax.cgi?mode=Info&id=9606","resource":"9606","type":"TAXONOMY"},"sourceUrl":"ftp://hgdownload.cse.ucsc.edu/goldenPath/hg38/bigZips/hg38.2bit","type":"UCSC","version":"hg38"}] \ No newline at end of file diff --git a/rest-api/src/main/java/lcsb/mapviewer/api/genomics/ReferenceGenomeRestImpl.java b/rest-api/src/main/java/lcsb/mapviewer/api/genomics/ReferenceGenomeRestImpl.java index b8be215211..a47b01f80e 100644 --- a/rest-api/src/main/java/lcsb/mapviewer/api/genomics/ReferenceGenomeRestImpl.java +++ b/rest-api/src/main/java/lcsb/mapviewer/api/genomics/ReferenceGenomeRestImpl.java @@ -70,9 +70,11 @@ public class ReferenceGenomeRestImpl extends BaseRestImpl { Map<String, Object> result = new TreeMap<>(); result.put("organism", super.createAnnotation(genome.getOrganism())); result.put("version", genome.getVersion()); + result.put("type", genome.getType()); result.put("downloadProgress", genome.getDownloadProgress()); result.put("sourceUrl", genome.getSourceUrl()); result.put("localUrl", getLocalUrl(genome.getSourceUrl())); + result.put("idObject", genome.getId()); result.put("geneMapping", geneMappingToMaps(genome.getGeneMapping())); return result; -- GitLab