From fdc169f1e995b36331adb60884725e393cdc5e65 Mon Sep 17 00:00:00 2001 From: Sean Engelhardt Date: Fri, 26 Apr 2019 11:54:07 +0200 Subject: [PATCH] Adjust the export order and dialog order The order of the motion export dialog now fits to the motionImportExportHeaderOrder. It will update dynamically --- .../motion-export-dialog.component.html | 11 ++----- .../motion-export-dialog.component.ts | 30 +++++++++++++++++++ .../motion-list/motion-list.component.ts | 3 +- .../motions/motion-import-export-order.ts | 23 +++++++++++--- .../services/motion-csv-export.service.ts | 7 ++--- .../services/motion-xlsx-export.service.ts | 7 ++--- 6 files changed, 59 insertions(+), 22 deletions(-) diff --git a/client/src/app/site/motions/modules/motion-list/components/motion-export-dialog/motion-export-dialog.component.html b/client/src/app/site/motions/modules/motion-list/components/motion-export-dialog/motion-export-dialog.component.html index f15dcac23..dfb1587d8 100644 --- a/client/src/app/site/motions/modules/motion-list/components/motion-export-dialog/motion-export-dialog.component.html +++ b/client/src/app/site/motions/modules/motion-list/components/motion-export-dialog/motion-export-dialog.component.html @@ -46,17 +46,12 @@

Meta information

- Submitters - State - Recommendation - Category - Tags - Origin - Motion block + + {{ getLabelForMetadata(metaInfo) }} + Voting result - Sequential number
diff --git a/client/src/app/site/motions/modules/motion-list/components/motion-export-dialog/motion-export-dialog.component.ts b/client/src/app/site/motions/modules/motion-list/components/motion-export-dialog/motion-export-dialog.component.ts index f3d1c3058..052a21d5a 100644 --- a/client/src/app/site/motions/modules/motion-list/components/motion-export-dialog/motion-export-dialog.component.ts +++ b/client/src/app/site/motions/modules/motion-list/components/motion-export-dialog/motion-export-dialog.component.ts @@ -7,6 +7,7 @@ import { MotionCommentSectionRepositoryService } from 'app/core/repositories/mot import { LineNumberingMode, ChangeRecoMode } from 'app/site/motions/models/view-motion'; import { InfoToExport } from 'app/site/motions/services/motion-pdf.service'; import { ViewMotionCommentSection } from 'app/site/motions/models/view-motion-comment-section'; +import { motionImportExportHeaderOrder, noMetaData } from 'app/site/motions/motion-import-export-order'; /** * Dialog component to determine exporting. @@ -42,6 +43,11 @@ export class MotionExportDialogComponent implements OnInit { */ private defaultContentToExport = ['text', 'reason']; + /** + * Determine the export order of the meta data + */ + public metaInfoExportOrder: string[]; + /** * Determine the default meta info to export. */ @@ -104,6 +110,10 @@ export class MotionExportDialogComponent implements OnInit { ) { this.defaultLnMode = this.configService.instant('motions_default_line_numbering'); this.defaultCrMode = this.configService.instant('motions_recommendation_text_mode'); + // Get the export order, exclude everything that does not count as meta-data + this.metaInfoExportOrder = motionImportExportHeaderOrder.filter(metaData => { + return !noMetaData.some(noMeta => metaData === noMeta); + }); this.createForm(); } @@ -195,4 +205,24 @@ export class MotionExportDialogComponent implements OnInit { public onCloseClick(): void { this.dialogRef.close(); } + + /** + * Gets the untranslated label for metaData + */ + public getLabelForMetadata(metaDataName: string): string { + switch (metaDataName) { + case 'polls': { + return 'Voting result'; + } + case 'id': { + return 'Sequential number'; + } + case 'motion_block': { + return 'Motion block'; + } + default: { + return metaDataName.charAt(0).toUpperCase() + metaDataName.slice(1); + } + } + } } diff --git a/client/src/app/site/motions/modules/motion-list/components/motion-list/motion-list.component.ts b/client/src/app/site/motions/modules/motion-list/components/motion-list/motion-list.component.ts index 495600d90..3537f7069 100644 --- a/client/src/app/site/motions/modules/motion-list/components/motion-list/motion-list.component.ts +++ b/client/src/app/site/motions/modules/motion-list/components/motion-list/motion-list.component.ts @@ -260,8 +260,7 @@ export class MotionListComponent extends ListViewBaseComponent propertyList.includes(property)); +} diff --git a/client/src/app/site/motions/services/motion-csv-export.service.ts b/client/src/app/site/motions/services/motion-csv-export.service.ts index 9b136a819..0d09882ac 100644 --- a/client/src/app/site/motions/services/motion-csv-export.service.ts +++ b/client/src/app/site/motions/services/motion-csv-export.service.ts @@ -7,7 +7,7 @@ import { CsvColumnDefinitionProperty, CsvColumnDefinitionMap } from 'app/core/ui-services/csv-export.service'; -import { motionImportExportHeaderOrder } from '../motion-import-export-order'; +import { sortMotionPropertyList } from '../motion-import-export-order'; import { MotionRepositoryService } from 'app/core/repositories/motions/motion-repository.service'; import { ViewMotion } from '../models/view-motion'; @@ -37,11 +37,10 @@ export class MotionCsvExportService { * @param contentToExport content properties to export */ public exportMotionList(motions: ViewMotion[], contentToExport: string[]): void { - // reorders the exported properties according to motionImportExportHeaderOrder - const propertyList = motionImportExportHeaderOrder.filter(property => contentToExport.includes(property)); + const properties = sortMotionPropertyList(['identifier', 'title'].concat(contentToExport)); const exportProperties: ( | CsvColumnDefinitionProperty - | CsvColumnDefinitionMap)[] = propertyList.map(option => { + | CsvColumnDefinitionMap)[] = properties.map(option => { if (option === 'recommendation') { return { label: 'recommendation', diff --git a/client/src/app/site/motions/services/motion-xlsx-export.service.ts b/client/src/app/site/motions/services/motion-xlsx-export.service.ts index 7387c91b1..5d3b69b86 100644 --- a/client/src/app/site/motions/services/motion-xlsx-export.service.ts +++ b/client/src/app/site/motions/services/motion-xlsx-export.service.ts @@ -3,7 +3,7 @@ import { Injectable } from '@angular/core'; import { Workbook } from 'exceljs/dist/exceljs.min.js'; import { InfoToExport } from './motion-pdf.service'; -import { motionImportExportHeaderOrder } from '../motion-import-export-order'; +import { sortMotionPropertyList } from '../motion-import-export-order'; import { MotionRepositoryService } from 'app/core/repositories/motions/motion-repository.service'; import { TranslateService } from '@ngx-translate/core'; import { ViewMotion } from '../models/view-motion'; @@ -52,9 +52,8 @@ export class MotionXlsxExportService { */ public exportMotionList(motions: ViewMotion[], infoToExport: InfoToExport[]): void { const workbook = new Workbook(); - const propertyList = ['identifier', 'title'].concat(infoToExport); - // reorders the exported properties according to motionImportExportHeaderOrder - const properties = motionImportExportHeaderOrder.filter(property => propertyList.includes(property)); + const properties = sortMotionPropertyList(['identifier', 'title'].concat(infoToExport)); + const worksheet = workbook.addWorksheet(this.translate.instant('Motions'), { pageSetup: { paperSize: 9,