From 02ddf7c8c532060b75c29bfbb05ea18c43e238f2 Mon Sep 17 00:00:00 2001 From: Samuel Date: Fri, 26 Jun 2020 16:58:45 +0200 Subject: [PATCH] CC License Submission Step - implement contract change --- .../submission-cc-license-data.service.ts | 41 +---------------- .../submission-cc-license-url-data.service.ts | 44 ++++++++++++++++++- ...ubmission-section-cc-licenses.component.ts | 4 +- 3 files changed, 47 insertions(+), 42 deletions(-) diff --git a/src/app/core/submission/submission-cc-license-data.service.ts b/src/app/core/submission/submission-cc-license-data.service.ts index 5e738e0327..5a3fa1ec2b 100644 --- a/src/app/core/submission/submission-cc-license-data.service.ts +++ b/src/app/core/submission/submission-cc-license-data.service.ts @@ -10,15 +10,8 @@ import { HALEndpointService } from '../shared/hal-endpoint.service'; import { DataService } from '../data/data.service'; import { RequestService } from '../data/request.service'; import { SUBMISSION_CC_LICENSE } from './models/submission-cc-licence.resource-type'; -import { Field, Option, SubmissionCcLicence } from './models/submission-cc-license.model'; +import { SubmissionCcLicence } from './models/submission-cc-license.model'; import { DefaultChangeAnalyzer } from '../data/default-change-analyzer.service'; -import { - getRemoteDataPayload, - getSucceededRemoteData, -} from '../shared/operators'; -import { map, switchMap } from 'rxjs/operators'; -import { Observable } from 'rxjs'; -import { SubmissionCcLicenseUrlDataService } from './submission-cc-license-url-data.service'; @Injectable() @dataService(SUBMISSION_CC_LICENSE) @@ -35,39 +28,7 @@ export class SubmissionCcLicenseDataService extends DataService, - protected submissionCcLicenseUrlDataService: SubmissionCcLicenseUrlDataService, ) { super(); } - - /** - * Get the link to the Creative Commons license corresponding to the given type and options. - * @param ccLicense the Creative Commons license type - * @param options the selected options of the license fields - */ - getCcLicenseLink(ccLicense: SubmissionCcLicence, options: Map): Observable { - - return this.getSearchByHref( - 'rightsByQuestions',{ - searchParams: [ - { - fieldName: 'license', - fieldValue: ccLicense.id - }, - ...ccLicense.fields.map( - (field) => { - return { - fieldName: `answer_${field.id}`, - fieldValue: options.get(field).id, - } - }), - ] - } - ).pipe( - switchMap((href) => this.submissionCcLicenseUrlDataService.findByHref(href)), - getSucceededRemoteData(), - getRemoteDataPayload(), - map((response) => response.url), - ); - } } diff --git a/src/app/core/submission/submission-cc-license-url-data.service.ts b/src/app/core/submission/submission-cc-license-url-data.service.ts index 08e1c16fa3..fc7547b3a6 100644 --- a/src/app/core/submission/submission-cc-license-url-data.service.ts +++ b/src/app/core/submission/submission-cc-license-url-data.service.ts @@ -12,12 +12,17 @@ import { RequestService } from '../data/request.service'; import { DefaultChangeAnalyzer } from '../data/default-change-analyzer.service'; import { SubmissionCcLicenceUrl } from './models/submission-cc-license-url.model'; import { SUBMISSION_CC_LICENSE_URL } from './models/submission-cc-licence-link.resource-type'; +import { Field, Option, SubmissionCcLicence } from "./models/submission-cc-license.model"; +import { Observable } from "rxjs"; +import { filter, map, switchMap } from "rxjs/operators"; +import { getRemoteDataPayload, getSucceededRemoteData } from "../shared/operators"; +import { isNotEmpty } from "../../shared/empty.util"; @Injectable() @dataService(SUBMISSION_CC_LICENSE_URL) export class SubmissionCcLicenseUrlDataService extends DataService { - protected linkPath = 'submissioncclicenses'; + protected linkPath = 'submissioncclicenseUrl-search'; constructor( protected comparator: DefaultChangeAnalyzer, @@ -31,4 +36,41 @@ export class SubmissionCcLicenseUrlDataService extends DataService): Observable { + + return this.getSearchByHref( + 'rightsByQuestions',{ + searchParams: [ + { + fieldName: 'license', + fieldValue: ccLicense.id + }, + ...ccLicense.fields.map( + (field) => { + return { + fieldName: `answer_${field.id}`, + fieldValue: options.get(field).id, + } + }), + ] + } + ).pipe( + switchMap((href) => this.findByHref(href)), + getSucceededRemoteData(), + getRemoteDataPayload(), + map((response) => response.url), + ); + } + + protected getSearchEndpoint(searchMethod: string): Observable { + return this.halService.getEndpoint(`${this.linkPath}`).pipe( + filter((href: string) => isNotEmpty(href)), + map((href: string) => `${href}/${searchMethod}`)); + } } 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 d2aa78d030..d608f21fbc 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 @@ -14,6 +14,7 @@ import { WorkspaceitemSectionCcLicenseObject } from '../../../core/submission/mo import { JsonPatchOperationPathCombiner } from '../../../core/json-patch/builder/json-patch-operation-path-combiner'; 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"; /** * This component represents the submission section to select the Creative Commons license. @@ -80,6 +81,7 @@ export class SubmissionSectionCcLicensesComponent extends SectionModelComponent protected modalService: NgbModal, protected sectionService: SectionsService, protected submissionCcLicensesDataService: SubmissionCcLicenseDataService, + protected submissionCcLicenseUrlDataService: SubmissionCcLicenseUrlDataService, protected operationsBuilder: JsonPatchOperationsBuilder, @Inject('collectionIdProvider') public injectedCollectionId: string, @Inject('sectionDataProvider') public injectedSectionData: SectionDataObject, @@ -180,7 +182,7 @@ export class SubmissionSectionCcLicensesComponent extends SectionModelComponent return undefined; } const selectedCcLicense = this.getSelectedCcLicense(); - return this.submissionCcLicensesDataService.getCcLicenseLink( + return this.submissionCcLicenseUrlDataService.getCcLicenseLink( selectedCcLicense, new Map(selectedCcLicense.fields.map( (field) => [field, this.getSelectedOption(selectedCcLicense, field)]