From 8a862e8aa11633d2a21e8f075e9ad264da2af5b9 Mon Sep 17 00:00:00 2001 From: Piotr Gawron <piotr.gawron@uni.lu> Date: Thu, 31 Jan 2019 11:36:23 +0100 Subject: [PATCH] filtering by submap added --- frontend-js/src/main/js/ServerConnector.js | 12 ++++- .../js/gui/leftPanel/PublicationListDialog.js | 52 +++++++++++++++---- 2 files changed, 53 insertions(+), 11 deletions(-) diff --git a/frontend-js/src/main/js/ServerConnector.js b/frontend-js/src/main/js/ServerConnector.js index 4fb3598f50..d048676ae1 100644 --- a/frontend-js/src/main/js/ServerConnector.js +++ b/frontend-js/src/main/js/ServerConnector.js @@ -770,6 +770,14 @@ ServerConnector.pointToString = function (point) { return point.x.toFixed(2) + "," + point.y.toFixed(2); }; +/** + * + * @param {Object} queryParams + * @param {string} queryParams.projectId + * @param {number} [queryParams.modelId] + * @param {number} [queryParams.overlayId] + * @return {string} + */ ServerConnector.getModelsUrl = function (queryParams) { var modelId = this.getIdOrAsterisk(queryParams.modelId); var overlayId = queryParams.overlayId; @@ -2348,7 +2356,9 @@ ServerConnector.getPublications = function (params) { params = {}; } - var queryParams = {}; + var queryParams = { + modelId: params.modelId + }; var filterParams = { start: params.start, length: params.length, diff --git a/frontend-js/src/main/js/gui/leftPanel/PublicationListDialog.js b/frontend-js/src/main/js/gui/leftPanel/PublicationListDialog.js index 7bd867414b..3535cb44bd 100644 --- a/frontend-js/src/main/js/gui/leftPanel/PublicationListDialog.js +++ b/frontend-js/src/main/js/gui/leftPanel/PublicationListDialog.js @@ -31,6 +31,11 @@ function PublicationListDialog(params) { AbstractGuiElement.call(this, params); var self = this; self.createPublicationListDialogGui(); + + $(self.getElement()).on("change", ".minerva-submap-filter", function () { + $(self.tableElement).DataTable().ajax.reload(); + }); + } PublicationListDialog.prototype = Object.create(AbstractGuiElement.prototype); @@ -41,6 +46,7 @@ PublicationListDialog.prototype.constructor = PublicationListDialog; */ PublicationListDialog.prototype.createPublicationListDialogGui = function () { var self = this; + var submapFilterString = self.createSubmapFilter(); var head = Functions.createElement({ type: "thead", content: "<tr>" + "<th>Pubmed ID</th>" + @@ -49,9 +55,11 @@ PublicationListDialog.prototype.createPublicationListDialogGui = function () { "<th>Journal</th>" + "<th>Year</th>" + "<th>Elements on map</th>" + - "<th>Submaps</th>" + - "</tr>" + "<th>Submaps" + submapFilterString + "</th>" + + "</tr>", + xss: false }); + var body = Functions.createElement({ type: "tbody" }); @@ -82,7 +90,8 @@ PublicationListDialog.prototype._dataTableAjaxCall = function (data, callback) { length: data.length, sortColumn: self.getColumnsDefinition()[data.order[0].column].name, sortOrder: data.order[0].dir, - search: data.search.value + search: data.search.value, + modelId: self.getSubmapFilterValue() }).then(function (publicationList) { var out = []; var allElements = []; @@ -187,7 +196,8 @@ PublicationListDialog.prototype.show = function () { length: data.page.info().recordsDisplay, sortColumn: self.getColumnsDefinition()[data.order()[0][0]].name, sortOrder: data.order()[0][1], - search: data.search() + search: data.search(), + modelId: self.getSubmapFilterValue() }).then(function (publicationList) { return self.publicationListAsCsvString(publicationList); }).then(function (result) { @@ -196,9 +206,9 @@ PublicationListDialog.prototype.show = function () { }); var FileSaver = require("file-saver"); return FileSaver.saveAs(blob, "publications.csv"); - }).catch(function(error){ + }).catch(function (error) { GuiConnector.alert(error); - }).finally(function(){ + }).finally(function () { GuiConnector.hideProcessing(); }); @@ -271,7 +281,7 @@ PublicationListDialog.prototype.publicationListToArray = function (publicationLi elementsToFetch.push(new IdentifiedElement(elements[j])); } }); - return self.getProject().getBioEntitiesByIdentifiedElements(elementsToFetch).then(function(){ + return self.getProject().getBioEntitiesByIdentifiedElements(elementsToFetch).then(function () { return Promise.all(publicationList.data.map(function (entry) { var publication = entry.publication.article; var elements = entry.elements; @@ -310,13 +320,35 @@ PublicationListDialog.prototype.publicationListToArray = function (publicationLi PublicationListDialog.prototype.publicationListAsCsvString = function (publicationList) { var self = this; - return self.publicationListToArray(publicationList).then(function(data){ - return new Promise(function(resolve){ - stringify(data,function(err, output){ + return self.publicationListToArray(publicationList).then(function (data) { + return new Promise(function (resolve) { + stringify(data, function (err, output) { resolve(output); }); }); }); }; +/** + * + * @return {string} + */ +PublicationListDialog.prototype.createSubmapFilter = function () { + var result = "<select class='minerva-submap-filter'>"; + result += "<option value>---</option>"; + + var maps = this.getProject().getModels(); + for (var i = 0; i < maps.length; i++) { + var map = maps[i]; + result += "<option value='" + map.getId() + "'>" + map.getName() + "</option>"; + } + result += "</select>"; + return result; +}; + +PublicationListDialog.prototype.getSubmapFilterValue = function () { + var select = $(".minerva-submap-filter", this.getElement()); + return select.val(); +}; + module.exports = PublicationListDialog; -- GitLab