-
Notifications
You must be signed in to change notification settings - Fork 10
Expand file tree
/
Copy pathdatasetPreviewsTransformers.ts
More file actions
90 lines (87 loc) · 3.86 KB
/
datasetPreviewsTransformers.ts
File metadata and controls
90 lines (87 loc) · 3.86 KB
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
import { AxiosResponse } from 'axios'
import { DatasetPreview } from '../../../domain/models/DatasetPreview'
import { DatasetVersionState } from '../../../domain/models/Dataset'
import { DatasetPreviewSubset } from '../../../domain/models/DatasetPreviewSubset'
import { DatasetPreviewPayload } from './DatasetPreviewPayload'
import { PublicationStatus } from '../../../../core/domain/models/PublicationStatus'
import { CollectionItemType } from '../../../../collections/domain/models/CollectionItemType'
import { MyDataDatasetPreviewPayload } from './MyDataDatasetPreviewPayload'
export const transformDatasetPreviewsResponseToDatasetPreviewSubset = (
response: AxiosResponse
): DatasetPreviewSubset => {
const responseDataPayload = response.data.data
const datasetPreviewsPayload = responseDataPayload.items
const datasetPreviews: DatasetPreview[] = []
datasetPreviewsPayload.forEach(function (datasetPreviewPayload: DatasetPreviewPayload) {
datasetPreviews.push(transformDatasetPreviewPayloadToDatasetPreview(datasetPreviewPayload))
})
return {
datasetPreviews: datasetPreviews,
totalDatasetCount: responseDataPayload.total_count
}
}
export const transformDatasetPreviewPayloadToDatasetPreview = (
datasetPreviewPayload: DatasetPreviewPayload
): DatasetPreview => {
const publicationStatuses: PublicationStatus[] = []
datasetPreviewPayload.publicationStatuses.forEach((element) => {
publicationStatuses.push(element as unknown as PublicationStatus)
})
return {
type: CollectionItemType.DATASET,
persistentId: datasetPreviewPayload.global_id,
title: datasetPreviewPayload.name,
versionId: datasetPreviewPayload.versionId,
versionInfo: {
majorNumber: datasetPreviewPayload.majorVersion,
minorNumber: datasetPreviewPayload.minorVersion,
state: datasetPreviewPayload.versionState as DatasetVersionState,
createTime: new Date(datasetPreviewPayload.createdAt),
lastUpdateTime: datasetPreviewPayload.updatedAt,
...(datasetPreviewPayload.published_at && {
releaseTime: new Date(datasetPreviewPayload.published_at)
})
},
citation: datasetPreviewPayload.citationHtml,
description: datasetPreviewPayload.description,
publicationStatuses: publicationStatuses,
parentCollectionAlias: datasetPreviewPayload.identifier_of_dataverse,
parentCollectionName: datasetPreviewPayload.name_of_dataverse,
...(datasetPreviewPayload.image_url && {
imageUrl: datasetPreviewPayload.image_url
})
}
}
export const transformMyDataDatasetPreviewPayloadToDatasetPreview = (
datasetPreviewPayload: MyDataDatasetPreviewPayload
): DatasetPreview => {
const publicationStatuses: PublicationStatus[] = []
datasetPreviewPayload.publicationStatuses.forEach((element) => {
publicationStatuses.push(element as unknown as PublicationStatus)
})
return {
type: CollectionItemType.DATASET,
persistentId: datasetPreviewPayload.global_id,
title: datasetPreviewPayload.name,
versionId: datasetPreviewPayload.versionId,
versionInfo: {
majorNumber: datasetPreviewPayload.majorVersion,
minorNumber: datasetPreviewPayload.minorVersion,
state: datasetPreviewPayload.versionState as DatasetVersionState,
createTime: new Date(datasetPreviewPayload.createdAt),
lastUpdateTime: datasetPreviewPayload.updatedAt,
...(datasetPreviewPayload.published_at && {
releaseTime: new Date(datasetPreviewPayload.published_at)
})
},
citation: datasetPreviewPayload.citationHtml,
description: datasetPreviewPayload.description,
publicationStatuses: publicationStatuses,
parentCollectionAlias: datasetPreviewPayload.identifier_of_dataverse,
parentCollectionName: datasetPreviewPayload.name_of_dataverse,
...(datasetPreviewPayload.image_url && {
imageUrl: datasetPreviewPayload.image_url
}),
userRoles: datasetPreviewPayload.user_roles
}
}