mirror of
https://github.com/DSpace/dspace-angular.git
synced 2025-10-07 18:14:17 +00:00
[CST-5270] Fixing ISSN removal and unit testing
This commit is contained in:
@@ -2,7 +2,7 @@ import { Injectable } from '@angular/core';
|
|||||||
import { Actions, createEffect, ofType } from '@ngrx/effects';
|
import { Actions, createEffect, ofType } from '@ngrx/effects';
|
||||||
import { Store } from '@ngrx/store';
|
import { Store } from '@ngrx/store';
|
||||||
import { TranslateService } from '@ngx-translate/core';
|
import { TranslateService } from '@ngx-translate/core';
|
||||||
import { isEqual, union } from 'lodash';
|
import { isEqual, isUndefined, union } from 'lodash';
|
||||||
|
|
||||||
import { from as observableFrom, Observable, of as observableOf } from 'rxjs';
|
import { from as observableFrom, Observable, of as observableOf } from 'rxjs';
|
||||||
import { catchError, filter, map, mergeMap, switchMap, take, tap, withLatestFrom } from 'rxjs/operators';
|
import { catchError, filter, map, mergeMap, switchMap, take, tap, withLatestFrom } from 'rxjs/operators';
|
||||||
@@ -43,7 +43,7 @@ import {
|
|||||||
UpdateSectionDataAction,
|
UpdateSectionDataAction,
|
||||||
UpdateSectionDataSuccessAction
|
UpdateSectionDataSuccessAction
|
||||||
} from './submission-objects.actions';
|
} from './submission-objects.actions';
|
||||||
import { SubmissionObjectEntry} from './submission-objects.reducer';
|
import { SubmissionObjectEntry } from './submission-objects.reducer';
|
||||||
import { Item } from '../../core/shared/item.model';
|
import { Item } from '../../core/shared/item.model';
|
||||||
import { RemoteData } from '../../core/data/remote-data';
|
import { RemoteData } from '../../core/data/remote-data';
|
||||||
import { getFirstSucceededRemoteDataPayload } from '../../core/shared/operators';
|
import { getFirstSucceededRemoteDataPayload } from '../../core/shared/operators';
|
||||||
@@ -60,7 +60,7 @@ export class SubmissionObjectEffects {
|
|||||||
/**
|
/**
|
||||||
* Dispatch a [InitSectionAction] for every submission sections and dispatch a [CompleteInitSubmissionFormAction]
|
* Dispatch a [InitSectionAction] for every submission sections and dispatch a [CompleteInitSubmissionFormAction]
|
||||||
*/
|
*/
|
||||||
loadForm$ = createEffect(() => this.actions$.pipe(
|
loadForm$ = createEffect(() => this.actions$.pipe(
|
||||||
ofType(SubmissionObjectActionTypes.INIT_SUBMISSION_FORM),
|
ofType(SubmissionObjectActionTypes.INIT_SUBMISSION_FORM),
|
||||||
map((action: InitSubmissionFormAction) => {
|
map((action: InitSubmissionFormAction) => {
|
||||||
const definition = action.payload.submissionDefinition;
|
const definition = action.payload.submissionDefinition;
|
||||||
@@ -104,7 +104,7 @@ export class SubmissionObjectEffects {
|
|||||||
/**
|
/**
|
||||||
* Dispatch a [InitSubmissionFormAction]
|
* Dispatch a [InitSubmissionFormAction]
|
||||||
*/
|
*/
|
||||||
resetForm$ = createEffect(() => this.actions$.pipe(
|
resetForm$ = createEffect(() => this.actions$.pipe(
|
||||||
ofType(SubmissionObjectActionTypes.RESET_SUBMISSION_FORM),
|
ofType(SubmissionObjectActionTypes.RESET_SUBMISSION_FORM),
|
||||||
map((action: ResetSubmissionFormAction) =>
|
map((action: ResetSubmissionFormAction) =>
|
||||||
new InitSubmissionFormAction(
|
new InitSubmissionFormAction(
|
||||||
@@ -120,35 +120,35 @@ export class SubmissionObjectEffects {
|
|||||||
/**
|
/**
|
||||||
* Dispatch a [SaveSubmissionFormSuccessAction] or a [SaveSubmissionFormErrorAction] on error
|
* Dispatch a [SaveSubmissionFormSuccessAction] or a [SaveSubmissionFormErrorAction] on error
|
||||||
*/
|
*/
|
||||||
saveSubmission$ = createEffect(() => this.actions$.pipe(
|
saveSubmission$ = createEffect(() => this.actions$.pipe(
|
||||||
ofType(SubmissionObjectActionTypes.SAVE_SUBMISSION_FORM),
|
ofType(SubmissionObjectActionTypes.SAVE_SUBMISSION_FORM),
|
||||||
switchMap((action: SaveSubmissionFormAction) => {
|
switchMap((action: SaveSubmissionFormAction) => {
|
||||||
return this.operationsService.jsonPatchByResourceType(
|
return this.operationsService.jsonPatchByResourceType(
|
||||||
this.submissionService.getSubmissionObjectLinkName(),
|
this.submissionService.getSubmissionObjectLinkName(),
|
||||||
action.payload.submissionId,
|
action.payload.submissionId,
|
||||||
'sections').pipe(
|
'sections').pipe(
|
||||||
map((response: SubmissionObject[]) => new SaveSubmissionFormSuccessAction(action.payload.submissionId, response, action.payload.isManual, action.payload.isManual)),
|
map((response: SubmissionObject[]) => new SaveSubmissionFormSuccessAction(action.payload.submissionId, response, action.payload.isManual, action.payload.isManual)),
|
||||||
catchError(() => observableOf(new SaveSubmissionFormErrorAction(action.payload.submissionId))));
|
catchError(() => observableOf(new SaveSubmissionFormErrorAction(action.payload.submissionId))));
|
||||||
})));
|
})));
|
||||||
|
|
||||||
/**
|
/**
|
||||||
* Dispatch a [SaveForLaterSubmissionFormSuccessAction] or a [SaveSubmissionFormErrorAction] on error
|
* Dispatch a [SaveForLaterSubmissionFormSuccessAction] or a [SaveSubmissionFormErrorAction] on error
|
||||||
*/
|
*/
|
||||||
saveForLaterSubmission$ = createEffect(() => this.actions$.pipe(
|
saveForLaterSubmission$ = createEffect(() => this.actions$.pipe(
|
||||||
ofType(SubmissionObjectActionTypes.SAVE_FOR_LATER_SUBMISSION_FORM),
|
ofType(SubmissionObjectActionTypes.SAVE_FOR_LATER_SUBMISSION_FORM),
|
||||||
switchMap((action: SaveForLaterSubmissionFormAction) => {
|
switchMap((action: SaveForLaterSubmissionFormAction) => {
|
||||||
return this.operationsService.jsonPatchByResourceType(
|
return this.operationsService.jsonPatchByResourceType(
|
||||||
this.submissionService.getSubmissionObjectLinkName(),
|
this.submissionService.getSubmissionObjectLinkName(),
|
||||||
action.payload.submissionId,
|
action.payload.submissionId,
|
||||||
'sections').pipe(
|
'sections').pipe(
|
||||||
map((response: SubmissionObject[]) => new SaveForLaterSubmissionFormSuccessAction(action.payload.submissionId, response)),
|
map((response: SubmissionObject[]) => new SaveForLaterSubmissionFormSuccessAction(action.payload.submissionId, response)),
|
||||||
catchError(() => observableOf(new SaveSubmissionFormErrorAction(action.payload.submissionId))));
|
catchError(() => observableOf(new SaveSubmissionFormErrorAction(action.payload.submissionId))));
|
||||||
})));
|
})));
|
||||||
|
|
||||||
/**
|
/**
|
||||||
* Call parseSaveResponse and dispatch actions
|
* Call parseSaveResponse and dispatch actions
|
||||||
*/
|
*/
|
||||||
saveSubmissionSuccess$ = createEffect(() => this.actions$.pipe(
|
saveSubmissionSuccess$ = createEffect(() => this.actions$.pipe(
|
||||||
ofType(SubmissionObjectActionTypes.SAVE_SUBMISSION_FORM_SUCCESS),
|
ofType(SubmissionObjectActionTypes.SAVE_SUBMISSION_FORM_SUCCESS),
|
||||||
withLatestFrom(this.store$),
|
withLatestFrom(this.store$),
|
||||||
map(([action, currentState]: [SaveSubmissionFormSuccessAction, any]) => {
|
map(([action, currentState]: [SaveSubmissionFormSuccessAction, any]) => {
|
||||||
@@ -162,7 +162,7 @@ export class SubmissionObjectEffects {
|
|||||||
* Call parseSaveResponse and dispatch actions.
|
* Call parseSaveResponse and dispatch actions.
|
||||||
* Notification system is forced to be disabled.
|
* Notification system is forced to be disabled.
|
||||||
*/
|
*/
|
||||||
saveSubmissionSectionSuccess$ = createEffect(() => this.actions$.pipe(
|
saveSubmissionSectionSuccess$ = createEffect(() => this.actions$.pipe(
|
||||||
ofType(SubmissionObjectActionTypes.SAVE_SUBMISSION_SECTION_FORM_SUCCESS),
|
ofType(SubmissionObjectActionTypes.SAVE_SUBMISSION_SECTION_FORM_SUCCESS),
|
||||||
withLatestFrom(this.store$),
|
withLatestFrom(this.store$),
|
||||||
map(([action, currentState]: [SaveSubmissionSectionFormSuccessAction, any]) => {
|
map(([action, currentState]: [SaveSubmissionSectionFormSuccessAction, any]) => {
|
||||||
@@ -174,7 +174,7 @@ export class SubmissionObjectEffects {
|
|||||||
/**
|
/**
|
||||||
* Dispatch a [SaveSubmissionSectionFormSuccessAction] or a [SaveSubmissionSectionFormErrorAction] on error
|
* Dispatch a [SaveSubmissionSectionFormSuccessAction] or a [SaveSubmissionSectionFormErrorAction] on error
|
||||||
*/
|
*/
|
||||||
saveSection$ = createEffect(() => this.actions$.pipe(
|
saveSection$ = createEffect(() => this.actions$.pipe(
|
||||||
ofType(SubmissionObjectActionTypes.SAVE_SUBMISSION_SECTION_FORM),
|
ofType(SubmissionObjectActionTypes.SAVE_SUBMISSION_SECTION_FORM),
|
||||||
switchMap((action: SaveSubmissionSectionFormAction) => {
|
switchMap((action: SaveSubmissionSectionFormAction) => {
|
||||||
return this.operationsService.jsonPatchByResourceID(
|
return this.operationsService.jsonPatchByResourceID(
|
||||||
@@ -182,14 +182,14 @@ export class SubmissionObjectEffects {
|
|||||||
action.payload.submissionId,
|
action.payload.submissionId,
|
||||||
'sections',
|
'sections',
|
||||||
action.payload.sectionId).pipe(
|
action.payload.sectionId).pipe(
|
||||||
map((response: SubmissionObject[]) => new SaveSubmissionSectionFormSuccessAction(action.payload.submissionId, response)),
|
map((response: SubmissionObject[]) => new SaveSubmissionSectionFormSuccessAction(action.payload.submissionId, response)),
|
||||||
catchError(() => observableOf(new SaveSubmissionSectionFormErrorAction(action.payload.submissionId))));
|
catchError(() => observableOf(new SaveSubmissionSectionFormErrorAction(action.payload.submissionId))));
|
||||||
})));
|
})));
|
||||||
|
|
||||||
/**
|
/**
|
||||||
* Show a notification on error
|
* Show a notification on error
|
||||||
*/
|
*/
|
||||||
saveError$ = createEffect(() => this.actions$.pipe(
|
saveError$ = createEffect(() => this.actions$.pipe(
|
||||||
ofType(SubmissionObjectActionTypes.SAVE_SUBMISSION_FORM_ERROR, SubmissionObjectActionTypes.SAVE_SUBMISSION_SECTION_FORM_ERROR),
|
ofType(SubmissionObjectActionTypes.SAVE_SUBMISSION_FORM_ERROR, SubmissionObjectActionTypes.SAVE_SUBMISSION_SECTION_FORM_ERROR),
|
||||||
withLatestFrom(this.store$),
|
withLatestFrom(this.store$),
|
||||||
tap(() => this.notificationsService.error(null, this.translate.get('submission.sections.general.save_error_notice')))), { dispatch: false });
|
tap(() => this.notificationsService.error(null, this.translate.get('submission.sections.general.save_error_notice')))), { dispatch: false });
|
||||||
@@ -197,7 +197,7 @@ export class SubmissionObjectEffects {
|
|||||||
/**
|
/**
|
||||||
* Call parseSaveResponse and dispatch actions or dispatch [SaveSubmissionFormErrorAction] on error
|
* Call parseSaveResponse and dispatch actions or dispatch [SaveSubmissionFormErrorAction] on error
|
||||||
*/
|
*/
|
||||||
saveAndDeposit$ = createEffect(() => this.actions$.pipe(
|
saveAndDeposit$ = createEffect(() => this.actions$.pipe(
|
||||||
ofType(SubmissionObjectActionTypes.SAVE_AND_DEPOSIT_SUBMISSION),
|
ofType(SubmissionObjectActionTypes.SAVE_AND_DEPOSIT_SUBMISSION),
|
||||||
withLatestFrom(this.submissionService.hasUnsavedModification()),
|
withLatestFrom(this.submissionService.hasUnsavedModification()),
|
||||||
switchMap(([action, hasUnsavedModification]: [SaveAndDepositSubmissionAction, boolean]) => {
|
switchMap(([action, hasUnsavedModification]: [SaveAndDepositSubmissionAction, boolean]) => {
|
||||||
@@ -233,7 +233,7 @@ export class SubmissionObjectEffects {
|
|||||||
/**
|
/**
|
||||||
* Dispatch a [DepositSubmissionSuccessAction] or a [DepositSubmissionErrorAction] on error
|
* Dispatch a [DepositSubmissionSuccessAction] or a [DepositSubmissionErrorAction] on error
|
||||||
*/
|
*/
|
||||||
depositSubmission$ = createEffect(() => this.actions$.pipe(
|
depositSubmission$ = createEffect(() => this.actions$.pipe(
|
||||||
ofType(SubmissionObjectActionTypes.DEPOSIT_SUBMISSION),
|
ofType(SubmissionObjectActionTypes.DEPOSIT_SUBMISSION),
|
||||||
withLatestFrom(this.store$),
|
withLatestFrom(this.store$),
|
||||||
switchMap(([action, state]: [DepositSubmissionAction, any]) => {
|
switchMap(([action, state]: [DepositSubmissionAction, any]) => {
|
||||||
@@ -245,7 +245,7 @@ export class SubmissionObjectEffects {
|
|||||||
/**
|
/**
|
||||||
* Show a notification on success and redirect to MyDSpace page
|
* Show a notification on success and redirect to MyDSpace page
|
||||||
*/
|
*/
|
||||||
saveForLaterSubmissionSuccess$ = createEffect(() => this.actions$.pipe(
|
saveForLaterSubmissionSuccess$ = createEffect(() => this.actions$.pipe(
|
||||||
ofType(SubmissionObjectActionTypes.SAVE_FOR_LATER_SUBMISSION_FORM_SUCCESS),
|
ofType(SubmissionObjectActionTypes.SAVE_FOR_LATER_SUBMISSION_FORM_SUCCESS),
|
||||||
tap(() => this.notificationsService.success(null, this.translate.get('submission.sections.general.save_success_notice'))),
|
tap(() => this.notificationsService.success(null, this.translate.get('submission.sections.general.save_success_notice'))),
|
||||||
tap(() => this.submissionService.redirectToMyDSpace())), { dispatch: false });
|
tap(() => this.submissionService.redirectToMyDSpace())), { dispatch: false });
|
||||||
@@ -253,7 +253,7 @@ export class SubmissionObjectEffects {
|
|||||||
/**
|
/**
|
||||||
* Show a notification on success and redirect to MyDSpace page
|
* Show a notification on success and redirect to MyDSpace page
|
||||||
*/
|
*/
|
||||||
depositSubmissionSuccess$ = createEffect(() => this.actions$.pipe(
|
depositSubmissionSuccess$ = createEffect(() => this.actions$.pipe(
|
||||||
ofType(SubmissionObjectActionTypes.DEPOSIT_SUBMISSION_SUCCESS),
|
ofType(SubmissionObjectActionTypes.DEPOSIT_SUBMISSION_SUCCESS),
|
||||||
tap(() => this.notificationsService.success(null, this.translate.get('submission.sections.general.deposit_success_notice'))),
|
tap(() => this.notificationsService.success(null, this.translate.get('submission.sections.general.deposit_success_notice'))),
|
||||||
tap(() => this.submissionService.redirectToMyDSpace())), { dispatch: false });
|
tap(() => this.submissionService.redirectToMyDSpace())), { dispatch: false });
|
||||||
@@ -261,14 +261,14 @@ export class SubmissionObjectEffects {
|
|||||||
/**
|
/**
|
||||||
* Show a notification on error
|
* Show a notification on error
|
||||||
*/
|
*/
|
||||||
depositSubmissionError$ = createEffect(() => this.actions$.pipe(
|
depositSubmissionError$ = createEffect(() => this.actions$.pipe(
|
||||||
ofType(SubmissionObjectActionTypes.DEPOSIT_SUBMISSION_ERROR),
|
ofType(SubmissionObjectActionTypes.DEPOSIT_SUBMISSION_ERROR),
|
||||||
tap(() => this.notificationsService.error(null, this.translate.get('submission.sections.general.deposit_error_notice')))), { dispatch: false });
|
tap(() => this.notificationsService.error(null, this.translate.get('submission.sections.general.deposit_error_notice')))), { dispatch: false });
|
||||||
|
|
||||||
/**
|
/**
|
||||||
* Dispatch a [DiscardSubmissionSuccessAction] or a [DiscardSubmissionErrorAction] on error
|
* Dispatch a [DiscardSubmissionSuccessAction] or a [DiscardSubmissionErrorAction] on error
|
||||||
*/
|
*/
|
||||||
discardSubmission$ = createEffect(() => this.actions$.pipe(
|
discardSubmission$ = createEffect(() => this.actions$.pipe(
|
||||||
ofType(SubmissionObjectActionTypes.DISCARD_SUBMISSION),
|
ofType(SubmissionObjectActionTypes.DISCARD_SUBMISSION),
|
||||||
switchMap((action: DepositSubmissionAction) => {
|
switchMap((action: DepositSubmissionAction) => {
|
||||||
return this.submissionService.discardSubmission(action.payload.submissionId).pipe(
|
return this.submissionService.discardSubmission(action.payload.submissionId).pipe(
|
||||||
@@ -279,7 +279,7 @@ export class SubmissionObjectEffects {
|
|||||||
/**
|
/**
|
||||||
* Adds all metadata an item to the SubmissionForm sections of the submission
|
* Adds all metadata an item to the SubmissionForm sections of the submission
|
||||||
*/
|
*/
|
||||||
addAllMetadataToSectionData = createEffect(() => this.actions$.pipe(
|
addAllMetadataToSectionData = createEffect(() => this.actions$.pipe(
|
||||||
ofType(SubmissionObjectActionTypes.UPDATE_SECTION_DATA),
|
ofType(SubmissionObjectActionTypes.UPDATE_SECTION_DATA),
|
||||||
switchMap((action: UpdateSectionDataAction) => {
|
switchMap((action: UpdateSectionDataAction) => {
|
||||||
return this.sectionService.getSectionState(action.payload.submissionId, action.payload.sectionId, SectionsType.Upload)
|
return this.sectionService.getSectionState(action.payload.submissionId, action.payload.sectionId, SectionsType.Upload)
|
||||||
@@ -320,18 +320,18 @@ export class SubmissionObjectEffects {
|
|||||||
/**
|
/**
|
||||||
* Show a notification on error
|
* Show a notification on error
|
||||||
*/
|
*/
|
||||||
discardSubmissionError$ = createEffect(() => this.actions$.pipe(
|
discardSubmissionError$ = createEffect(() => this.actions$.pipe(
|
||||||
ofType(SubmissionObjectActionTypes.DISCARD_SUBMISSION_ERROR),
|
ofType(SubmissionObjectActionTypes.DISCARD_SUBMISSION_ERROR),
|
||||||
tap(() => this.notificationsService.error(null, this.translate.get('submission.sections.general.discard_error_notice')))), { dispatch: false });
|
tap(() => this.notificationsService.error(null, this.translate.get('submission.sections.general.discard_error_notice')))), { dispatch: false });
|
||||||
|
|
||||||
constructor(private actions$: Actions,
|
constructor(private actions$: Actions,
|
||||||
private notificationsService: NotificationsService,
|
private notificationsService: NotificationsService,
|
||||||
private operationsService: SubmissionJsonPatchOperationsService,
|
private operationsService: SubmissionJsonPatchOperationsService,
|
||||||
private sectionService: SectionsService,
|
private sectionService: SectionsService,
|
||||||
private store$: Store<any>,
|
private store$: Store<any>,
|
||||||
private submissionService: SubmissionService,
|
private submissionService: SubmissionService,
|
||||||
private submissionObjectService: SubmissionObjectDataService,
|
private submissionObjectService: SubmissionObjectDataService,
|
||||||
private translate: TranslateService) {
|
private translate: TranslateService) {
|
||||||
}
|
}
|
||||||
|
|
||||||
/**
|
/**
|
||||||
@@ -426,6 +426,11 @@ export class SubmissionObjectEffects {
|
|||||||
mappedActions.push(new UpdateSectionDataAction(submissionId, sectionId, sectionData, filteredErrors, sectionErrors));
|
mappedActions.push(new UpdateSectionDataAction(submissionId, sectionId, sectionData, filteredErrors, sectionErrors));
|
||||||
}
|
}
|
||||||
});
|
});
|
||||||
|
let currentStateId = currentState.selfUrl.split('/')[currentState.selfUrl.split('/').length - 1];
|
||||||
|
let currentResponseItem = response.find(item => item.id.toString() === currentStateId);
|
||||||
|
if (!isUndefined(currentState.sections.sherpaPolicies?.data) && isUndefined(currentResponseItem.sections.sherpaPolicies)) {
|
||||||
|
mappedActions.push(new UpdateSectionDataAction(submissionId, 'sherpaPolicies', null, [], []));
|
||||||
|
}
|
||||||
}
|
}
|
||||||
return mappedActions;
|
return mappedActions;
|
||||||
}
|
}
|
||||||
|
@@ -1,57 +1,62 @@
|
|||||||
<ds-alert [type]="'alert-info'" *ngIf="hasNoData()" [content]="'submission.sections.sherpa-policy.title-empty'">
|
<ds-alert [type]="'alert-info'" *ngIf="hasNoData()" [content]="'submission.sections.sherpa-policy.title-empty'">
|
||||||
</ds-alert>
|
</ds-alert>
|
||||||
|
|
||||||
<div class="refresh-container mt-2 mb-2">
|
<div *ngIf="!hasNoData()" class="refresh-container mt-2 mb-2">
|
||||||
<button type="button" class="btn btn-secondary pull-right" (click)="refresh()">
|
<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>
|
<span><i class="fas fa-sync"></i> {{'submission.sections.sherpa.publisher.policy.refresh' | translate}} </span>
|
||||||
</button>
|
</button>
|
||||||
</div>
|
</div>
|
||||||
|
|
||||||
<ngb-accordion *ngVar="(sherpaPoliciesData$ | async)?.sherpaResponse as sherpaData" #acc="ngbAccordion">
|
<ngb-accordion *ngVar="(sherpaPoliciesData$ | async)?.sherpaResponse as sherpaData" #acc="ngbAccordion">
|
||||||
<ng-container *ngFor="let journal of sherpaData.journals;let j=index;">
|
<ng-container *ngIf="!hasNoData()">
|
||||||
<ngb-panel id="publication-information-{{j}}">
|
<ng-container *ngFor="let journal of sherpaData.journals;let j=index;">
|
||||||
<ng-template ngbPanelTitle>
|
<ngb-panel id="publication-information-{{j}}">
|
||||||
<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>
|
<ng-template ngbPanelTitle>
|
||||||
<div class="d-inline-block float-left">
|
<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('publication-information-{{j}}')"
|
||||||
<span *ngIf="acc.isExpanded('publisher-policy-{{j}}')" class="fas fa-chevron-down fa-fw"></span>
|
class="fas fa-chevron-up fa-fw"></span>
|
||||||
|
<span *ngIf="acc.isExpanded('publication-information-{{j}}')"
|
||||||
|
class="fas fa-chevron-down fa-fw"></span>
|
||||||
</div>
|
</div>
|
||||||
<span class="float-left section-title" tabindex="0">{{'submission.sections.sherpa.publisher.policy'
|
<span class="float-left section-title"
|
||||||
|
tabindex="0">{{'submission.sections.sherpa.publication.information'
|
||||||
| translate}}</span>
|
| translate}}</span>
|
||||||
</ng-template>
|
</ng-template>
|
||||||
<ng-template ngbPanelContent>
|
<ng-template ngbPanelContent>
|
||||||
<ds-publisher-policy [policy]="policy"></ds-publisher-policy>
|
<ds-publication-information [journal]="journal"></ds-publication-information>
|
||||||
</ng-template>
|
</ng-template>
|
||||||
</ngb-panel>
|
</ngb-panel>
|
||||||
|
<ng-container *ngFor="let policy of journal.policies; let p=index;">
|
||||||
|
<ngb-panel id="publisher-policy-{{j}}-{{p}}">
|
||||||
|
<ng-template ngbPanelTitle>
|
||||||
|
<div class="d-inline-block float-left">
|
||||||
|
<span *ngIf="!acc.isExpanded('publisher-policy-{{j}}-{{p}}')"
|
||||||
|
class="fas fa-chevron-up fa-fw"></span>
|
||||||
|
<span *ngIf="acc.isExpanded('publisher-policy-{{j}}-{{p}}')"
|
||||||
|
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>
|
</ng-container>
|
||||||
|
<ngb-panel id="metadata">
|
||||||
|
<ng-template ngbPanelTitle>
|
||||||
|
<div class="d-inline-block float-left">
|
||||||
|
<span *ngIf="!acc.isExpanded('metadata')" class="fas fa-chevron-up fa-fw"></span>
|
||||||
|
<span *ngIf="acc.isExpanded('metadata')" class="fas fa-chevron-down fa-fw"></span>
|
||||||
|
</div>
|
||||||
|
<span class="float-left section-title" tabindex="0">{{'submission.sections.sherpa.record.information'
|
||||||
|
| translate}}</span>
|
||||||
|
</ng-template>
|
||||||
|
<ng-template ngbPanelContent>
|
||||||
|
<ds-metadata-information [metadata]="sherpaData.metadata"></ds-metadata-information>
|
||||||
|
</ng-template>
|
||||||
|
</ngb-panel>
|
||||||
</ng-container>
|
</ng-container>
|
||||||
<ngb-panel id="metadata">
|
</ngb-accordion>
|
||||||
<ng-template ngbPanelTitle>
|
|
||||||
<div class="d-inline-block float-left">
|
|
||||||
<span *ngIf="!acc.isExpanded('metadata')" class="fas fa-chevron-up fa-fw"></span>
|
|
||||||
<span *ngIf="acc.isExpanded('metadata')" class="fas fa-chevron-down fa-fw"></span>
|
|
||||||
</div>
|
|
||||||
<span class="float-left section-title" tabindex="0">{{'submission.sections.sherpa.record.information'
|
|
||||||
| translate}}</span>
|
|
||||||
</ng-template>
|
|
||||||
<ng-template ngbPanelContent>
|
|
||||||
<ds-metadata-information [metadata]="sherpaData.metadata"></ds-metadata-information>
|
|
||||||
</ng-template>
|
|
||||||
</ngb-panel>
|
|
||||||
</ngb-accordion>
|
|
@@ -1,7 +1,8 @@
|
|||||||
|
import { SharedModule } from './../../../shared/shared.module';
|
||||||
import { NgbAccordionModule } from '@ng-bootstrap/ng-bootstrap';
|
import { NgbAccordionModule } from '@ng-bootstrap/ng-bootstrap';
|
||||||
import { SubmissionServiceStub } from '../../../shared/testing/submission-service.stub';
|
import { SubmissionServiceStub } from '../../../shared/testing/submission-service.stub';
|
||||||
import { SherpaDataResponse } from '../../../shared/mocks/section-sherpa-policies.service.mock';
|
import { SherpaDataResponse } from '../../../shared/mocks/section-sherpa-policies.service.mock';
|
||||||
import { ComponentFixture, inject, TestBed } from '@angular/core/testing';
|
import { ComponentFixture, inject, TestBed, fakeAsync, tick } from '@angular/core/testing';
|
||||||
|
|
||||||
import { SectionsService } from '../sections.service';
|
import { SectionsService } from '../sections.service';
|
||||||
import { SectionsServiceStub } from '../../../shared/testing/sections-service.stub';
|
import { SectionsServiceStub } from '../../../shared/testing/sections-service.stub';
|
||||||
@@ -58,7 +59,8 @@ describe('SubmissionSectionSherpaPoliciesComponent', () => {
|
|||||||
useClass: TranslateLoaderMock
|
useClass: TranslateLoaderMock
|
||||||
}
|
}
|
||||||
}),
|
}),
|
||||||
NgbAccordionModule
|
NgbAccordionModule,
|
||||||
|
SharedModule
|
||||||
],
|
],
|
||||||
declarations: [SubmissionSectionSherpaPoliciesComponent],
|
declarations: [SubmissionSectionSherpaPoliciesComponent],
|
||||||
providers: [
|
providers: [
|
||||||
@@ -77,7 +79,7 @@ describe('SubmissionSectionSherpaPoliciesComponent', () => {
|
|||||||
fixture = TestBed.createComponent(SubmissionSectionSherpaPoliciesComponent);
|
fixture = TestBed.createComponent(SubmissionSectionSherpaPoliciesComponent);
|
||||||
component = fixture.componentInstance;
|
component = fixture.componentInstance;
|
||||||
de = fixture.debugElement;
|
de = fixture.debugElement;
|
||||||
sectionsServiceStub.getSectionData.and.returnValue(observableOf(SherpaDataResponse))
|
sectionsServiceStub.getSectionData.and.returnValue(observableOf(SherpaDataResponse));
|
||||||
fixture.detectChanges();
|
fixture.detectChanges();
|
||||||
}));
|
}));
|
||||||
|
|
||||||
@@ -112,7 +114,6 @@ describe('SubmissionSectionSherpaPoliciesComponent', () => {
|
|||||||
|
|
||||||
it('when refresh button click operationsBuilder.remove should have been called', () => {
|
it('when refresh button click operationsBuilder.remove should have been called', () => {
|
||||||
de.query(By.css('.refresh-container > button')).nativeElement.click();
|
de.query(By.css('.refresh-container > button')).nativeElement.click();
|
||||||
fixture.detectChanges();
|
|
||||||
expect(operationsBuilder.remove).toHaveBeenCalled();
|
expect(operationsBuilder.remove).toHaveBeenCalled();
|
||||||
});
|
});
|
||||||
|
|
||||||
|
@@ -1,6 +1,6 @@
|
|||||||
import { Component, Inject, QueryList, ViewChildren } from '@angular/core';
|
import { Component, Inject, QueryList, ViewChildren } from '@angular/core';
|
||||||
|
|
||||||
import { BehaviorSubject, Observable, of, Subscription } from 'rxjs';
|
import { BehaviorSubject, interval, Observable, of, Subscription } from 'rxjs';
|
||||||
|
|
||||||
import { JsonPatchOperationPathCombiner } from '../../../core/json-patch/builder/json-patch-operation-path-combiner';
|
import { JsonPatchOperationPathCombiner } from '../../../core/json-patch/builder/json-patch-operation-path-combiner';
|
||||||
import { JsonPatchOperationsBuilder } from '../../../core/json-patch/builder/json-patch-operations-builder';
|
import { JsonPatchOperationsBuilder } from '../../../core/json-patch/builder/json-patch-operations-builder';
|
||||||
@@ -14,6 +14,7 @@ import { SectionsService } from '../sections.service';
|
|||||||
import { SectionModelComponent } from '../models/section.model';
|
import { SectionModelComponent } from '../models/section.model';
|
||||||
import { SubmissionService } from '../../submission.service';
|
import { SubmissionService } from '../../submission.service';
|
||||||
import { hasValue, isEmpty } from '../../../shared/empty.util';
|
import { hasValue, isEmpty } from '../../../shared/empty.util';
|
||||||
|
import { debounce, debounceTime, timeInterval } from 'rxjs/operators';
|
||||||
|
|
||||||
/**
|
/**
|
||||||
* This component represents a section for managing item's access conditions.
|
* This component represents a section for managing item's access conditions.
|
||||||
@@ -77,9 +78,11 @@ export class SubmissionSectionSherpaPoliciesComponent extends SectionModelCompon
|
|||||||
* Expand all primary accordions
|
* Expand all primary accordions
|
||||||
*/
|
*/
|
||||||
ngAfterViewInit() {
|
ngAfterViewInit() {
|
||||||
this.acc.forEach(accordion => {
|
if (this.acc) {
|
||||||
accordion.expandAll();
|
this.acc.forEach(accordion => {
|
||||||
});
|
accordion.expandAll();
|
||||||
|
});
|
||||||
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
||||||
@@ -93,9 +96,20 @@ export class SubmissionSectionSherpaPoliciesComponent extends SectionModelCompon
|
|||||||
this.sectionService.getSectionData(this.submissionId, this.sectionData.id, this.sectionData.sectionType)
|
this.sectionService.getSectionData(this.submissionId, this.sectionData.id, this.sectionData.sectionType)
|
||||||
.subscribe((sherpaPolicies: WorkspaceitemSectionSherpaPoliciesObject) => {
|
.subscribe((sherpaPolicies: WorkspaceitemSectionSherpaPoliciesObject) => {
|
||||||
this.sherpaPoliciesData$.next(sherpaPolicies);
|
this.sherpaPoliciesData$.next(sherpaPolicies);
|
||||||
console.log(this.sherpaPoliciesData$.value)
|
|
||||||
})
|
})
|
||||||
);
|
);
|
||||||
|
|
||||||
|
this.subs.push(
|
||||||
|
this.sherpaPoliciesData$.pipe(
|
||||||
|
debounceTime(500)
|
||||||
|
).subscribe((sherpaPolicies: WorkspaceitemSectionSherpaPoliciesObject) => {
|
||||||
|
if (this.acc) {
|
||||||
|
this.acc.forEach(accordion => {
|
||||||
|
accordion.expandAll();
|
||||||
|
});
|
||||||
|
}
|
||||||
|
})
|
||||||
|
);
|
||||||
}
|
}
|
||||||
|
|
||||||
/**
|
/**
|
||||||
|
Reference in New Issue
Block a user