Skip to content
Merged
Show file tree
Hide file tree
Changes from all commits
Commits
File filter

Filter by extension

Filter by extension


Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
8 changes: 4 additions & 4 deletions package-lock.json

Some generated files are not rendered by default. Learn more about how customized files appear on GitHub.

2 changes: 1 addition & 1 deletion package.json
Original file line number Diff line number Diff line change
Expand Up @@ -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.31",
"@iqss/dataverse-client-javascript": "2.0.0-alpha.33",
"@iqss/dataverse-design-system": "*",
"@istanbuljs/nyc-config-typescript": "1.0.2",
"@tanstack/react-table": "8.9.2",
Expand Down
3 changes: 3 additions & 0 deletions src/dataset/domain/models/Dataset.ts
Original file line number Diff line number Diff line change
Expand Up @@ -401,6 +401,7 @@ export class Dataset {
constructor(
public readonly persistentId: string,
public readonly version: DatasetVersion,
public readonly internalVersionNumber: number,
public readonly alerts: Alert[],
public readonly summaryFields: DatasetMetadataBlock[],
public readonly termsOfUse: DatasetTermsOfUse,
Expand Down Expand Up @@ -496,6 +497,7 @@ export class Dataset {
constructor(
public readonly persistentId: string,
public readonly version: DatasetVersion,
public readonly internalVersionNumber: number,
public readonly summaryFields: DatasetMetadataBlock[],
public readonly termsOfUse: DatasetTermsOfUse,
public readonly metadataBlocks: DatasetMetadataBlocks,
Expand Down Expand Up @@ -565,6 +567,7 @@ export class Dataset {
return new Dataset(
this.persistentId,
this.version,
this.internalVersionNumber,
this.alerts,
this.summaryFields,
this.termsOfUse,
Expand Down
6 changes: 5 additions & 1 deletion src/dataset/domain/repositories/DatasetRepository.ts
Original file line number Diff line number Diff line change
Expand Up @@ -22,7 +22,11 @@ export interface DatasetRepository {
) => Promise<DatasetVersionDiff>

create: (dataset: DatasetDTO, collectionId: string) => Promise<{ persistentId: string }>
updateMetadata: (datasetId: string | number, datasetDTO: DatasetDTO) => Promise<void>
updateMetadata: (
datasetId: string | number,
datasetDTO: DatasetDTO,
internalVersionNumber: number
) => Promise<void>
deaccession: (
datasetId: string | number,
version: string,
Expand Down
11 changes: 7 additions & 4 deletions src/dataset/domain/useCases/updateDatasetMetadata.ts
Original file line number Diff line number Diff line change
Expand Up @@ -4,9 +4,12 @@ import { DatasetDTO } from './DTOs/DatasetDTO'
export function updateDatasetMetadata(
datasetRepository: DatasetRepository,
datasetId: string | number,
updatedDataset: DatasetDTO
updatedDataset: DatasetDTO,
internalVersionNumber: number
): Promise<void> {
return datasetRepository.updateMetadata(datasetId, updatedDataset).catch((error: Error) => {
throw new Error(error.message)
})
return datasetRepository
.updateMetadata(datasetId, updatedDataset, internalVersionNumber)
.catch((error: Error) => {
throw new Error(error.message)
})
}
1 change: 1 addition & 0 deletions src/dataset/infrastructure/mappers/JSDatasetMapper.ts
Original file line number Diff line number Diff line change
Expand Up @@ -61,6 +61,7 @@ export class JSDatasetMapper {
return new Dataset.Builder(
jsDataset.persistentId,
version,
jsDataset.internalVersionNumber,
JSDatasetMapper.toSummaryFields(jsDataset.metadataBlocks, jsDatasetSummaryFieldsNames),
jsDataset.termsOfUse,
JSDatasetMapper.toMetadataBlocks(
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -317,9 +317,13 @@ export class DatasetJSDataverseRepository implements DatasetRepository {
})
}

updateMetadata(datasetId: string | number, updatedDataset: DatasetDTO): Promise<void> {
updateMetadata(
datasetId: string | number,
updatedDataset: DatasetDTO,
internalVersionNumber: number
): Promise<void> {
return updateDataset
.execute(datasetId, DatasetDTOMapper.toJSDatasetDTO(updatedDataset))
.execute(datasetId, DatasetDTOMapper.toJSDatasetDTO(updatedDataset), internalVersionNumber)
.catch((error: WriteError) => {
throw new Error(error.message)
})
Expand Down
1 change: 1 addition & 0 deletions src/sections/edit-dataset-metadata/EditDatasetMetadata.tsx
Original file line number Diff line number Diff line change
Expand Up @@ -70,6 +70,7 @@ export const EditDatasetMetadata = ({
metadataBlockInfoRepository={metadataBlockInfoRepository}
datasetPersistentID={dataset.persistentId}
datasetMetadaBlocksCurrentValues={dataset.metadataBlocks}
datasetInternalVersionNumber={dataset.internalVersionNumber}
/>
</div>
</Tabs.Tab>
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -298,7 +298,10 @@ export class MetadataFieldsHelper {
return formattedNewObject
}

public static formatFormValuesToDatasetDTO(formValues: DatasetMetadataFormValues): DatasetDTO {
public static formatFormValuesToDatasetDTO(
formValues: DatasetMetadataFormValues,
mode: 'create' | 'edit'
): DatasetDTO {
const metadataBlocks: DatasetDTO['metadataBlocks'] = []

for (const metadataBlockName in formValues) {
Expand All @@ -310,14 +313,14 @@ export class MetadataFieldsHelper {

Object.entries(metadataBlockFormValues).forEach(([fieldName, fieldValue]) => {
if (this.isPrimitiveFieldValue(fieldValue)) {
if (fieldValue !== '') {
if (fieldValue !== '' || mode === 'edit') {
formattedMetadataBlock.fields[fieldName] = fieldValue
return
}
return
}
if (this.isVocabularyMultipleFieldValue(fieldValue)) {
if (fieldValue.length > 0) {
if (fieldValue.length > 0 || mode === 'edit') {
formattedMetadataBlock.fields[fieldName] = fieldValue
return
}
Expand All @@ -329,7 +332,7 @@ export class MetadataFieldsHelper {
.map((primitiveField) => primitiveField.value)
.filter((v) => v !== '')

if (primitiveMultipleFieldValues.length > 0) {
if (primitiveMultipleFieldValues.length > 0 || mode === 'edit') {
formattedMetadataBlock.fields[fieldName] = primitiveMultipleFieldValues
return
}
Expand All @@ -340,7 +343,7 @@ export class MetadataFieldsHelper {
const formattedMetadataChildFieldValue: DatasetMetadataChildFieldValueDTO = {}

Object.entries(fieldValue).forEach(([nestedFieldName, nestedFieldValue]) => {
if (nestedFieldValue !== '') {
if (nestedFieldValue !== '' || mode === 'edit') {
formattedMetadataChildFieldValue[nestedFieldName] = nestedFieldValue
}
})
Expand All @@ -357,15 +360,15 @@ export class MetadataFieldsHelper {
fieldValue.forEach((composedFieldValues) => {
const composedField: DatasetMetadataChildFieldValueDTO = {}
Object.entries(composedFieldValues).forEach(([nestedFieldName, nestedFieldValue]) => {
if (nestedFieldValue !== '') {
if (nestedFieldValue !== '' || mode === 'edit') {
composedField[nestedFieldName] = nestedFieldValue
}
})
if (Object.keys(composedField).length > 0) {
if (Object.keys(composedField).length > 0 || mode === 'edit') {
formattedMetadataChildFieldValues.push(composedField)
}
})
if (formattedMetadataChildFieldValues.length > 0) {
if (formattedMetadataChildFieldValues.length > 0 || mode === 'edit') {
formattedMetadataBlock.fields[fieldName] = formattedMetadataChildFieldValues
}

Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -23,6 +23,7 @@ interface FormProps {
errorLoadingMetadataBlocksInfo: string | null
datasetRepository: DatasetRepository
datasetPersistentID?: string
datasetInternalVersionNumber?: number
}

export const MetadataForm = ({
Expand All @@ -32,7 +33,8 @@ export const MetadataForm = ({
metadataBlocksInfo,
errorLoadingMetadataBlocksInfo,
datasetRepository,
datasetPersistentID
datasetPersistentID,
datasetInternalVersionNumber
}: FormProps) => {
const { user } = useSession()
const navigate = useNavigate()
Expand All @@ -53,7 +55,8 @@ export const MetadataForm = ({
collectionId,
datasetRepository,
onSubmitDatasetError,
datasetPersistentID
datasetPersistentID,
datasetInternalVersionNumber
)

useEffect(() => {
Expand Down
6 changes: 5 additions & 1 deletion src/sections/shared/form/DatasetMetadataForm/index.tsx
Original file line number Diff line number Diff line change
Expand Up @@ -17,6 +17,7 @@ type DatasetMetadataFormProps =
datasetPersistentID?: never
metadataBlockInfoRepository: MetadataBlockInfoRepository
datasetMetadaBlocksCurrentValues?: never
datasetInternalVersionNumber?: never
}
| {
mode: 'edit'
Expand All @@ -25,6 +26,7 @@ type DatasetMetadataFormProps =
datasetPersistentID: string
metadataBlockInfoRepository: MetadataBlockInfoRepository
datasetMetadaBlocksCurrentValues: DatasetMetadataBlocks
datasetInternalVersionNumber: number
}

export type DatasetMetadataFormMode = 'create' | 'edit'
Expand All @@ -35,7 +37,8 @@ export const DatasetMetadataForm = ({
datasetRepository,
datasetPersistentID,
metadataBlockInfoRepository,
datasetMetadaBlocksCurrentValues
datasetMetadaBlocksCurrentValues,
datasetInternalVersionNumber
}: DatasetMetadataFormProps) => {
const { setIsLoading } = useLoading()
const onEditMode = mode === 'edit'
Expand Down Expand Up @@ -112,6 +115,7 @@ export const DatasetMetadataForm = ({
errorLoadingMetadataBlocksInfo={errorLoadingMetadataBlocksInfo}
datasetRepository={datasetRepository}
datasetPersistentID={datasetPersistentID}
datasetInternalVersionNumber={datasetInternalVersionNumber}
/>
)
}
Original file line number Diff line number Diff line change
Expand Up @@ -37,7 +37,8 @@ export function useSubmitDataset(
collectionId: string,
datasetRepository: DatasetRepository,
onSubmitErrorCallback: () => void,
datasetPersistentID?: string
datasetPersistentID?: string,
datasetInternalVersionNumber?: number
): UseSubmitDatasetReturnType {
const navigate = useNavigate()
const { t } = useTranslation('shared', { keyPrefix: 'datasetMetadataForm' })
Expand All @@ -53,7 +54,8 @@ export function useSubmitDataset(
const formDataBackToOriginalKeys = MetadataFieldsHelper.replaceSlashKeysWithDot(formData)

const formattedFormValues = MetadataFieldsHelper.formatFormValuesToDatasetDTO(
formDataBackToOriginalKeys
formDataBackToOriginalKeys,
mode
)

if (mode === 'create') {
Expand Down Expand Up @@ -86,7 +88,8 @@ export function useSubmitDataset(
updateDatasetMetadata(
datasetRepository,
currentEditedDatasetPersistentID,
formattedFormValues
formattedFormValues,
datasetInternalVersionNumber as number
)
.then(() => {
setSubmitError(null)
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -40,6 +40,7 @@ export const EditMode: Story = {
metadataBlockInfoRepository={new MetadataBlockInfoMockRepository()}
datasetPersistentID={datasetToEditMock.persistentId}
datasetMetadaBlocksCurrentValues={datasetToEditMock.metadataBlocks}
datasetInternalVersionNumber={1}
/>
)
}
2 changes: 2 additions & 0 deletions tests/component/dataset/domain/models/DatasetMother.ts
Original file line number Diff line number Diff line change
Expand Up @@ -339,6 +339,7 @@ export class DatasetMother {
const dataset = {
persistentId: faker.datatype.uuid(),
version: DatasetVersionMother.create(),
internalVersionNumber: faker.datatype.number(),
license: {
name: 'CC0 1.0',
uri: 'https://creativecommons.org/publicdomain/zero/1.0/',
Expand Down Expand Up @@ -425,6 +426,7 @@ export class DatasetMother {
return new Dataset.Builder(
dataset.persistentId,
dataset.version,
dataset.internalVersionNumber,
dataset.summaryFields,
dataset.termsOfUse,
dataset.metadataBlocks,
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -37,6 +37,7 @@ const jsDataset = {
lastUpdateTime: new Date('2023-09-07T13:40:04.000Z'),
releaseTime: undefined
},
internalVersionNumber: 1,
termsOfUse: {
termsOfAccess: {
fileAccessRequest: true,
Expand Down Expand Up @@ -245,6 +246,7 @@ const expectedDataset = {
citation:
'Finch, Fiona, 2023, "Darwin\'s Finches", <a href="https://doi.org/10.5072/FK2/B4B2MJ" target="_blank">https://doi.org/10.5072/FK2/B4B2MJ</a>, Root, DRAFT VERSION'
},
internalVersionNumber: 1,
requestedVersion: undefined,
publicationDate: undefined,
alerts: [{ variant: 'warning', messageKey: 'draftVersion', dynamicFields: undefined }],
Expand Down Expand Up @@ -385,6 +387,7 @@ const expectedDatasetWithPublicationDate = {
citation:
'Finch, Fiona, 2023, "Darwin\'s Finches", <a href="https://doi.org/10.5072/FK2/B4B2MJ" target="_blank">https://doi.org/10.5072/FK2/B4B2MJ</a>, Root, DRAFT VERSION'
},
internalVersionNumber: 1,
requestedVersion: undefined,
publicationDate: undefined,
alerts: [{ variant: 'warning', messageKey: 'draftVersion', dynamicFields: undefined }],
Expand Down Expand Up @@ -526,6 +529,7 @@ const expectedDatasetWithNextVersionNumbers = {
citation:
'Finch, Fiona, 2023, "Darwin\'s Finches", <a href="https://doi.org/10.5072/FK2/B4B2MJ" target="_blank">https://doi.org/10.5072/FK2/B4B2MJ</a>, Root, DRAFT VERSION'
},
internalVersionNumber: 1,
requestedVersion: undefined,
publicationDate: undefined,
alerts: [{ variant: 'warning', messageKey: 'draftVersion', dynamicFields: undefined }],
Expand Down Expand Up @@ -671,6 +675,7 @@ const expectedDatasetAlternateVersion = {
citation:
'Finch, Fiona, 2023, "Darwin\'s Finches", <a href="https://doi.org/10.5072/FK2/B4B2MJ" target="_blank">https://doi.org/10.5072/FK2/B4B2MJ</a>, Root, DRAFT VERSION'
},
internalVersionNumber: 1,
requestedVersion: '4.0',
publicationDate: undefined,
hasValidTermsOfAccess: true,
Expand Down
Loading
Loading