Skip to content

Commit dd6738a

Browse files
committed
Merge branch 'develop' into TemplateUI
2 parents 683b0ab + 833dedd commit dd6738a

20 files changed

Lines changed: 400 additions & 111 deletions

.github/workflows/generate-war.yml

Lines changed: 14 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -1,3 +1,4 @@
1+
# .github/workflows/generate-war.yml
12
name: generate-war
23

34
on:
@@ -11,6 +12,7 @@ on:
1112
- beta
1213
- qa
1314
- demo
15+
- production
1416
basepath:
1517
description: 'Server base path (without slashes) for serving the application (e.g., modern). If left blank, it will try to deploy to the root base path.'
1618
type: string
@@ -77,6 +79,17 @@ jobs:
7779
OIDC_STORAGE_KEY_PREFIX: ${{ secrets.DEMO_OIDC_STORAGE_KEY_PREFIX }}
7880
run: node ./scripts/write-runtime-config.mjs
7981

82+
- name: Override runtime config.js for PRODUCTION
83+
if: ${{ github.event.inputs.environment == 'production' }}
84+
env:
85+
DATAVERSE_BACKEND_URL: ${{ secrets.PROD_DATAVERSE_BACKEND_URL }}
86+
OIDC_CLIENT_ID: ${{ secrets.PROD_OIDC_CLIENT_ID }}
87+
OIDC_AUTHORIZATION_ENDPOINT: ${{ secrets.PROD_OIDC_AUTHORIZATION_ENDPOINT }}
88+
OIDC_TOKEN_ENDPOINT: ${{ secrets.PROD_OIDC_TOKEN_ENDPOINT }}
89+
OIDC_LOGOUT_ENDPOINT: ${{ secrets.PROD_OIDC_LOGOUT_ENDPOINT }}
90+
OIDC_STORAGE_KEY_PREFIX: ${{ secrets.PROD_OIDC_STORAGE_KEY_PREFIX }}
91+
run: node ./scripts/write-runtime-config.mjs
92+
8093
- uses: actions/upload-artifact@v4
8194
with:
8295
name: built-site
@@ -92,7 +105,7 @@ jobs:
92105

93106
- uses: actions/setup-java@v3
94107
with:
95-
distribution: 'zulu'
108+
distribution: zulu
96109
java-version: '11'
97110

98111
- uses: actions/download-artifact@v4

CHANGELOG.md

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

1919
---
2020

21+
## [v0.3.1] -- 2026-04-30
22+
23+
- Added pagination to the Versions tabs on Dataset and File pages so version summaries are loaded and displayed one page at a time.
24+
25+
---
26+
2127
## [v0.3.0] -- 2026-04-24
2228

2329
### Added

dev-env/docker-compose-dev.yml

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -155,7 +155,7 @@ services:
155155
dev_solr_initializer:
156156
condition: service_completed_successfully
157157
restart: on-failure
158-
expose:
158+
ports:
159159
- '8983:8983'
160160
networks:
161161
- dataverse

package-lock.json

Lines changed: 2 additions & 2 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
@@ -4,7 +4,7 @@
44
"node": ">=22 <23"
55
},
66
"name": "dataverse-frontend",
7-
"version": "0.3.0",
7+
"version": "0.3.1",
88
"type": "module",
99
"private": true,
1010
"workspaces": {

public/config.js

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -7,7 +7,7 @@ window.__APP_CONFIG__ = {
77
backendUrl: 'http://localhost:8000',
88
// Optional banner shown at the top of the app when set. Basic HTML markup is supported.
99
bannerMessage:
10-
"You are using the new Dataverse <strong>Modern version</strong>. This is an early release and some features from the original site are not yet available. Please see the <a href='https://dataverse.harvard.edu/spa/featured-item/harvard/1'>Project Roadmap</a> for details.",
10+
"You are using the new Dataverse <strong>Modern version</strong>. This is an early release and some features from the original site are not yet available. Please see the <a href='https://dataverse.harvard.edu/modern/featured-item/harvard/1'>Project Roadmap</a> for details.",
1111
// OIDC provider settings
1212
oidc: {
1313
clientId: 'test',
Lines changed: 11 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -1,7 +1,17 @@
11
import { PaginationInfo } from '../../../shared/pagination/domain/models/PaginationInfo'
22

33
export class DatasetVersionPaginationInfo extends PaginationInfo<DatasetVersionPaginationInfo> {
4-
constructor(page = 1, pageSize = 10, totalItems = 0, itemName = 'Version') {
4+
constructor(
5+
page = 1,
6+
pageSize = 10,
7+
totalItems = 0,
8+
itemName = 'Version',
9+
private readonly offsetOverride?: number
10+
) {
511
super(page, pageSize, totalItems, itemName)
612
}
13+
14+
get offset(): number {
15+
return this.offsetOverride ?? super.offset
16+
}
717
}

src/sections/dataset/Dataset.tsx

Lines changed: 1 addition & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -172,9 +172,8 @@ export function Dataset({
172172
datasetId={dataset.persistentId}
173173
currentVersionNumber={currentVersionNumber}
174174
canUpdateDataset={canUpdateDataset}
175-
isInView={activeTab === 'versions'}
175+
isInView
176176
key={dataset.internalVersionNumber}
177-
isCurrentVersionDeaccessioned={isCurrentVersionDeaccessioned}
178177
/>
179178
</div>
180179
</Tabs.Tab>

src/sections/dataset/dataset-versions/DatasetVersions.module.scss

Lines changed: 7 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -34,6 +34,13 @@
3434
}
3535
}
3636

37+
.dataset-versions-table-loading {
38+
tbody {
39+
opacity: 0.55;
40+
transition: opacity 120ms ease-in-out;
41+
}
42+
}
43+
3744
.visually-hidden {
3845
position: absolute;
3946
clip: rect(1px, 1px, 1px, 1px);

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

Lines changed: 47 additions & 14 deletions
Original file line numberDiff line numberDiff line change
@@ -16,14 +16,15 @@ import { useDatasetVersionSummaryDescription } from './useDatasetVersionSummaryD
1616
import { DatasetViewDetailButton } from './DatasetViewDetailButton'
1717
import { DatasetVersionState } from '@/dataset/domain/models/Dataset'
1818
import styles from './DatasetVersions.module.scss'
19+
import { DatasetVersionPaginationInfo } from '@/dataset/domain/models/DatasetVersionPaginationInfo'
20+
import { PaginationControls } from '@/sections/shared/pagination/PaginationControls'
1921

2022
interface DatasetVersionsProps {
2123
datasetRepository: DatasetRepository
2224
datasetId: string
2325
currentVersionNumber: string
2426
canUpdateDataset: boolean
2527
isInView: boolean
26-
isCurrentVersionDeaccessioned?: boolean
2728
}
2829

2930
const isVersionDeaccessioned = (version: DatasetVersionSummaryInfo) =>
@@ -36,11 +37,13 @@ export function DatasetVersions({
3637
datasetId,
3738
currentVersionNumber,
3839
canUpdateDataset,
39-
isInView,
40-
isCurrentVersionDeaccessioned
40+
isInView
4141
}: DatasetVersionsProps) {
4242
const { t } = useTranslation('dataset')
4343
const [selectedVersions, setSelectedVersions] = useState<DatasetVersionSummaryInfo[]>([])
44+
const [paginationInfo, setPaginationInfo] = useState<DatasetVersionPaginationInfo>(
45+
new DatasetVersionPaginationInfo()
46+
)
4447
const {
4548
datasetVersionSummaries,
4649
error,
@@ -49,7 +52,7 @@ export function DatasetVersions({
4952
} = useGetDatasetVersionsSummaries({
5053
datasetRepository,
5154
persistentId: datasetId,
52-
autoFetch: isCurrentVersionDeaccessioned ? true : false
55+
autoFetch: false
5356
})
5457

5558
const handleCheckboxChange = (datasetSummary: DatasetVersionSummaryInfo) => {
@@ -64,25 +67,46 @@ export function DatasetVersions({
6467
})
6568
}
6669

70+
const visibleDatasetVersionSummaries = datasetVersionSummaries?.slice(0, paginationInfo.pageSize)
6771
const selectableVersions =
68-
datasetVersionSummaries &&
69-
datasetVersionSummaries.filter((version) => !isVersionDeaccessioned(version))
72+
visibleDatasetVersionSummaries &&
73+
visibleDatasetVersionSummaries.filter((version) => !isVersionDeaccessioned(version))
7074
const isCheckBoxValid = (selectableVersions?.length ?? 0) > 2
7175

7276
useEffect(() => {
73-
if (isInView && !datasetVersionSummaries) {
74-
void fetchSummaries()
77+
if (isInView) {
78+
const paginationInfoToDisplay = new DatasetVersionPaginationInfo(
79+
paginationInfo.page,
80+
paginationInfo.pageSize
81+
)
82+
const paginationInfoToFetch = new DatasetVersionPaginationInfo(
83+
paginationInfo.page,
84+
paginationInfo.pageSize + 1,
85+
0,
86+
'Version',
87+
paginationInfoToDisplay.offset
88+
)
89+
90+
void fetchSummaries(paginationInfoToFetch).then((totalCount) => {
91+
if (typeof totalCount === 'number') {
92+
setPaginationInfo((currentPaginationInfo) => currentPaginationInfo.withTotal(totalCount))
93+
}
94+
})
7595
}
76-
}, [isInView, fetchSummaries, datasetVersionSummaries])
96+
}, [isInView, fetchSummaries, paginationInfo.page, paginationInfo.pageSize])
7797

78-
if (isLoadingDatasetVersionSummaries || !datasetVersionSummaries) {
79-
return <DatasetVersionsLoadingSkeleton />
80-
}
98+
useEffect(() => {
99+
setSelectedVersions([])
100+
}, [paginationInfo.page, paginationInfo.pageSize])
81101

82102
if (error) {
83103
return <Alert variant="danger">Error loading dataset versions</Alert>
84104
}
85105

106+
if (!datasetVersionSummaries) {
107+
return <DatasetVersionsLoadingSkeleton />
108+
}
109+
86110
return (
87111
<>
88112
{selectedVersions.length === 2 && (
@@ -93,7 +117,12 @@ export function DatasetVersions({
93117
/>
94118
)}
95119

96-
<div className={styles['dataset-versions-table']} data-testid="dataset-versions-table">
120+
<div
121+
className={`${styles['dataset-versions-table']} ${
122+
isLoadingDatasetVersionSummaries ? styles['dataset-versions-table-loading'] : ''
123+
}`}
124+
data-testid="dataset-versions-table"
125+
aria-busy={isLoadingDatasetVersionSummaries}>
97126
<Table>
98127
<thead>
99128
<tr>
@@ -110,7 +139,7 @@ export function DatasetVersions({
110139
</tr>
111140
</thead>
112141
<tbody>
113-
{datasetVersionSummaries?.map((dataset, index) => {
142+
{visibleDatasetVersionSummaries?.map((dataset, index) => {
114143
const findLastNonDeaccessionedPreviousVersion = () => {
115144
for (let i = index + 1; i < datasetVersionSummaries.length; i++) {
116145
const version = datasetVersionSummaries[i]
@@ -186,6 +215,10 @@ export function DatasetVersions({
186215
</tbody>
187216
</Table>
188217
</div>
218+
<PaginationControls
219+
initialPaginationInfo={paginationInfo}
220+
onPaginationInfoChange={setPaginationInfo}
221+
/>
189222
</>
190223
)
191224
}

0 commit comments

Comments
 (0)