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

93 lines
2.4 KiB
TypeScript
Raw Normal View History

2023-12-29 16:04:16 +01:00
import { DmpBlueprintExtraFieldDataType } from "@app/core/common/enum/dmp-blueprint-field-type";
2023-10-24 09:40:26 +02:00
import { DmpBlueprintSectionFieldCategory } from "@app/core/common/enum/dmp-blueprint-section-field-category";
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";
export interface DmpBlueprint extends BaseEntity {
label: string;
definition: DmpBlueprintDefinition;
status: DmpBlueprintStatus;
description: string;
}
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[];
}
export interface DescriptionTemplatesInSection {
id: Guid;
descriptionTemplateId: Guid;
label: string;
minMultiplicity: number;
maxMultiplicity: number;
}
export interface FieldInSection {
id: Guid;
category: DmpBlueprintSectionFieldCategory;
dataType: DmpBlueprintExtraFieldDataType;
systemFieldType: DmpBlueprintSystemFieldType;
label: string;
placeholder: string;
description: string;
required: boolean;
ordinal: number;
}
//
// Persist
//
export interface DmpBlueprintPersist extends BaseEntityPersist {
label: string;
2023-10-24 09:40:26 +02:00
definition: DmpBlueprintDefinitionPersist;
status: DmpBlueprintStatus;
description: string;
}
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[];
}
export interface DescriptionTemplatesInSectionPersist {
id: Guid;
descriptionTemplateId: Guid;
label: string;
minMultiplicity: number;
maxMultiplicity: number;
}
export interface FieldInSectionPersist {
id: Guid;
category: DmpBlueprintSectionFieldCategory;
dataType: DmpBlueprintExtraFieldDataType;
systemFieldType: DmpBlueprintSystemFieldType;
label: string;
placeholder: string;
description: string;
required: boolean;
ordinal: number;
}