From d87bd6b291c130f5a288e21a271f9995b83df9b6 Mon Sep 17 00:00:00 2001 From: Philip Durbin Date: Mon, 8 Sep 2025 16:13:30 -0400 Subject: [PATCH] Show "New Review" button, when enabled #821 --- package-lock.json | 10 +++++----- package.json | 2 +- public/locales/en/header.json | 1 + src/dataset/domain/repositories/DatasetRepository.ts | 6 +++++- src/dataset/domain/useCases/createDataset.ts | 5 +++-- .../repositories/DatasetJSDataverseRepository.ts | 8 ++++++-- src/sections/layout/header/LoggedInHeaderActions.tsx | 11 +++++++++++ .../shared/add-data-actions/AddDataActionsButton.tsx | 11 +++++++++++ .../form/DatasetMetadataForm/useSubmitDataset.ts | 8 +++++++- 9 files changed, 50 insertions(+), 12 deletions(-) diff --git a/package-lock.json b/package-lock.json index e6c59d54b..e5bfc8385 100644 --- a/package-lock.json +++ b/package-lock.json @@ -13,7 +13,7 @@ "@dnd-kit/sortable": "8.0.0", "@dnd-kit/utilities": "3.2.2", "@faker-js/faker": "7.6.0", - "@iqss/dataverse-client-javascript": "2.0.0-alpha.62", + "@iqss/dataverse-client-javascript": "2.0.0-pr360.cc77995", "@iqss/dataverse-design-system": "*", "@istanbuljs/nyc-config-typescript": "1.0.2", "@tanstack/react-table": "8.9.2", @@ -3561,9 +3561,9 @@ }, "node_modules/@iqss/dataverse-client-javascript": { "name": "@IQSS/dataverse-client-javascript", - "version": "2.0.0-alpha.62", - "resolved": "https://npm.pkg.github.com/download/@IQSS/dataverse-client-javascript/2.0.0-alpha.62/61ac45ca90983c86af8adb443bc013ea929db0ad", - "integrity": "sha512-BtblnMfg6a0m6E8bbcwkZ7aEOBHeLzRbkaJVcKFybxWz33h76Xjr1TIOKcd9cwGNoaAFxReigGGp8EWmWwqehA==", + "version": "2.0.0-pr360.cc77995", + "resolved": "https://npm.pkg.github.com/download/@IQSS/dataverse-client-javascript/2.0.0-pr360.cc77995/cccbeda63b46082266f04f8d0c7f9b3ce24099a2", + "integrity": "sha512-MpzTc5dcMbkhJE+U3ulSIR/3oit0wNV4ZudEtNG3PZrkhYq46ut1uOw1wuRFt6BHLv0vIJ0KevKc58EEflYlkQ==", "license": "MIT", "dependencies": { "@types/node": "^18.15.11", @@ -43950,4 +43950,4 @@ } } } -} \ No newline at end of file +} diff --git a/package.json b/package.json index d65f4e87a..c3a6cca6a 100644 --- a/package.json +++ b/package.json @@ -17,7 +17,7 @@ "@dnd-kit/sortable": "8.0.0", "@dnd-kit/utilities": "3.2.2", "@faker-js/faker": "7.6.0", - "@iqss/dataverse-client-javascript": "2.0.0-alpha.62", + "@iqss/dataverse-client-javascript": "2.0.0-pr360.cc77995", "@iqss/dataverse-design-system": "*", "@istanbuljs/nyc-config-typescript": "1.0.2", "@tanstack/react-table": "8.9.2", diff --git a/public/locales/en/header.json b/public/locales/en/header.json index eef91ae01..dd4e57783 100644 --- a/public/locales/en/header.json +++ b/public/locales/en/header.json @@ -8,6 +8,7 @@ "addData": "Add Data", "newCollection": "New Collection", "newDataset": "New Dataset", + "newReview": "New Review", "accountInfo": "Account Information", "apiToken": "API Token", "myData": "My Data" diff --git a/src/dataset/domain/repositories/DatasetRepository.ts b/src/dataset/domain/repositories/DatasetRepository.ts index 17e4d5670..8174e1616 100644 --- a/src/dataset/domain/repositories/DatasetRepository.ts +++ b/src/dataset/domain/repositories/DatasetRepository.ts @@ -25,7 +25,11 @@ export interface DatasetRepository { includeDeaccessioned: boolean ) => Promise - create: (dataset: DatasetDTO, collectionId: string) => Promise<{ persistentId: string }> + create: ( + dataset: DatasetDTO, + collectionId: string, + datasetType?: string + ) => Promise<{ persistentId: string }> updateMetadata: ( datasetId: string | number, datasetDTO: DatasetDTO, diff --git a/src/dataset/domain/useCases/createDataset.ts b/src/dataset/domain/useCases/createDataset.ts index abe0a943f..bc231855c 100644 --- a/src/dataset/domain/useCases/createDataset.ts +++ b/src/dataset/domain/useCases/createDataset.ts @@ -4,9 +4,10 @@ import { DatasetDTO } from './DTOs/DatasetDTO' export function createDataset( datasetRepository: DatasetRepository, dataset: DatasetDTO, - collectionId: string + collectionId: string, + datasetType?: string ): Promise<{ persistentId: string }> { - return datasetRepository.create(dataset, collectionId).catch((error: Error) => { + return datasetRepository.create(dataset, collectionId, datasetType).catch((error: Error) => { throw new Error(error.message) }) } diff --git a/src/dataset/infrastructure/repositories/DatasetJSDataverseRepository.ts b/src/dataset/infrastructure/repositories/DatasetJSDataverseRepository.ts index c1519b352..33e6102c1 100644 --- a/src/dataset/infrastructure/repositories/DatasetJSDataverseRepository.ts +++ b/src/dataset/infrastructure/repositories/DatasetJSDataverseRepository.ts @@ -310,9 +310,13 @@ export class DatasetJSDataverseRepository implements DatasetRepository { }) } - create(dataset: DatasetDTO, collectionId: string): Promise<{ persistentId: string }> { + create( + dataset: DatasetDTO, + collectionId: string, + datasetType?: string + ): Promise<{ persistentId: string }> { return createDataset - .execute(DatasetDTOMapper.toJSDatasetDTO(dataset), collectionId) + .execute(DatasetDTOMapper.toJSDatasetDTO(dataset), collectionId, datasetType) .then((jsDatasetIdentifiers: JSDatasetIdentifiers) => ({ persistentId: jsDatasetIdentifiers.persistentId })) diff --git a/src/sections/layout/header/LoggedInHeaderActions.tsx b/src/sections/layout/header/LoggedInHeaderActions.tsx index 5113a2ddb..4dfdff032 100644 --- a/src/sections/layout/header/LoggedInHeaderActions.tsx +++ b/src/sections/layout/header/LoggedInHeaderActions.tsx @@ -38,6 +38,9 @@ export const LoggedInHeaderActions = ({ const canUserAddCollectionToRoot = Boolean(collectionUserPermissions?.canAddCollection) const canUserAddDatasetToRoot = Boolean(collectionUserPermissions?.canAddDataset) + // TODO: Enable/disable review creation based on config setting. See also AddDataActionsButton.tsx + // TODO: Longer term, query /api/datasets/datasetTypes and show those + const reviewCreationEnabled = false return ( <> @@ -51,6 +54,14 @@ export const LoggedInHeaderActions = ({ {t('navigation.newDataset')} + {reviewCreationEnabled && ( + + {t('navigation.newReview')} + + )} {t('navigation.newDataset')} + {reviewCreationEnabled && ( + + {t('navigation.newReview')} + + )} ) } diff --git a/src/sections/shared/form/DatasetMetadataForm/useSubmitDataset.ts b/src/sections/shared/form/DatasetMetadataForm/useSubmitDataset.ts index c10f6eafb..e85fe7fa9 100644 --- a/src/sections/shared/form/DatasetMetadataForm/useSubmitDataset.ts +++ b/src/sections/shared/form/DatasetMetadataForm/useSubmitDataset.ts @@ -61,7 +61,13 @@ export function useSubmitDataset( ) if (mode === 'create') { - createDataset(datasetRepository, formattedFormValues, collectionId) + let datasetType = 'dataset' + const urlParams = new URLSearchParams(window.location.search) + const datasetTypeIn = urlParams.get('datasetType') + if (datasetTypeIn) { + datasetType = datasetTypeIn + } + createDataset(datasetRepository, formattedFormValues, collectionId, datasetType) .then(({ persistentId }) => { setSubmitError(null) setSubmissionStatus(SubmissionStatus.SubmitComplete)