From 1cf0f97121b96a0512cff3d9414b172c206190d7 Mon Sep 17 00:00:00 2001 From: Alexandre Vryghem Date: Tue, 3 Jan 2023 16:15:59 +0100 Subject: [PATCH] 98211: Added advanced workflow models --- src/app/core/core.module.ts | 6 +++++ ...ing-reviewer-action-advanced-info.model.ts | 27 +++++++++++++++++++ .../reviewer-action-advanced-info.model.ts | 16 +++++++++++ ...ewer-action-advanced-info.resource-type.ts | 25 +++++++++++++++++ ...ect-reviewer-action-advanced-info.model.ts | 18 +++++++++++++ .../models/workflow-action-object.model.ts | 20 ++++++++++++++ 6 files changed, 112 insertions(+) create mode 100644 src/app/core/tasks/models/rating-reviewer-action-advanced-info.model.ts create mode 100644 src/app/core/tasks/models/reviewer-action-advanced-info.model.ts create mode 100644 src/app/core/tasks/models/reviewer-action-advanced-info.resource-type.ts create mode 100644 src/app/core/tasks/models/select-reviewer-action-advanced-info.model.ts diff --git a/src/app/core/core.module.ts b/src/app/core/core.module.ts index 8d8a614a89..df71f740da 100644 --- a/src/app/core/core.module.ts +++ b/src/app/core/core.module.ts @@ -162,6 +162,9 @@ import { SearchConfig } from './shared/search/search-filters/search-config.model import { SequenceService } from './shared/sequence.service'; import { GroupDataService } from './eperson/group-data.service'; import { SubmissionAccessesModel } from './config/models/config-submission-accesses.model'; +import { RatingReviewerActionAdvancedInfo } from './tasks/models/rating-reviewer-action-advanced-info.model'; +import { ReviewerActionAdvancedInfo } from './tasks/models/reviewer-action-advanced-info.model'; +import { SelectReviewerActionAdvancedInfo } from './tasks/models/select-reviewer-action-advanced-info.model'; /** * When not in production, endpoint responses can be mocked for testing purposes @@ -332,6 +335,9 @@ export const models = Version, VersionHistory, WorkflowAction, + ReviewerActionAdvancedInfo, + RatingReviewerActionAdvancedInfo, + SelectReviewerActionAdvancedInfo, TemplateItem, Feature, Authorization, diff --git a/src/app/core/tasks/models/rating-reviewer-action-advanced-info.model.ts b/src/app/core/tasks/models/rating-reviewer-action-advanced-info.model.ts new file mode 100644 index 0000000000..2759d3edf2 --- /dev/null +++ b/src/app/core/tasks/models/rating-reviewer-action-advanced-info.model.ts @@ -0,0 +1,27 @@ +import { typedObject } from '../../cache/builders/build-decorators'; +import { inheritSerialization, autoserialize } from 'cerialize'; +import { RATING_REVIEWER_ACTION_ADVANCED_INFO } from './reviewer-action-advanced-info.resource-type'; +import { ReviewerActionAdvancedInfo } from './reviewer-action-advanced-info.model'; + +/** + * A model class for a {@link RatingReviewerActionAdvancedInfo} + */ +@typedObject +@inheritSerialization(ReviewerActionAdvancedInfo) +export class RatingReviewerActionAdvancedInfo extends ReviewerActionAdvancedInfo { + + static type = RATING_REVIEWER_ACTION_ADVANCED_INFO; + + /** + * Whether the description is required. + */ + @autoserialize + descriptionRequired: boolean; + + /** + * The maximum value. + */ + @autoserialize + maxValue: number; + +} diff --git a/src/app/core/tasks/models/reviewer-action-advanced-info.model.ts b/src/app/core/tasks/models/reviewer-action-advanced-info.model.ts new file mode 100644 index 0000000000..dc423eec51 --- /dev/null +++ b/src/app/core/tasks/models/reviewer-action-advanced-info.model.ts @@ -0,0 +1,16 @@ +import { typedObject } from '../../cache/builders/build-decorators'; +import { autoserialize } from 'cerialize'; +import { REVIEWER_ACTION_ADVANCED_INFO } from './reviewer-action-advanced-info.resource-type'; + +/** + * A model class for a {@link ReviewerActionAdvancedInfo} + */ +@typedObject +export class ReviewerActionAdvancedInfo { + + static type = REVIEWER_ACTION_ADVANCED_INFO; + + @autoserialize + id: string; + +} diff --git a/src/app/core/tasks/models/reviewer-action-advanced-info.resource-type.ts b/src/app/core/tasks/models/reviewer-action-advanced-info.resource-type.ts new file mode 100644 index 0000000000..876f37495e --- /dev/null +++ b/src/app/core/tasks/models/reviewer-action-advanced-info.resource-type.ts @@ -0,0 +1,25 @@ +import { ResourceType } from '../../shared/resource-type'; + +/** + * The resource type for {@link ReviewerActionAdvancedInfo} + * + * Needs to be in a separate file to prevent circular + * dependencies in webpack. + */ +export const REVIEWER_ACTION_ADVANCED_INFO = new ResourceType('revieweraction'); + +/** + * The resource type for {@link RatingReviewerActionAdvancedInfo} + * + * Needs to be in a separate file to prevent circular + * dependencies in webpack. + */ +export const RATING_REVIEWER_ACTION_ADVANCED_INFO = new ResourceType('ratingrevieweraction'); + +/** + * The resource type for {@link SelectReviewerActionAdvancedInfo} + * + * Needs to be in a separate file to prevent circular + * dependencies in webpack. + */ +export const SELECT_REVIEWER_ACTION_ADVANCED_INFO = new ResourceType('selectrevieweraction'); diff --git a/src/app/core/tasks/models/select-reviewer-action-advanced-info.model.ts b/src/app/core/tasks/models/select-reviewer-action-advanced-info.model.ts new file mode 100644 index 0000000000..cd8812f6af --- /dev/null +++ b/src/app/core/tasks/models/select-reviewer-action-advanced-info.model.ts @@ -0,0 +1,18 @@ +import { typedObject } from '../../cache/builders/build-decorators'; +import { inheritSerialization, autoserialize } from 'cerialize'; +import { SELECT_REVIEWER_ACTION_ADVANCED_INFO } from './reviewer-action-advanced-info.resource-type'; +import { ReviewerActionAdvancedInfo } from './reviewer-action-advanced-info.model'; + +/** + * A model class for a {@link SelectReviewerActionAdvancedInfo} + */ +@typedObject +@inheritSerialization(ReviewerActionAdvancedInfo) +export class SelectReviewerActionAdvancedInfo extends ReviewerActionAdvancedInfo { + + static type = SELECT_REVIEWER_ACTION_ADVANCED_INFO; + + @autoserialize + group: string; + +} diff --git a/src/app/core/tasks/models/workflow-action-object.model.ts b/src/app/core/tasks/models/workflow-action-object.model.ts index 720d817859..6fa103bbea 100644 --- a/src/app/core/tasks/models/workflow-action-object.model.ts +++ b/src/app/core/tasks/models/workflow-action-object.model.ts @@ -2,6 +2,7 @@ import { inheritSerialization, autoserialize } from 'cerialize'; import { typedObject } from '../../cache/builders/build-decorators'; import { DSpaceObject } from '../../shared/dspace-object.model'; import { WORKFLOW_ACTION } from './workflow-action-object.resource-type'; +import { ReviewerActionAdvancedInfo } from './reviewer-action-advanced-info.model'; /** * A model class for a WorkflowAction @@ -22,4 +23,23 @@ export class WorkflowAction extends DSpaceObject { */ @autoserialize options: string[]; + + /** + * Whether this action has advanced options + */ + @autoserialize + advanced: boolean; + + /** + * The advanced options that the user can select at this action + */ + @autoserialize + advancedOptions: string[]; + + /** + * The advanced info required by the advanced options + */ + @autoserialize + advancedInfo: ReviewerActionAdvancedInfo[]; + }