From 973ceb3b4b4a306caa9e8ecd8ad440e1036d9ebb Mon Sep 17 00:00:00 2001 From: Giuseppe Digilio Date: Mon, 24 Jan 2022 19:54:21 +0100 Subject: [PATCH] [CST-4506] Address feedback --- ...onfig-accesses-conditions-options.model.ts | 5 +- .../models/config-submission-access.model.ts | 20 ++++- .../models/access-condition.model.ts | 25 ++++++ .../models/submission-accesses.model.ts | 37 -------- .../submission-accesses.resource-type.ts | 2 +- .../submission-item-access-condition.model.ts | 8 ++ ...sion-upload-file-access-condition.model.ts | 23 +---- .../workspaceitem-section-accesses.model.ts | 27 +++--- ...amic-form-control-container.component.html | 3 +- .../accesses/section-accesses.component.ts | 90 +++++-------------- .../accesses/section-accesses.model.ts | 21 +++-- .../accesses/section-accesses.service.ts | 12 +-- src/assets/i18n/en.json5 | 2 + 13 files changed, 115 insertions(+), 160 deletions(-) create mode 100644 src/app/core/submission/models/access-condition.model.ts delete mode 100644 src/app/core/submission/models/submission-accesses.model.ts create mode 100644 src/app/core/submission/models/submission-item-access-condition.model.ts diff --git a/src/app/core/config/models/config-accesses-conditions-options.model.ts b/src/app/core/config/models/config-accesses-conditions-options.model.ts index a12ae76b8e..244b501908 100644 --- a/src/app/core/config/models/config-accesses-conditions-options.model.ts +++ b/src/app/core/config/models/config-accesses-conditions-options.model.ts @@ -1,7 +1,5 @@ -import { autoserialize } from 'cerialize'; - /** - * Model class for an Access Condition + * Model class for an Item Access Condition */ export class AccessesConditionOption { @@ -15,7 +13,6 @@ export class AccessesConditionOption { */ groupName: string; - /** * A boolean representing if this Access Condition has a start date */ diff --git a/src/app/core/config/models/config-submission-access.model.ts b/src/app/core/config/models/config-submission-access.model.ts index 9584fc6e3c..7db96acf2b 100644 --- a/src/app/core/config/models/config-submission-access.model.ts +++ b/src/app/core/config/models/config-submission-access.model.ts @@ -1,27 +1,39 @@ -import { autoserialize, inheritSerialization, deserialize } from 'cerialize'; -import { typedObject, link } from '../../cache/builders/build-decorators'; +import { autoserialize, deserialize, inheritSerialization } from 'cerialize'; +import { typedObject } from '../../cache/builders/build-decorators'; import { ConfigObject } from './config.model'; import { AccessesConditionOption } from './config-accesses-conditions-options.model'; import { SUBMISSION_ACCESSES_TYPE } from './config-type'; import { HALLink } from '../../shared/hal-link.model'; - +/** + * Class for the configuration describing the item accesses condition + */ @typedObject @inheritSerialization(ConfigObject) export class SubmissionAccessModel extends ConfigObject { static type = SUBMISSION_ACCESSES_TYPE; + /** - * A list of available bitstream access conditions + * A list of available item access conditions */ @autoserialize accessConditionOptions: AccessesConditionOption[]; + /** + * Boolean that indicates whether the current item must be findable via search or browse. + */ @autoserialize discoverable: boolean; + /** + * Boolean that indicates whether or not the user can change the discoverable flag. + */ @autoserialize canChangeDiscoverable: boolean; + /** + * The links to all related resources returned by the rest api. + */ @deserialize _links: { self: HALLink diff --git a/src/app/core/submission/models/access-condition.model.ts b/src/app/core/submission/models/access-condition.model.ts new file mode 100644 index 0000000000..5ec5c2c434 --- /dev/null +++ b/src/app/core/submission/models/access-condition.model.ts @@ -0,0 +1,25 @@ +/** + * An interface to represent an access condition. + */ +export class AccessConditionObject { + + /** + * The access condition id + */ + id: string; + + /** + * The access condition name + */ + name: string; + + /** + * Possible start date of the access condition + */ + startDate: string; + + /** + * Possible end date of the access condition + */ + endDate: string; +} diff --git a/src/app/core/submission/models/submission-accesses.model.ts b/src/app/core/submission/models/submission-accesses.model.ts deleted file mode 100644 index afad90b2ff..0000000000 --- a/src/app/core/submission/models/submission-accesses.model.ts +++ /dev/null @@ -1,37 +0,0 @@ -import { autoserialize, inheritSerialization } from 'cerialize'; -import { typedObject } from '../../cache/builders/build-decorators'; -import { excludeFromEquals } from '../../utilities/equals.decorators'; -import { ResourceType } from '../../shared/resource-type'; -import { HALResource } from '../../shared/hal-resource.model'; -import { SUBMISSION_ACCESSES } from './submission-accesses.resource-type'; - -@typedObject -@inheritSerialization(HALResource) -export class SubmissionAccesses extends HALResource { - - static type = SUBMISSION_ACCESSES; - - /** - * The object type - */ - @excludeFromEquals - @autoserialize - type: ResourceType; - - @autoserialize - discoverable: boolean; - - @autoserialize - accessConditions: AccessConditions[]; -} - -export interface AccessConditions { - name: string; - startDate?: Date; - hasStartDate?: boolean; - maxStartDate?: string; - hasEndDate?: boolean; - maxEndDate?: string; - endDate?: Date; -} - diff --git a/src/app/core/submission/models/submission-accesses.resource-type.ts b/src/app/core/submission/models/submission-accesses.resource-type.ts index 0aacb89522..0634a63337 100644 --- a/src/app/core/submission/models/submission-accesses.resource-type.ts +++ b/src/app/core/submission/models/submission-accesses.resource-type.ts @@ -1,7 +1,7 @@ import { ResourceType } from '../../shared/resource-type'; /** - * The resource type for License + * The resource type for Accesses section * * Needs to be in a separate file to prevent circular * dependencies in webpack. diff --git a/src/app/core/submission/models/submission-item-access-condition.model.ts b/src/app/core/submission/models/submission-item-access-condition.model.ts new file mode 100644 index 0000000000..60e749b786 --- /dev/null +++ b/src/app/core/submission/models/submission-item-access-condition.model.ts @@ -0,0 +1,8 @@ +import { AccessConditionObject } from './access-condition.model'; + +/** + * An interface to represent item's access condition. + */ +export class SubmissionItemAccessConditionObject extends AccessConditionObject { + +} diff --git a/src/app/core/submission/models/submission-upload-file-access-condition.model.ts b/src/app/core/submission/models/submission-upload-file-access-condition.model.ts index fa4d9b9062..7be9d6f1f7 100644 --- a/src/app/core/submission/models/submission-upload-file-access-condition.model.ts +++ b/src/app/core/submission/models/submission-upload-file-access-condition.model.ts @@ -1,25 +1,8 @@ +import { AccessConditionObject } from './access-condition.model'; + /** * An interface to represent bitstream's access condition. */ -export class SubmissionUploadFileAccessConditionObject { +export class SubmissionUploadFileAccessConditionObject extends AccessConditionObject { - /** - * The access condition id - */ - id: string; - - /** - * The access condition name - */ - name: string; - - /** - * Possible start date of the access condition - */ - startDate: string; - - /** - * Possible end date of the access condition - */ - endDate: string; } diff --git a/src/app/core/submission/models/workspaceitem-section-accesses.model.ts b/src/app/core/submission/models/workspaceitem-section-accesses.model.ts index c464f858cf..2d571f67f8 100644 --- a/src/app/core/submission/models/workspaceitem-section-accesses.model.ts +++ b/src/app/core/submission/models/workspaceitem-section-accesses.model.ts @@ -1,18 +1,21 @@ +import { SubmissionItemAccessConditionObject } from './submission-item-access-condition.model'; + /** - * An interface to represent the submission's creative commons license section data. + * An interface to represent the submission's item accesses condition. */ export interface WorkspaceitemSectionAccessesObject { + /** + * The access condition id + */ id: string; + + /** + * Boolean that indicates whether the current item must be findable via search or browse. + */ discoverable: boolean; - accessConditions: [ - { - name: string; - startDate?: Date; - hasStartDate?: boolean; - maxStartDate?: string; - hasEndDate?: boolean; - maxEndDate?: string; - endDate?: Date; - } - ]; + + /** + * A list of available item access conditions + */ + accessConditions: SubmissionItemAccessConditionObject[]; } diff --git a/src/app/shared/form/builder/ds-dynamic-form-ui/ds-dynamic-form-control-container.component.html b/src/app/shared/form/builder/ds-dynamic-form-ui/ds-dynamic-form-control-container.component.html index fc115e043a..55e354ea7a 100644 --- a/src/app/shared/form/builder/ds-dynamic-form-ui/ds-dynamic-form-control-container.component.html +++ b/src/app/shared/form/builder/ds-dynamic-form-ui/ds-dynamic-form-control-container.component.html @@ -14,7 +14,8 @@
-