argos/dmp-frontend/src/app/core/model/dmp-blueprint/dmp-blueprint.ts

126 lines
3.3 KiB
TypeScript

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";
import { PrefillingSource } from "../prefilling-source/prefilling-source";
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[];
prefillingSources: PrefillingSource[];
}
export interface DescriptionTemplatesInSection {
descriptionTemplateGroupId: Guid;
label: string;
minMultiplicity: number;
maxMultiplicity: number;
}
export interface FieldInSection {
id: Guid;
category: DmpBlueprintFieldCategory;
label: string;
placeholder: string;
description: string;
semantics: 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;
multipleSelect: boolean;
}
//
// 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[];
prefillingSourcesIds: Guid[];
}
export interface DescriptionTemplatesInSectionPersist {
descriptionTemplateGroupId: Guid;
label: string;
minMultiplicity: number;
maxMultiplicity: number;
}
export interface FieldInSectionPersist {
id: Guid;
category: DmpBlueprintFieldCategory;
label: string;
placeholder: string;
description: string;
semantics: 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;
multipleSelect: boolean;
}