[CST-5270] Implemented new refresh button & code refactoring

This commit is contained in:
Rezart Vata
2022-04-26 17:52:28 +02:00
parent d390920cca
commit cb84bc758e
10 changed files with 66 additions and 14 deletions

View File

@@ -7,7 +7,9 @@ import { Component, Input } from '@angular/core';
styleUrls: ['./content-accordion.component.scss'] styleUrls: ['./content-accordion.component.scss']
}) })
export class ContentAccordionComponent { export class ContentAccordionComponent {
/**
* PermittedVersions to show information from
*/
@Input() version: PermittedVersions; @Input() version: PermittedVersions;
} }

View File

@@ -7,7 +7,9 @@ import { Metadata } from './../../../../core/submission/models/sherpa-policies-d
styleUrls: ['./metadata-information.component.scss'] styleUrls: ['./metadata-information.component.scss']
}) })
export class MetadataInformationComponent { export class MetadataInformationComponent {
/**
* Metadata to show information from
*/
@Input() metadata: Metadata; @Input() metadata: Metadata;
} }

View File

@@ -7,7 +7,9 @@ import { Journal } from './../../../../core/submission/models/sherpa-policies-de
styleUrls: ['./publication-information.component.scss'] styleUrls: ['./publication-information.component.scss']
}) })
export class PublicationInformationComponent { export class PublicationInformationComponent {
/**
* Journal to show information from
*/
@Input() journal: Journal; @Input() journal: Journal;
} }

View File

@@ -8,7 +8,6 @@
</div> </div>
<ds-content-accordion *ngFor="let permittedVersions of policy.permittedVersions" [version]="permittedVersions"> <ds-content-accordion *ngFor="let permittedVersions of policy.permittedVersions" [version]="permittedVersions">
</ds-content-accordion> </ds-content-accordion>
<!-- <ds-content-accordion></ds-content-accordion> -->
<div class="row"> <div class="row">
<div class="col-12"> <div class="col-12">
<p class="m-1"> <p class="m-1">
@@ -21,6 +20,4 @@
</ul> </ul>
</div> </div>
</div> </div>
</div> </div>

View File

@@ -8,6 +8,9 @@ import { Component, Input, OnInit } from '@angular/core';
}) })
export class PublisherPolicyComponent { export class PublisherPolicyComponent {
/**
* Policy to show information from
*/
@Input() policy: Policy; @Input() policy: Policy;
} }

View File

@@ -1,3 +1,9 @@
<div class="refresh-container mt-2 mb-2">
<button type="button" class="btn btn-secondary pull-right" (click)="refresh()">
<span><i class="fas fa-sync"></i> {{'submission.sections.sherpa.publisher.policy.refresh' | translate}} </span>
</button>
</div>
<ngb-accordion *ngFor="let sherpaData of sherpaPoliciesData.sherpaResponse;let i = index;" #acc="ngbAccordion"> <ngb-accordion *ngFor="let sherpaData of sherpaPoliciesData.sherpaResponse;let i = index;" #acc="ngbAccordion">
<ng-container *ngFor="let journal of sherpaData.journals;let j=index;"> <ng-container *ngFor="let journal of sherpaData.journals;let j=index;">
<ngb-panel id="publication-information-{{j}}"> <ngb-panel id="publication-information-{{j}}">

View File

@@ -28,4 +28,9 @@
} }
} }
}
.refresh-container {
display: flex;
justify-content: right;
} }

View File

@@ -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 { WorkspaceitemSectionSherpaPoliciesObject } from './../../../core/submission/models/workspaceitem-section-sherpa-policies.model';
import { SectionSherpaPoliciesService } from './section-sherpa-policies.service'; import { SectionSherpaPoliciesService } from './section-sherpa-policies.service';
import { Component, Inject, ViewChildren, QueryList } from '@angular/core'; 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 { renderSectionFor } from '../sections-decorator';
import { SectionsType } from '../sections-type'; import { SectionsType } from '../sections-type';
import { SectionDataObject } from '../models/section-data.model'; import { SectionDataObject } from '../models/section-data.model';
import { SectionsService } from '../sections.service'; import { SectionsService } from '../sections.service';
import { SectionModelComponent } from '../models/section.model'; 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. * This component represents a section for managing item's access conditions.
@@ -29,6 +33,17 @@ export class SubmissionSectionSherpaPoliciesComponent extends SectionModelCompon
*/ */
public sherpaPoliciesData: WorkspaceitemSectionSherpaPoliciesObject; 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 * Initialize instance variables
@@ -36,11 +51,15 @@ export class SubmissionSectionSherpaPoliciesComponent extends SectionModelCompon
* @param {SectionsService} sectionService * @param {SectionsService} sectionService
* @param {SectionDataObject} injectedSectionData * @param {SectionDataObject} injectedSectionData
* @param {SectionSherpaPoliciesService} sectionSherpaPoliciesService * @param {SectionSherpaPoliciesService} sectionSherpaPoliciesService
* @param {JsonPatchOperationsBuilder} operationsBuilder
* @param {SubmissionService} submissionService
* @param {string} injectedSubmissionId * @param {string} injectedSubmissionId
*/ */
constructor( constructor(
protected sectionService: SectionsService, protected sectionService: SectionsService,
private sectionSherpaPoliciesService: SectionSherpaPoliciesService, private sectionSherpaPoliciesService: SectionSherpaPoliciesService,
protected operationsBuilder: JsonPatchOperationsBuilder,
private submissionService: SubmissionService,
@Inject('sectionDataProvider') public injectedSectionData: SectionDataObject, @Inject('sectionDataProvider') public injectedSectionData: SectionDataObject,
@Inject('submissionIdProvider') public injectedSubmissionId: string) { @Inject('submissionIdProvider') public injectedSubmissionId: string) {
super(undefined, injectedSectionData, injectedSubmissionId); super(undefined, injectedSectionData, injectedSubmissionId);
@@ -49,11 +68,15 @@ export class SubmissionSectionSherpaPoliciesComponent extends SectionModelCompon
/** /**
* Unsubscribe from all subscriptions * Unsubscribe from all subscriptions
*/ */
// tslint:disable-next-line:no-empty
onSectionDestroy() { onSectionDestroy() {
this.subs
.filter((subscription) => hasValue(subscription))
.forEach((subscription) => subscription.unsubscribe());
} }
/**
* Expand all primary accordions
*/
ngAfterViewInit() { ngAfterViewInit() {
this.acc.forEach(accordion => { this.acc.forEach(accordion => {
accordion.expandAll(); accordion.expandAll();
@@ -65,9 +88,12 @@ export class SubmissionSectionSherpaPoliciesComponent extends SectionModelCompon
* Initialize all instance variables and retrieve collection default access conditions * Initialize all instance variables and retrieve collection default access conditions
*/ */
protected onSectionInit(): void { protected onSectionInit(): void {
this.sectionSherpaPoliciesService.getSherpaPoliciesData(this.submissionId, this.sectionData.id).subscribe((sherpaPolicies: WorkspaceitemSectionSherpaPoliciesObject) => { this.pathCombiner = new JsonPatchOperationPathCombiner('sections', this.sectionData.id);
this.sherpaPoliciesData = sherpaPolicies; 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); return of(true);
} }
/**
* Refresh sherpa information
*/
refresh() {
this.operationsBuilder.remove(this.pathCombiner.getPath('retrievalTime'));
this.submissionService.dispatchSaveSection(this.submissionId, this.sectionData.id);
}
} }

View File

@@ -10,7 +10,7 @@ import { isNotUndefined } from '../../../shared/empty.util';
import { submissionSectionDataFromIdSelector } from '../../selectors'; 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() @Injectable()
export class SectionSherpaPoliciesService { export class SectionSherpaPoliciesService {
@@ -24,7 +24,7 @@ export class SectionSherpaPoliciesService {
/** /**
* Return item's accesses condition state. * Return item's sherpa policies state.
* *
* @param submissionId * @param submissionId
* The submission id * The submission id

View File

@@ -4022,6 +4022,7 @@
"submission.sections.sherpa.publisher.policy.conditions": "Conditions", "submission.sections.sherpa.publisher.policy.conditions": "Conditions",
"submission.sections.sherpa.publisher.policy.refresh": "Refresh",
"submission.sections.sherpa.record.information": "Record Information", "submission.sections.sherpa.record.information": "Record Information",