From fda6c40d26121ef3f4797d6a1fcdfd3773bbd05f Mon Sep 17 00:00:00 2001 From: Piotr Gawron <piotr.gawron@uni.lu> Date: Fri, 2 Nov 2018 16:36:38 +0100 Subject: [PATCH] formatFunction changed into more generic method call --- .../main/js/gui/export/AbstractExportPanel.js | 6 +- .../main/js/gui/export/ElementExportPanel.js | 3 - .../main/js/gui/export/NetworkExportPanel.js | 59 +++++++++++-------- 3 files changed, 37 insertions(+), 31 deletions(-) diff --git a/frontend-js/src/main/js/gui/export/AbstractExportPanel.js b/frontend-js/src/main/js/gui/export/AbstractExportPanel.js index d15edd4a55..53314ef96d 100644 --- a/frontend-js/src/main/js/gui/export/AbstractExportPanel.js +++ b/frontend-js/src/main/js/gui/export/AbstractExportPanel.js @@ -15,7 +15,6 @@ var Promise = require("bluebird"); * @property {string} columnName * @property {string|function(BioEntity):Promise<string>} method * @property {string} name - * @property {function(Object):string} formatFunction */ /** @@ -607,6 +606,7 @@ AbstractExportPanel.prototype.getBioEntityAllColumns = function () { "method": "getModelId", "name": "Map id" }, { + "columnName": "mapName", /** * * @param {BioEntity} bioEntity @@ -631,9 +631,9 @@ AbstractExportPanel.prototype.getBioEntityAllColumns = function () { "name": "Synonyms" }, { "columnName": "references", - "method": "getReferences", "name": "References", - "formatFunction": function (references) { + "method": function (bioEntity) { + var references = bioEntity.getReferences(); var stringBuilder = []; for (var i = 0; i < references.length; i++) { var reference = references[i]; diff --git a/frontend-js/src/main/js/gui/export/ElementExportPanel.js b/frontend-js/src/main/js/gui/export/ElementExportPanel.js index 45e905c8f3..cf1ef8e869 100644 --- a/frontend-js/src/main/js/gui/export/ElementExportPanel.js +++ b/frontend-js/src/main/js/gui/export/ElementExportPanel.js @@ -140,9 +140,6 @@ ElementExportPanel.prototype._createResponseCell = function (alias, column) { valuePromise = Promise.resolve(column.method(alias, this.getProject())); } return valuePromise.then(function (value) { - if (column.formatFunction !== undefined) { - value = column.formatFunction(value); - } if (Functions.isString(value)) { value = value.replace(/[\n\r]/g, ' '); } diff --git a/frontend-js/src/main/js/gui/export/NetworkExportPanel.js b/frontend-js/src/main/js/gui/export/NetworkExportPanel.js index cc7f73350a..77a11e11a1 100644 --- a/frontend-js/src/main/js/gui/export/NetworkExportPanel.js +++ b/frontend-js/src/main/js/gui/export/NetworkExportPanel.js @@ -6,8 +6,10 @@ var AbstractExportPanel = require('./AbstractExportPanel'); var Promise = require("bluebird"); var logger = require('../../logger'); -var GuiMessageError = require('../GuiMessageError'); var Functions = require('../../Functions'); +var GuiMessageError = require('../GuiMessageError'); +var IdentifiedElement = require('../../map/data/IdentifiedElement'); +var Alias = require('../../map/data/Alias'); /** * @@ -64,26 +66,38 @@ NetworkExportPanel.prototype.init = function () { * @returns {*[]} */ NetworkExportPanel.prototype.getAllColumns = function () { + var self = this; return this.getBioEntityAllColumns().concat([{ "columnName": "elements", - "method": "getElements", "name": "Elements", - "formatFunction": function (elements, reaction, elementIds) { - var stringBuilder = []; - var type; - var elementFormat = function (element) { - if (elementIds[element.getAlias().getId()]) { - stringBuilder.push(type + ":" + element.getAlias().getId()); + "method": function (reaction) { + var promises = []; + var model = self.getProject().getModelById(reaction.getModelId()); + /** + * + * @param {number|Alias} aliasId + * @param {string} participantType + */ + var elementFormat = function (aliasId, participantType) { + if (aliasId instanceof Alias) { + return participantType + ":" + aliasId.getId(); + } else { + return participantType + ":" + aliasId; } }; - type = "REACTANT"; - reaction.getReactants().forEach(elementFormat); - type = "PRODUCT"; - reaction.getProducts().forEach(elementFormat); - type = "MODIFIER"; - reaction.getModifiers().forEach(elementFormat); - - return stringBuilder.join(","); + var i; + for (i = 0; i < reaction.getReactants().length; i++) { + promises.push(elementFormat(reaction.getReactants()[i].getAlias(), "REACTANT")); + } + for (i = 0; i < reaction.getProducts().length; i++) { + promises.push(elementFormat(reaction.getProducts()[i].getAlias(), "PRODUCT")); + } + for (i = 0; i < reaction.getModifiers().length; i++) { + promises.push(elementFormat(reaction.getModifiers()[i].getAlias(), "MODIFIER")); + } + return Promise.all(promises).then(function (values) { + return values.join(","); + }); } }, { "columnName": "reactionId", @@ -197,7 +211,7 @@ NetworkExportPanel.prototype.createResponseString = function () { var rowPromises = []; rowPromises.push(self.createResponseHeader(selectedColumns, miriamTypes)); for (var i = 0; i < reactions.length; i++) { - rowPromises.push(self.createResponseRow(reactions[i], selectedColumns, miriamTypes, elementIds)); + rowPromises.push(self.createResponseRow(reactions[i], selectedColumns, miriamTypes)); } return Promise.all(rowPromises); }).then(function (rows) { @@ -210,14 +224,13 @@ NetworkExportPanel.prototype.createResponseString = function () { * @param {Reaction} reaction * @param {Object} columns * @param {MiriamType[]} miriamTypes - * @param {Object<string,boolean>} elementIds * @returns {Promise<string>} */ -NetworkExportPanel.prototype.createResponseRow = function (reaction, columns, miriamTypes, elementIds) { +NetworkExportPanel.prototype.createResponseRow = function (reaction, columns, miriamTypes) { var valuePromises = []; var i, value; for (i = 0; i < columns.length; i++) { - valuePromises.push(this._createResponseCell(reaction, columns[i], elementIds)); + valuePromises.push(this._createResponseCell(reaction, columns[i])); } for (i = 0; i < miriamTypes.length; i++) { value = ""; @@ -240,11 +253,10 @@ NetworkExportPanel.prototype.createResponseRow = function (reaction, columns, mi * * @param {Reaction} reaction * @param {ExportColumn} column - * @param {Object<string,boolean>} elementIds * @returns {Promise<string>} * @private */ -NetworkExportPanel.prototype._createResponseCell = function (reaction, column, elementIds) { +NetworkExportPanel.prototype._createResponseCell = function (reaction, column) { var valuePromise; if (Functions.isString(column.method)) { valuePromise = Promise.resolve(reaction[column.method]()); @@ -253,9 +265,6 @@ NetworkExportPanel.prototype._createResponseCell = function (reaction, column, e } return valuePromise.then(function (value) { - if (column.formatFunction !== undefined) { - value = column.formatFunction(value, reaction, elementIds); - } if (Functions.isString(value)) { value = value.replace(/[\n\r]/g, ' '); } -- GitLab