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

formatFunction changed into more generic method call

parent f04a4ad9
No related branches found
No related tags found
2 merge requests!630WIP: Resolve "The privileges of a new user are not saved in some cases",!490Resolve "common functionality of NetworkExportPanel and GraphicsExportPanel should be extracted to abstract class"
......@@ -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];
......
......@@ -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, ' ');
}
......
......@@ -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, ' ');
}
......
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