@@ -23,9 +23,14 @@ import { Release } from "../release.model";
2323import { AppState } from "../../../_ngrx/app.state" ;
2424import { ModalClosedAction } from "../../../modal/_ngrx/modal-closed.action" ;
2525import { 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" ;
2831import { 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" ;
2934import { ReleaseDatasetView } from "../release-dataset-view.model" ;
3035import { ReleaseFilesModalState } from "./release-files-modal.state" ;
3136import { 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 }
0 commit comments