From f90efcbe5c508f1af42b6bf9fe2d97a8da31107c Mon Sep 17 00:00:00 2001 From: Giacomo Citi Date: Thu, 12 Sep 2024 17:31:52 +0200 Subject: [PATCH] allow multiple publisedTo --- apis/core/lib/domain/job/create.ts | 2 +- cli/lib/commands/publish.ts | 22 ++++++++++++---------- packages/model/Job.ts | 12 ++++++------ ui/src/views/Publication.vue | 4 ++-- 4 files changed, 21 insertions(+), 19 deletions(-) diff --git a/apis/core/lib/domain/job/create.ts b/apis/core/lib/domain/job/create.ts index 4f352947b..8b7ffc056 100644 --- a/apis/core/lib/domain/job/create.ts +++ b/apis/core/lib/domain/job/create.ts @@ -83,7 +83,7 @@ export async function createPublishJob({ revision: project.nextRevision, publishGraph: organization.publishGraph, status: metadata?.pointer.out(schema.creativeWorkStatus).term, - publishedTo: metadata?.pointer.out(schema.workExample).term, + publishedTo: metadata?.pointer.out(schema.workExample).terms, }) const cubeId = isCsvProject(project) diff --git a/cli/lib/commands/publish.ts b/cli/lib/commands/publish.ts index 55786fe4f..0c4fd9a4d 100644 --- a/cli/lib/commands/publish.ts +++ b/cli/lib/commands/publish.ts @@ -88,19 +88,21 @@ async function getJob(jobUri: string, Hydra: HydraClient): Promise<{ } const getProfile = () => { - // 'https://cube.link/v0.2.1/shape/standalone-constraint-constraint' - // 'https://cube.link/latest/shape/standalone-constraint-constraint' - // 'https://cube.link/latest/shape/profile-opendataswiss' - // 'https://cube.link/latest/shape/profile-visualize' - const publishedTo = jobResource.representation?.root?.publishedTo?.value - if (publishedTo === 'https://ld.admin.ch/application/opendataswiss') { - return 'https://cube.link/latest/shape/profile-opendataswiss' + const publishedTo = jobResource.representation?.root?.publishedTo + if (publishedTo?.length === 1) { + if (publishedTo[0].value === 'https://ld.admin.ch/application/opendataswiss') { + return 'https://cube.link/v0.2.2/shape/profile-opendataswiss-lindas' + } + if (publishedTo[0].value === 'https://ld.admin.ch/application/visualize') { + return 'https://cube.link/v0.2.2/shape/profile-visualize' + } } - if (publishedTo === 'https://ld.admin.ch/application/visualize') { - return 'https://cube.link/latest/shape/profile-visualize' + if (publishedTo?.length === 2) { + // todo + return 'https://cube.link/v0.2.2/shape/profile-visualize' } - return 'https://cube.link/v0.2.1/shape/standalone-constraint-constraint' + return 'https://cube.link/v0.2.2/shape/standalone-constraint-constraint' } const projectResource = await Hydra.loadResource(job.project) diff --git a/packages/model/Job.ts b/packages/model/Job.ts index ea737be0f..3b55c347f 100644 --- a/packages/model/Job.ts +++ b/packages/model/Job.ts @@ -36,7 +36,7 @@ export interface PublishJob extends Job { project: NamedNode revision: number publishGraph: NamedNode - publishedTo: Term | undefined + publishedTo: Term[] status?: Term query?: string workExamples: CreativeWork[] @@ -137,17 +137,17 @@ export function PublishJobMixin>(base: Bas @property({ path: schema.creativeWorkStatus }) status?: NamedNode - get publishedTo(): Term | undefined { + get publishedTo(): Term[] { return this.pointer .out(schema.workExample) .filter(example => example.out(schema.encodingFormat).terms.length === 0) - .term + .terms } - set publishedTo(term: Term | undefined) { - if (term) { + set publishedTo(terms: Term[]) { + terms.forEach(term => { this.pointer.addOut(schema.workExample, term) - } + }) } get workExamples(): CreativeWork[] { diff --git a/ui/src/views/Publication.vue b/ui/src/views/Publication.vue index c94bc6919..e49b2e090 100644 --- a/ui/src/views/Publication.vue +++ b/ui/src/views/Publication.vue @@ -35,8 +35,8 @@ - - + +