diff --git a/src/app/submission/sections/sherpa-policies/content-accordion/content-accordion.component.ts b/src/app/submission/sections/sherpa-policies/content-accordion/content-accordion.component.ts index 12b48d10f4..378f08c8bc 100644 --- a/src/app/submission/sections/sherpa-policies/content-accordion/content-accordion.component.ts +++ b/src/app/submission/sections/sherpa-policies/content-accordion/content-accordion.component.ts @@ -7,7 +7,9 @@ import { Component, Input } from '@angular/core'; styleUrls: ['./content-accordion.component.scss'] }) export class ContentAccordionComponent { - + /** + * PermittedVersions to show information from + */ @Input() version: PermittedVersions; } diff --git a/src/app/submission/sections/sherpa-policies/metadata-information/metadata-information.component.ts b/src/app/submission/sections/sherpa-policies/metadata-information/metadata-information.component.ts index 334aa43593..8b85237762 100644 --- a/src/app/submission/sections/sherpa-policies/metadata-information/metadata-information.component.ts +++ b/src/app/submission/sections/sherpa-policies/metadata-information/metadata-information.component.ts @@ -7,7 +7,9 @@ import { Metadata } from './../../../../core/submission/models/sherpa-policies-d styleUrls: ['./metadata-information.component.scss'] }) export class MetadataInformationComponent { - + /** + * Metadata to show information from + */ @Input() metadata: Metadata; } diff --git a/src/app/submission/sections/sherpa-policies/publication-information/publication-information.component.ts b/src/app/submission/sections/sherpa-policies/publication-information/publication-information.component.ts index a6cd6cc3da..a5306406af 100644 --- a/src/app/submission/sections/sherpa-policies/publication-information/publication-information.component.ts +++ b/src/app/submission/sections/sherpa-policies/publication-information/publication-information.component.ts @@ -7,7 +7,9 @@ import { Journal } from './../../../../core/submission/models/sherpa-policies-de styleUrls: ['./publication-information.component.scss'] }) export class PublicationInformationComponent { - + /** + * Journal to show information from + */ @Input() journal: Journal; } diff --git a/src/app/submission/sections/sherpa-policies/publisher-policy/publisher-policy.component.html b/src/app/submission/sections/sherpa-policies/publisher-policy/publisher-policy.component.html index 3bc1cb5084..4a03bae735 100644 --- a/src/app/submission/sections/sherpa-policies/publisher-policy/publisher-policy.component.html +++ b/src/app/submission/sections/sherpa-policies/publisher-policy/publisher-policy.component.html @@ -8,7 +8,6 @@ -

@@ -21,6 +20,4 @@

- - \ No newline at end of file diff --git a/src/app/submission/sections/sherpa-policies/publisher-policy/publisher-policy.component.ts b/src/app/submission/sections/sherpa-policies/publisher-policy/publisher-policy.component.ts index e526080d0d..dcbc115ddd 100644 --- a/src/app/submission/sections/sherpa-policies/publisher-policy/publisher-policy.component.ts +++ b/src/app/submission/sections/sherpa-policies/publisher-policy/publisher-policy.component.ts @@ -8,6 +8,9 @@ import { Component, Input, OnInit } from '@angular/core'; }) export class PublisherPolicyComponent { + /** + * Policy to show information from + */ @Input() policy: Policy; } diff --git a/src/app/submission/sections/sherpa-policies/section-sherpa-policies.component.html b/src/app/submission/sections/sherpa-policies/section-sherpa-policies.component.html index ade01a4312..6756793fd5 100644 --- a/src/app/submission/sections/sherpa-policies/section-sherpa-policies.component.html +++ b/src/app/submission/sections/sherpa-policies/section-sherpa-policies.component.html @@ -1,3 +1,9 @@ +
+ +
+ diff --git a/src/app/submission/sections/sherpa-policies/section-sherpa-policies.component.scss b/src/app/submission/sections/sherpa-policies/section-sherpa-policies.component.scss index 8c1bfc2580..5a8e0e3c34 100644 --- a/src/app/submission/sections/sherpa-policies/section-sherpa-policies.component.scss +++ b/src/app/submission/sections/sherpa-policies/section-sherpa-policies.component.scss @@ -28,4 +28,9 @@ } } +} + +.refresh-container { + display: flex; + justify-content: right; } \ No newline at end of file diff --git a/src/app/submission/sections/sherpa-policies/section-sherpa-policies.component.ts b/src/app/submission/sections/sherpa-policies/section-sherpa-policies.component.ts index 662f066663..f5eaaa773a 100644 --- a/src/app/submission/sections/sherpa-policies/section-sherpa-policies.component.ts +++ b/src/app/submission/sections/sherpa-policies/section-sherpa-policies.component.ts @@ -1,14 +1,18 @@ +import { JsonPatchOperationPathCombiner } from './../../../core/json-patch/builder/json-patch-operation-path-combiner'; +import { JsonPatchOperationsBuilder } from './../../../core/json-patch/builder/json-patch-operations-builder'; import { WorkspaceitemSectionSherpaPoliciesObject } from './../../../core/submission/models/workspaceitem-section-sherpa-policies.model'; import { SectionSherpaPoliciesService } from './section-sherpa-policies.service'; import { Component, Inject, ViewChildren, QueryList } from '@angular/core'; -import { Observable, of } from 'rxjs'; +import { Observable, of, Subscription } from 'rxjs'; import { renderSectionFor } from '../sections-decorator'; import { SectionsType } from '../sections-type'; import { SectionDataObject } from '../models/section-data.model'; import { SectionsService } from '../sections.service'; import { SectionModelComponent } from '../models/section.model'; +import { SubmissionService } from '../../submission.service'; +import { hasValue } from '../../../shared/empty.util'; /** * This component represents a section for managing item's access conditions. @@ -29,6 +33,17 @@ export class SubmissionSectionSherpaPoliciesComponent extends SectionModelCompon */ public sherpaPoliciesData: WorkspaceitemSectionSherpaPoliciesObject; + /** + * The [[JsonPatchOperationPathCombiner]] object + * @type {JsonPatchOperationPathCombiner} + */ + protected pathCombiner: JsonPatchOperationPathCombiner; + + /** + * Array to track all subscriptions and unsubscribe them onDestroy + * @type {Array} + */ + protected subs: Subscription[] = []; /** * Initialize instance variables @@ -36,11 +51,15 @@ export class SubmissionSectionSherpaPoliciesComponent extends SectionModelCompon * @param {SectionsService} sectionService * @param {SectionDataObject} injectedSectionData * @param {SectionSherpaPoliciesService} sectionSherpaPoliciesService + * @param {JsonPatchOperationsBuilder} operationsBuilder + * @param {SubmissionService} submissionService * @param {string} injectedSubmissionId */ constructor( protected sectionService: SectionsService, private sectionSherpaPoliciesService: SectionSherpaPoliciesService, + protected operationsBuilder: JsonPatchOperationsBuilder, + private submissionService: SubmissionService, @Inject('sectionDataProvider') public injectedSectionData: SectionDataObject, @Inject('submissionIdProvider') public injectedSubmissionId: string) { super(undefined, injectedSectionData, injectedSubmissionId); @@ -49,11 +68,15 @@ export class SubmissionSectionSherpaPoliciesComponent extends SectionModelCompon /** * Unsubscribe from all subscriptions */ - // tslint:disable-next-line:no-empty onSectionDestroy() { - + this.subs + .filter((subscription) => hasValue(subscription)) + .forEach((subscription) => subscription.unsubscribe()); } + /** + * Expand all primary accordions + */ ngAfterViewInit() { this.acc.forEach(accordion => { accordion.expandAll(); @@ -65,9 +88,12 @@ export class SubmissionSectionSherpaPoliciesComponent extends SectionModelCompon * Initialize all instance variables and retrieve collection default access conditions */ protected onSectionInit(): void { - this.sectionSherpaPoliciesService.getSherpaPoliciesData(this.submissionId, this.sectionData.id).subscribe((sherpaPolicies: WorkspaceitemSectionSherpaPoliciesObject) => { - this.sherpaPoliciesData = sherpaPolicies; - }); + this.pathCombiner = new JsonPatchOperationPathCombiner('sections', this.sectionData.id); + this.subs.push( + this.sectionSherpaPoliciesService.getSherpaPoliciesData(this.submissionId, this.sectionData.id).subscribe((sherpaPolicies: WorkspaceitemSectionSherpaPoliciesObject) => { + this.sherpaPoliciesData = sherpaPolicies; + }) + ); } /** @@ -80,4 +106,12 @@ export class SubmissionSectionSherpaPoliciesComponent extends SectionModelCompon return of(true); } + /** + * Refresh sherpa information + */ + refresh() { + this.operationsBuilder.remove(this.pathCombiner.getPath('retrievalTime')); + this.submissionService.dispatchSaveSection(this.submissionId, this.sectionData.id); + } + } diff --git a/src/app/submission/sections/sherpa-policies/section-sherpa-policies.service.ts b/src/app/submission/sections/sherpa-policies/section-sherpa-policies.service.ts index c81caca41e..4ddf4509cb 100644 --- a/src/app/submission/sections/sherpa-policies/section-sherpa-policies.service.ts +++ b/src/app/submission/sections/sherpa-policies/section-sherpa-policies.service.ts @@ -10,7 +10,7 @@ import { isNotUndefined } from '../../../shared/empty.util'; import { submissionSectionDataFromIdSelector } from '../../selectors'; /** - * A service that provides methods to handle submission item's accesses condition state. + * A service that provides methods to handle submission item's sherpa policies state. */ @Injectable() export class SectionSherpaPoliciesService { @@ -24,7 +24,7 @@ export class SectionSherpaPoliciesService { /** - * Return item's accesses condition state. + * Return item's sherpa policies state. * * @param submissionId * The submission id diff --git a/src/assets/i18n/en.json5 b/src/assets/i18n/en.json5 index 59079e34eb..3c2ad2505f 100644 --- a/src/assets/i18n/en.json5 +++ b/src/assets/i18n/en.json5 @@ -4022,6 +4022,7 @@ "submission.sections.sherpa.publisher.policy.conditions": "Conditions", + "submission.sections.sherpa.publisher.policy.refresh": "Refresh", "submission.sections.sherpa.record.information": "Record Information",