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

157 lines
3.8 KiB
TypeScript
Raw Normal View History

2023-10-27 17:56:19 +02:00
import { DescriptionStatus } from "@app/core/common/enum/description-status";
import { BaseEntity, BaseEntityPersist } from "@common/base/base-entity.model";
import { Guid } from "@common/types/guid";
import { DescriptionTemplate } from "../description-template/description-template";
2024-03-11 08:47:03 +01:00
import { Dmp, DmpDescriptionTemplate, PublicDmp } from "../dmp/dmp";
2023-11-29 14:26:40 +01:00
import { Reference, ReferencePersist } from "../reference/reference";
import { Tag } from "../tag/tag";
2023-12-06 22:10:01 +01:00
import { User } from "../user/user";
2024-03-15 13:13:55 +01:00
import { AppPermission } from "@app/core/common/enum/permission.enum";
2023-10-27 17:56:19 +02:00
export interface Description extends BaseEntity {
2024-02-02 09:29:38 +01:00
label?: string;
properties?: DescriptionPropertyDefinition;
status?: DescriptionStatus;
2023-12-06 22:10:01 +01:00
description?: string;
2024-02-02 09:29:38 +01:00
createdBy?: User;
finalizedAt?: Date;
descriptionReferences?: DescriptionReference[];
descriptionTags?: DescriptionTag[];
descriptionTemplate?: DescriptionTemplate;
dmpDescriptionTemplate?: DmpDescriptionTemplate;
dmp?: Dmp;
2024-03-15 13:13:55 +01:00
authorizationFlags?: AppPermission[];
2023-11-29 14:26:40 +01:00
}
2023-10-27 17:56:19 +02:00
2023-11-29 14:26:40 +01:00
2024-02-02 09:29:38 +01:00
export interface DescriptionPropertyDefinition {
fieldSets: Map<string, DescriptionPropertyDefinitionFieldSet>;
}
export interface DescriptionPropertyDefinitionFieldSet {
items?: DescriptionPropertyDefinitionFieldSetItem[];
}
export interface DescriptionPropertyDefinitionFieldSetItem {
fields?: Map<string, DescriptionField>;
comment?: string;
ordinal?: number;
2023-11-29 14:26:40 +01:00
}
2023-10-27 17:56:19 +02:00
2023-11-29 14:26:40 +01:00
export interface DescriptionField {
2024-02-07 13:15:25 +01:00
textValue: string;
textListValue: string[];
dateValue: Date;
externalIdentifier?: DescriptionExternalIdentifier;
2024-02-21 16:52:50 +01:00
references: Reference[];
2024-02-07 13:15:25 +01:00
}
export interface DescriptionExternalIdentifier {
identifier: string;
type: string;
2023-11-29 14:26:40 +01:00
}
2023-10-27 17:56:19 +02:00
2023-11-29 14:26:40 +01:00
export interface DescriptionReference extends BaseEntity {
description?: Description;
reference?: Reference;
2024-02-07 13:15:25 +01:00
data?: DescriptionReferenceData;
}
export interface DescriptionReferenceData {
fieldId?: string;
2023-11-29 14:26:40 +01:00
}
export interface DescriptionTag extends BaseEntity {
description?: Description;
tag?: Tag;
2023-10-27 17:56:19 +02:00
}
2024-03-15 13:13:55 +01:00
//
2023-10-27 17:56:19 +02:00
// Persist
2024-03-15 13:13:55 +01:00
//
2023-10-27 17:56:19 +02:00
export interface DescriptionPersist extends BaseEntityPersist {
2023-11-29 14:26:40 +01:00
label: string;
dmpId: Guid;
dmpDescriptionTemplateId: Guid;
descriptionTemplateId: Guid;
status: DescriptionStatus;
description: string;
2024-02-02 09:29:38 +01:00
properties: DescriptionPropertyDefinitionPersist;
2023-11-29 14:26:40 +01:00
tags: string[];
references: DescriptionReferencePersist[];
}
2024-02-02 09:29:38 +01:00
export interface DescriptionPropertyDefinitionPersist {
fieldSets: Map<string, DescriptionPropertyDefinitionFieldSetPersist>;
}
export interface DescriptionPropertyDefinitionFieldSetPersist {
items?: DescriptionPropertyDefinitionFieldSetItemPersist[];
}
export interface DescriptionPropertyDefinitionFieldSetItemPersist {
fields?: Map<string, DescriptionFieldPersist>;
comment?: string;
ordinal?: number;
2023-11-29 14:26:40 +01:00
}
export interface DescriptionFieldPersist {
2024-02-07 13:15:25 +01:00
textValue: string;
textListValue: string[];
dateValue: Date;
references: ReferencePersist[];
externalIdentifier?: DescriptionExternalIdentifierPersist;
}
export interface DescriptionExternalIdentifierPersist {
identifier: string;
type: string;
2023-11-29 14:26:40 +01:00
}
2023-10-27 17:56:19 +02:00
2023-12-06 22:10:01 +01:00
export interface DescriptionReferencePersist {
id: Guid;
2023-11-29 14:26:40 +01:00
reference?: ReferencePersist;
2023-12-06 22:10:01 +01:00
hash: string;
}
export interface DescriptionStatusPersist {
id: Guid;
status: DescriptionStatus;
hash: string;
2024-03-11 08:47:03 +01:00
}
//
// Public
//
export interface PublicDescription extends BaseEntity {
label?: string;
status?: DescriptionStatus;
description?: string;
finalizedAt?: Date;
descriptionTemplate?: PublicDescriptionTemplate;
dmpDescriptionTemplate?: PublicDmpDescriptionTemplate;
dmp?: PublicDmp;
}
export interface PublicDmpDescriptionTemplate {
id: Guid;
dmp: PublicDmp;
}
export interface PublicDescriptionTemplate {
id: Guid;
label: string;
description: string;
2024-03-15 13:13:55 +01:00
}
2024-03-19 16:21:50 +01:00
export interface DescriptionSectionPermissionResolver {
dmpId: Guid;
sectionIds: Guid[];
permissions: string[];
}
export interface UpdateDescriptionTemplatePersist {
id: Guid;
descriptionTemplateGroupId: Guid;
}