summaryrefslogtreecommitdiffstats
path: root/models
diff options
context:
space:
mode:
authorBryan Mutai <mutaiwork@gmail.com>2020-05-26 22:56:47 +0300
committerBryan Mutai <mutaiwork@gmail.com>2020-05-27 01:23:31 +0300
commit8c149da9e920de3c1c15119030d24b0752769cfc (patch)
tree9f7fe1dd46d2dda6fc6e3f3d57ad2ba4f96e06be /models
parent18eafe2fec9368c551a944ecff3354d4339b2c11 (diff)
downloadwekan-8c149da9e920de3c1c15119030d24b0752769cfc.tar.gz
wekan-8c149da9e920de3c1c15119030d24b0752769cfc.tar.bz2
wekan-8c149da9e920de3c1c15119030d24b0752769cfc.zip
Fix vote export to CSV/TSV & export currency custom field.
Diffstat (limited to 'models')
-rw-r--r--models/csvCreator.js11
-rw-r--r--models/export.js4
-rw-r--r--models/exporter.js49
3 files changed, 40 insertions, 24 deletions
diff --git a/models/csvCreator.js b/models/csvCreator.js
index 696d2205..72b8a3b4 100644
--- a/models/csvCreator.js
+++ b/models/csvCreator.js
@@ -107,6 +107,13 @@ export class CsvCreator {
options: headerRow[i].split('-')[3].split('/'),
position: i,
});
+ } else if (headerRow[i].split('-')[2] === 'currency') {
+ index.customFields.push({
+ name: headerRow[i].split('-')[1],
+ type: headerRow[i].split('-')[2],
+ currencyCode: headerRow[i].split('-')[3],
+ position: i,
+ });
} else {
index.customFields.push({
name: headerRow[i].split('-')[1],
@@ -127,6 +134,10 @@ export class CsvCreator {
return { _id: Random.id(6), name: option };
}),
};
+ } else if (customField.type === 'currency') {
+ settings = {
+ currencyCode: customField.currencyCode,
+ };
} else {
settings = {};
}
diff --git a/models/export.js b/models/export.js
index c3783679..9dd03a38 100644
--- a/models/export.js
+++ b/models/export.js
@@ -85,10 +85,10 @@ if (Meteor.isServer) {
? exporter.buildCsv(params.query.delimiter)
: exporter.buildCsv();
res.writeHead(200, {
- 'Content-Length': body[0].length,
+ 'Content-Length': body.length,
'Content-Type': params.query.delimiter ? 'text/csv' : 'text/tsv',
});
- res.write(body[0]);
+ res.write(body);
res.end();
} else {
res.writeHead(403);
diff --git a/models/exporter.js b/models/exporter.js
index 39e8aeca..b6188ece 100644
--- a/models/exporter.js
+++ b/models/exporter.js
@@ -37,7 +37,7 @@ export class Exporter {
result.cards = Cards.find(byBoardNoLinked, noBoardId).fetch();
result.swimlanes = Swimlanes.find(byBoard, noBoardId).fetch();
result.customFields = CustomFields.find(
- { boardIds: this.boardId },
+ { boardIds: this._boardId },
{ fields: { boardIds: 0 } },
).fetch();
result.comments = CardComments.find(byBoard, noBoardId).fetch();
@@ -217,7 +217,6 @@ export class Exporter {
const customFieldMap = {};
let i = 0;
result.customFields.forEach(customField => {
- customFieldMap[customField._id] = i;
customFieldMap[customField._id] = {
position: i,
type: customField.type,
@@ -225,11 +224,15 @@ export class Exporter {
if (customField.type === 'dropdown') {
let options = '';
customField.settings.dropdownItems.forEach(item => {
- options = options === '' ? item.name : `/${options + item.name}`;
+ options = options === '' ? item.name : `${`${options}/${item.name}`}`;
});
columnHeaders.push(
`CustomField-${customField.name}-${customField.type}-${options}`,
);
+ } else if (customField.type === 'currency') {
+ columnHeaders.push(
+ `CustomField-${customField.name}-${customField.type}-${customField.settings.currencyCode}`,
+ );
} else {
columnHeaders.push(
`CustomField-${customField.name}-${customField.type}`,
@@ -322,7 +325,7 @@ export class Exporter {
currentRow.push(
card.dateLastActivity ? moment(card.dateLastActivity).format() : ' ',
);
- if (card.vote.question !== undefined) {
+ if (card.vote && card.vote.question !== '') {
let positiveVoters = '';
let negativeVoters = '';
card.vote.positive.forEach(userId => {
@@ -350,23 +353,25 @@ export class Exporter {
//Custom fields
const customFieldValuesToPush = new Array(result.customFields.length);
card.customFields.forEach(field => {
- if (customFieldMap[field._id].type === 'date') {
- customFieldValuesToPush[customFieldMap[field._id].position] = moment(
- field.value,
- ).format();
- } else if (customFieldMap[field._id].type === 'dropdown') {
- const dropdownOptions = result.customFields.find(
- ({ _id }) => _id === field._id,
- ).settings.dropdownItems;
- const fieldValue = dropdownOptions.find(
- ({ _id }) => _id === field.value,
- ).name;
- customFieldValuesToPush[
- customFieldMap[field._id].position
- ] = fieldValue;
- } else {
- customFieldValuesToPush[customFieldMap[field._id].position] =
- field.value;
+ if (field.value !== null) {
+ if (customFieldMap[field._id].type === 'date') {
+ customFieldValuesToPush[
+ customFieldMap[field._id].position
+ ] = moment(field.value).format();
+ } else if (customFieldMap[field._id].type === 'dropdown') {
+ const dropdownOptions = result.customFields.find(
+ ({ _id }) => _id === field._id,
+ ).settings.dropdownItems;
+ const fieldValue = dropdownOptions.find(
+ ({ _id }) => _id === field.value,
+ ).name;
+ customFieldValuesToPush[
+ customFieldMap[field._id].position
+ ] = fieldValue;
+ } else {
+ customFieldValuesToPush[customFieldMap[field._id].position] =
+ field.value;
+ }
}
});
for (
@@ -383,7 +388,7 @@ export class Exporter {
stringifier.write(currentRow);
});
stringifier.end();
- return cardRows;
+ return cardRows[0];
}
canExport(user) {