OpenSlides/client/src/app/site/motions/services/statute-csv-export.service.ts

60 lines
1.8 KiB
TypeScript
Raw Normal View History

2019-01-31 11:21:02 +01:00
import { Injectable } from '@angular/core';
import { TranslateService } from '@ngx-translate/core';
import { CsvExportService, CsvColumnDefinitionProperty } from 'app/core/ui-services/csv-export.service';
2019-01-31 11:21:02 +01:00
import { ViewStatuteParagraph } from '../models/view-statute-paragraph';
import { FileExportService } from 'app/core/ui-services/file-export.service';
2019-01-31 11:21:02 +01:00
/**
* Exports CSVs for statute paragraphs.
*/
@Injectable({
providedIn: 'root'
})
export class StatuteCsvExportService {
/**
* Does nothing.
*
* @param csvExport CsvExportService
* @param translate TranslateService
* @param fileExport FileExportService
*/
public constructor(
private csvExport: CsvExportService,
private translate: TranslateService,
private fileExport: FileExportService
) {}
/**
* Export all statute paragraphs as CSV
*
* @param statute statute PParagraphs to export
*/
public exportStatutes(statutes: ViewStatuteParagraph[]): void {
const exportProperties: CsvColumnDefinitionProperty<ViewStatuteParagraph>[] = [
{ property: 'title' },
{ property: 'text' }
];
this.csvExport.export(statutes, exportProperties, this.translate.instant('Statutes') + '.csv');
}
/**
* Exports a short example file
*/
public exportDummyCSV(): void {
const headerRow = ['Title', 'Text'].map(item => this.translate.instant(item)).join(',');
const rows = [
headerRow,
'§1,"This is the first section"',
'"§1, A 3", "This is another important aspect"',
'§2,Yet another'
];
this.fileExport.saveFile(
rows.join('\n'),
2019-02-01 14:20:00 +01:00
`${this.translate.instant('Statutes')} - ${this.translate.instant('example')}.csv`,
'text/csv'
2019-01-31 11:21:02 +01:00
);
}
}