/** * Central place for constants and enums for motions. */ /** * Determines the possible file format of a motion export */ export enum ExportFileFormat { PDF = 1, CSV, XLSX } /** * Special id to reference the personal note in a comments list */ export const PERSONAL_NOTE_ID = -1; /** * Type declaring which strings are valid options for metainfos to be exported into a pdf */ export type InfoToExport = | 'submitters' | 'state' | 'recommendation' | 'category' | 'motion_block' | 'origin' | 'tags' | 'polls' | 'speakers' | 'id' | 'allcomments'; /** * The line numbering mode for the motion detail view. * The constants need to be in sync with the values saved in the config store. */ export enum LineNumberingMode { None = 'none', Inside = 'inline', Outside = 'outside' } /** * The change recommendation mode for the motion detail view. */ export enum ChangeRecoMode { Original = 'original', Changed = 'changed', Diff = 'diff', Final = 'agreed', ModifiedFinal = 'modified_final_version' } export enum AmendmentType { Amendment = 1, Parent } export const verboseChangeRecoMode = { original: 'Original version', changed: 'Changed version', diff: 'Diff version', agreed: 'Final version', modified_final_version: 'Final print template' }; /** * Enum to define different types of notifications. */ export enum MotionEditNotificationType { /** * Type to declare editing a motion. */ TYPE_BEGIN_EDITING_MOTION = 'typeBeginEditingMotion', /** * Type if the edit-view is closing. */ TYPE_CLOSING_EDITING_MOTION = 'typeClosingEditingMotion', /** * Type if changes are saved. */ TYPE_SAVING_EDITING_MOTION = 'typeSavingEditingMotion', /** * Type to declare if another person is also editing the same motion. */ TYPE_ALSO_EDITING_MOTION = 'typeAlsoEditingMotion' } // import-export order specific constants /** * Defines the column order for csv/xlsx export/import of motions. */ export const motionImportExportHeaderOrder: string[] = [ 'id', 'identifier', 'submitters', 'title', 'text', 'reason', 'category', 'tags', 'recommendation', 'state', 'motion_block', 'origin' ]; /** * hints the metaData. This data will be excluded from the meta-data list in the export dialog. * Order of this does not matter */ export const noMetaData: string[] = ['identifier', 'title', 'text', 'reason']; /** * Subset of {@link motionImportExportHeaderOrder} properties that are * restricted to export only due to database or workflow limitations */ export const motionExportOnly: string[] = ['id', 'recommendation', 'state']; /** * reorders the exported properties according to motionImportExportHeaderOrder * * @param propertyList A list of motion properties to be ordered */ export function sortMotionPropertyList(propertyList: string[]): string[] { return motionImportExportHeaderOrder.filter(property => propertyList.includes(property)); }