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

126 lines
3.3 KiB
TypeScript
Raw Normal View History

import { DmpBlueprintFieldCategory } from "@app/core/common/enum/dmp-blueprint-field-category";
2023-12-29 16:04:16 +01:00
import { DmpBlueprintExtraFieldDataType } from "@app/core/common/enum/dmp-blueprint-field-type";
import { DmpBlueprintStatus } from "@app/core/common/enum/dmp-blueprint-status";
2023-12-29 16:04:16 +01:00
import { DmpBlueprintSystemFieldType } from "@app/core/common/enum/dmp-blueprint-system-field-type";
import { BaseEntity, BaseEntityPersist } from "@common/base/base-entity.model";
2023-10-24 09:40:26 +02:00
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;
}
2023-10-24 09:40:26 +02:00
export interface DmpBlueprintDefinition {
sections?: DmpBlueprintDefinitionSection[];
}
export interface DmpBlueprintDefinitionSection {
id: Guid;
label: string;
description: string;
ordinal: number;
fields: FieldInSection[];
hasTemplates: boolean;
descriptionTemplates?: DescriptionTemplatesInSection[];
prefillingSources: PrefillingSource[];
2023-10-24 09:40:26 +02:00
}
export interface DescriptionTemplatesInSection {
descriptionTemplateGroupId: Guid;
2023-10-24 09:40:26 +02:00
label: string;
minMultiplicity: number;
maxMultiplicity: number;
}
export interface FieldInSection {
id: Guid;
category: DmpBlueprintFieldCategory;
2023-10-24 09:40:26 +02:00
label: string;
placeholder: string;
description: string;
2024-02-20 10:37:09 +01:00
semantics: string[];
2023-10-24 09:40:26 +02:00
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;
2024-04-19 10:10:51 +02:00
multipleSelect: boolean;
}
2024-04-19 10:10:51 +02:00
//
2023-10-24 09:40:26 +02:00
// Persist
2024-04-19 10:10:51 +02:00
//
export interface DmpBlueprintPersist extends BaseEntityPersist {
label: string;
definition: DmpBlueprintDefinitionPersist;
status: DmpBlueprintStatus;
}
export interface NewVersionDmpBlueprintPersist {
label: string;
definition: DmpBlueprintDefinitionPersist;
status: DmpBlueprintStatus;
}
2023-10-24 09:40:26 +02:00
export interface DmpBlueprintDefinitionPersist {
sections?: DmpBlueprintDefinitionSectionPersist[];
}
export interface DmpBlueprintDefinitionSectionPersist {
id: Guid;
label: string;
description: string;
ordinal: number;
fields: FieldInSectionPersist[];
hasTemplates: boolean;
descriptionTemplates?: DescriptionTemplatesInSectionPersist[];
prefillingSourcesIds: Guid[];
2023-10-24 09:40:26 +02:00
}
export interface DescriptionTemplatesInSectionPersist {
descriptionTemplateGroupId: Guid;
2023-10-24 09:40:26 +02:00
label: string;
minMultiplicity: number;
maxMultiplicity: number;
}
export interface FieldInSectionPersist {
id: Guid;
category: DmpBlueprintFieldCategory;
2023-10-24 09:40:26 +02:00
label: string;
placeholder: string;
description: string;
2024-02-20 10:37:09 +01:00
semantics: string[];
2023-10-24 09:40:26 +02:00
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;
2024-04-19 10:10:51 +02:00
multipleSelect: boolean;
}