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

152 lines
3.7 KiB
TypeScript

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";
import { Dmp, DmpDescriptionTemplate, PublicDmp } from "../dmp/dmp";
import { Reference, ReferencePersist } from "../reference/reference";
import { Tag } from "../tag/tag";
import { User } from "../user/user";
import { AppPermission } from "@app/core/common/enum/permission.enum";
export interface Description extends BaseEntity {
label?: string;
properties?: DescriptionPropertyDefinition;
status?: DescriptionStatus;
description?: string;
createdBy?: User;
finalizedAt?: Date;
descriptionReferences?: DescriptionReference[];
descriptionTags?: DescriptionTag[];
descriptionTemplate?: DescriptionTemplate;
dmpDescriptionTemplate?: DmpDescriptionTemplate;
dmp?: Dmp;
authorizationFlags?: AppPermission[];
}
export interface DescriptionPropertyDefinition {
fieldSets: Map<string, DescriptionPropertyDefinitionFieldSet>;
}
export interface DescriptionPropertyDefinitionFieldSet {
items?: DescriptionPropertyDefinitionFieldSetItem[];
}
export interface DescriptionPropertyDefinitionFieldSetItem {
fields?: Map<string, DescriptionField>;
comment?: string;
ordinal?: number;
}
export interface DescriptionField {
textValue: string;
textListValue: string[];
dateValue: Date;
externalIdentifier?: DescriptionExternalIdentifier;
references: Reference[];
}
export interface DescriptionExternalIdentifier {
identifier: string;
type: string;
}
export interface DescriptionReference extends BaseEntity {
description?: Description;
reference?: Reference;
data?: DescriptionReferenceData;
}
export interface DescriptionReferenceData {
fieldId?: string;
}
export interface DescriptionTag extends BaseEntity {
description?: Description;
tag?: Tag;
}
//
// Persist
//
export interface DescriptionPersist extends BaseEntityPersist {
label: string;
dmpId: Guid;
dmpDescriptionTemplateId: Guid;
descriptionTemplateId: Guid;
status: DescriptionStatus;
description: string;
properties: DescriptionPropertyDefinitionPersist;
tags: string[];
references: DescriptionReferencePersist[];
}
export interface DescriptionPropertyDefinitionPersist {
fieldSets: Map<string, DescriptionPropertyDefinitionFieldSetPersist>;
}
export interface DescriptionPropertyDefinitionFieldSetPersist {
items?: DescriptionPropertyDefinitionFieldSetItemPersist[];
}
export interface DescriptionPropertyDefinitionFieldSetItemPersist {
fields?: Map<string, DescriptionFieldPersist>;
comment?: string;
ordinal?: number;
}
export interface DescriptionFieldPersist {
textValue: string;
textListValue: string[];
dateValue: Date;
references: ReferencePersist[];
externalIdentifier?: DescriptionExternalIdentifierPersist;
}
export interface DescriptionExternalIdentifierPersist {
identifier: string;
type: string;
}
export interface DescriptionReferencePersist {
id: Guid;
reference?: ReferencePersist;
hash: string;
}
export interface DescriptionStatusPersist {
id: Guid;
status: DescriptionStatus;
hash: string;
}
//
// 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;
}
export interface DescriptionSectionPermissionResolver {
dmpId: Guid;
sectionIds: Guid[];
permissions: string[];
}