[CST-5270] Code refactoring, made changes from the rest contract and implemented i18n

This commit is contained in:
Rezart Vata
2022-04-22 19:09:40 +02:00
parent da2cba5827
commit d390920cca
21 changed files with 522 additions and 217 deletions

View File

@@ -1,64 +1,63 @@
<ngb-accordion #acc="ngbAccordion" [activeIds]="id">
<ngb-panel [id]="id">
<ngb-accordion #acc="ngbAccordion" [activeIds]="'version'">
<ngb-panel id="version">
<ng-template ngbPanelTitle>
<span class="float-left section-title" tabindex="0">{{id.replace('-',' ') | titlecase}}</span>
<span class="float-left section-title" tabindex="0">
{{version.articleVersion | titlecase}} {{ 'submission.sections.sherpa.publisher.policy.version' |
translate }}
</span>
<div class="d-inline-block float-right">
<span *ngIf="!acc.isExpanded(id)" class="fas fa-plus"></span>
<span *ngIf="acc.isExpanded(id)" class="fas fa-minus"></span>
<span *ngIf="!acc.isExpanded('version')" class="fas fa-plus"></span>
<span *ngIf="acc.isExpanded('version')" class="fas fa-minus"></span>
</div>
</ng-template>
<ng-template ngbPanelContent>
<div class="ml-4">
<div class="row">
<div class="col-4">
<p class="m-0">Article Version</p>
<p class="m-1">{{ 'submission.sections.sherpa.publisher.policy.embargo' | translate }}</p>
</div>
<div class="col-4">
{{data.articleVersion}}
<div class="col-6">
<p class="m-1" *ngIf="!!version.embargo;else noEmbargo">{{version.embargo.amount}}
{{version.embargo.units}}</p>
<ng-template #noEmbargo>
<p class="m-1">{{ 'submission.sections.sherpa.publisher.policy.noembargo' | translate }}</p>
</ng-template>
</div>
</div>
<div class="row">
<div class="col-4">
<p class="m-0">Conditions</p>
<p class="m-1">{{ 'submission.sections.sherpa.publisher.policy.license' | translate }}</p>
</div>
<div class="col-4">
<p class="m-0" *ngFor="let condition of data.conditions">{{condition}}</p>
<div class="col-6">
<p class="m-1" *ngFor="let license of version.licenses">{{license}}</p>
</div>
</div>
<div class="row">
<div class="col-4">
<p class="m-0">Prerequisites</p>
<p class="m-1">{{ 'submission.sections.sherpa.publisher.policy.prerequisites' | translate }}</p>
</div>
<div class="col-4">
<p class="m-0" *ngFor="let prerequisite of data.prerequisites">{{prerequisite}}</p>
<div class="col-6">
<p class="m-1" *ngFor="let prerequisite of version.prerequisites">{{prerequisite}}</p>
</div>
</div>
<div class="row">
<div class="col-4">
<p class="m-0">Location</p>
<p class="m-1">{{ 'submission.sections.sherpa.publisher.policy.location' | translate }}</p>
</div>
<div class="col-4">
<p class="m-0" *ngFor="let location of data.locations">{{location}}</p>
<div class="col-6">
<p class="m-1" *ngFor="let location of version.locations">{{location}}</p>
</div>
</div>
<div class="row">
<div class="col-4">
<p class="m-0">License</p>
<p class="m-1">{{ 'submission.sections.sherpa.publisher.policy.conditions' | translate }}</p>
</div>
<div class="col-4">
<p class="m-0" *ngFor="let license of data.licenses">{{license}}</p>
</div>
</div>
<div class="row">
<div class="col-4">
<p class="m-0">Embargo</p>
</div>
<div class="col-4">
<p class="m-0">{{data.embargo.amount}} {{data.embargo.units}}</p>
<div class="col-6">
<p class="m-1" *ngFor="let condition of version.conditions">{{condition}}</p>
</div>
</div>
</div>
</ng-template>
</ngb-panel>
</ngb-accordion>

View File

@@ -1,3 +1,4 @@
import { PermittedVersions } from './../../../../core/submission/models/sherpa-policies-details.model';
import { Component, Input } from '@angular/core';
@Component({
@@ -7,7 +8,6 @@ import { Component, Input } from '@angular/core';
})
export class ContentAccordionComponent {
@Input() id: string;
@Input() data: any;
@Input() version: PermittedVersions;
}

View File

@@ -0,0 +1,39 @@
<div class="ml-4">
<div class="row">
<div class="col-4">
<p class="m-1">{{ 'submission.sections.sherpa.record.information.id' | translate }}</p>
</div>
<div class="col-8">
<p class="m-1">{{metadata.id}}
</p>
</div>
</div>
<div class="row">
<div class="col-4">
<p class="m-1">{{ 'submission.sections.sherpa.record.information.date.created' | translate }}</p>
</div>
<div class="col-8">
<p class="m-1">{{metadata.dateCreated | date: 'd MMMM Y H:mm:ss zzzz' }}
</p>
</div>
</div>
<div class="row">
<div class="col-4">
<p class="m-1">{{ 'submission.sections.sherpa.record.information.date.modified' | translate }}</p>
</div>
<div class="col-8">
<p class="m-1">{{metadata.dateModified| date: 'd MMMM Y H:mm:ss zzzz' }}
</p>
</div>
</div>
<div class="row">
<div class="col-4">
<p class="m-1">{{ 'submission.sections.sherpa.record.information.uri' | translate }}</p>
</div>
<div class="col-8">
<p class="m-1">
<a [href]="metadata.uri">{{metadata.uri}}</a>
</p>
</div>
</div>
</div>

View File

@@ -0,0 +1,25 @@
import { ComponentFixture, TestBed } from '@angular/core/testing';
import { MetadataInformationComponent } from './metadata-information.component';
describe('MetadataInformationComponent', () => {
let component: MetadataInformationComponent;
let fixture: ComponentFixture<MetadataInformationComponent>;
beforeEach(async () => {
await TestBed.configureTestingModule({
declarations: [ MetadataInformationComponent ]
})
.compileComponents();
});
beforeEach(() => {
fixture = TestBed.createComponent(MetadataInformationComponent);
component = fixture.componentInstance;
fixture.detectChanges();
});
it('should create', () => {
expect(component).toBeTruthy();
});
});

View File

@@ -0,0 +1,13 @@
import { Component, Input } from '@angular/core';
import { Metadata } from './../../../../core/submission/models/sherpa-policies-details.model';
@Component({
selector: 'ds-metadata-information',
templateUrl: './metadata-information.component.html',
styleUrls: ['./metadata-information.component.scss']
})
export class MetadataInformationComponent {
@Input() metadata: Metadata;
}

View File

@@ -0,0 +1,70 @@
<div class="ml-4">
<div class="row">
<div class="col-4">
<p class="m-1">{{'submission.sections.sherpa.publication.information.title'
| translate}}</p>
</div>
<div class="col-4">
<p class="m-1" *ngFor="let title of journal.titles">{{title}}
</p>
</div>
</div>
<div class="row">
<div class="col-4">
<p class="m-1">{{'submission.sections.sherpa.publication.information.issns'
| translate}}</p>
</div>
<div class="col-4">
<p class="m-1" *ngFor="let issn of journal.issns">{{issn}}
</p>
</div>
</div>
<div class="row">
<div class="col-4">
<p class="m-1">{{'submission.sections.sherpa.publication.information.url'
| translate}}</p>
</div>
<div class="col-4">
<p class="m-1">
<a href="{{journal.url}}">
{{journal.url}}
</a>
</p>
</div>
</div>
<div class="row">
<div class="col-4">
<p class="m-1">{{'submission.sections.sherpa.publication.information.publishers'
| translate}}</p>
</div>
<div class="col-4" *ngFor="let publisher of journal.publishers">
<p class="m-1">
<a href="{{publisher.uri}}">
{{publisher.name}}
</a>
</p>
</div>
</div>
<div class="row">
<div class="col-4">
<p class="m-1">{{'submission.sections.sherpa.publication.information.romeoPub'
| translate}}</p>
</div>
<div class="col-4">
<p class="m-1">
{{journal.romeoPub}}
</p>
</div>
</div>
<div class="row">
<div class="col-4">
<p class="m-1">{{'submission.sections.sherpa.publication.information.zetoPub'
| translate}}</p>
</div>
<div class="col-4">
<p class="m-1">
{{journal.zetoPub}}
</p>
</div>
</div>
</div>

View File

@@ -0,0 +1,25 @@
import { ComponentFixture, TestBed } from '@angular/core/testing';
import { PublicationInformationComponent } from './publication-information.component';
describe('PublicationInformationComponent', () => {
let component: PublicationInformationComponent;
let fixture: ComponentFixture<PublicationInformationComponent>;
beforeEach(async () => {
await TestBed.configureTestingModule({
declarations: [ PublicationInformationComponent ]
})
.compileComponents();
});
beforeEach(() => {
fixture = TestBed.createComponent(PublicationInformationComponent);
component = fixture.componentInstance;
fixture.detectChanges();
});
it('should create', () => {
expect(component).toBeTruthy();
});
});

View File

@@ -0,0 +1,13 @@
import { Component, Input, OnInit } from '@angular/core';
import { Journal } from './../../../../core/submission/models/sherpa-policies-details.model';
@Component({
selector: 'ds-publication-information',
templateUrl: './publication-information.component.html',
styleUrls: ['./publication-information.component.scss']
})
export class PublicationInformationComponent {
@Input() journal: Journal;
}

View File

@@ -0,0 +1,26 @@
<div class="ml-4">
<div class="row">
<div class="col-12">
<p class="m-1">
{{'submission.sections.sherpa.publisher.policy.openaccess' | translate}}
</p>
</div>
</div>
<ds-content-accordion *ngFor="let permittedVersions of policy.permittedVersions" [version]="permittedVersions">
</ds-content-accordion>
<!-- <ds-content-accordion></ds-content-accordion> -->
<div class="row">
<div class="col-12">
<p class="m-1">
{{'submission.sections.sherpa.publisher.policy.more.information' | translate}}
</p>
<ul>
<li *ngFor="let url of policy.urls | keyvalue">
<a href="{{url.key}}">{{url.value}}</a>
</li>
</ul>
</div>
</div>
</div>

View File

@@ -0,0 +1,25 @@
import { ComponentFixture, TestBed } from '@angular/core/testing';
import { PublisherPolicyComponent } from './publisher-policy.component';
describe('PublisherPolicyComponent', () => {
let component: PublisherPolicyComponent;
let fixture: ComponentFixture<PublisherPolicyComponent>;
beforeEach(async () => {
await TestBed.configureTestingModule({
declarations: [ PublisherPolicyComponent ]
})
.compileComponents();
});
beforeEach(() => {
fixture = TestBed.createComponent(PublisherPolicyComponent);
component = fixture.componentInstance;
fixture.detectChanges();
});
it('should create', () => {
expect(component).toBeTruthy();
});
});

View File

@@ -0,0 +1,13 @@
import { Policy } from './../../../../core/submission/models/sherpa-policies-details.model';
import { Component, Input, OnInit } from '@angular/core';
@Component({
selector: 'ds-publisher-policy',
templateUrl: './publisher-policy.component.html',
styleUrls: ['./publisher-policy.component.scss']
})
export class PublisherPolicyComponent {
@Input() policy: Policy;
}

View File

@@ -1,119 +1,48 @@
<ngb-accordion #acc="ngbAccordion" activeIds="publication-information">
<ngb-panel id="publication-information">
<ngb-accordion *ngFor="let sherpaData of sherpaPoliciesData.sherpaResponse;let i = index;" #acc="ngbAccordion">
<ng-container *ngFor="let journal of sherpaData.journals;let j=index;">
<ngb-panel id="publication-information-{{j}}">
<ng-template ngbPanelTitle>
<div class="d-inline-block float-left">
<span *ngIf="!acc.isExpanded('publication-information-{{j}}')"
class="fas fa-chevron-up fa-fw"></span>
<span *ngIf="acc.isExpanded('publication-information-{{j}}')"
class="fas fa-chevron-down fa-fw"></span>
</div>
<span class="float-left section-title"
tabindex="0">{{'submission.sections.sherpa.publication.information'
| translate}}</span>
</ng-template>
<ng-template ngbPanelContent>
<ds-publication-information [journal]="journal"></ds-publication-information>
</ng-template>
</ngb-panel>
<ng-container *ngFor="let policy of journal.policies">
<ngb-panel id="publisher-policy-{{j}}">
<ng-template ngbPanelTitle>
<div class="d-inline-block float-left">
<span *ngIf="!acc.isExpanded('publisher-policy-{{j}}')" class="fas fa-chevron-up fa-fw"></span>
<span *ngIf="acc.isExpanded('publisher-policy-{{j}}')" class="fas fa-chevron-down fa-fw"></span>
</div>
<span class="float-left section-title" tabindex="0">{{'submission.sections.sherpa.publisher.policy'
| translate}}</span>
</ng-template>
<ng-template ngbPanelContent>
<ds-publisher-policy [policy]="policy"></ds-publisher-policy>
</ng-template>
</ngb-panel>
</ng-container>
</ng-container>
<ngb-panel id="metadata-{{i}}">
<ng-template ngbPanelTitle>
<div class="d-inline-block float-left">
<span *ngIf="!acc.isExpanded('publication-information')" class="fas fa-chevron-up fa-fw"></span>
<span *ngIf="acc.isExpanded('publication-information')" class="fas fa-chevron-down fa-fw"></span>
<span *ngIf="!acc.isExpanded('metadata-{{i}}')" class="fas fa-chevron-up fa-fw"></span>
<span *ngIf="acc.isExpanded('metadata-{{i}}')" class="fas fa-chevron-down fa-fw"></span>
</div>
<span class="float-left section-title" tabindex="0">Publication information</span>
<span class="float-left section-title" tabindex="0">{{'submission.sections.sherpa.record.information'
| translate}}</span>
</ng-template>
<ng-template ngbPanelContent>
<div class="ml-4">
<div class="row">
<div class="col-4">
<p class="m-0">Title</p>
</div>
<div class="col-4">
<p class="m-0" *ngFor="let title of sherpaPoliciesData.details.journals.titles">{{title}}</p>
</div>
</div>
<div class="row">
<div class="col-4">
<p class="m-0">ISSNs</p>
</div>
<div class="col-4">
<p class="m-0" *ngFor="let issn of sherpaPoliciesData.details.journals.issns">{{issn}}</p>
</div>
</div>
<div class="row">
<div class="col-4">
<p class="m-0">URL</p>
</div>
<div class="col-4">
<p class="m-0">
<a href="{{sherpaPoliciesData.details.journals.url}}">
{{sherpaPoliciesData.details.journals.url}}
</a>
</p>
</div>
</div>
<div class="row">
<div class="col-4">
<p class="m-0">Publisher</p>
</div>
<div class="col-4">
<p class="m-0">
<a href="{{sherpaPoliciesData.details.journals.publisher.uri}}">
{{sherpaPoliciesData.details.journals.publisher.name}}
</a>
</p>
</div>
</div>
<div class="row">
<div class="col-4">
<p class="m-0">romeoPub</p>
</div>
<div class="col-4">
<p class="m-0">
{{sherpaPoliciesData.details.journals.romeoPub}}
</p>
</div>
</div>
<div class="row">
<div class="col-4">
<p class="m-0">zetoPub</p>
</div>
<div class="col-4">
<p class="m-0">
{{sherpaPoliciesData.details.journals.zetoPub}}
</p>
</div>
</div>
</div>
</ng-template>
</ngb-panel>
<ngb-panel id="publisher-policy">
<ng-template ngbPanelTitle>
<div class="d-inline-block float-left">
<span *ngIf="!acc.isExpanded('publisher-policy')" class="fas fa-chevron-up fa-fw"></span>
<span *ngIf="acc.isExpanded('publisher-policy')" class="fas fa-chevron-down fa-fw"></span>
</div>
<span class="float-left section-title" tabindex="0">Publisher Policy</span>
</ng-template>
<ng-template ngbPanelContent>
<div class="ml-4">
<div class="row">
<div class="col-12">
<p class="m-0">
Open Access pathways permitted by this journal's policy are listed below by article version.
Click on a pathway for a more detailed view
</p>
</div>
</div>
<ds-content-accordion [id]="'permitted-versions'"
[data]="sherpaPoliciesData.details.journals.policies.permittedVersions">
</ds-content-accordion>
<!-- <ds-content-accordion></ds-content-accordion> -->
<div class="row">
<div class="col-12">
<p class="m-0">
For more information, please see the following links:
</p>
<ul>
<li *ngFor="let url of sherpaPoliciesData.details.journals.urls">
<a href="{{url}}">{{url}}</a>
</li>
</ul>
</div>
</div>
</div>
<ds-metadata-information [metadata]="sherpaData.metadata"></ds-metadata-information>
</ng-template>
</ngb-panel>
</ngb-accordion>

View File

@@ -1,18 +1,14 @@
import { WorkspaceitemSectionSherpaPoliciesObject } from './../../../core/submission/models/workspaceitem-section-sherpa-policies.model';
import { SectionSherpaPoliciesService } from './section-sherpa-policies.service';
import { Component, Inject, ViewChild } from '@angular/core';
import { FormControl } from '@angular/forms';
import { Component, Inject, ViewChildren, QueryList } from '@angular/core';
import { filter, map, mergeMap, take } from 'rxjs/operators';
import { combineLatest, Observable, of, Subscription } from 'rxjs';
import { TranslateService } from '@ngx-translate/core';
import { Observable, of } 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 { NgbAccordionConfig } from '@ng-bootstrap/ng-bootstrap';
/**
* This component represents a section for managing item's access conditions.
@@ -25,6 +21,8 @@ import { NgbAccordionConfig } from '@ng-bootstrap/ng-bootstrap';
@renderSectionFor(SectionsType.SherpaPolicies)
export class SubmissionSectionSherpaPoliciesComponent extends SectionModelComponent {
@ViewChildren('acc', { emitDistinctChangesOnly: true }) acc: QueryList<any>;
/**
* The accesses section data
* @type {WorkspaceitemSectionAccessesObject}
@@ -56,12 +54,18 @@ export class SubmissionSectionSherpaPoliciesComponent extends SectionModelCompon
}
ngAfterViewInit() {
this.acc.forEach(accordion => {
accordion.expandAll();
});
}
/**
* Initialize all instance variables and retrieve collection default access conditions
*/
protected onSectionInit(): void {
this.sectionSherpaPoliciesService.getSherpaPoliciesData(this.submissionId, this.sectionData.id).subscribe((sherpaPolicies: WorkspaceitemSectionSherpaPoliciesObject) => {
console.log(sherpaPolicies);
this.sherpaPoliciesData = sherpaPolicies;
});
}