Skip to content

Commit 285b84a

Browse files
authored
Merge pull request #785 from IQSS/772-file-edit-tags-populated-the-categories-dropdown-with-results-from-api
File Edit Tags: populate the categories dropdown with results
2 parents 6d08b5e + 66bba01 commit 285b84a

48 files changed

Lines changed: 849 additions & 60 deletions

File tree

Some content is hidden

Large Commits have some content hidden by default. Use the searchbox below for content that may be hidden.

package-lock.json

Lines changed: 4 additions & 4 deletions
Some generated files are not rendered by default. Learn more about customizing how changed files appear on GitHub.

package.json

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -17,7 +17,7 @@
1717
"@dnd-kit/sortable": "8.0.0",
1818
"@dnd-kit/utilities": "3.2.2",
1919
"@faker-js/faker": "7.6.0",
20-
"@iqss/dataverse-client-javascript": "2.0.0-alpha.53",
20+
"@iqss/dataverse-client-javascript": "v2.0.0-pr344.5fd4982",
2121
"@iqss/dataverse-design-system": "*",
2222
"@istanbuljs/nyc-config-typescript": "1.0.2",
2323
"@tanstack/react-table": "8.9.2",

public/locales/en/file.json

Lines changed: 2 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -137,5 +137,6 @@
137137
"defaultFileUnrestrictError": "Something went wrong unrestricting the file. Try again later.",
138138
"requestAccessTooltipText": "If checked, users can request access to the restricted files in this dataset.",
139139
"termsOfAccessTooltipTex": "information on how and if users can access restricted files in this dataset."
140-
}
140+
},
141+
"getCategoriesError": "Something went wrong fetching available categories. Try again later."
141142
}

src/dataset/domain/repositories/DatasetRepository.ts

Lines changed: 1 addition & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -47,4 +47,5 @@ export interface DatasetRepository {
4747
includeMDC?: boolean
4848
) => Promise<DatasetDownloadCount>
4949
deleteDatasetDraft: (datasetId: string | number) => Promise<void>
50+
getAvailableCategories: (datasetId: string | number) => Promise<string[]>
5051
}
Lines changed: 8 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,8 @@
1+
import { DatasetRepository } from '../repositories/DatasetRepository'
2+
3+
export async function getAvailableCategories(
4+
datasetRepository: DatasetRepository,
5+
datasetId: string | number
6+
): Promise<string[]> {
7+
return datasetRepository.getAvailableCategories(datasetId)
8+
}

src/dataset/infrastructure/repositories/DatasetJSDataverseRepository.ts

Lines changed: 7 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -31,7 +31,8 @@ import {
3131
DatasetDeaccessionDTO,
3232
getDatasetVersionsSummaries,
3333
getDatasetDownloadCount,
34-
deleteDatasetDraft
34+
deleteDatasetDraft,
35+
getDatasetAvailableCategories
3536
} from '@iqss/dataverse-client-javascript'
3637
import { JSDatasetMapper } from '../mappers/JSDatasetMapper'
3738
import { DatasetPaginationInfo } from '../../domain/models/DatasetPaginationInfo'
@@ -375,6 +376,11 @@ export class DatasetJSDataverseRepository implements DatasetRepository {
375376
throw error
376377
})
377378
}
379+
380+
getAvailableCategories(datasetId: string | number): Promise<string[]> {
381+
return getDatasetAvailableCategories.execute(datasetId)
382+
}
383+
378384
/*
379385
TODO: This is a temporary solution as this use case doesn't exist in js-dataverse yet and the API should also return the file store type rather than name only.
380386
After https://github.com/IQSS/dataverse/issues/11695 is implemented, create a js-dataverse use case.

src/sections/dataset/Dataset.tsx

Lines changed: 2 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -181,12 +181,14 @@ export function Dataset({
181181
datasetVersion={dataset.version}
182182
canUpdateDataset={canUpdateDataset}
183183
key={dataset.version.publishingStatus}
184+
datasetRepository={datasetRepository}
184185
/>
185186
) : (
186187
<DatasetFiles
187188
filesRepository={fileRepository}
188189
datasetPersistentId={dataset.persistentId}
189190
datasetVersion={dataset.version}
191+
datasetRepository={datasetRepository}
190192
/>
191193
)}
192194
</div>

src/sections/dataset/dataset-files/DatasetFiles.tsx

Lines changed: 5 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -7,17 +7,20 @@ import { useFiles } from './useFiles'
77
import { PaginationControls } from '../../shared/pagination/PaginationControls'
88
import { DatasetVersion } from '../../../dataset/domain/models/Dataset'
99
import { FilePaginationInfo } from '../../../files/domain/models/FilePaginationInfo'
10+
import { DatasetRepository } from '@/dataset/domain/repositories/DatasetRepository'
1011

1112
interface DatasetFilesProps {
1213
filesRepository: FileRepository
1314
datasetPersistentId: string
1415
datasetVersion: DatasetVersion
16+
datasetRepository: DatasetRepository
1517
}
1618

1719
export function DatasetFiles({
1820
filesRepository,
1921
datasetPersistentId,
20-
datasetVersion
22+
datasetVersion,
23+
datasetRepository
2124
}: DatasetFilesProps) {
2225
const [paginationInfo, setPaginationInfo] = useState<FilePaginationInfo>(new FilePaginationInfo())
2326
const [criteria, setCriteria] = useState<FileCriteria>(new FileCriteria())
@@ -44,6 +47,7 @@ export function DatasetFiles({
4447
paginationInfo={paginationInfo}
4548
filesTotalDownloadSize={filesTotalDownloadSize}
4649
criteria={criteria}
50+
datasetRepository={datasetRepository}
4751
/>
4852
<PaginationControls
4953
initialPaginationInfo={paginationInfo}

src/sections/dataset/dataset-files/DatasetFilesScrollable.tsx

Lines changed: 5 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -14,11 +14,13 @@ import { FilesTableScrollable } from './files-table/FilesTableScrollable'
1414
import { FileCriteriaForm } from './file-criteria-form/FileCriteriaForm'
1515
import { FilesContext } from '@/sections/file/FilesContext'
1616
import styles from './DatasetFilesScrollable.module.scss'
17+
import { DatasetRepository } from '@/dataset/domain/repositories/DatasetRepository'
1718

1819
interface DatasetFilesScrollableProps {
1920
filesRepository: FileRepository
2021
datasetPersistentId: string
2122
datasetVersion: DatasetVersion
23+
datasetRepository: DatasetRepository
2224
canUpdateDataset?: boolean
2325
}
2426

@@ -28,7 +30,8 @@ export function DatasetFilesScrollable({
2830
filesRepository,
2931
datasetPersistentId,
3032
datasetVersion,
31-
canUpdateDataset
33+
canUpdateDataset,
34+
datasetRepository
3235
}: DatasetFilesScrollableProps) {
3336
const scrollableContainerRef = useRef<HTMLDivElement | null>(null)
3437
const criteriaContainerRef = useRef<HTMLDivElement | null>(null)
@@ -184,6 +187,7 @@ export function DatasetFilesScrollable({
184187
isEmptyFiles={isEmptyFiles}
185188
accumulatedCount={accumulatedCount}
186189
fileRepository={filesRepository}
190+
datasetRepository={datasetRepository}
187191
/>
188192
</FilesContext.Provider>
189193
</div>

src/sections/dataset/dataset-files/files-table/FilesTable.tsx

Lines changed: 6 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -11,6 +11,7 @@ import { FileSelection } from './row-selection/useFileSelection'
1111
import { FileCriteria } from '../../../../files/domain/models/FileCriteria'
1212
import { FilePaginationInfo } from '../../../../files/domain/models/FilePaginationInfo'
1313
import { FileRepository } from '@/files/domain/repositories/FileRepository'
14+
import { DatasetRepository } from '@/dataset/domain/repositories/DatasetRepository'
1415

1516
interface FilesTableProps {
1617
files: FilePreview[]
@@ -19,6 +20,7 @@ interface FilesTableProps {
1920
paginationInfo: FilePaginationInfo
2021
filesTotalDownloadSize: number
2122
criteria: FileCriteria
23+
datasetRepository: DatasetRepository
2224
}
2325

2426
export function FilesTable({
@@ -27,12 +29,14 @@ export function FilesTable({
2729
paginationInfo,
2830
filesTotalDownloadSize,
2931
fileRepository,
30-
criteria
32+
criteria,
33+
datasetRepository
3134
}: FilesTableProps) {
3235
const { table, fileSelection, selectAllFiles, clearFileSelection } = useFilesTable(
3336
files,
3437
paginationInfo,
35-
fileRepository
38+
fileRepository,
39+
datasetRepository
3640
)
3741

3842
const [visitedPagination, setVisitedPagination] = useState<FilePaginationInfo>(paginationInfo)

0 commit comments

Comments
 (0)