import { DmpBlueprintFieldCategory } from "@app/core/common/enum/dmp-blueprint-field-category"; import { DmpBlueprintExtraFieldDataType } from "@app/core/common/enum/dmp-blueprint-field-type"; import { DmpBlueprintStatus } from "@app/core/common/enum/dmp-blueprint-status"; import { DmpBlueprintSystemFieldType } from "@app/core/common/enum/dmp-blueprint-system-field-type"; import { BaseEntity, BaseEntityPersist } from "@common/base/base-entity.model"; import { Guid } from "@common/types/guid"; import { ReferenceType } from "../reference-type/reference-type"; export interface DmpBlueprint extends BaseEntity { label: string; definition: DmpBlueprintDefinition; status: DmpBlueprintStatus; version: number; groupId: Guid; } export interface DmpBlueprintDefinition { sections?: DmpBlueprintDefinitionSection[]; } export interface DmpBlueprintDefinitionSection { id: Guid; label: string; description: string; ordinal: number; fields: FieldInSection[]; hasTemplates: boolean; descriptionTemplates?: DescriptionTemplatesInSection[]; } export interface DescriptionTemplatesInSection { descriptionTemplateGroupId: Guid; label: string; minMultiplicity: number; maxMultiplicity: number; } export interface FieldInSection { id: Guid; category: DmpBlueprintFieldCategory; label: string; placeholder: string; description: string; required: boolean; ordinal: number; } export interface SystemFieldInSection extends FieldInSection { systemFieldType: DmpBlueprintSystemFieldType; } export interface ExtraFieldInSection extends FieldInSection { dataType: DmpBlueprintExtraFieldDataType; } export interface ReferenceTypeFieldInSection extends FieldInSection { referenceType: ReferenceType; } // // Persist // export interface DmpBlueprintPersist extends BaseEntityPersist { label: string; definition: DmpBlueprintDefinitionPersist; status: DmpBlueprintStatus; } export interface NewVersionDmpBlueprintPersist { label: string; definition: DmpBlueprintDefinitionPersist; status: DmpBlueprintStatus; } export interface DmpBlueprintDefinitionPersist { sections?: DmpBlueprintDefinitionSectionPersist[]; } export interface DmpBlueprintDefinitionSectionPersist { id: Guid; label: string; description: string; ordinal: number; fields: FieldInSectionPersist[]; hasTemplates: boolean; descriptionTemplates?: DescriptionTemplatesInSectionPersist[]; } export interface DescriptionTemplatesInSectionPersist { descriptionTemplateGroupId: Guid; label: string; minMultiplicity: number; maxMultiplicity: number; } export interface FieldInSectionPersist { id: Guid; category: DmpBlueprintFieldCategory; label: string; placeholder: string; description: string; required: boolean; ordinal: number; } export interface SystemFieldInSectionPersist extends FieldInSectionPersist { systemFieldType: DmpBlueprintSystemFieldType; } export interface ExtraFieldInSectionPersist extends FieldInSectionPersist { dataType: DmpBlueprintExtraFieldDataType; } export interface ReferenceTypeFieldInSectionPersist extends FieldInSectionPersist { referenceTypeId: Guid; }