From 95907800fbf03854dd4a7f471374a6aa898605bc Mon Sep 17 00:00:00 2001 From: Paul Date: Fri, 10 Jul 2020 11:29:36 -0400 Subject: [PATCH] TeamsFinances: Export transaction data in CSV --- src/app/shared/csv.service.ts | 6 +++--- src/app/teams/teams-view-finances.component.html | 1 + src/app/teams/teams-view-finances.component.ts | 11 +++++++++++ 3 files changed, 15 insertions(+), 3 deletions(-) diff --git a/src/app/shared/csv.service.ts b/src/app/shared/csv.service.ts index c532799e13..74dd460ded 100644 --- a/src/app/shared/csv.service.ts +++ b/src/app/shared/csv.service.ts @@ -26,11 +26,11 @@ export class CsvService { } } - exportCSV({ data, title }: { data: any[], title: string }) { + exportCSV({ data, title, columns }: { data: any[], title: string, columns?: string[] }) { const options = { title, filename: `Report of ${title} on ${new Date().toDateString()}`, showTitle: true }; const formattedData = data.map(({ _id, _rev, resourceId, type, createdOn, parentCode, data: d, hasInfo, ...dataToDisplay }) => { - return Object.entries(dataToDisplay).reduce( - (object, [ key, value ]: [ string, any ]) => ({ ...object, [markdownToPlainText(key)]: this.formatValue(key, value) }), + return (columns || Object.keys(dataToDisplay)).reduce( + (object, column) => ({ ...object, [markdownToPlainText(column)]: this.formatValue(column, dataToDisplay[column]) }), {} ); }); diff --git a/src/app/teams/teams-view-finances.component.html b/src/app/teams/teams-view-finances.component.html index ff497c49d5..a82f3d677c 100644 --- a/src/app/teams/teams-view-finances.component.html +++ b/src/app/teams/teams-view-finances.component.html @@ -1,5 +1,6 @@
+ diff --git a/src/app/teams/teams-view-finances.component.ts b/src/app/teams/teams-view-finances.component.ts index 18f7376c9e..d2ed8fc174 100644 --- a/src/app/teams/teams-view-finances.component.ts +++ b/src/app/teams/teams-view-finances.component.ts @@ -10,6 +10,7 @@ import { DialogsFormService } from '../shared/dialogs/dialogs-form.service'; import { DialogsLoadingService } from '../shared/dialogs/dialogs-loading.service'; import { DialogsPromptComponent } from '../shared/dialogs/dialogs-prompt.component'; import { millisecondsToDay } from '../meetups/constants'; +import { CsvService } from '../shared/csv.service'; @Component({ selector: 'planet-teams-view-finances', @@ -38,6 +39,7 @@ export class TeamsViewFinancesComponent implements OnInit, OnChanges { private planetMessageService: PlanetMessageService, private dialogsFormService: DialogsFormService, private dialogsLoadingService: DialogsLoadingService, + private csvService: CsvService, private dialog: MatDialog ) { this.couchService.currentTime().subscribe((date) => this.dateNow = date); @@ -182,4 +184,13 @@ export class TeamsViewFinancesComponent implements OnInit, OnChanges { this.emptyTable = this.table.data.length <= 1; } + exportTransactions() { + const data = this.setTransactionsTable(this.finances).slice(1); + this.csvService.exportCSV({ + data, + title: `${this.team.name} Financial Report`, + columns: [ 'date', 'description', 'credit', 'debit', 'balance' ] + }); + } + }