From 7e62e372a8a76ef0c89ab74707e5062fb0ea11be Mon Sep 17 00:00:00 2001 From: Toni Prieto Date: Sun, 9 Oct 2022 15:12:20 +0200 Subject: [PATCH 1/3] Fix for Creative Commons jurisdiction chosen is ignored --- ...mission-section-cc-licenses.component.html | 4 +-- ...sion-section-cc-licenses.component.spec.ts | 11 ++++++++ ...ubmission-section-cc-licenses.component.ts | 27 ++++++++++++++++++- 3 files changed, 39 insertions(+), 3 deletions(-) diff --git a/src/app/submission/sections/cc-license/submission-section-cc-licenses.component.html b/src/app/submission/sections/cc-license/submission-section-cc-licenses.component.html index 6b9d542abc..f10cd04b60 100644 --- a/src/app/submission/sections/cc-license/submission-section-cc-licenses.component.html +++ b/src/app/submission/sections/cc-license/submission-section-cc-licenses.component.html @@ -81,7 +81,7 @@ - + {{ option.label }} @@ -136,7 +136,7 @@ - {{ 'submission.sections.ccLicense.confirmation' | translate }} + {{ 'submission.sections.ccLicense.confirmation' | translate }} diff --git a/src/app/submission/sections/cc-license/submission-section-cc-licenses.component.spec.ts b/src/app/submission/sections/cc-license/submission-section-cc-licenses.component.spec.ts index 3757ca87b8..d4f696bdd6 100644 --- a/src/app/submission/sections/cc-license/submission-section-cc-licenses.component.spec.ts +++ b/src/app/submission/sections/cc-license/submission-section-cc-licenses.component.spec.ts @@ -16,6 +16,8 @@ import { JsonPatchOperationsBuilder } from '../../../core/json-patch/builder/jso import { SubmissionCcLicenseUrlDataService } from '../../../core/submission/submission-cc-license-url-data.service'; import { createSuccessfulRemoteDataObject$ } from '../../../shared/remote-data.utils'; import { createPaginatedList } from '../../../shared/testing/utils.test'; +import {ConfigurationDataService} from "../../../core/data/configuration-data.service"; +import {ConfigurationProperty} from "../../../core/shared/configuration-property.model"; describe('SubmissionSectionCcLicensesComponent', () => { @@ -156,6 +158,14 @@ describe('SubmissionSectionCcLicensesComponent', () => { remove: undefined, }); + const configurationDataService = jasmine.createSpyObj('configurationDataService', { + findByPropertyName: createSuccessfulRemoteDataObject$({ + ... new ConfigurationProperty(), + name: 'cc.license.jurisdiction', + values: ['mock-jurisdiction-value'], + }), + }); + beforeEach(waitForAsync(() => { TestBed.configureTestingModule({ imports: [ @@ -170,6 +180,7 @@ describe('SubmissionSectionCcLicensesComponent', () => { { provide: SubmissionCcLicenseUrlDataService, useValue: submissionCcLicenseUrlDataService }, { provide: SectionsService, useValue: sectionService }, { provide: JsonPatchOperationsBuilder, useValue: operationsBuilder }, + { provide: ConfigurationDataService, useValue: configurationDataService }, { provide: 'collectionIdProvider', useValue: 'test collection id' }, { provide: 'sectionDataProvider', useValue: Object.assign({}, sectionObject) }, { provide: 'submissionIdProvider', useValue: 'test submission id' }, diff --git a/src/app/submission/sections/cc-license/submission-section-cc-licenses.component.ts b/src/app/submission/sections/cc-license/submission-section-cc-licenses.component.ts index 9e6a5ae07f..0e435e7d27 100644 --- a/src/app/submission/sections/cc-license/submission-section-cc-licenses.component.ts +++ b/src/app/submission/sections/cc-license/submission-section-cc-licenses.component.ts @@ -1,7 +1,11 @@ import { Component, Inject } from '@angular/core'; import { Observable, of as observableOf, Subscription } from 'rxjs'; import { Field, Option, SubmissionCcLicence } from '../../../core/submission/models/submission-cc-license.model'; -import { getFirstSucceededRemoteData, getRemoteDataPayload } from '../../../core/shared/operators'; +import { + getFirstCompletedRemoteData, + getFirstSucceededRemoteData, + getRemoteDataPayload +} from '../../../core/shared/operators'; import { distinctUntilChanged, filter, map, take } from 'rxjs/operators'; import { SubmissionCcLicenseDataService } from '../../../core/submission/submission-cc-license-data.service'; import { NgbModal, NgbModalRef } from '@ng-bootstrap/ng-bootstrap'; @@ -15,6 +19,7 @@ import { JsonPatchOperationPathCombiner } from '../../../core/json-patch/builder import { isNotEmpty } from '../../../shared/empty.util'; import { JsonPatchOperationsBuilder } from '../../../core/json-patch/builder/json-patch-operations-builder'; import { SubmissionCcLicenseUrlDataService } from '../../../core/submission/submission-cc-license-url-data.service'; +import {ConfigurationDataService} from '../../../core/data/configuration-data.service'; /** * This component represents the submission section to select the Creative Commons license. @@ -60,6 +65,11 @@ export class SubmissionSectionCcLicensesComponent extends SectionModelComponent */ protected modalRef: NgbModalRef; + /** + * Default jurisdiction configured + */ + defaultJurisdiction: string; + /** * The Creative Commons link saved in the workspace item. */ @@ -83,6 +93,7 @@ export class SubmissionSectionCcLicensesComponent extends SectionModelComponent protected submissionCcLicensesDataService: SubmissionCcLicenseDataService, protected submissionCcLicenseUrlDataService: SubmissionCcLicenseUrlDataService, protected operationsBuilder: JsonPatchOperationsBuilder, + protected configService: ConfigurationDataService, @Inject('collectionIdProvider') public injectedCollectionId: string, @Inject('sectionDataProvider') public injectedSectionData: SectionDataObject, @Inject('submissionIdProvider') public injectedSubmissionId: string @@ -156,6 +167,9 @@ export class SubmissionSectionCcLicensesComponent extends SectionModelComponent * @param field the field for which to get the selected option value. */ getSelectedOption(ccLicense: SubmissionCcLicence, field: Field): Option { + if (field.id === 'jurisdiction' && this.defaultJurisdiction !== 'none') { + return field.enums.find(option => option.id === this.defaultJurisdiction); + } return this.data.ccLicense.fields[field.id]; } @@ -256,6 +270,17 @@ export class SubmissionSectionCcLicensesComponent extends SectionModelComponent ).subscribe( (licenses) => this.submissionCcLicenses = licenses ), + this.configService.findByPropertyName('cc.license.jurisdiction').pipe( + getFirstCompletedRemoteData(), + getRemoteDataPayload() + ).subscribe((remoteData) => { + if (remoteData.values.length === 0) { + // No value configured, use blank value (International jurisdiction) + this.defaultJurisdiction = ''; + } else { + this.defaultJurisdiction = remoteData.values[0]; + } + }) ); } From 8a07bb64db13c4343a39a028cf773991a21b4b14 Mon Sep 17 00:00:00 2001 From: Toni Prieto Date: Wed, 26 Oct 2022 10:04:28 +0200 Subject: [PATCH 2/3] Correct lint errors --- .../submission-section-cc-licenses.component.spec.ts | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/src/app/submission/sections/cc-license/submission-section-cc-licenses.component.spec.ts b/src/app/submission/sections/cc-license/submission-section-cc-licenses.component.spec.ts index d4f696bdd6..bb83e48d21 100644 --- a/src/app/submission/sections/cc-license/submission-section-cc-licenses.component.spec.ts +++ b/src/app/submission/sections/cc-license/submission-section-cc-licenses.component.spec.ts @@ -16,8 +16,8 @@ import { JsonPatchOperationsBuilder } from '../../../core/json-patch/builder/jso import { SubmissionCcLicenseUrlDataService } from '../../../core/submission/submission-cc-license-url-data.service'; import { createSuccessfulRemoteDataObject$ } from '../../../shared/remote-data.utils'; import { createPaginatedList } from '../../../shared/testing/utils.test'; -import {ConfigurationDataService} from "../../../core/data/configuration-data.service"; -import {ConfigurationProperty} from "../../../core/shared/configuration-property.model"; +import {ConfigurationDataService} from '../../../core/data/configuration-data.service'; +import {ConfigurationProperty} from '../../../core/shared/configuration-property.model'; describe('SubmissionSectionCcLicensesComponent', () => { From 9c05a116a847171a1068039bdf899b9d91592739 Mon Sep 17 00:00:00 2001 From: Toni Prieto Date: Wed, 2 Nov 2022 18:28:24 +0100 Subject: [PATCH 3/3] Fix use case with cc.license.jurisdiction key commented out --- .../cc-license/submission-section-cc-licenses.component.html | 2 +- .../cc-license/submission-section-cc-licenses.component.ts | 4 ++-- 2 files changed, 3 insertions(+), 3 deletions(-) diff --git a/src/app/submission/sections/cc-license/submission-section-cc-licenses.component.html b/src/app/submission/sections/cc-license/submission-section-cc-licenses.component.html index f10cd04b60..0796da5a64 100644 --- a/src/app/submission/sections/cc-license/submission-section-cc-licenses.component.html +++ b/src/app/submission/sections/cc-license/submission-section-cc-licenses.component.html @@ -81,7 +81,7 @@ - + {{ option.label }} diff --git a/src/app/submission/sections/cc-license/submission-section-cc-licenses.component.ts b/src/app/submission/sections/cc-license/submission-section-cc-licenses.component.ts index 0e435e7d27..c8cd898f96 100644 --- a/src/app/submission/sections/cc-license/submission-section-cc-licenses.component.ts +++ b/src/app/submission/sections/cc-license/submission-section-cc-licenses.component.ts @@ -167,7 +167,7 @@ export class SubmissionSectionCcLicensesComponent extends SectionModelComponent * @param field the field for which to get the selected option value. */ getSelectedOption(ccLicense: SubmissionCcLicence, field: Field): Option { - if (field.id === 'jurisdiction' && this.defaultJurisdiction !== 'none') { + if (field.id === 'jurisdiction' && this.defaultJurisdiction !== undefined && this.defaultJurisdiction !== 'none') { return field.enums.find(option => option.id === this.defaultJurisdiction); } return this.data.ccLicense.fields[field.id]; @@ -274,7 +274,7 @@ export class SubmissionSectionCcLicensesComponent extends SectionModelComponent getFirstCompletedRemoteData(), getRemoteDataPayload() ).subscribe((remoteData) => { - if (remoteData.values.length === 0) { + if (remoteData === undefined || remoteData.values.length === 0) { // No value configured, use blank value (International jurisdiction) this.defaultJurisdiction = ''; } else {