Skip to content

Commit 484df84

Browse files
Fixed additional datasets messaging on release modal. Resolves #1101. (#1102)
1 parent 5c4c40f commit 484df84

File tree

5 files changed

+60
-9
lines changed

5 files changed

+60
-9
lines changed

spa/src/app/files/releases/release-files-modal/release-files-modal.component.html

Lines changed: 4 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -4,15 +4,16 @@
44
<ng-container title *ngIf="state.loaded">{{state.releaseDataset.datasetId}} Release Files</ng-container>
55
<ng-container subtitle *ngIf="state.loaded">{{state.releaseDataset.projectShortname}}</ng-container>
66
<ng-container content *ngIf="state.loaded">
7-
<h4 class="fontsize-l">
7+
<h4 class="fontsize-l" [ngClass]="{'singleDataset': state.singleDataset}">
88
<span>{{state.releaseDataset.developmentalStage}}, </span>
99
<span>{{state.releaseDataset.organ}}, </span>
1010
<span>{{state.releaseDataset.libraryConstructionApproach}}</span>
1111
</h4>
12-
<warning>
12+
<warning *ngIf="!state.singleDataset">
1313
<warning-content>
1414
<p class="fontsize-xs">This project contains additional organs, developmental stages or technologies. <a
15-
routerLink="/projects/{{state.releaseDataset.entryId}}/releases/2020-mar">View project release
15+
routerLink="/projects/{{state.releaseDataset.entryId}}/releases/2020-mar"
16+
(click)="setReleaseReferrer()">View project release
1617
page</a>.
1718
</p>
1819
</warning-content>

spa/src/app/files/releases/release-files-modal/release-files-modal.component.scss

Lines changed: 4 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -12,6 +12,10 @@ h4 {
1212
margin-bottom: 12px;
1313
}
1414

15+
.singleDataset h4 {
16+
margin-bottom: 24px;
17+
}
18+
1519
/* Subtitle */
1620
h4 span {
1721
text-transform: capitalize;

spa/src/app/files/releases/release-files-modal/release-files-modal.component.ts

Lines changed: 50 additions & 5 deletions
Original file line numberDiff line numberDiff line change
@@ -23,9 +23,14 @@ import { Release } from "../release.model";
2323
import { AppState } from "../../../_ngrx/app.state";
2424
import { ModalClosedAction } from "../../../modal/_ngrx/modal-closed.action";
2525
import { ModalOpenedAction } from "../../../modal/_ngrx/modal-opened.action";
26-
import { selectReleaseByDataset, selectReleaseFilesReferrer } from "../../_ngrx/release/release.selectors";
27-
import { FetchProjectRequestAction } from "../../_ngrx/table/table.actions";
26+
import {
27+
selectReleaseByDataset,
28+
selectReleaseByProjectId,
29+
selectReleaseFilesReferrer
30+
} from "../../_ngrx/release/release.selectors";
2831
import { ClearReleaseFilesReferrerAction } from "../../_ngrx/release/clear-release-files-referrer.action";
32+
import { SetReleaseReferrerAction } from "../../_ngrx/release/set-release-referrer.action";
33+
import { FetchProjectRequestAction } from "../../_ngrx/table/table.actions";
2934
import { ReleaseDatasetView } from "../release-dataset-view.model";
3035
import { ReleaseFilesModalState } from "./release-files-modal.state";
3136
import { ReleaseName } from "../release-name.model";
@@ -98,6 +103,15 @@ export class ReleaseFilesModalComponent implements OnDestroy, OnInit {
98103
});
99104
}
100105

106+
/**
107+
* Update state to indicate that the back button the project detail page should navigate back to the release page,
108+
* and not the project tab.
109+
*/
110+
public setReleaseReferrer() {
111+
112+
this.store.dispatch(new SetReleaseReferrerAction());
113+
}
114+
101115
/**
102116
* Create model of dataset to back modal. The specified release is expected to have a single project containing a
103117
* single dataset; the dataset we want to display.
@@ -122,6 +136,26 @@ export class ReleaseFilesModalComponent implements OnDestroy, OnInit {
122136
return this.releaseService.createReleaseDatasetView(projectId, projectTitle, releaseDataset);
123137
}
124138

139+
/**
140+
* Returns true if there is only a single dataset for the selected project
141+
*
142+
* @param {Release} release
143+
*/
144+
private isOnlyProjectDataset(release: Release): boolean {
145+
146+
const releaseProject = release.projects[0];
147+
if ( !releaseProject ) {
148+
return true; // Error
149+
}
150+
151+
const datasets = releaseProject.datasets || [];
152+
if ( datasets.length === 0 ) {
153+
return true; // Error
154+
}
155+
156+
return datasets.length === 1;
157+
}
158+
125159
/**
126160
* Close the modal on any navigation event.
127161
*/
@@ -161,6 +195,16 @@ export class ReleaseFilesModalComponent implements OnDestroy, OnInit {
161195
// Request project details so we can display the project title
162196
this.store.dispatch(new FetchProjectRequestAction(projectId));
163197

198+
// Grab the selected project in the selected release - this is used to determine if the "other datasets" warning
199+
// is displayed
200+
const releaseByProjectId$ = this.store.pipe(
201+
select(selectReleaseByProjectId, {
202+
name: ReleaseName.RELEASE_2020_MAR,
203+
projectId: projectId,
204+
})
205+
);
206+
207+
// Grab the dataset from the store for selected project in the selected release
164208
const dataset$ = this.store.pipe(
165209
select(selectReleaseByDataset, {
166210
name: ReleaseName.RELEASE_2020_MAR,
@@ -174,14 +218,15 @@ export class ReleaseFilesModalComponent implements OnDestroy, OnInit {
174218
select(selectReleaseFilesReferrer)
175219
);
176220

177-
combineLatest(dataset$, releaseFilesReferrer$).pipe(
221+
combineLatest(releaseByProjectId$, dataset$, releaseFilesReferrer$).pipe(
178222
takeUntil(this.ngDestroy$)
179-
).subscribe(([release, releaseFilesReferrer]) => {
223+
).subscribe(([fullRelease, datasetRelease, releaseFilesReferrer]) => {
180224

181225
this.state$.next({
182226
loaded: true,
183227
releaseFilesReferrer,
184-
releaseDataset: this.createReleaseDatasetView(release)
228+
releaseDataset: this.createReleaseDatasetView(datasetRelease),
229+
singleDataset: this.isOnlyProjectDataset(fullRelease)
185230
});
186231
});
187232
}

spa/src/app/files/releases/release-files-modal/release-files-modal.state.ts

Lines changed: 1 addition & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -13,4 +13,5 @@ export interface ReleaseFilesModalState {
1313
loaded: boolean;
1414
releaseFilesReferrer?: boolean;
1515
releaseDataset?: ReleaseDatasetView;
16+
singleDataset?: boolean;
1617
}

spa/src/app/shared/warning/warning.component.scss

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -23,7 +23,7 @@
2323

2424
/* ReleaseFilesModalComponent */
2525
:host-context(release-files-modal) {
26-
margin: 12px 0 24px;
26+
margin: 0 0 24px;
2727
}
2828

2929
/**

0 commit comments

Comments
 (0)