summaryrefslogtreecommitdiffstats
path: root/client
diff options
context:
space:
mode:
authorBryan Mutai <mutaiwork@gmail.com>2020-05-10 23:58:15 +0300
committerBryan Mutai <mutaiwork@gmail.com>2020-05-10 23:58:15 +0300
commita570c4a86157ce4b60e056a4f0583ebc0fe009cf (patch)
tree9ae901820190813979cea445fed3eb3664cbd479 /client
parent1742bcd9b15737c5853e9bcd0a6301139498307d (diff)
downloadwekan-a570c4a86157ce4b60e056a4f0583ebc0fe009cf.tar.gz
wekan-a570c4a86157ce4b60e056a4f0583ebc0fe009cf.tar.bz2
wekan-a570c4a86157ce4b60e056a4f0583ebc0fe009cf.zip
add: export board/cards/lists to CSV/TSV
Diffstat (limited to 'client')
-rw-r--r--client/components/sidebar/sidebar.jade17
-rw-r--r--client/components/sidebar/sidebar.js59
2 files changed, 75 insertions, 1 deletions
diff --git a/client/components/sidebar/sidebar.jade b/client/components/sidebar/sidebar.jade
index 89622ac1..280eaeaf 100644
--- a/client/components/sidebar/sidebar.jade
+++ b/client/components/sidebar/sidebar.jade
@@ -302,7 +302,7 @@ template(name="boardMenuPopup")
ul.pop-over-list
if withApi
li
- a(href="{{exportUrl}}", download="{{exportFilename}}")
+ a.js-export-board
i.fa.fa-share-alt
| {{_ 'export-board'}}
li
@@ -362,6 +362,21 @@ template(name="boardMenuPopup")
i.fa.fa-sitemap
| {{_ 'subtask-settings'}}
+template(name="exportBoard")
+ ul.pop-over-list
+ li
+ a(href="{{exportUrl}}", download="{{exportJsonFilename}}")
+ i.fa.fa-share-alt
+ | {{_ 'export-board-json'}}
+ li
+ a(href="{{exportCsvUrl}}", download="{{exportCsvFilename}}")
+ i.fa.fa-share-alt
+ | {{_ 'export-board-csv'}}
+ li
+ a(href="{{exportTsvUrl}}", download="{{exportTsvFilename}}")
+ i.fa.fa-share-alt
+ | {{_ 'export-board-tsv'}}
+
template(name="labelsWidget")
.board-widget.board-widget-labels
h3
diff --git a/client/components/sidebar/sidebar.js b/client/components/sidebar/sidebar.js
index cbe00797..0541df5e 100644
--- a/client/components/sidebar/sidebar.js
+++ b/client/components/sidebar/sidebar.js
@@ -1,3 +1,4 @@
+sidebar.js;
import { Cookies } from 'meteor/ostrio:cookies';
const cookies = new Cookies();
Sidebar = null;
@@ -213,6 +214,7 @@ Template.boardMenuPopup.events({
'click .js-import-board': Popup.open('chooseBoardSource'),
'click .js-subtask-settings': Popup.open('boardSubtaskSettings'),
'click .js-card-settings': Popup.open('boardCardSettings'),
+ 'click .js-export-board': Popup.open('exportBoard'),
});
Template.boardMenuPopup.onCreated(function() {
@@ -405,6 +407,63 @@ BlazeComponent.extendComponent({
},
}).register('chooseBoardSourcePopup');
+BlazeComponent.extendComponent({
+ template() {
+ return 'exportBoard';
+ },
+ withApi() {
+ return Template.instance().apiEnabled.get();
+ },
+ exportUrl() {
+ const params = {
+ boardId: Session.get('currentBoard'),
+ };
+ const queryParams = {
+ authToken: Accounts._storedLoginToken(),
+ };
+ return FlowRouter.path('/api/boards/:boardId/export', params, queryParams);
+ },
+ exportCsvUrl() {
+ const params = {
+ boardId: Session.get('currentBoard'),
+ };
+ const queryParams = {
+ authToken: Accounts._storedLoginToken(),
+ };
+ return FlowRouter.path(
+ '/api/boards/:boardId/export/csv',
+ params,
+ queryParams,
+ );
+ },
+ exportTsvUrl() {
+ const params = {
+ boardId: Session.get('currentBoard'),
+ };
+ const queryParams = {
+ authToken: Accounts._storedLoginToken(),
+ delimiter: '\t',
+ };
+ return FlowRouter.path(
+ '/api/boards/:boardId/export/csv',
+ params,
+ queryParams,
+ );
+ },
+ exportJsonFilename() {
+ const boardId = Session.get('currentBoard');
+ return `wekan-export-board-${boardId}.json`;
+ },
+ exportCsvFilename() {
+ const boardId = Session.get('currentBoard');
+ return `wekan-export-board-${boardId}.csv`;
+ },
+ exportTsvFilename() {
+ const boardId = Session.get('currentBoard');
+ return `wekan-export-board-${boardId}.tsv`;
+ },
+}).register('exportBoardPopup');
+
Template.labelsWidget.events({
'click .js-label': Popup.open('editLabel'),
'click .js-add-label': Popup.open('createLabel'),