From 7aa45a0ce9d6dd4dc9c6aff730bd9a54717290e1 Mon Sep 17 00:00:00 2001 From: connoratrug <47183404+connoratrug@users.noreply.github.com> Date: Wed, 4 Dec 2024 14:03:47 +0100 Subject: [PATCH] feat: Update directory app with services (#4501) Update the app to allow user to request services - allow user to filter biobanks by service type - allow user to add services to the request/cart - add selected services to negotiator request - show service details in service report - update model with link back from service to biobank --- apps/directory/package.json | 1 - apps/directory/src/App.vue | 8 +- apps/directory/src/components/Card.vue | 55 ++ apps/directory/src/components/CardItem.vue | 19 + apps/directory/src/components/CheckBox.vue | 24 + apps/directory/src/components/Tabs.vue | 26 + .../biobankcards-components/BiobankCard.vue | 460 +++++--------- .../CollectionsSection.vue | 108 ++++ .../biobankcards-components/HeaderSection.vue | 43 ++ .../OrganizationSection.vue | 48 ++ .../biobankcards-components/ResultHeader.vue | 24 +- .../biobankcards-components/Service.vue | 64 ++ .../ServiceSection.vue | 84 +++ .../src/components/cart/CartItem.vue | 36 ++ .../components/cart/NegotiatorSelection.vue | 257 ++++++++ .../checkout-components/CheckOut.vue | 72 +-- .../CollectionSelector.vue | 21 +- .../components/generators/ViewGenerator.vue | 17 +- .../popovers/NegotiatorSelection.vue | 216 ------- .../report-components/ContactInformation.vue | 4 +- .../report-components/reportInterfaces.ts | 12 - .../src/components/tables/QualityColumn.vue | 2 +- .../src/dev-assets/mg-bbmri-eric-4.css | 2 +- .../src/filter-config/initialFilterFacets.js | 8 +- .../directory/src/functions/arrayUtilities.js | 30 - .../{bookmarkMapper.js => bookmarkMapper.ts} | 98 +-- apps/directory/src/functions/sorting.js | 35 -- apps/directory/src/functions/sorting.ts | 17 + apps/directory/src/i18n/i18n.js | 4 +- apps/directory/src/interfaces/directory.ts | 560 ++++++++++++++++++ apps/directory/src/interfaces/interfaces.ts | 9 + .../property-config/initialBiobankColumns.js | 2 +- .../initialBiobankReportColumns.js | 15 +- apps/directory/src/router/index.js | 6 + apps/directory/src/stores/biobanksStore.js | 10 +- .../{checkoutStore.js => checkoutStore.ts} | 233 +++++++- apps/directory/src/stores/collectionStore.js | 27 - apps/directory/src/stores/filtersStore.ts | 95 ++- apps/directory/src/views/HomeView.vue | 6 +- apps/directory/src/views/ServiceReport.vue | 238 ++++++++ apps/directory/vite.config.js | 2 +- data/biobank-directory/demo/Services.csv | 6 +- data/biobank-directory/molgenis.csv | 3 +- 43 files changed, 2201 insertions(+), 806 deletions(-) create mode 100644 apps/directory/src/components/Card.vue create mode 100644 apps/directory/src/components/CardItem.vue create mode 100644 apps/directory/src/components/CheckBox.vue create mode 100644 apps/directory/src/components/Tabs.vue create mode 100644 apps/directory/src/components/biobankcards-components/CollectionsSection.vue create mode 100644 apps/directory/src/components/biobankcards-components/HeaderSection.vue create mode 100644 apps/directory/src/components/biobankcards-components/OrganizationSection.vue create mode 100644 apps/directory/src/components/biobankcards-components/Service.vue create mode 100644 apps/directory/src/components/biobankcards-components/ServiceSection.vue create mode 100644 apps/directory/src/components/cart/CartItem.vue create mode 100644 apps/directory/src/components/cart/NegotiatorSelection.vue delete mode 100644 apps/directory/src/components/popovers/NegotiatorSelection.vue delete mode 100644 apps/directory/src/functions/arrayUtilities.js rename apps/directory/src/functions/{bookmarkMapper.js => bookmarkMapper.ts} (69%) delete mode 100644 apps/directory/src/functions/sorting.js create mode 100644 apps/directory/src/functions/sorting.ts create mode 100644 apps/directory/src/interfaces/directory.ts rename apps/directory/src/stores/{checkoutStore.js => checkoutStore.ts} (52%) create mode 100644 apps/directory/src/views/ServiceReport.vue diff --git a/apps/directory/package.json b/apps/directory/package.json index bb73d94455..fe92c1eaef 100644 --- a/apps/directory/package.json +++ b/apps/directory/package.json @@ -3,7 +3,6 @@ "version": "0.0.1", "description": "BBMRI Directory app, for browsing collections and biobanks in EMX2", "main": "index.js", - "author": "Jelmer Veen ", "license": "LGPL3", "private": true, "scripts": { diff --git a/apps/directory/src/App.vue b/apps/directory/src/App.vue index 148a03bd82..a076dc3624 100644 --- a/apps/directory/src/App.vue +++ b/apps/directory/src/App.vue @@ -1,5 +1,5 @@ - diff --git a/apps/directory/src/components/checkout-components/CollectionSelector.vue b/apps/directory/src/components/checkout-components/CollectionSelector.vue index fe32080c96..fad4b040ab 100644 --- a/apps/directory/src/components/checkout-components/CollectionSelector.vue +++ b/apps/directory/src/components/checkout-components/CollectionSelector.vue @@ -91,16 +91,21 @@ export default { methods: { handleCollectionStatus(event) { const { checked } = event.target; - const collectionData = { - biobank: this.biobankData, - collections: JSON.parse(JSON.stringify(this.collections)), - bookmark: this.bookmark, - }; - if (checked) { - this.checkoutStore.addCollectionsToSelection(collectionData); + this.checkoutStore.addCollectionsToSelection( + this.biobankData, + this.collections.map((collection) => ({ + label: collection.label, + value: collection.value, + })), + this.bookmark + ); } else { - this.checkoutStore.removeCollectionsFromSelection(collectionData); + this.checkoutStore.removeCollectionsFromSelection( + { name: this.biobankData.name }, + this.collections.map((collection) => collection.value), + this.bookmark + ); } }, }, diff --git a/apps/directory/src/components/generators/ViewGenerator.vue b/apps/directory/src/components/generators/ViewGenerator.vue index 38930c0f5b..6dab70382b 100644 --- a/apps/directory/src/components/generators/ViewGenerator.vue +++ b/apps/directory/src/components/generators/ViewGenerator.vue @@ -1,12 +1,14 @@