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

235 lines
6.7 KiB
TypeScript

import { DescriptionTemplateFieldDataComboBoxType } from "@app/core/common/enum/description-template-field-data-combobox-type";
import { DescriptionTemplateFieldDataExternalDatasetType } from "@app/core/common/enum/description-template-field-data-external-dataset-type";
import { DescriptionTemplateFieldDataInternalDmpEntryType } from "@app/core/common/enum/description-template-field-data-internal-dmp-entry-type";
import { DescriptionTemplateFieldType } from "@app/core/common/enum/description-template-field-type";
import { DescriptionTemplateFieldValidationType } from "@app/core/common/enum/description-template-field-validation-type";
import { BaseEntity } from "@common/base/base-entity.model";
import { Guid } from "@common/types/guid";
import { DescriptionTemplateType } from "../description-template-type/description-template-type";
export interface DescriptionTemplate extends BaseEntity {
label: string;
description: string;
groupId: Guid;
version: string;
language: string;
type: DescriptionTemplateType;
definition: DescriptionTemplateDefinition;
}
export interface DescriptionTemplateDefinition {
pages?: DescriptionTemplatePage[];
sections?: DescriptionTemplateSection[];
}
export interface DescriptionTemplatePage {
id: Guid;
ordinal: number;
title: string;
}
export interface DescriptionTemplateSection {
id: Guid;
ordinal: number;
defaultVisibility: boolean;
multiplicity: boolean;
numbering: string;
page: string;
title: string;
description: string;
extendedDescription: string;
sections?: DescriptionTemplateSection[];
fieldSets: DescriptionTemplateFieldSet[];
}
export interface DescriptionTemplateFieldSet {
id: Guid;
ordinal: number;
numbering: string;
title: string;
description: string;
extendedDescription: string;
additionalInformation: string;
multiplicity: DescriptionTemplateMultiplicity
hasCommentField: boolean;
fields: DescriptionTemplateField[];
}
export interface DescriptionTemplateField {
id: Guid;
ordinal: number;
numbering: string;
schematics: string[];
defaultValue: string;
visibilityRules: DescriptionTemplateRule[];
validations: DescriptionTemplateFieldValidationType[];
fieldType: DescriptionTemplateFieldType;
includeInExport: boolean;
data: DescriptionTemplateBaseFieldData;
}
export interface DescriptionTemplateRule {
target: string;
value: string;
}
export interface DescriptionTemplateMultiplicity {
min: number;
max: number;
placeholder: string;
tableView: boolean;
}
export interface DescriptionTemplateBaseFieldData {
label: string;
}
//
// Field Types
//
export interface DescriptionTemplateAutoCompleteData extends DescriptionTemplateComboBoxData {
multiAutoComplete: boolean;
autoCompleteSingleDataList: DescriptionTemplateAutoCompleteSingleData[];
}
export interface DescriptionTemplateBooleanDecisionData extends DescriptionTemplateBaseFieldData {
}
export interface DescriptionTemplateCheckBoxData extends DescriptionTemplateBaseFieldData {
}
export interface DescriptionTemplateComboBoxData extends DescriptionTemplateBaseFieldData {
type: DescriptionTemplateFieldDataComboBoxType;
}
export interface DescriptionTemplateCurrencyData extends DescriptionTemplateBaseFieldData {
}
export interface DescriptionTemplateDataRepositoryData extends DescriptionTemplateBaseFieldData {
multiAutoComplete: boolean;
}
export interface DescriptionTemplateDatasetAutoCompleteData extends DescriptionTemplateInternalDmpBaseData {
multiAutoComplete: boolean;
}
export interface DescriptionTemplateDatasetIdentifierData extends DescriptionTemplateBaseFieldData {
}
export interface DescriptionTemplateDatePickerData extends DescriptionTemplateBaseFieldData {
}
export interface DescriptionTemplateDmpAutoCompleteData extends DescriptionTemplateInternalDmpBaseData {
multiAutoComplete: boolean;
}
export interface DescriptionTemplateExternalDatasetData extends DescriptionTemplateBaseFieldData {
multiAutoComplete: boolean;
type: DescriptionTemplateFieldDataExternalDatasetType;
}
export interface DescriptionTemplateFreeTextData extends DescriptionTemplateBaseFieldData {
}
export interface DescriptionTemplateInternalDmpBaseData extends DescriptionTemplateBaseFieldData {
type: DescriptionTemplateFieldDataInternalDmpEntryType;
}
export interface DescriptionTemplateLicenseData extends DescriptionTemplateBaseFieldData {
multiAutoComplete: boolean;
}
export interface DescriptionTemplateOrganizationData extends DescriptionTemplateBaseFieldData {
multiAutoComplete: boolean;
}
export interface DescriptionTemplatePublicationData extends DescriptionTemplateBaseFieldData {
multiAutoComplete: boolean;
}
export interface DescriptionTemplateRadioBoxData extends DescriptionTemplateBaseFieldData {
options: DescriptionTemplateRadioBoxOption;
}
export interface DescriptionTemplateRegistryData extends DescriptionTemplateBaseFieldData {
multiAutoComplete: boolean;
}
export interface DescriptionTemplateResearcherAutoCompleteData extends DescriptionTemplateInternalDmpBaseData {
multiAutoComplete: boolean;
}
export interface DescriptionTemplateResearcherData extends DescriptionTemplateBaseFieldData {
multiAutoComplete: boolean;
}
export interface DescriptionTemplateRichTextAreaData extends DescriptionTemplateBaseFieldData {
}
export interface DescriptionTemplateServiceData extends DescriptionTemplateBaseFieldData {
multiAutoComplete: boolean;
}
export interface DescriptionTemplateTagData extends DescriptionTemplateBaseFieldData {
}
export interface DescriptionTemplateTaxonomyData extends DescriptionTemplateBaseFieldData {
multiAutoComplete: boolean;
}
export interface DescriptionTemplateTextAreaData extends DescriptionTemplateBaseFieldData {
}
export interface DescriptionTemplateTextAreaData extends DescriptionTemplateBaseFieldData {
types: DescriptionTemplateUploadOption[];
}
export interface DescriptionTemplateValidationData extends DescriptionTemplateBaseFieldData {
}
export interface DescriptionTemplateWordListData extends DescriptionTemplateComboBoxData {
options: DescriptionTemplateComboBoxOption[];
multiList: boolean;
}
//
// Others
//
export interface DescriptionTemplateAutoCompleteSingleData {
autocompleteType: string;
url: string;
autoCompleteOptions: DescriptionTemplateComboBoxOption;
optionsRoot: string;
hasAuth: boolean;
auth: DescriptionTemplateAuthAutoCompleteData
method: string;
}
export interface DescriptionTemplateAuthAutoCompleteData {
url: string;
method: string;
body: string;
path: string;
type: string;
}
export interface DescriptionTemplateComboBoxOption {
label: string;
value: string;
source: string;
uri: string;
}
export interface DescriptionTemplateRadioBoxOption {
label: string;
value: string;
}
export interface DescriptionTemplateUploadOption {
label: string;
value: string;
}