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

91 lines
2.4 KiB
TypeScript

import { DmpBlueprintExtraFieldDataType } from "@app/core/common/enum/dmp-blueprint-field-type";
import { DmpBlueprintSectionFieldCategory } from "@app/core/common/enum/dmp-blueprint-section-field-category";
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";
export interface DmpBlueprint extends BaseEntity {
label: string;
definition: DmpBlueprintDefinition;
status: DmpBlueprintStatus;
description: string;
}
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: DmpBlueprintSectionFieldCategory;
dataType: DmpBlueprintExtraFieldDataType;
systemFieldType: DmpBlueprintSystemFieldType;
label: string;
placeholder: string;
description: string;
required: boolean;
ordinal: number;
}
//
// Persist
//
export interface DmpBlueprintPersist extends BaseEntityPersist {
label: string;
definition: DmpBlueprintDefinitionPersist;
status: DmpBlueprintStatus;
description: string;
}
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: DmpBlueprintSectionFieldCategory;
dataType: DmpBlueprintExtraFieldDataType;
systemFieldType: DmpBlueprintSystemFieldType;
label: string;
placeholder: string;
description: string;
required: boolean;
ordinal: number;
}