From 5ae00136083edbe9ce08c8f3a051ecb2620cde15 Mon Sep 17 00:00:00 2001 From: Morris Swertz Date: Thu, 17 Oct 2024 20:06:16 +0200 Subject: [PATCH] fix(catalogue): add missing resource types and otherwise use raw type name (#4348) --- .../nuxt3-ssr/components/header/Catalogue.vue | 2 +- .../composables/usePathResourceType.ts | 7 +++-- .../[catalogue]/[resourceType]/index.vue | 4 +-- .../ssr-catalogue/[catalogue]/index.vue | 8 ++++-- apps/nuxt3-ssr/utils/CollectionUtils.ts | 28 +++++++++++++++++-- apps/nuxt3-ssr/utils/errorLogger.ts | 2 +- 6 files changed, 38 insertions(+), 13 deletions(-) diff --git a/apps/nuxt3-ssr/components/header/Catalogue.vue b/apps/nuxt3-ssr/components/header/Catalogue.vue index 9d71bee882..a6af9fdfe7 100644 --- a/apps/nuxt3-ssr/components/header/Catalogue.vue +++ b/apps/nuxt3-ssr/components/header/Catalogue.vue @@ -33,7 +33,7 @@ if ( if (props.resourceTypes.length > 0) { props.resourceTypes.forEach((resourceType) => { const resourceTypeMetadata = getResourceMetadataForType( - resourceType.type.name + resourceType.type?.name ); menu.push({ label: resourceTypeMetadata.plural, diff --git a/apps/nuxt3-ssr/composables/usePathResourceType.ts b/apps/nuxt3-ssr/composables/usePathResourceType.ts index 6b7a69d92b..545028e301 100644 --- a/apps/nuxt3-ssr/composables/usePathResourceType.ts +++ b/apps/nuxt3-ssr/composables/usePathResourceType.ts @@ -7,10 +7,11 @@ export const usePathResourceType = () => { Object.values(typeMetadata).filter( (value: IResourceTypeMetadata) => value.path === resourceType )?.[0] || { - type: "Resource", - plural: "Resources", + type: resourceType, + plural: resourceType, image: "image-link", - path: "resources", + path: resourceType, + description: resourceType, } ); }; diff --git a/apps/nuxt3-ssr/pages/[schema]/ssr-catalogue/[catalogue]/[resourceType]/index.vue b/apps/nuxt3-ssr/pages/[schema]/ssr-catalogue/[catalogue]/[resourceType]/index.vue index b76e61ef01..880af4d4b9 100644 --- a/apps/nuxt3-ssr/pages/[schema]/ssr-catalogue/[catalogue]/[resourceType]/index.vue +++ b/apps/nuxt3-ssr/pages/[schema]/ssr-catalogue/[catalogue]/[resourceType]/index.vue @@ -33,7 +33,7 @@ let pageFilterTemplate: IFilter[] = [ }, ]; -if (resourceType.path === "resources") { +if (route.params.resourceType === "resources") { pageFilterTemplate.push({ id: "type", config: { @@ -168,7 +168,7 @@ const gqlFilter = computed(() => { result = buildQueryFilter(filters.value); - if (resourceType.path != "resources") { + if (route.params.resourceType != "resources") { result.type = { name: { equals: resourceType.type } }; } diff --git a/apps/nuxt3-ssr/pages/[schema]/ssr-catalogue/[catalogue]/index.vue b/apps/nuxt3-ssr/pages/[schema]/ssr-catalogue/[catalogue]/index.vue index 2f08f52ec9..30aaa24bcd 100644 --- a/apps/nuxt3-ssr/pages/[schema]/ssr-catalogue/[catalogue]/index.vue +++ b/apps/nuxt3-ssr/pages/[schema]/ssr-catalogue/[catalogue]/index.vue @@ -175,11 +175,13 @@ const aboutLink = `/${route.params.schema}/ssr-catalogue/${catalogueRouteParam}/ const resources = computed(() => { if (cohortOnly.value) { return data.value.data.Resources_groupBy.filter( - (resource: { type: { name: string } }) => - resource.type.name === "Cohort study" + (resource: IResources) => resource.type.name === "Cohort study" ); } else { - return data.value.data.Resources_groupBy; + //omit counts of resources without a type + return data.value.data.Resources_groupBy.filter( + (resource: IResources) => resource.type + ); } }); diff --git a/apps/nuxt3-ssr/utils/CollectionUtils.ts b/apps/nuxt3-ssr/utils/CollectionUtils.ts index e32290b515..bcf4028619 100644 --- a/apps/nuxt3-ssr/utils/CollectionUtils.ts +++ b/apps/nuxt3-ssr/utils/CollectionUtils.ts @@ -35,6 +35,27 @@ export const typeMetadata: IResourceTypeMetadata[] = [ description: "Networks & Consortia", }, { type: "Study", plural: "Studies", path: "studies" }, + { + type: "Clinical trial", + plural: "Clinical Trials", + path: "trials", + image: "image-data-warehouse", + description: "Prospective collection with intervention(s)", + }, + { + type: "Common data model", + plural: "Common data models", + path: "cdms", + image: "image-data-warehouse", + description: "For data harmonization", + }, + { + type: "Other type", + plural: "Other types", + path: "other-types", + image: "image-data-warehouse", + description: "Other type of resource", + }, ]; export function getResourceMetadataForType( @@ -44,10 +65,11 @@ export function getResourceMetadataForType( Object.values(typeMetadata).filter( (value: IResourceTypeMetadata) => value.type === type )?.[0] || { - type: "Resource", - plural: "Resources", + type: type, + plural: type, image: "image-link", - path: "resources", + path: type, + description: type, } ); } diff --git a/apps/nuxt3-ssr/utils/errorLogger.ts b/apps/nuxt3-ssr/utils/errorLogger.ts index 5b9fafbb66..854c8840f0 100644 --- a/apps/nuxt3-ssr/utils/errorLogger.ts +++ b/apps/nuxt3-ssr/utils/errorLogger.ts @@ -7,7 +7,7 @@ export const logError = (error: IMgError, contextMsg?: string) => { console.log(`[ERROR] StatusCode: ${error.statusCode}`); console.log(`[ERROR] Message: ${error.message}`); - if (error.data.errors) { + if (error.data?.errors) { console.log("[ERROR] MESSAGES FROM API: "); error.data.errors.forEach((e: { message: string }, lineNr) => console.log(` ${lineNr}: ${e.message}`)