diff --git a/frontend-js/src/main/css/global.css b/frontend-js/src/main/css/global.css index 159e6a4ecf9a6a29598e458e0fc31d99810774a9..bdef370318515c42e5ae8d480b61555aa5872348 100644 --- a/frontend-js/src/main/css/global.css +++ b/frontend-js/src/main/css/global.css @@ -510,7 +510,8 @@ h1 { .minerva-projects-tab .minerva-menu-row button, .minerva-edit-project-dialog .minerva-menu-row button, -.minerva-users-tab .minerva-menu-row button { +.minerva-users-tab .minerva-menu-row button, +.minerva-genome-tab .minerva-menu-row button { margin: 5px; } diff --git a/frontend-js/src/main/js/gui/admin/GenomeAdminPanel.js b/frontend-js/src/main/js/gui/admin/GenomeAdminPanel.js index fc79970c50ed136f672ff0eb3c16c0f4c99176b6..7abf854ec353de6035bb7ca3caf24739982c2efd 100644 --- a/frontend-js/src/main/js/gui/admin/GenomeAdminPanel.js +++ b/frontend-js/src/main/js/gui/admin/GenomeAdminPanel.js @@ -44,6 +44,8 @@ GenomeAdminPanel.prototype._createGui = function () { }); self.getElement().appendChild(genomeDiv); + genomeDiv.appendChild(self._createMenuRow()); + var genomesTable = Functions.createElement({ type: "table", name: "genomeTable", @@ -104,6 +106,44 @@ GenomeAdminPanel.prototype._createGui = function () { return self.showEditDialog(parseInt($(button).attr("data"))).catch(GuiConnector.alert); }); + genomeDiv.appendChild(self._createMenuRow()); + +}; + +/** + * + * @returns {HTMLElement} + * @private + */ +GenomeAdminPanel.prototype._createMenuRow = function () { + var self = this; + var menuRow = Functions.createElement({ + type: "div", + className: "minerva-menu-row", + style: "display:table-row; margin:10px" + }); + + var addProjectButton = Functions.createElement({ + type: "button", + name: "addGenome", + content: '<span class="ui-icon ui-icon-circle-plus"></span> ADD GENOME', + onclick: function () { + return self.onAddClicked().catch(GuiConnector.alert); + }, + xss: false + }); + var refreshButton = Functions.createElement({ + type: "button", + name: "refreshGenomes", + content: '<span class="ui-icon ui-icon-refresh"></span> REFRESH', + onclick: function () { + return self.onRefreshClicked().catch(GuiConnector.alert); + }, + xss: false + }); + menuRow.appendChild(addProjectButton); + menuRow.appendChild(refreshButton); + return menuRow; }; /** @@ -116,15 +156,24 @@ GenomeAdminPanel.prototype.init = 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); - }); + return self.onRefreshClicked(); } else { self.disablePanel("You have no privilege to manage genomes"); } }); }; +/** + * + * @returns {Promise} + */ +GenomeAdminPanel.prototype.onRefreshClicked = function () { + var self = this; + return self.getServerConnector().getReferenceGenomes().then(function (referenceGenomes) { + return self.setReferenceGenomes(referenceGenomes); + }); +}; + /** * * @param {ReferenceGenome[]} referenceGenomes @@ -221,7 +270,7 @@ GenomeAdminPanel.prototype.getDialog = function (genome) { serverConnector: self.getServerConnector() }); self._dialogs[id] = dialog; - if (id === "null") { + if (id === undefined) { dialog.addListener("onSave", function () { return self.onRefreshClicked(); }); @@ -256,5 +305,22 @@ GenomeAdminPanel.prototype.showEditDialog = function (id) { }); }; +/** + * + * @returns {Promise} + */ +GenomeAdminPanel.prototype.onAddClicked = function () { + var self = this; + GuiConnector.showProcessing(); + var referenceGenome = new ReferenceGenome(); + return self.getDialog(referenceGenome).then(function (dialog) { + dialog.open(); + GuiConnector.hideProcessing(); + }).catch(function (error) { + GuiConnector.hideProcessing(); + return Promise.reject(error); + }); +}; + module.exports = GenomeAdminPanel; diff --git a/frontend-js/src/test/js/gui/admin/GenomeAdminPanel-test.js b/frontend-js/src/test/js/gui/admin/GenomeAdminPanel-test.js index 0c0b1b69591f990aee296392fcbd36166d4fd0a8..3eb0ab70904372ca41b409736354bc6271f0b08e 100644 --- a/frontend-js/src/test/js/gui/admin/GenomeAdminPanel-test.js +++ b/frontend-js/src/test/js/gui/admin/GenomeAdminPanel-test.js @@ -48,6 +48,25 @@ describe('GenomeAdminPanel', function () { }); }); + it('open add genome dialog', 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); + var element = $("[name='addGenome']")[0]; + return element.onclick(); + }).then(function () { + return mapTab.destroy(); + }); + }); + it('remove genome', function () { helper.loginAsAdmin(); var mapTab; diff --git a/frontend-js/testFiles/apiCalls/genomics/taxonomies/9606/genomeTypes/UCSC/versions/hg38/token=ADMIN_TOKEN_ID& b/frontend-js/testFiles/apiCalls/genomics/taxonomies/9606/genomeTypes/UCSC/versions/hg38/token=ADMIN_TOKEN_ID& new file mode 100644 index 0000000000000000000000000000000000000000..d6e3f651ae1e7ccd4ce1a774931527624d8eeb9a --- /dev/null +++ b/frontend-js/testFiles/apiCalls/genomics/taxonomies/9606/genomeTypes/UCSC/versions/hg38/token=ADMIN_TOKEN_ID& @@ -0,0 +1 @@ +{"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/frontend-js/testFiles/apiCalls/genomics/taxonomies/9606/genomeTypes/UCSC/versions/token=ADMIN_TOKEN_ID& b/frontend-js/testFiles/apiCalls/genomics/taxonomies/9606/genomeTypes/UCSC/versions/token=ADMIN_TOKEN_ID& new file mode 100644 index 0000000000000000000000000000000000000000..f885fbf47775e1a6cf8962609b34bb3a075acb1f --- /dev/null +++ b/frontend-js/testFiles/apiCalls/genomics/taxonomies/9606/genomeTypes/UCSC/versions/token=ADMIN_TOKEN_ID& @@ -0,0 +1 @@ +[{"version":"hg38"},{"version":"hg24may2000"},{"version":"hg19"},{"version":"hg18"},{"version":"hg17"},{"version":"hg16"},{"version":"hg15june2000"},{"version":"hg13"},{"version":"hg12"},{"version":"hg11"},{"version":"hg10"},{"version":"10april2003"},{"version":"hg8"},{"version":"hg7"},{"version":"hg6"},{"version":"hg5"},{"version":"hg4"}] \ No newline at end of file diff --git a/frontend-js/testFiles/apiCalls/genomics/taxonomies/9606/genomeTypes/token=ADMIN_TOKEN_ID& b/frontend-js/testFiles/apiCalls/genomics/taxonomies/9606/genomeTypes/token=ADMIN_TOKEN_ID& new file mode 100644 index 0000000000000000000000000000000000000000..239f1b00f1ba0895c5aaf49f1da4478b95881d7f --- /dev/null +++ b/frontend-js/testFiles/apiCalls/genomics/taxonomies/9606/genomeTypes/token=ADMIN_TOKEN_ID& @@ -0,0 +1 @@ +[{"type":"UCSC"}] \ No newline at end of file