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"; import { UserDescriptionTemplateRole } from "@app/core/common/enum/user-description-template-role"; import { BaseEntityPersist } from "@common/base/base-entity.model"; import { Guid } from "@common/types/guid"; import { ReferencePersist } from "../reference/reference"; export interface DescriptionTemplatePersist extends BaseEntityPersist { label: string; description: string; language: string; type: Guid; status: DescriptionTemplateStatus; definition: DescriptionTemplateDefinitionPersist; users: UserDescriptionTemplatePersist[]; } export interface NewVersionDescriptionTemplatePersist extends BaseEntityPersist { label: string; description: string; language: string; type: Guid; status: DescriptionTemplateStatus; definition: DescriptionTemplateDefinitionPersist; users: UserDescriptionTemplatePersist[]; } export interface UserDescriptionTemplatePersist { userId?: Guid; role?: UserDescriptionTemplateRole; } export interface DescriptionTemplateDefinitionPersist { pages?: DescriptionTemplatePagePersist[]; } export interface DescriptionTemplatePagePersist { id: string; ordinal: number; title: string; sections: DescriptionTemplateSectionPersist[]; } export interface DescriptionTemplateSectionPersist { id: string; ordinal: number; defaultVisibility: boolean; multiplicity: boolean; title: string; description: string; sections?: DescriptionTemplateSectionPersist[]; fieldSets: DescriptionTemplateFieldSetPersist[]; } export interface DescriptionTemplateFieldSetPersist { id: string; ordinal: number; numbering: string; title: string; description: string; extendedDescription: string; additionalInformation: string; multiplicity: DescriptionTemplateMultiplicityPersist; hasCommentField: boolean; fields: DescriptionTemplateFieldPersist[]; } export interface DescriptionTemplateFieldPersist { id: string; ordinal: number; schematics: string[]; defaultValue: string; visibilityRules: DescriptionTemplateRulePersist[]; validations: DescriptionTemplateFieldValidationType[]; includeInExport: boolean; data: DescriptionTemplateBaseFieldDataPersist; } export interface DescriptionTemplateRulePersist { target: string; textValue: string; textListValue: string[]; dateValue: Date; } export interface DescriptionTemplateMultiplicityPersist { min: number; max: number; placeholder: string; tableView: boolean; } export interface DescriptionTemplateBaseFieldDataPersist { label: string; fieldType: DescriptionTemplateFieldType; } // // Field Types // export interface DescriptionTemplateReferenceTypeFieldPersist extends DescriptionTemplateLabelAndMultiplicityDataPersist { referenceTypeId: Guid; } export interface DescriptionTemplateExternalDatasetDataPersist extends DescriptionTemplateLabelAndMultiplicityDataPersist { type: DescriptionTemplateFieldDataExternalDatasetType; } export interface DescriptionTemplateLabelAndMultiplicityDataPersist extends DescriptionTemplateBaseFieldDataPersist { multipleSelect: boolean; } export interface DescriptionTemplateLabelDataPersist extends DescriptionTemplateBaseFieldDataPersist { } export interface DescriptionTemplateRadioBoxDataPersist extends DescriptionTemplateBaseFieldDataPersist { options: DescriptionTemplateRadioBoxOptionPersist[]; } export interface DescriptionTemplateSelectDataPersist extends DescriptionTemplateLabelAndMultiplicityDataPersist { options: DescriptionTemplateSelectOptionPersist[]; } export interface DescriptionTemplateUploadDataPersist extends DescriptionTemplateBaseFieldDataPersist { types: DescriptionTemplateUploadOptionPersist[]; maxFileSizeInMB: number; } // // Others // export interface DescriptionTemplateSelectOptionPersist { label: string; value: string; } export interface DescriptionTemplateRadioBoxOptionPersist { label: string; value: string; } export interface DescriptionTemplateUploadOptionPersist { label: string; value: string; }