argos/dmp-frontend/src/app/core/model/description-template/description-template.ts

151 lines
4.1 KiB
TypeScript
Raw Normal View History

import { DescriptionTemplateFieldDataExternalDatasetType } from "@app/core/common/enum/description-template-field-data-external-dataset-type";
import { DescriptionTemplateFieldType } from "@app/core/common/enum/description-template-field-type";
import { DescriptionTemplateFieldValidationType } from "@app/core/common/enum/description-template-field-validation-type";
import { DescriptionTemplateStatus } from "@app/core/common/enum/description-template-status";
2023-11-24 17:42:23 +01:00
import { UserDescriptionTemplateRole } from "@app/core/common/enum/user-description-template-role";
import { BaseEntity } from "@common/base/base-entity.model";
2023-10-27 17:56:19 +02:00
import { Guid } from "@common/types/guid";
import { DescriptionTemplateType } from "../description-template-type/description-template-type";
2024-02-21 16:52:50 +01:00
import { ReferenceType } from "../reference-type/reference-type";
2023-11-24 17:42:23 +01:00
import { User } from "../user/user";
2024-03-27 16:09:10 +01:00
import { Reference } from "../reference/reference";
2023-10-27 17:56:19 +02:00
export interface DescriptionTemplate extends BaseEntity {
2024-03-20 11:35:55 +01:00
label?: string;
description?: string;
groupId?: Guid;
version?: string;
language?: string;
type?: DescriptionTemplateType;
status?: DescriptionTemplateStatus;
definition?: DescriptionTemplateDefinition;
users?: UserDescriptionTemplate[];
2023-11-24 17:42:23 +01:00
}
export interface UserDescriptionTemplate extends BaseEntity {
descriptionTemplate?: DescriptionTemplate;
role?: UserDescriptionTemplateRole;
user?: User;
2023-10-27 17:56:19 +02:00
}
export interface DescriptionTemplateDefinition {
pages?: DescriptionTemplatePage[];
2023-10-27 17:56:19 +02:00
}
export interface DescriptionTemplatePage {
2024-03-20 11:35:55 +01:00
id?: string;
ordinal?: number;
title?: string;
sections?: DescriptionTemplateSection[];
2023-10-27 17:56:19 +02:00
}
export interface DescriptionTemplateSection {
2024-03-20 11:35:55 +01:00
id?: string;
ordinal?: number;
defaultVisibility?: boolean;
multiplicity?: boolean;
title?: string;
description?: string;
sections?: DescriptionTemplateSection[];
fieldSets?: DescriptionTemplateFieldSet[];
2023-10-27 17:56:19 +02:00
}
export interface DescriptionTemplateFieldSet {
2023-12-20 08:20:38 +01:00
id: string;
ordinal: number;
numbering: string;
title: string;
2023-10-27 17:56:19 +02:00
description: string;
extendedDescription: string;
additionalInformation: string;
multiplicity: DescriptionTemplateMultiplicity
hasCommentField: boolean;
fields: DescriptionTemplateField[];
}
export interface DescriptionTemplateField {
2023-12-20 08:20:38 +01:00
id: string;
2023-10-27 17:56:19 +02:00
ordinal: number;
2023-11-24 17:42:23 +01:00
numbering?: string;
schematics?: string[];
defaultValue?: string;
visibilityRules?: DescriptionTemplateRule[];
validations?: DescriptionTemplateFieldValidationType[];
includeInExport: boolean;
2023-11-24 17:42:23 +01:00
data?: DescriptionTemplateBaseFieldData;
2023-10-27 17:56:19 +02:00
}
export interface DescriptionTemplateRule {
target: string;
2024-03-27 16:09:10 +01:00
textValue: string;
textListValue: string[];
dateValue: Date;
}
export interface DescriptionTemplateMultiplicity {
min: number;
max: number;
placeholder: string;
tableView: boolean;
}
export interface DescriptionTemplateBaseFieldData {
2023-10-27 17:56:19 +02:00
label: string;
2023-11-24 17:42:23 +01:00
fieldType: DescriptionTemplateFieldType;
multipleSelect?: boolean;
2023-10-27 17:56:19 +02:00
}
//
// Field Types
//
export interface DescriptionTemplateLabelData extends DescriptionTemplateBaseFieldData {
}
export interface DescriptionTemplateLabelAndMultiplicityData extends DescriptionTemplateBaseFieldData {
multipleSelect: boolean;
}
export interface DescriptionTemplateExternalDatasetData extends DescriptionTemplateLabelAndMultiplicityData {
2023-11-24 17:42:23 +01:00
type?: DescriptionTemplateFieldDataExternalDatasetType;
}
export interface DescriptionTemplateReferenceTypeData extends DescriptionTemplateLabelAndMultiplicityData {
2024-02-21 16:52:50 +01:00
referenceType?: ReferenceType;
}
export interface DescriptionTemplateRadioBoxData extends DescriptionTemplateBaseFieldData {
2023-11-24 17:42:23 +01:00
options: DescriptionTemplateRadioBoxOption[];
}
export interface DescriptionTemplateSelectData extends DescriptionTemplateLabelAndMultiplicityData {
options: DescriptionTemplateSelectOption[];
}
2023-11-24 17:42:23 +01:00
export interface DescriptionTemplateUploadData extends DescriptionTemplateBaseFieldData {
types: DescriptionTemplateUploadOption[];
2023-11-24 17:42:23 +01:00
maxFileSizeInMB: number;
}
//
// Others
//
export interface DescriptionTemplateSelectOption {
label: string;
value: string;
2023-10-27 17:56:19 +02:00
}
export interface DescriptionTemplateRadioBoxOption {
2023-10-27 17:56:19 +02:00
label: string;
value: string;
2023-10-27 17:56:19 +02:00
}
export interface DescriptionTemplateUploadOption {
2023-10-27 17:56:19 +02:00
label: string;
value: string;
2024-03-27 16:09:10 +01:00
}