Skip to content

Commit 48dd9ff

Browse files
authored
Merge pull request #882 from IQSS/Fix-File&Dataset-Version-Summaries
Fix Dataset and File Version Summaries
2 parents d4ca076 + 415efec commit 48dd9ff

20 files changed

+317
-72
lines changed

CHANGELOG.md

Lines changed: 2 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -26,6 +26,8 @@ This changelog follows the principles of [Keep a Changelog](https://keepachangel
2626

2727
- Add word-break to items text to prevent layout issues when long descriptions without spaces are entered. (#839)
2828
- Show toast notification when API token is copied to clipboard.
29+
- Dataset versions: (1) file changes should be `Access: Restricted` instead of `isResticted: true/false`; (2) logic of View Detail button. (#879)
30+
- File versions: (1) logic of linking to a file version; (2)If file not included, show text information "File not included in this version.". (#879)
2931

3032
### Removed
3133

public/locales/en/dataset.json

Lines changed: 3 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -257,7 +257,6 @@
257257
"type": "Type",
258258
"description": "Description",
259259
"access": "Access",
260-
"needTwoVersions": "Please select two versions to view the differences.",
261260
"viewDetails": "View Details",
262261
"fileReplaced": "File Replaced",
263262
"termsOfUseandAccess": "Terms of Use/Access",
@@ -270,6 +269,8 @@
270269
"firstDraft": "This is a draft version.",
271270
"versionDeaccessioned": "Deaccessioned Reason: The research article has been retracted.",
272271
"previousVersionDeaccessioned": "Due to the previous version being deaccessioned, there are no difference notes available for this published version.",
272+
"thisIsADraftVersion": "This is a draft version.",
273+
"noVersionDifferences": "There are no differences between version {{oldVersion}} and version {{newVersion}}.",
273274
"citationMetadata": {
274275
"changed": "Changed",
275276
"added": "{{count}} Added"
@@ -283,7 +284,7 @@
283284
"added": "Added: {{count}}",
284285
"removed": "Removed: {{count}}",
285286
"replaced": "Replaced: {{count}}",
286-
"fileMetadataChanged": "File Metadata Changed: {{count}}",
287+
"fileMetadataChanged": "Metadata Changed: {{count}}",
287288
"variableMetadataChanged": "Variable Metadata Changed: {{count}}"
288289
},
289290
"termsAccessChanged": "Changed"

public/locales/en/file.json

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -12,6 +12,7 @@
1212
"summary": "Summary",
1313
"contributors": "Contributors",
1414
"noChange": "No changes associated with this version.",
15+
"noVersions": "File not included in this version.",
1516
"file": "file",
1617
"fileChanged": "[File {{name}}]",
1718
"access": "File Access",
@@ -28,7 +29,6 @@
2829
},
2930
"error": "Error on loading file versions"
3031
},
31-
"fileNotChange": "No changes associated with this version",
3232
"subtext": "This file is part of \"{{datasetTitle}}\".",
3333
"datasetCitationTitle": "Dataset Citation",
3434
"fileCitationTitle": "File Citation",

src/files/domain/models/File.ts

Lines changed: 2 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -4,7 +4,7 @@ import { FileAccess } from './FileAccess'
44
import { FilePermissions } from './FilePermissions'
55
import { FileIngest } from './FileIngest'
66
import { UpwardHierarchyNode } from '../../../shared/hierarchy/domain/models/UpwardHierarchyNode'
7-
import { FileVersionSummaryInfo } from './FileVersionSummaryInfo'
7+
import { FileVersionSummarySubset } from './FileVersionSummaryInfo'
88

99
export interface File {
1010
id: number
@@ -17,5 +17,5 @@ export interface File {
1717
permissions: FilePermissions
1818
metadata: FileMetadata
1919
ingest: FileIngest
20-
fileVersionSummaries?: FileVersionSummaryInfo[]
20+
fileVersionSummaries?: FileVersionSummarySubset
2121
}

src/files/domain/models/FileVersionSummaryInfo.ts

Lines changed: 1 addition & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -17,6 +17,7 @@ export interface FileVersionSummaryInfo {
1717
}
1818

1919
export type FileDifferenceSummary = {
20+
datafileId?: number
2021
file?: FileChangeType
2122
fileAccess?: 'Restricted' | 'Unrestricted'
2223
fileMetadata?: FileMetadataChange[]

src/sections/dataset/dataset-versions/DatasetVersions.tsx

Lines changed: 35 additions & 31 deletions
Original file line numberDiff line numberDiff line change
@@ -26,6 +26,11 @@ interface DatasetVersionsProps {
2626
isCurrentVersionDeaccessioned?: boolean
2727
}
2828

29+
const isVersionDeaccessioned = (version: DatasetVersionSummaryInfo) =>
30+
typeof version.summary === 'object' &&
31+
version.summary !== null &&
32+
'deaccessioned' in version.summary
33+
2934
export function DatasetVersions({
3035
datasetRepository,
3136
datasetId,
@@ -61,12 +66,7 @@ export function DatasetVersions({
6166

6267
const selectableVersions =
6368
datasetVersionSummaries &&
64-
datasetVersionSummaries.filter((version) => {
65-
const summary = version.summary
66-
const isDeaccessioned =
67-
typeof summary === 'object' && summary !== null && 'deaccessioned' in summary
68-
return !isDeaccessioned
69-
})
69+
datasetVersionSummaries.filter((version) => !isVersionDeaccessioned(version))
7070
const isCheckBoxValid = (selectableVersions?.length ?? 0) > 2
7171

7272
useEffect(() => {
@@ -111,36 +111,27 @@ export function DatasetVersions({
111111
</thead>
112112
<tbody>
113113
{datasetVersionSummaries?.map((dataset, index) => {
114-
const previousVersion =
115-
index < datasetVersionSummaries.length - 1
116-
? datasetVersionSummaries[index + 1]
117-
: null
118-
119-
const isPreviousVersionDeaccessioned =
120-
previousVersion &&
121-
typeof previousVersion.summary === 'object' &&
122-
previousVersion.summary !== null &&
123-
'deaccessioned' in previousVersion.summary
114+
const findLastNonDeaccessionedPreviousVersion = () => {
115+
for (let i = index + 1; i < datasetVersionSummaries.length; i++) {
116+
const version = datasetVersionSummaries[i]
117+
if (!isVersionDeaccessioned(version)) {
118+
return version
119+
}
120+
}
121+
return null
122+
}
124123

124+
const previousVersion = findLastNonDeaccessionedPreviousVersion()
125125
const isCurrentVersion = dataset.versionNumber === currentVersionNumber
126-
127-
const isCurrentVersionDeaccessioned =
128-
typeof dataset.summary === 'object' &&
129-
dataset.summary !== null &&
130-
'deaccessioned' in dataset.summary
126+
const isCurrentVersionDeaccessioned = isVersionDeaccessioned(dataset)
131127

132128
const isLinkable =
133129
(dataset.versionNumber !== DatasetVersionState.DRAFT &&
134130
!isCurrentVersionDeaccessioned) ||
135131
((dataset.versionNumber === DatasetVersionState.DRAFT ||
136132
isCurrentVersionDeaccessioned) &&
137133
canUpdateDataset)
138-
139-
const showViewDetails =
140-
previousVersion &&
141-
typeof dataset.summary !== 'string' &&
142-
!isCurrentVersionDeaccessioned &&
143-
!isPreviousVersionDeaccessioned
134+
const showViewDetails = !isCurrentVersionDeaccessioned && previousVersion
144135

145136
return (
146137
<tr key={dataset.id}>
@@ -172,7 +163,10 @@ export function DatasetVersions({
172163
</td>
173164
<td>
174165
<p style={{ display: 'flex', flexWrap: 'wrap', margin: 0, textAlign: 'left' }}>
175-
<SummaryDescription summary={dataset.summary} />
166+
<SummaryDescription
167+
summary={dataset.summary}
168+
versionNumber={dataset.versionNumber}
169+
/>
176170
{showViewDetails && (
177171
<DatasetViewDetailButton
178172
datasetRepository={datasetRepository}
@@ -244,20 +238,30 @@ export const DatasetVersionsLoadingSkeleton = () => {
244238
}
245239

246240
export const SummaryDescription = ({
247-
summary
241+
summary,
242+
versionNumber
248243
}: {
249244
summary?: DatasetVersionSummary | DatasetVersionSummaryStringValues
245+
versionNumber?: string
250246
}) => {
251-
const summaryText: Record<string, string> = useDatasetVersionSummaryDescription(summary)
247+
const { t } = useTranslation('dataset')
248+
const summaryText: Record<string, string> = useDatasetVersionSummaryDescription(
249+
summary,
250+
versionNumber
251+
)
252252

253253
return (
254254
<>
255255
{Object.entries(summaryText).map(([key, value]) =>
256256
typeof summary === 'string' ? (
257257
<span key={key}>{value}</span>
258+
) : key === t('versions.deaccessionedReason') ? (
259+
<span key={key}>
260+
{key}: {value}
261+
</span>
258262
) : (
259263
<span key={key}>
260-
<strong>{key}</strong>: {key == 'Files' ? <strong>{value}</strong> : value};&nbsp;
264+
<strong>{key}</strong>: {key === 'Files' ? <strong>{value}</strong> : value};&nbsp;
261265
</span>
262266
)
263267
)}

src/sections/dataset/dataset-versions/DatasetViewDetailButton.tsx

Lines changed: 11 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -26,6 +26,17 @@ export function DatasetViewDetailButton({
2626
newVersion: newVersionNumber
2727
})
2828

29+
if (!differences) {
30+
return (
31+
<span>
32+
{t('datasetVersionSummary.noVersionDifferences', {
33+
oldVersion: oldVersionNumber,
34+
newVersion: newVersionNumber
35+
})}
36+
</span>
37+
)
38+
}
39+
2940
return (
3041
<>
3142
<Button variant="link" onClick={() => setShowModal(true)} style={{ padding: 0 }}>

src/sections/dataset/dataset-versions/useDatasetVersionSummaryDescription.tsx

Lines changed: 8 additions & 5 deletions
Original file line numberDiff line numberDiff line change
@@ -6,24 +6,27 @@ import {
66
SummaryUpdates,
77
Deaccessioned
88
} from '@/dataset/domain/models/DatasetVersionSummaryInfo'
9+
import { DatasetVersionState } from '@/dataset/domain/models/Dataset'
910

1011
export const useDatasetVersionSummaryDescription = (
11-
summary?: DatasetVersionSummary | DatasetVersionSummaryStringValues
12+
summary?: DatasetVersionSummary | DatasetVersionSummaryStringValues,
13+
versionState?: string
1214
): Record<string, string> => {
1315
const { t } = useTranslation('dataset')
1416

1517
if (!summary) return {}
1618

1719
if (typeof summary === 'string') {
18-
const stringSummaryMap: Record<DatasetVersionSummaryStringValues, string> = {
20+
const stringSummaryMap: Record<string, string> = {
1921
[DatasetVersionSummaryStringValues.firstPublished]: t('datasetVersionSummary.firstPublished'),
2022
[DatasetVersionSummaryStringValues.firstDraft]: t('datasetVersionSummary.firstDraft'),
2123
[DatasetVersionSummaryStringValues.versionDeaccessioned]: t(
2224
'datasetVersionSummary.versionDeaccessioned'
2325
),
24-
[DatasetVersionSummaryStringValues.previousVersionDeaccessioned]: t(
25-
'datasetVersionSummary.previousVersionDeaccessioned'
26-
)
26+
[DatasetVersionSummaryStringValues.previousVersionDeaccessioned]:
27+
versionState === DatasetVersionState.DRAFT
28+
? t('datasetVersionSummary.thisIsADraftVersion')
29+
: t('datasetVersionSummary.previousVersionDeaccessioned')
2730
}
2831
return { [summary]: stringSummaryMap[summary] }
2932
}

src/sections/dataset/dataset-versions/view-difference/DatasetVersionsDifferenceTable.tsx

Lines changed: 15 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -12,6 +12,7 @@ export const DatasetVersionsDifferenceTable = ({
1212
differences
1313
}: datasetVersionsDifferenceTableProps) => {
1414
const { t } = useTranslation('dataset')
15+
const { t: tFile } = useTranslation('file')
1516
const {
1617
oldVersion,
1718
newVersion,
@@ -129,14 +130,26 @@ export const DatasetVersionsDifferenceTable = ({
129130
<td>
130131
{file.changed.map((change) => (
131132
<div key={change.fieldName}>
132-
{change.fieldName}: {change.oldValue || ''}
133+
{change.fieldName === 'isRestricted'
134+
? `${t('versions.access')}: ${
135+
change.oldValue === 'true'
136+
? tFile('fileAccess.restricted.name')
137+
: tFile('fileAccess.public.name')
138+
}`
139+
: `${change.fieldName}: ${change.oldValue || ''}`}
133140
</div>
134141
))}
135142
</td>
136143
<td>
137144
{file.changed.map((change) => (
138145
<div key={change.fieldName}>
139-
{change.fieldName}: {change.newValue || ''}
146+
{change.fieldName === 'isRestricted'
147+
? `${t('versions.access')}: ${
148+
change.newValue === 'true'
149+
? tFile('fileAccess.restricted.name')
150+
: tFile('fileAccess.public.name')
151+
}`
152+
: `${change.fieldName}: ${change.newValue || ''}`}
140153
</div>
141154
))}
142155
</td>

src/sections/dataset/dataset-versions/view-difference/useGetDatasetVersionDiff.ts

Lines changed: 15 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -26,7 +26,7 @@ export const useGetDatasetVersionDiff = ({
2626
oldVersion,
2727
newVersion
2828
}: getDatasetVersionDiffProps): UseGetDatasetVersionDiff => {
29-
const [differences, setDifferences] = useState<DatasetVersionDiff>()
29+
const [differences, setDifferences] = useState<DatasetVersionDiff | undefined>()
3030
const [isLoading, setIsLoading] = useState<boolean>(true)
3131
const [error, setError] = useState<string | null>(null)
3232

@@ -43,7 +43,20 @@ export const useGetDatasetVersionDiff = ({
4343
: newVersion,
4444
true
4545
)
46-
setDifferences(response)
46+
47+
if (response) {
48+
const hasAnyChanges =
49+
response.metadataChanges !== undefined ||
50+
response.filesAdded !== undefined ||
51+
response.filesRemoved !== undefined ||
52+
response.fileChanges !== undefined ||
53+
response.filesReplaced !== undefined ||
54+
response.termsOfAccess !== undefined
55+
56+
setDifferences(hasAnyChanges ? response : undefined)
57+
} else {
58+
setDifferences(undefined)
59+
}
4760
setError(null)
4861
} catch (err) {
4962
const errorMessage =

0 commit comments

Comments
 (0)