@@ -18,12 +18,16 @@ import { ReleaseOrganView } from "../releases/release-organ-view.model";
1818import { ReleaseDatasetView } from "../releases/release-dataset-view.model" ;
1919import { ReleaseFileView } from "../releases/release-file-view.model" ;
2020import { ReleaseFileType } from "../releases/release-file-type.model" ;
21+ import { ReleaseVisualizationView } from "../releases/release-visualization-view.model" ;
2122
2223@Injectable ( )
2324export class ReleaseService {
2425
2526 // Locals
26- private descriptionByFileType = new Map < string , string > ( [
27+ private PORTAL_DESCRIPTIONS = new Map < string , string > ( [
28+ [ "SCP" , "Single Cell Portal" ]
29+ ] ) ;
30+ private RELEASE_FILE_DESCRIPTIONS = new Map < string , string > ( [
2731 [ `${ ReleaseFileType . ANNOTATED_CLUSTERS } h5ad` , "Cumulus output expression matrix; contains clustering information, cell annotations, and log-transformed gene expression (Pegasus, Scanpy, and Seurat compatible)." ] ,
2832 [ `${ ReleaseFileType . ANNOTATED_CLUSTERS } loom` , "Cumulus output expression matrix; contains clustering information, cell annotations, and log-transformed gene expression (Pegasus, Scanpy, and Seurat compatible)." ] ,
2933 [ `${ ReleaseFileType . DIFFERENTIAL_EXPRESSION } xlsx` , "Cumulus output file containing differential expression with correction." ] ,
@@ -89,11 +93,14 @@ export class ReleaseService {
8993 // Create view model of release files
9094 const files = this . createReleaseFileViews ( releaseDataset ) ;
9195
96+ // Create view model of release visualizations
97+ const visualizations = this . createReleaseVisualizationViews ( releaseDataset ) ;
98+
9299 const datasetView = Object . assign ( {
93100 entryId,
94101 projectShortname,
95102 } , releaseDataset , {
96- files
103+ files, visualizations
97104 } ) ;
98105
99106 return datasetView as ReleaseDatasetView ;
@@ -121,7 +128,7 @@ export class ReleaseService {
121128
122129 const type = releaseFile . type ;
123130 const extension = releaseFile . extension ;
124- const description = this . descriptionByFileType . get ( `${ type } ${ extension } ` ) ;
131+ const description = this . RELEASE_FILE_DESCRIPTIONS . get ( `${ type } ${ extension } ` ) ;
125132 accum . push ( Object . assign ( { } , releaseFile , {
126133 description
127134 } ) ) ;
@@ -131,6 +138,24 @@ export class ReleaseService {
131138
132139 }
133140
141+ /**
142+ * Create view models for each release visualization in the specified dataset.
143+ *
144+ * @param {ReleaseDataset } releaseDataset
145+ * @returns {ReleaseVisualizationView[] }
146+ */
147+ private createReleaseVisualizationViews ( releaseDataset : ReleaseDataset ) : ReleaseVisualizationView [ ] {
148+
149+ return releaseDataset . visualizations . reduce ( ( accum , releaseVisualization ) => {
150+
151+ const title = releaseVisualization . title ;
152+ const description = this . PORTAL_DESCRIPTIONS . get ( title ) ;
153+ accum . push ( Object . assign ( { } , releaseVisualization , { description} ) ) ;
154+
155+ return accum ;
156+ } , [ ] ) ;
157+ }
158+
134159 /**
135160 * Sort datasets alphabetically by project title.
136161 */
0 commit comments