@ministryofjustice/hmpps-digital-prison-reporting-frontend 4.20.1 → 4.21.0
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/dpr/components/_async/async-filters-form/types.d.js +1 -1
- package/dpr/components/_async/async-filters-form/types.d.js.map +1 -1
- package/dpr/components/_async/async-filters-form/types.d.ts +7 -4
- package/dpr/components/_async/async-filters-form/utils.js +1 -1
- package/dpr/components/_async/async-filters-form/utils.js.map +2 -2
- package/dpr/components/_async/async-filters-form/utils.ts +18 -17
- package/dpr/components/_catalogue/catalogue-list/utils.test.ts +1 -1
- package/dpr/components/_charts/chart/Chart.js +2 -0
- package/dpr/components/_charts/chart/Chart.js.map +7 -0
- package/dpr/components/_charts/chart/Chart.ts +89 -0
- package/dpr/components/_charts/chart/ChartColours.js +2 -0
- package/dpr/components/_charts/chart/ChartColours.js.map +7 -0
- package/dpr/components/_charts/chart/ChartColours.ts +36 -0
- package/dpr/components/_charts/chart/ChartTimeseries.js +2 -0
- package/dpr/components/_charts/chart/ChartTimeseries.js.map +7 -0
- package/dpr/components/_charts/chart/ChartTimeseries.ts +95 -0
- package/dpr/components/_charts/chart/bar/BarChart.js +2 -0
- package/dpr/components/_charts/chart/bar/BarChart.js.map +7 -0
- package/dpr/components/_charts/chart/bar/BarChart.ts +204 -0
- package/dpr/components/_charts/chart/bar/clientClass.mjs +0 -58
- package/dpr/components/_charts/chart/bar/types.js +2 -0
- package/dpr/components/_charts/chart/bar/types.js.map +7 -0
- package/dpr/components/_charts/chart/bar/types.ts +6 -0
- package/dpr/components/_charts/chart/bar/validate.js +2 -0
- package/dpr/components/_charts/chart/bar/validate.js.map +7 -0
- package/dpr/components/_charts/chart/bar/validate.ts +59 -0
- package/dpr/components/_charts/chart/bar-timeseries/BarTimeseriesChart.js +2 -0
- package/dpr/components/_charts/chart/bar-timeseries/BarTimeseriesChart.js.map +7 -0
- package/dpr/components/_charts/chart/bar-timeseries/BarTimeseriesChart.ts +57 -0
- package/dpr/components/_charts/chart/bar-timeseries/types.js +2 -0
- package/dpr/components/_charts/chart/bar-timeseries/types.js.map +7 -0
- package/dpr/components/_charts/chart/bar-timeseries/types.ts +5 -0
- package/dpr/components/_charts/chart/bar-timeseries/validate.js +2 -0
- package/dpr/components/_charts/chart/bar-timeseries/validate.js.map +7 -0
- package/dpr/components/_charts/chart/bar-timeseries/validate.ts +30 -0
- package/dpr/components/_charts/chart/buckets/Buckets.js +2 -0
- package/dpr/components/_charts/chart/buckets/Buckets.js.map +7 -0
- package/dpr/components/_charts/chart/{Buckets.ts → buckets/Buckets.ts} +18 -14
- package/dpr/components/_charts/chart/buckets/types.js +2 -0
- package/dpr/components/_charts/chart/buckets/types.js.map +7 -0
- package/dpr/components/_charts/chart/buckets/types.ts +4 -0
- package/dpr/components/_charts/chart/buckets/validate.js +2 -0
- package/dpr/components/_charts/chart/buckets/validate.js.map +7 -0
- package/dpr/components/_charts/chart/buckets/validate.ts +15 -0
- package/dpr/components/_charts/chart/chart-config.js +2 -0
- package/dpr/components/_charts/chart/chart-config.js.map +7 -0
- package/dpr/components/_charts/chart/chart-config.ts +108 -0
- package/dpr/components/_charts/chart/clientClass.mjs +28 -106
- package/dpr/components/_charts/chart/doughnut/DoughnutChart.js +2 -0
- package/dpr/components/_charts/chart/doughnut/DoughnutChart.js.map +7 -0
- package/dpr/components/_charts/chart/doughnut/DoughnutChart.ts +77 -0
- package/dpr/components/_charts/chart/doughnut/clientClass.mjs +0 -45
- package/dpr/components/_charts/chart/doughnut/types.js +2 -0
- package/dpr/components/_charts/chart/doughnut/types.js.map +7 -0
- package/dpr/components/_charts/chart/doughnut/types.ts +5 -0
- package/dpr/components/_charts/chart/doughnut/validate.js +2 -0
- package/dpr/components/_charts/chart/doughnut/validate.js.map +7 -0
- package/dpr/components/_charts/chart/doughnut/validate.ts +30 -0
- package/dpr/components/_charts/chart/heatmap/HeatmapChart.js +1 -1
- package/dpr/components/_charts/chart/heatmap/HeatmapChart.js.map +3 -3
- package/dpr/components/_charts/chart/heatmap/HeatmapChart.ts +122 -44
- package/dpr/components/_charts/chart/heatmap/clientClass.mjs +7 -89
- package/dpr/components/_charts/chart/heatmap/types.js +1 -1
- package/dpr/components/_charts/chart/heatmap/types.js.map +1 -1
- package/dpr/components/_charts/chart/heatmap/types.ts +5 -0
- package/dpr/components/_charts/chart/heatmap/validate.js +2 -0
- package/dpr/components/_charts/chart/heatmap/validate.js.map +7 -0
- package/dpr/components/_charts/chart/heatmap/validate.ts +25 -0
- package/dpr/components/_charts/chart/line/LineChart.js +2 -0
- package/dpr/components/_charts/chart/line/LineChart.js.map +7 -0
- package/dpr/components/_charts/chart/line/LineChart.ts +89 -0
- package/dpr/components/_charts/chart/line/clientClass.mjs +5 -36
- package/dpr/components/_charts/chart/line/types.js +2 -0
- package/dpr/components/_charts/chart/line/types.js.map +7 -0
- package/dpr/components/_charts/chart/line/types.ts +5 -0
- package/dpr/components/_charts/chart/line/validate.js +2 -0
- package/dpr/components/_charts/chart/line/validate.js.map +7 -0
- package/dpr/components/_charts/chart/line/validate.ts +30 -0
- package/dpr/components/_charts/chart/line-timeseries/LineTimeseriesChart.js +2 -0
- package/dpr/components/_charts/chart/line-timeseries/LineTimeseriesChart.js.map +7 -0
- package/dpr/components/_charts/chart/line-timeseries/LineTimeseriesChart.ts +57 -0
- package/dpr/components/_charts/chart/line-timeseries/types.js +2 -0
- package/dpr/components/_charts/chart/line-timeseries/types.js.map +7 -0
- package/dpr/components/_charts/chart/line-timeseries/types.ts +5 -0
- package/dpr/components/_charts/chart/line-timeseries/validate.js +2 -0
- package/dpr/components/_charts/chart/line-timeseries/validate.js.map +7 -0
- package/dpr/components/_charts/chart/line-timeseries/validate.ts +30 -0
- package/dpr/components/_charts/chart/view.njk +8 -1
- package/dpr/components/_charts/chart-tabs/view.njk +15 -14
- package/dpr/components/_charts/utils.js +1 -1
- package/dpr/components/_charts/utils.js.map +3 -3
- package/dpr/components/_charts/utils.test.ts +9 -3
- package/dpr/components/_charts/utils.ts +59 -193
- package/dpr/components/_dashboards/dashboard-list/types.js +2 -0
- package/dpr/components/_dashboards/dashboard-list/types.js.map +7 -0
- package/dpr/components/_dashboards/dashboard-list/types.ts +4 -0
- package/dpr/components/_dashboards/dashboard-list/validate.js +2 -0
- package/dpr/components/_dashboards/dashboard-list/validate.js.map +7 -0
- package/dpr/components/_dashboards/dashboard-list/validate.ts +28 -0
- package/dpr/components/_dashboards/dashboard-visualisation/Validate.js +2 -0
- package/dpr/components/_dashboards/dashboard-visualisation/Validate.js.map +7 -0
- package/dpr/components/_dashboards/dashboard-visualisation/Validate.ts +71 -0
- package/dpr/components/_dashboards/dashboard-visualisation/types.js +1 -1
- package/dpr/components/_dashboards/dashboard-visualisation/types.js.map +2 -2
- package/dpr/components/_dashboards/dashboard-visualisation/types.ts +32 -2
- package/dpr/components/_dashboards/scorecard/Scorecard.js +1 -1
- package/dpr/components/_dashboards/scorecard/Scorecard.js.map +3 -3
- package/dpr/components/_dashboards/scorecard/Scorecard.ts +82 -213
- package/dpr/components/_dashboards/scorecard/types.js +1 -1
- package/dpr/components/_dashboards/scorecard/types.js.map +1 -1
- package/dpr/components/_dashboards/scorecard/types.ts +11 -1
- package/dpr/components/_dashboards/scorecard/validate.js +2 -0
- package/dpr/components/_dashboards/scorecard/validate.js.map +7 -0
- package/dpr/components/_dashboards/scorecard/validate.ts +36 -0
- package/dpr/components/_dashboards/scorecard-group/ScorecardGroup.js +2 -0
- package/dpr/components/_dashboards/scorecard-group/ScorecardGroup.js.map +7 -0
- package/dpr/components/_dashboards/scorecard-group/ScorecardGroup.ts +228 -0
- package/dpr/components/_dashboards/scorecard-group/types.js +2 -0
- package/dpr/components/_dashboards/scorecard-group/types.js.map +7 -0
- package/dpr/components/_dashboards/scorecard-group/types.ts +5 -0
- package/dpr/components/_dashboards/scorecard-group/validate.js +2 -0
- package/dpr/components/_dashboards/scorecard-group/validate.js.map +7 -0
- package/dpr/components/_dashboards/scorecard-group/validate.ts +37 -0
- package/dpr/components/_filters/filter-input/types.d.js.map +1 -1
- package/dpr/components/_filters/filter-input/types.d.ts +1 -1
- package/dpr/components/_filters/types.d.js.map +1 -1
- package/dpr/components/_filters/types.d.ts +6 -4
- package/dpr/components/_reports/report-actions/types.d.js.map +1 -1
- package/dpr/components/_reports/report-actions/types.d.ts +1 -1
- package/dpr/components/report-list/types.d.js.map +1 -1
- package/dpr/components/report-list/types.d.ts +1 -1
- package/dpr/data/types.d.js +1 -1
- package/dpr/data/types.d.js.map +1 -1
- package/dpr/data/types.d.ts +2 -1
- package/dpr/routes/journeys/view-report/async/dashboard/utils.js +1 -1
- package/dpr/routes/journeys/view-report/async/dashboard/utils.js.map +3 -3
- package/dpr/routes/journeys/view-report/async/dashboard/utils.ts +22 -10
- package/dpr/routes/journeys/view-report/async/report/utils.js +1 -1
- package/dpr/routes/journeys/view-report/async/report/utils.js.map +2 -2
- package/dpr/routes/journeys/view-report/async/report/utils.ts +1 -1
- package/dpr/routes/journeys/view-report/controller.js +1 -1
- package/dpr/routes/journeys/view-report/controller.js.map +3 -3
- package/dpr/routes/journeys/view-report/controller.ts +3 -1
- package/dpr/types/Services.d.js +1 -1
- package/dpr/types/Services.d.js.map +1 -1
- package/dpr/types/Services.d.ts +0 -2
- package/dpr/utils/DataTableBuilder/types.d.js +1 -1
- package/dpr/utils/DataTableBuilder/types.d.js.map +1 -1
- package/dpr/utils/DataTableBuilder/types.d.ts +2 -2
- package/dpr/utils/ErrorHandler.js +1 -1
- package/dpr/utils/ErrorHandler.js.map +3 -3
- package/dpr/utils/ErrorHandler.ts +16 -0
- package/dpr/utils/ParentChildDataTableBuilder/types.d.js +1 -1
- package/dpr/utils/ParentChildDataTableBuilder/types.d.js.map +1 -1
- package/dpr/utils/ParentChildDataTableBuilder/types.d.ts +1 -0
- package/dpr/utils/Personalisation/types.d.js +1 -1
- package/dpr/utils/Personalisation/types.d.js.map +1 -1
- package/dpr/utils/Personalisation/types.d.ts +1 -0
- package/dpr/utils/UserStoreItemBuilder.js.map +2 -2
- package/dpr/utils/UserStoreItemBuilder.ts +1 -1
- package/package.json +1 -1
- package/dpr/components/_charts/chart/Buckets.js +0 -2
- package/dpr/components/_charts/chart/Buckets.js.map +0 -7
- package/dpr/components/_dashboards/dashboard-visualisation/DashboardVisualisation.js +0 -2
- package/dpr/components/_dashboards/dashboard-visualisation/DashboardVisualisation.js.map +0 -7
- package/dpr/components/_dashboards/dashboard-visualisation/DashboardVisualisation.ts +0 -40
|
@@ -0,0 +1,228 @@
|
|
|
1
|
+
/* eslint-disable prefer-destructuring */
|
|
2
|
+
import { DashboardDataResponse } from '../../../types/Metrics'
|
|
3
|
+
import DatasetHelper from '../../../utils/datasetHelper'
|
|
4
|
+
import { ScorecardDataset, ScorecardGroup } from '../scorecard/types'
|
|
5
|
+
import Buckets from '../../_charts/chart/buckets/Buckets'
|
|
6
|
+
import { components } from '../../../types/api'
|
|
7
|
+
import ScorecardVisualisation from '../scorecard/Scorecard'
|
|
8
|
+
import { ScorecardGroupDefinitionType, ScorecardGroupDefinitionMeasure } from './types'
|
|
9
|
+
import { DashboardVisualisationBucket } from '../dashboard-visualisation/types'
|
|
10
|
+
import ScorecardGroupSchemas from './validate'
|
|
11
|
+
|
|
12
|
+
class ScorecardGroupVisualisation {
|
|
13
|
+
private definition!: ScorecardGroupDefinitionType
|
|
14
|
+
|
|
15
|
+
private id!: string
|
|
16
|
+
|
|
17
|
+
private measures!: ScorecardGroupDefinitionType['columns']['measures']
|
|
18
|
+
|
|
19
|
+
private keys!: ScorecardGroupDefinitionType['columns']['keys']
|
|
20
|
+
|
|
21
|
+
private options!: ScorecardGroupDefinitionType['options']
|
|
22
|
+
|
|
23
|
+
private dataset!: ScorecardDataset
|
|
24
|
+
|
|
25
|
+
private groupKey: ScorecardGroupDefinitionMeasure | undefined
|
|
26
|
+
|
|
27
|
+
private groupKeyId: string | undefined
|
|
28
|
+
|
|
29
|
+
private groupKeyDisplay: string | undefined
|
|
30
|
+
|
|
31
|
+
private bucketsHelper: Buckets | undefined
|
|
32
|
+
|
|
33
|
+
private buckets: DashboardVisualisationBucket[] = []
|
|
34
|
+
|
|
35
|
+
private valueColumn: ScorecardGroupDefinitionMeasure | undefined
|
|
36
|
+
|
|
37
|
+
private valueKey = ''
|
|
38
|
+
|
|
39
|
+
private titleColumn: ScorecardGroupDefinitionMeasure | undefined
|
|
40
|
+
|
|
41
|
+
private titleKey = ''
|
|
42
|
+
|
|
43
|
+
private unit: 'NUMBER' | 'PERCENTAGE' | undefined
|
|
44
|
+
|
|
45
|
+
responseData: DashboardDataResponse[] = []
|
|
46
|
+
|
|
47
|
+
scoreCardBuilder: ScorecardVisualisation
|
|
48
|
+
|
|
49
|
+
constructor() {
|
|
50
|
+
this.scoreCardBuilder = new ScorecardVisualisation()
|
|
51
|
+
}
|
|
52
|
+
|
|
53
|
+
withDefinition = (definition: components['schemas']['DashboardVisualisationDefinition']) => {
|
|
54
|
+
this.definition = ScorecardGroupSchemas.ScorecardGroupSchema.parse(definition)
|
|
55
|
+
this.init()
|
|
56
|
+
|
|
57
|
+
return this
|
|
58
|
+
}
|
|
59
|
+
|
|
60
|
+
withData = (responseData: DashboardDataResponse[]) => {
|
|
61
|
+
this.responseData = responseData
|
|
62
|
+
this.dataset = this.scoreCardBuilder.getDataset(this.definition, this.responseData)
|
|
63
|
+
this.initBuckets(this.responseData, this.valueKey)
|
|
64
|
+
this.initGroupVars()
|
|
65
|
+
return this
|
|
66
|
+
}
|
|
67
|
+
|
|
68
|
+
private init = () => {
|
|
69
|
+
this.id = this.definition.id
|
|
70
|
+
this.measures = this.definition.columns.measures
|
|
71
|
+
this.keys = this.definition.columns.keys
|
|
72
|
+
this.options = this.definition.options
|
|
73
|
+
this.valueKey = this.measures[0].id
|
|
74
|
+
this.titleColumn = { display: this.definition.display || '', id: this.valueKey }
|
|
75
|
+
this.unit = this.definition.columns.measures[0].unit ? this.definition.columns.measures[0].unit : undefined
|
|
76
|
+
}
|
|
77
|
+
|
|
78
|
+
private initBuckets = (responseData: DashboardDataResponse[], valueKey: string) => {
|
|
79
|
+
if (this.options?.buckets || this.options?.useRagColour) {
|
|
80
|
+
this.bucketsHelper = new Buckets(responseData, this.definition, valueKey, false, this.scoreCardBuilder.ragColours)
|
|
81
|
+
this.buckets = this.bucketsHelper.getBuckets()
|
|
82
|
+
}
|
|
83
|
+
}
|
|
84
|
+
|
|
85
|
+
private initGroupVars = () => {
|
|
86
|
+
this.groupKey = DatasetHelper.getGroupKey(
|
|
87
|
+
this.dataset.latest,
|
|
88
|
+
<Array<components['schemas']['DashboardVisualisationColumnDefinition']>>this.keys || [],
|
|
89
|
+
)
|
|
90
|
+
this.groupKeyId = this.groupKey?.id
|
|
91
|
+
this.groupKeyDisplay = this.groupKey?.display
|
|
92
|
+
|
|
93
|
+
this.valueColumn = this.measures.find((col) => col.displayValue)
|
|
94
|
+
if (this.valueColumn) {
|
|
95
|
+
this.valueKey = this.valueColumn?.id
|
|
96
|
+
this.titleColumn = this.measures.find((col) => {
|
|
97
|
+
return col.display || col.display === ''
|
|
98
|
+
})
|
|
99
|
+
this.titleKey = this.titleColumn?.id || ''
|
|
100
|
+
}
|
|
101
|
+
}
|
|
102
|
+
|
|
103
|
+
private createScorecardGroupFromColumns = () => {
|
|
104
|
+
const { latest, earliest, latestTs, earliestTs } = this.dataset
|
|
105
|
+
|
|
106
|
+
return latest.map((row, rowIndex) => {
|
|
107
|
+
return {
|
|
108
|
+
title: this.createGroupTitle(row),
|
|
109
|
+
scorecards: Object.keys(row)
|
|
110
|
+
.filter((colId) => colId !== this.groupKeyId)
|
|
111
|
+
.map((colId) => {
|
|
112
|
+
const measure = this.measures.find((m) => m.id === colId)
|
|
113
|
+
const title = measure?.display || colId
|
|
114
|
+
const rowCol = row[colId]
|
|
115
|
+
const { raw, rag } = rowCol
|
|
116
|
+
const value = Number(raw)
|
|
117
|
+
|
|
118
|
+
const ragValue = rag !== undefined ? Number(rag) : undefined
|
|
119
|
+
this.initBuckets([row], colId)
|
|
120
|
+
|
|
121
|
+
const valueFor = `${latestTs}`
|
|
122
|
+
const valueFrom = `${earliestTs}`
|
|
123
|
+
|
|
124
|
+
const comparisonRow = earliest[rowIndex]
|
|
125
|
+
const prevVal = comparisonRow[colId]?.raw
|
|
126
|
+
const ragScore = this.scoreCardBuilder.setRagScore(value, ragValue, this.buckets, this.bucketsHelper)
|
|
127
|
+
|
|
128
|
+
return this.scoreCardBuilder.createScorecardData({
|
|
129
|
+
id: this.id,
|
|
130
|
+
title,
|
|
131
|
+
value,
|
|
132
|
+
rag: ragScore,
|
|
133
|
+
prevVal,
|
|
134
|
+
valueFor,
|
|
135
|
+
valueFrom,
|
|
136
|
+
})
|
|
137
|
+
}),
|
|
138
|
+
}
|
|
139
|
+
})
|
|
140
|
+
}
|
|
141
|
+
|
|
142
|
+
private createScorecardGroupFromList = (): ScorecardGroup[] => {
|
|
143
|
+
const { latest, earliest } = this.dataset
|
|
144
|
+
return [
|
|
145
|
+
{
|
|
146
|
+
title: '',
|
|
147
|
+
scorecards: latest.map((row: DashboardDataResponse, index: number) => {
|
|
148
|
+
const values = this.getScorecardValues(row)
|
|
149
|
+
const prevVal = earliest[index][this.valueKey].raw
|
|
150
|
+
return this.scoreCardBuilder.createScorecardData({
|
|
151
|
+
...values,
|
|
152
|
+
prevVal,
|
|
153
|
+
})
|
|
154
|
+
}),
|
|
155
|
+
},
|
|
156
|
+
]
|
|
157
|
+
}
|
|
158
|
+
|
|
159
|
+
private createScorecardGroupFromListWithGroups = () => {
|
|
160
|
+
const { latest, earliest } = this.dataset
|
|
161
|
+
|
|
162
|
+
let earliestGroupedByKey = DatasetHelper.groupRowsByKey(earliest, <string>this.groupKeyId)
|
|
163
|
+
let latestGroupedByKey = DatasetHelper.groupRowsByKey(latest, <string>this.groupKeyId)
|
|
164
|
+
if (this.groupKeyId === this.titleKey) {
|
|
165
|
+
latestGroupedByKey = [latestGroupedByKey.flat()]
|
|
166
|
+
earliestGroupedByKey = [earliestGroupedByKey.flat()]
|
|
167
|
+
}
|
|
168
|
+
|
|
169
|
+
const scorecardGroup = latestGroupedByKey.map((group, groupIndex) => {
|
|
170
|
+
return {
|
|
171
|
+
title: this.groupKeyDisplay ? `By ${this.groupKeyDisplay}` : '',
|
|
172
|
+
scorecards: group.map((row, rowIndex) => {
|
|
173
|
+
const values = this.getScorecardValues(row)
|
|
174
|
+
const comparisonRow = earliestGroupedByKey[groupIndex][rowIndex]
|
|
175
|
+
const prevVal = comparisonRow[this.valueKey]?.raw
|
|
176
|
+
|
|
177
|
+
return this.scoreCardBuilder.createScorecardData({
|
|
178
|
+
...values,
|
|
179
|
+
prevVal,
|
|
180
|
+
})
|
|
181
|
+
}),
|
|
182
|
+
}
|
|
183
|
+
})
|
|
184
|
+
|
|
185
|
+
return scorecardGroup
|
|
186
|
+
}
|
|
187
|
+
|
|
188
|
+
private getScorecardValues = (row: DashboardDataResponse) => {
|
|
189
|
+
const { latestTs, earliestTs } = this.dataset
|
|
190
|
+
const title = `${this.titleColumn?.display} ${row[this.titleKey].raw}`
|
|
191
|
+
const rowCol = row[this.valueKey]
|
|
192
|
+
const { raw, rag: ragScore } = rowCol
|
|
193
|
+
const value = Number(raw)
|
|
194
|
+
const rag = ragScore !== undefined ? Number(ragScore) : undefined
|
|
195
|
+
this.initBuckets([row], this.valueKey)
|
|
196
|
+
const valueFor = `${latestTs}`
|
|
197
|
+
const valueFrom = `${earliestTs}`
|
|
198
|
+
|
|
199
|
+
return {
|
|
200
|
+
id: this.id,
|
|
201
|
+
title,
|
|
202
|
+
value,
|
|
203
|
+
rag: this.scoreCardBuilder.setRagScore(value, rag, this.buckets, this.bucketsHelper),
|
|
204
|
+
valueFor,
|
|
205
|
+
valueFrom,
|
|
206
|
+
}
|
|
207
|
+
}
|
|
208
|
+
|
|
209
|
+
private createGroupTitle = (row: DashboardDataResponse) => {
|
|
210
|
+
const title = this.groupKeyId ? `${row[this.groupKeyId]?.raw}` : ''
|
|
211
|
+
return this.groupKeyDisplay && this.groupKeyDisplay.length ? `${this.groupKeyDisplay}: ${title}` : title
|
|
212
|
+
}
|
|
213
|
+
|
|
214
|
+
build = () => {
|
|
215
|
+
let scorecardGroup: ScorecardGroup[]
|
|
216
|
+
if (!this.valueColumn) {
|
|
217
|
+
scorecardGroup = this.createScorecardGroupFromColumns()
|
|
218
|
+
} else if (this.groupKey) {
|
|
219
|
+
scorecardGroup = this.createScorecardGroupFromListWithGroups()
|
|
220
|
+
} else {
|
|
221
|
+
scorecardGroup = this.createScorecardGroupFromList()
|
|
222
|
+
}
|
|
223
|
+
return scorecardGroup
|
|
224
|
+
}
|
|
225
|
+
}
|
|
226
|
+
|
|
227
|
+
export { ScorecardGroupVisualisation }
|
|
228
|
+
export default ScorecardGroupVisualisation
|
|
@@ -0,0 +1,2 @@
|
|
|
1
|
+
"use strict";var p=Object.defineProperty;var S=Object.getOwnPropertyDescriptor;var i=Object.getOwnPropertyNames;var t=Object.prototype.hasOwnProperty;var m=(e,r,a,c)=>{if(r&&typeof r=="object"||typeof r=="function")for(let o of i(r))!t.call(e,o)&&o!==a&&p(e,o,{get:()=>r[o],enumerable:!(c=S(r,o))||c.enumerable});return e};var f=e=>m(p({},"__esModule",{value:!0}),e);var d={};module.exports=f(d);
|
|
2
|
+
//# sourceMappingURL=types.js.map
|
|
@@ -0,0 +1,7 @@
|
|
|
1
|
+
{
|
|
2
|
+
"version": 3,
|
|
3
|
+
"sources": ["../../../../../src/dpr/components/_dashboards/scorecard-group/types.ts"],
|
|
4
|
+
"sourcesContent": ["import z from 'zod'\nimport ScorecardSchema from './validate'\n\nexport type ScorecardGroupDefinitionType = z.infer<typeof ScorecardSchema.ScorecardGroupSchema>\nexport type ScorecardGroupDefinitionMeasure = z.infer<typeof ScorecardSchema.ScorecardGroupColumn>\n"],
|
|
5
|
+
"mappings": "+WAAA,IAAAA,EAAA,kBAAAC,EAAAD",
|
|
6
|
+
"names": ["types_exports", "__toCommonJS"]
|
|
7
|
+
}
|
|
@@ -0,0 +1,2 @@
|
|
|
1
|
+
"use strict";var n=Object.defineProperty;var u=Object.getOwnPropertyDescriptor;var p=Object.getOwnPropertyNames;var c=Object.prototype.hasOwnProperty;var d=(o,a)=>{for(var t in a)n(o,t,{get:a[t],enumerable:!0})},m=(o,a,t,s)=>{if(a&&typeof a=="object"||typeof a=="function")for(let i of p(a))!c.call(o,i)&&i!==t&&n(o,i,{get:()=>a[i],enumerable:!(s=u(a,i))||s.enumerable});return o};var h=o=>m(n({},"__esModule",{value:!0}),o);var f={};d(f,{default:()=>b});module.exports=h(f);var e=require("zod"),r=require("../dashboard-visualisation/Validate");const l=e.z.object({id:e.z.string(),display:e.z.string().optional(),displayValue:e.z.boolean().optional(),unit:e.z.enum(["NUMBER","PERCENTAGE"]).optional()}),y=e.z.object({...r.DashboardVisualisationSchema.shape,type:e.z.literal("scorecard-group"),options:e.z.object(r.BucketOptionsSchema.shape).optional(),columns:e.z.object({...r.DashboardColumns.shape,measures:e.z.array(l).min(2,"Measure must contain two or more items").refine(o=>o.find(t=>t.displayValue!==void 0)?o.length===2:!0,{error:"Measure must have length 2 when displayValue is defined"})})});var b={ScorecardGroupSchema:y,ScorecardGroupColumn:l};
|
|
2
|
+
//# sourceMappingURL=validate.js.map
|
|
@@ -0,0 +1,7 @@
|
|
|
1
|
+
{
|
|
2
|
+
"version": 3,
|
|
3
|
+
"sources": ["../../../../../src/dpr/components/_dashboards/scorecard-group/validate.ts"],
|
|
4
|
+
"sourcesContent": ["import { z } from 'zod'\nimport {\n DashboardVisualisationSchema,\n DashboardColumns,\n BucketOptionsSchema,\n} from '../dashboard-visualisation/Validate'\n\nconst ScorecardGroupColumn = z.object({\n id: z.string(),\n display: z.string().optional(),\n displayValue: z.boolean().optional(),\n unit: z.enum(['NUMBER', 'PERCENTAGE']).optional(),\n})\n\nconst ScorecardGroupSchema = z.object({\n ...DashboardVisualisationSchema.shape,\n type: z.literal('scorecard-group'),\n options: z.object(BucketOptionsSchema.shape).optional(),\n columns: z.object({\n ...DashboardColumns.shape,\n measures: z\n .array(ScorecardGroupColumn)\n .min(2, 'Measure must contain two or more items')\n .refine(\n (measures) => {\n const displayValue = measures.find((m) => m.displayValue !== undefined)\n return displayValue ? measures.length === 2 : true\n },\n { error: 'Measure must have length 2 when displayValue is defined' },\n ),\n }),\n})\n\nexport default {\n ScorecardGroupSchema,\n ScorecardGroupColumn,\n}\n"],
|
|
5
|
+
"mappings": "yaAAA,IAAAA,EAAA,GAAAC,EAAAD,EAAA,aAAAE,IAAA,eAAAC,EAAAH,GAAA,IAAAI,EAAkB,eAClBC,EAIO,+CAEP,MAAMC,EAAuB,IAAE,OAAO,CACpC,GAAI,IAAE,OAAO,EACb,QAAS,IAAE,OAAO,EAAE,SAAS,EAC7B,aAAc,IAAE,QAAQ,EAAE,SAAS,EACnC,KAAM,IAAE,KAAK,CAAC,SAAU,YAAY,CAAC,EAAE,SAAS,CAClD,CAAC,EAEKC,EAAuB,IAAE,OAAO,CACpC,GAAG,+BAA6B,MAChC,KAAM,IAAE,QAAQ,iBAAiB,EACjC,QAAS,IAAE,OAAO,sBAAoB,KAAK,EAAE,SAAS,EACtD,QAAS,IAAE,OAAO,CAChB,GAAG,mBAAiB,MACpB,SAAU,IACP,MAAMD,CAAoB,EAC1B,IAAI,EAAG,wCAAwC,EAC/C,OACEE,GACsBA,EAAS,KAAMC,GAAMA,EAAE,eAAiB,MAAS,EAChDD,EAAS,SAAW,EAAI,GAEhD,CAAE,MAAO,yDAA0D,CACrE,CACJ,CAAC,CACH,CAAC,EAED,IAAON,EAAQ,CACb,qBAAAK,EACA,qBAAAD,CACF",
|
|
6
|
+
"names": ["validate_exports", "__export", "validate_default", "__toCommonJS", "import_zod", "import_Validate", "ScorecardGroupColumn", "ScorecardGroupSchema", "measures", "m"]
|
|
7
|
+
}
|
|
@@ -0,0 +1,37 @@
|
|
|
1
|
+
import { z } from 'zod'
|
|
2
|
+
import {
|
|
3
|
+
DashboardVisualisationSchema,
|
|
4
|
+
DashboardColumns,
|
|
5
|
+
BucketOptionsSchema,
|
|
6
|
+
} from '../dashboard-visualisation/Validate'
|
|
7
|
+
|
|
8
|
+
const ScorecardGroupColumn = z.object({
|
|
9
|
+
id: z.string(),
|
|
10
|
+
display: z.string().optional(),
|
|
11
|
+
displayValue: z.boolean().optional(),
|
|
12
|
+
unit: z.enum(['NUMBER', 'PERCENTAGE']).optional(),
|
|
13
|
+
})
|
|
14
|
+
|
|
15
|
+
const ScorecardGroupSchema = z.object({
|
|
16
|
+
...DashboardVisualisationSchema.shape,
|
|
17
|
+
type: z.literal('scorecard-group'),
|
|
18
|
+
options: z.object(BucketOptionsSchema.shape).optional(),
|
|
19
|
+
columns: z.object({
|
|
20
|
+
...DashboardColumns.shape,
|
|
21
|
+
measures: z
|
|
22
|
+
.array(ScorecardGroupColumn)
|
|
23
|
+
.min(2, 'Measure must contain two or more items')
|
|
24
|
+
.refine(
|
|
25
|
+
(measures) => {
|
|
26
|
+
const displayValue = measures.find((m) => m.displayValue !== undefined)
|
|
27
|
+
return displayValue ? measures.length === 2 : true
|
|
28
|
+
},
|
|
29
|
+
{ error: 'Measure must have length 2 when displayValue is defined' },
|
|
30
|
+
),
|
|
31
|
+
}),
|
|
32
|
+
})
|
|
33
|
+
|
|
34
|
+
export default {
|
|
35
|
+
ScorecardGroupSchema,
|
|
36
|
+
ScorecardGroupColumn,
|
|
37
|
+
}
|
|
@@ -1,7 +1,7 @@
|
|
|
1
1
|
{
|
|
2
2
|
"version": 3,
|
|
3
3
|
"sources": ["../../../../../src/dpr/components/_filters/filter-input/types.d.ts"],
|
|
4
|
-
"sourcesContent": ["import { FilterType } from './enum'\n\nexport interface FilterOption {\n value: string\n text: string\n disabled?: boolean\n selected?: boolean\n}\n\nexport type FilterValue = GenericFilterValue | DateFilterValue\n\nexport interface GenericFilterValue {\n text: string\n name: string\n type: FilterType\n value?: string\n options?: Array<FilterOption>\n minimumLength?: number\n dynamicResourceEndpoint?: string\n mandatory?: boolean\n}\n\nexport interface DateFilterValue extends GenericFilterValue {\n type: FilterType.dateRange\n value?: DateRange\n min?: string\n max?: string\n}\n\nexport interface SelectedFilter {\n text: string\n href: string\n classes: string\n}\n\nexport interface DateRange {\n start: string\n end: string\n}\n\nexport interface FilterOptions {\n filters: Array<FilterValue>\n selectedFilters: Array<SelectedFilter>\n}\n"],
|
|
4
|
+
"sourcesContent": ["import { FilterType } from './enum'\n\nexport interface FilterOption {\n value: string\n text: string\n disabled?: boolean\n selected?: boolean\n}\n\nexport type FilterValue = GenericFilterValue | DateFilterValue\n\nexport interface GenericFilterValue {\n text: string\n name: string\n type: FilterType\n value?: string | DateRange\n options?: Array<FilterOption>\n minimumLength?: number\n dynamicResourceEndpoint?: string\n mandatory?: boolean\n}\n\nexport interface DateFilterValue extends GenericFilterValue {\n type: FilterType.dateRange\n value?: DateRange\n min?: string\n max?: string\n}\n\nexport interface SelectedFilter {\n text: string\n href: string\n classes: string\n}\n\nexport interface DateRange {\n start: string\n end: string\n}\n\nexport interface FilterOptions {\n filters: Array<FilterValue>\n selectedFilters: Array<SelectedFilter>\n}\n"],
|
|
5
5
|
"mappings": "+WAAA,IAAAA,EAAA,kBAAAC,EAAAD",
|
|
6
6
|
"names": ["types_d_exports", "__toCommonJS"]
|
|
7
7
|
}
|
|
@@ -1,7 +1,7 @@
|
|
|
1
1
|
{
|
|
2
2
|
"version": 3,
|
|
3
3
|
"sources": ["../../../../src/dpr/components/_filters/types.d.ts"],
|
|
4
|
-
"sourcesContent": ["import { Granularity, QuickFilters } from '../_inputs/granular-date-range/types'\nimport { FilterType } from './filter-input/enum'\nimport RelativeDateRange from '../_inputs/date-range/types'\n\nexport interface FilterOption {\n value: string\n text: string\n disabled?: boolean\n selected?: boolean\n sortedAsc?: boolean\n}\n\nexport type FilterValue =\n | TextFilterValue\n | FilterValueWithOptions\n | MultiselectFilterValue\n | DateFilterValue\n | DateRangeFilterValue\n | GranularDateRangeFilterValue\n\nexport type FilterValueType = string | DateRange | GranularDateRange | null\nexport interface BaseFilterValue {\n text: string\n name: string\n type: FilterType\n value: FilterValueType\n mandatory?: boolean | undefined\n index?: number | undefined\n}\n\nexport interface TextFilterValue extends BaseFilterValue {\n minimumLength?: number | undefined\n pattern?: string | undefined\n}\n\nexport interface FilterValueWithOptions extends BaseFilterValue {\n options: Array<FilterOption>\n staticOptionNameValue?: string\n dynamicResourceEndpoint?: string\n}\n\nexport interface MultiselectFilterValue extends Omit<BaseFilterValue, 'value'>, FilterValueWithOptions {\n value: string | null\n values: string[]\n}\n\nexport interface DateFilterValue extends Omit<BaseFilterValue, 'value'> {\n value: string | null\n min?: string\n max?: string\n}\n\nexport interface DateRangeFilterValue extends Omit<BaseFilterValue, 'value'> {\n value: DateRange\n min?: string\n max?: string\n relativeOptions?: { value: string; text: string; disabled?: boolean }[]\n}\n\nexport interface GranularDateRangeFilterValue extends Omit<BaseFilterValue, 'value'> {\n value: GranularDateRange\n min?: string\n max?: string\n relativeOptions?: { value: string; text: string; disabled?: boolean }[]\n quickFilterOptions?: { value: string; text: string; disabled?: boolean }[]\n granularityOptions?: { value: string; text: string }[]\n}\n\nexport interface SelectedFilter {\n text: string\n href: string\n classes: string\n}\n\nexport interface DateRange {\n start: string\n end: string\n relative?: RelativeDateRange | undefined\n}\n\nexport interface GranularDateRange extends DateRange {\n granularity: GranularDateRangeGranularityValue\n quickFilter?: GranularDateRangeQuickFilterValue\n partialDate?: {\n
|
|
4
|
+
"sourcesContent": ["import { Granularity, QuickFilters } from '../_inputs/granular-date-range/types'\nimport { FilterType } from './filter-input/enum'\nimport RelativeDateRange from '../_inputs/date-range/types'\n\nexport interface FilterOption {\n value: string\n text: string\n disabled?: boolean\n selected?: boolean\n sortedAsc?: boolean\n}\n\nexport type FilterValue =\n | TextFilterValue\n | FilterValueWithOptions\n | MultiselectFilterValue\n | DateFilterValue\n | DateRangeFilterValue\n | GranularDateRangeFilterValue\n\nexport type FilterValueType = string | DateRange | GranularDateRange | null\nexport interface BaseFilterValue {\n text: string\n name: string\n type: FilterType\n value: FilterValueType\n mandatory?: boolean | undefined\n index?: number | undefined\n}\n\nexport interface TextFilterValue extends BaseFilterValue {\n minimumLength?: number | undefined\n pattern?: string | undefined\n}\n\nexport interface FilterValueWithOptions extends BaseFilterValue {\n options: Array<FilterOption>\n staticOptionNameValue?: string\n dynamicResourceEndpoint?: string\n}\n\nexport interface MultiselectFilterValue extends Omit<BaseFilterValue, 'value'>, FilterValueWithOptions {\n value: string | null\n values: string[]\n}\n\nexport interface DateFilterValue extends Omit<BaseFilterValue, 'value'> {\n value: string | null\n min?: string\n max?: string\n}\n\nexport interface DateRangeFilterValue extends Omit<BaseFilterValue, 'value'> {\n value: DateRange\n min?: string\n max?: string\n relativeOptions?: { value: string; text: string; disabled?: boolean }[]\n}\n\nexport interface GranularDateRangeFilterValue extends Omit<BaseFilterValue, 'value'> {\n value: GranularDateRange\n min?: string\n max?: string\n relativeOptions?: { value: string; text: string; disabled?: boolean }[]\n quickFilterOptions?: { value: string; text: string; disabled?: boolean }[]\n granularityOptions?: { value: string; text: string }[]\n}\n\nexport interface SelectedFilter {\n text: string\n href: string\n classes: string\n}\n\nexport interface DateRange {\n start: string\n end: string\n relative?: RelativeDateRange | undefined\n}\n\nexport interface GranularDateRange extends DateRange {\n granularity: GranularDateRangeGranularityValue\n quickFilter?: GranularDateRangeQuickFilterValue\n partialDate?: PartialDate\n}\n\nexport interface PartialDate {\n start: boolean\n end: boolean\n}\n\ninterface GranularDateRangeGranularityValue {\n value: Granularity\n display: string\n}\n\nexport interface GranularDateRangeQuickFilterValue {\n value: QuickFilters\n display: string\n}\n\nexport interface FilterOptions {\n filters: Array<FilterValue>\n selectedFilters: Array<SelectedFilter>\n urlWithNoFilters: string\n}\n"],
|
|
5
5
|
"mappings": "+WAAA,IAAAA,EAAA,kBAAAC,EAAAD",
|
|
6
6
|
"names": ["types_d_exports", "__toCommonJS"]
|
|
7
7
|
}
|
|
@@ -81,10 +81,12 @@ export interface DateRange {
|
|
|
81
81
|
export interface GranularDateRange extends DateRange {
|
|
82
82
|
granularity: GranularDateRangeGranularityValue
|
|
83
83
|
quickFilter?: GranularDateRangeQuickFilterValue
|
|
84
|
-
partialDate?:
|
|
85
|
-
|
|
86
|
-
|
|
87
|
-
|
|
84
|
+
partialDate?: PartialDate
|
|
85
|
+
}
|
|
86
|
+
|
|
87
|
+
export interface PartialDate {
|
|
88
|
+
start: boolean
|
|
89
|
+
end: boolean
|
|
88
90
|
}
|
|
89
91
|
|
|
90
92
|
interface GranularDateRangeGranularityValue {
|
|
@@ -1,7 +1,7 @@
|
|
|
1
1
|
{
|
|
2
2
|
"version": 3,
|
|
3
3
|
"sources": ["../../../../../src/dpr/components/_reports/report-actions/types.d.ts"],
|
|
4
|
-
"sourcesContent": ["import { LoadType } from '../../../types/UserReports'\n\nexport interface DownloadActionParams {\n enabled: boolean\n csrfToken: string\n reportId: string\n reportName: string\n name: string\n id: string\n tableId?: string\n columns: string[]\n definitionPath: string\n canDownload: boolean\n loadType: LoadType\n currentUrl: string\n currentQueryParams?: string | undefined\n nestedBaseUrl: string\n sortColumn?: string\n sortedAsc?: string\n}\n\nexport interface ShareActionParams {\n reportName: string\n name: string\n url: string\n}\n\nexport interface RefreshActionParams {\n url: string\n executionId: string\n}\n\nexport interface PrintActionParams {\n enabled: boolean\n}\n\nexport interface CopyActionParams {\n url: string\n}\n\nexport interface GetActionsParams {\n refresh?: RefreshActionParams\n print?: PrintActionParams\n copy?: CopyActionParams\n share?: ShareActionParams\n download?: DownloadActionParams\n}\n\nexport interface ActionTemplate {\n id: string\n disabled: boolean\n text: string\n ariaLabelText: string\n}\n\nexport interface ActionTemplates {\n refresh: ActionTemplate\n printable: ActionTemplate\n sharable: ActionTemplate\n copy: ActionTemplate\n downloadable: ActionTemplate\n}\n\nexport interface ReportAction {\n id: string\n disabled: boolean\n text: string\n ariaLabelText: string\n href?: string\n attributes?: {\n reportId?: string\n id?: string\n csrfToken?: string\n tableId?: string\n type?: ReportType\n reportName?: string\n name?: string\n columns: string[]\n definitionPath: string\n }\n}\n"],
|
|
4
|
+
"sourcesContent": ["import { LoadType, ReportType } from '../../../types/UserReports'\n\nexport interface DownloadActionParams {\n enabled: boolean\n csrfToken: string\n reportId: string\n reportName: string\n name: string\n id: string\n tableId?: string\n columns: string[]\n definitionPath: string\n canDownload: boolean\n loadType: LoadType\n currentUrl: string\n currentQueryParams?: string | undefined\n nestedBaseUrl: string\n sortColumn?: string\n sortedAsc?: string\n}\n\nexport interface ShareActionParams {\n reportName: string\n name: string\n url: string\n}\n\nexport interface RefreshActionParams {\n url: string\n executionId: string\n}\n\nexport interface PrintActionParams {\n enabled: boolean\n}\n\nexport interface CopyActionParams {\n url: string\n}\n\nexport interface GetActionsParams {\n refresh?: RefreshActionParams\n print?: PrintActionParams\n copy?: CopyActionParams\n share?: ShareActionParams\n download?: DownloadActionParams\n}\n\nexport interface ActionTemplate {\n id: string\n disabled: boolean\n text: string\n ariaLabelText: string\n}\n\nexport interface ActionTemplates {\n refresh: ActionTemplate\n printable: ActionTemplate\n sharable: ActionTemplate\n copy: ActionTemplate\n downloadable: ActionTemplate\n}\n\nexport interface ReportAction {\n id: string\n disabled: boolean\n text: string\n ariaLabelText: string\n href?: string\n attributes?: {\n reportId?: string\n id?: string\n csrfToken?: string\n tableId?: string\n type?: ReportType\n reportName?: string\n name?: string\n columns: string[]\n definitionPath: string\n }\n}\n"],
|
|
5
5
|
"mappings": "+WAAA,IAAAA,EAAA,kBAAAC,EAAAD",
|
|
6
6
|
"names": ["types_d_exports", "__toCommonJS"]
|
|
7
7
|
}
|
|
@@ -1,7 +1,7 @@
|
|
|
1
1
|
{
|
|
2
2
|
"version": 3,
|
|
3
3
|
"sources": ["../../../../src/dpr/components/report-list/types.d.ts"],
|
|
4
|
-
"sourcesContent": ["import { NextFunction, Request, Response } from 'express'\nimport Dict = NodeJS.Dict\nimport ReportQuery from '../../types/ReportQuery'\nimport { ListWithWarnings } from '../../data/types'\nimport { components } from '../../types/api'\n\nexport interface ListDataSources {\n data: Promise<Dict<string>[]> | Promise<ListWithWarnings>\n count: Promise<number>\n}\n\nexport interface RenderListWithDataInput {\n title: string\n reportName?: string\n variantDefinition: components['schemas']['VariantDefinition']\n request: Request\n response: Response\n next: NextFunction\n getListDataSources: (reportQuery: ReportQuery) => ListDataSources\n otherOptions?: Dict<object>\n layoutTemplate: string\n dynamicAutocompleteEndpoint?: string\n}\n\nexport interface RenderListWithDefinitionInput {\n definitionName: string\n variantName: string\n request: Request\n response: Response\n next: NextFunction\n apiUrl: string\n layoutTemplate: string\n token: string\n title?: string\n otherOptions?: Dict<object>\n dynamicAutocompleteEndpoint?: string\n apiTimeout: number\n definitionsPath?: string\n}\n\nexport interface CreateRequestHandlerInput {\n title?: string\n definitionName: string\n variantName: string\n apiUrl: string\n apiTimeout\n otherOptions?: Dict<object>\n layoutTemplate: string\n tokenProvider: (request: Request, response: Response, next: NextFunction) => string\n dynamicAutocompleteEndpoint?: string\n definitionsPath?: string\n}\n"],
|
|
4
|
+
"sourcesContent": ["import { NextFunction, Request, Response } from 'express'\nimport Dict = NodeJS.Dict\nimport ReportQuery from '../../types/ReportQuery'\nimport { ListWithWarnings } from '../../data/types'\nimport { components } from '../../types/api'\n\nexport interface ListDataSources {\n data: Promise<Dict<string>[]> | Promise<ListWithWarnings>\n count: Promise<number>\n}\n\nexport interface RenderListWithDataInput {\n title: string\n reportName?: string\n variantDefinition: components['schemas']['VariantDefinition']\n request: Request\n response: Response\n next: NextFunction\n getListDataSources: (reportQuery: ReportQuery) => ListDataSources\n otherOptions?: Dict<object>\n layoutTemplate: string\n dynamicAutocompleteEndpoint?: string\n}\n\nexport interface RenderListWithDefinitionInput {\n definitionName: string\n variantName: string\n request: Request\n response: Response\n next: NextFunction\n apiUrl: string\n layoutTemplate: string\n token: string\n title?: string\n otherOptions?: Dict<object>\n dynamicAutocompleteEndpoint?: string\n apiTimeout: number\n definitionsPath?: string\n}\n\nexport interface CreateRequestHandlerInput {\n title?: string\n definitionName: string\n variantName: string\n apiUrl: string\n apiTimeout: number\n otherOptions?: Dict<object>\n layoutTemplate: string\n tokenProvider: (request: Request, response: Response, next: NextFunction) => string\n dynamicAutocompleteEndpoint?: string\n definitionsPath?: string\n}\n"],
|
|
5
5
|
"mappings": "+WAAA,IAAAA,EAAA,kBAAAC,EAAAD",
|
|
6
6
|
"names": ["types_d_exports", "__toCommonJS"]
|
|
7
7
|
}
|
|
@@ -43,7 +43,7 @@ export interface CreateRequestHandlerInput {
|
|
|
43
43
|
definitionName: string
|
|
44
44
|
variantName: string
|
|
45
45
|
apiUrl: string
|
|
46
|
-
apiTimeout
|
|
46
|
+
apiTimeout: number
|
|
47
47
|
otherOptions?: Dict<object>
|
|
48
48
|
layoutTemplate: string
|
|
49
49
|
tokenProvider: (request: Request, response: Response, next: NextFunction) => string
|
package/dpr/data/types.d.js
CHANGED
|
@@ -1,2 +1,2 @@
|
|
|
1
|
-
"use strict";var
|
|
1
|
+
"use strict";var r=Object.defineProperty;var a=Object.getOwnPropertyDescriptor;var o=Object.getOwnPropertyNames;var g=Object.prototype.hasOwnProperty;var f=(e,t,s,i)=>{if(t&&typeof t=="object"||typeof t=="function")for(let n of o(t))!g.call(e,n)&&n!==s&&r(e,n,{get:()=>t[n],enumerable:!(i=a(t,n))||i.enumerable});return e};var c=e=>f(r({},"__esModule",{value:!0}),e);var d={};module.exports=c(d);
|
|
2
2
|
//# sourceMappingURL=types.d.js.map
|
package/dpr/data/types.d.js.map
CHANGED
|
@@ -1,7 +1,7 @@
|
|
|
1
1
|
{
|
|
2
2
|
"version": 3,
|
|
3
3
|
"sources": ["../../../src/dpr/data/types.d.ts"],
|
|
4
|
-
"sourcesContent": ["import AgentConfig from './agentConfig'\n\nexport interface GetRequest {\n path?: string\n query?: object\n headers?: Record<string, string>\n responseType?: string\n raw?: boolean\n token: string\n}\n\nexport interface ApiConfig {\n url: string\n agent: AgentConfig\n}\n\nexport interface Count {\n count: number\n}\n\nexport interface ListWithWarnings {\n data: Array<Dict<string>>\n warnings: Warnings\n}\n\nexport interface Warnings {\n noDataAvailable?: string | undefined\n}\n\nexport interface FieldValuesRequest {\n token: string\n definitionName: string\n variantName: string\n fieldName: string\n prefix: string\n definitionsPath?: string\n}\n\nexport interface AsyncRequestQuery {\n sortColumn: string\n sortedAsc: boolean\n dataProductDefinitionsPath: string\n [key: string]: string\n}\n\ninterface filter {\n [filterId: string]: string\n}\n"],
|
|
4
|
+
"sourcesContent": ["import AgentConfig from './agentConfig'\nimport Dict = NodeJS.Dict\n\nexport interface GetRequest {\n path?: string\n query?: object\n headers?: Record<string, string>\n responseType?: string\n raw?: boolean\n token: string\n}\n\nexport interface ApiConfig {\n url: string\n agent: AgentConfig\n}\n\nexport interface Count {\n count: number\n}\n\nexport interface ListWithWarnings {\n data: Array<Dict<string>>\n warnings: Warnings\n}\n\nexport interface Warnings {\n noDataAvailable?: string | undefined\n}\n\nexport interface FieldValuesRequest {\n token: string\n definitionName: string\n variantName: string\n fieldName: string\n prefix: string\n definitionsPath?: string\n}\n\nexport interface AsyncRequestQuery {\n sortColumn: string\n sortedAsc: boolean\n dataProductDefinitionsPath: string\n [key: string]: string | boolean\n}\n\ninterface filter {\n [filterId: string]: string\n}\n"],
|
|
5
5
|
"mappings": "+WAAA,IAAAA,EAAA,kBAAAC,EAAAD",
|
|
6
6
|
"names": ["types_d_exports", "__toCommonJS"]
|
|
7
7
|
}
|
package/dpr/data/types.d.ts
CHANGED
|
@@ -1,4 +1,5 @@
|
|
|
1
1
|
import AgentConfig from './agentConfig'
|
|
2
|
+
import Dict = NodeJS.Dict
|
|
2
3
|
|
|
3
4
|
export interface GetRequest {
|
|
4
5
|
path?: string
|
|
@@ -40,7 +41,7 @@ export interface AsyncRequestQuery {
|
|
|
40
41
|
sortColumn: string
|
|
41
42
|
sortedAsc: boolean
|
|
42
43
|
dataProductDefinitionsPath: string
|
|
43
|
-
[key: string]: string
|
|
44
|
+
[key: string]: string | boolean
|
|
44
45
|
}
|
|
45
46
|
|
|
46
47
|
interface filter {
|
|
@@ -1,2 +1,2 @@
|
|
|
1
|
-
"use strict";var
|
|
1
|
+
"use strict";var Q=Object.create;var y=Object.defineProperty;var J=Object.getOwnPropertyDescriptor;var W=Object.getOwnPropertyNames;var X=Object.getPrototypeOf,j=Object.prototype.hasOwnProperty;var z=(e,t)=>{for(var r in t)y(e,r,{get:t[r],enumerable:!0})},q=(e,t,r,o)=>{if(t&&typeof t=="object"||typeof t=="function")for(let i of W(t))!j.call(e,i)&&i!==r&&y(e,i,{get:()=>t[i],enumerable:!(o=J(t,i))||o.enumerable});return e};var c=(e,t,r)=>(r=e!=null?Q(X(e)):{},q(t||!e||!e.__esModule?y(r,"default",{value:e,enumerable:!0}):r,e)),K=e=>q(y({},"__esModule",{value:!0}),e);var ee={};z(ee,{default:()=>$,renderAsyncDashboard:()=>M});module.exports=K(ee);var l=require("../../../../../components/_dashboards/dashboard-visualisation/types"),g=require("../../../../../types/UserReports"),I=c(require("../../../../../components/_charts/utils")),F=c(require("../../../../../utils/definitionUtils")),P=c(require("../../../../../components/user-reports/utils")),C=c(require("../../../../../components/_dashboards/dashboard-list/utils")),w=c(require("../../../../../components/_filters/utils")),B=c(require("../../../../../components/_dashboards/scorecard/utils")),L=c(require("../../../../../components/_dashboards/scorecard/Scorecard")),N=c(require("../../../../../components/_dashboards/scorecard-group/ScorecardGroup")),O=c(require("../../../../../components/_reports/report-actions/utils")),v=c(require("../../../../../types/ReportQuery")),A=c(require("../../../../../utils/localsHelper")),x=require("../../../../../components/_filters/filtersTypeEnum"),G=require("../../../../../components/_filters/filter-input/enum");const V=(e,t,r)=>{const o=t.name,{name:i}=e,s=r?.url?.request?.fullUrl,p=r?.executionId;let a={};return s&&(a={share:{reportName:o,name:i,url:s},copy:{url:s}},p&&(a={...a,refresh:{url:s,executionId:p}})),O.default.getActions(a)},k=async({req:e,res:t,services:r,queryData:o})=>{const{token:i}=A.default.getValues(t),{reportId:s,id:p}=e.params,a=e.query.dataProductDefinitionsPath,d=await r.dashboardService.getDefinition(i,s,p,a,o),f=await F.default.getReportSummary(s,r.reportingService,i,a),n=await w.default.getFilters({fields:d.filterFields||[],req:e,filtersType:x.FiltersType.INTERACTIVE}),m=w.default.setRequestQueryFromFilterValues(n.filters);return{query:new v.default({fields:d.filterFields||[],queryParams:m,definitionsPath:a,reportType:g.ReportType.DASHBOARD}).toRecordWithFilterPrefix(!0),filters:n,dashboardDefinition:d,reportDefinition:f}},E=(e,t,r,o)=>e.sections.map(i=>{const{id:s,display:p,description:a}=i;let d=!1;const f=i.visualisations.map(n=>{const{type:m,display:R,description:D,id:b}=n;let u;switch(m){case l.DashboardVisualisationType.LIST:u=C.default.createList(n,t);break;case l.DashboardVisualisationType.SCORECARD:d=!0,u=new L.default().withDefinition(n).withData(t).build();break;case l.DashboardVisualisationType.SCORECARD_GROUP:u=new N.default().withDefinition(n).withData(t).build();break;case l.DashboardVisualisationType.BAR:case l.DashboardVisualisationType.LINE:case l.DashboardVisualisationType.DONUT:{u=I.default.createChart(n,t,m);break}case l.DashboardVisualisationType.MATRIX_TIMESERIES:case l.DashboardVisualisationType.BAR_TIMESERIES:case l.DashboardVisualisationType.LINE_TIMESERIES:{u=I.default.createTimeseriesCharts(n,t,m,r,o);break}default:break}return{id:b,title:R||"",description:D||"",type:m,data:u}});return d&&B.default.mergeScorecardsIntoGroup(f),{id:s,title:p||"",description:a||"",visualisations:f}}),Y=async(e,t,r,o,i,s)=>{const{requestedReportService:p}=e,a=await p.getReportByTableId(t,r);return o&&o.length&&a&&P.default.updateLastViewed({services:e,reportStateData:a,userId:r,req:i,filters:s}),a},Z=e=>{let t;const r=e.find(o=>o.type===G.FilterType.granularDateRange.toLowerCase());return r&&(t=r.value.partialDate),t},M=async({req:e,res:t,services:r})=>{const{token:o,csrfToken:i,dprUser:s,nestedBaseUrl:p}=A.default.getValues(t),{reportId:a,id:d,tableId:f}=e.params,{bookmarkService:n,requestedReportService:m}=r,{id:R}=s;let D=await m.getReportByTableId(f,R);const b=D?.query?.data,{query:u,filters:S,reportDefinition:T,dashboardDefinition:h}=await k({req:e,res:t,services:r,queryData:b}),_=(await r.dashboardService.getAsyncDashboard(o,d,a,f,u)).flat(),H=Z(S.filters),U=E(h,_,u,H);return m&&(D=await Y(r,f,s.id,U,e,S.filters)),{dashboardData:{token:o,id:d,reportId:a,name:h.name,description:h.description,reportName:T.name,bookmarked:await n.isBookmarked(d,a,s.id),nestedBaseUrl:p,csrfToken:i,sections:U,filters:S,type:g.ReportType.DASHBOARD,actions:V(h,T,D)}}};var $={renderAsyncDashboard:M,getDefinitionData:k,getSections:E,setDashboardActions:V};0&&(module.exports={renderAsyncDashboard});
|
|
2
2
|
//# sourceMappingURL=utils.js.map
|
|
@@ -1,7 +1,7 @@
|
|
|
1
1
|
{
|
|
2
2
|
"version": 3,
|
|
3
3
|
"sources": ["../../../../../../../src/dpr/routes/journeys/view-report/async/dashboard/utils.ts"],
|
|
4
|
-
"sourcesContent": ["import { Request, Response } from 'express'\nimport { Services } from '../../../../../types/Services'\nimport Dict = NodeJS.Dict\nimport {\n DashboardSection,\n DashboardVisualisation,\n DashboardVisualisationType,\n} from '../../../../../components/_dashboards/dashboard-visualisation/types'\nimport type { AsyncReportUtilsParams } from '../../../../../types/AsyncReportUtils'\n\nimport type { DashboardDataResponse } from '../../../../../types/Metrics'\nimport type { RequestedReport } from '../../../../../types/UserReports'\nimport { ReportType } from '../../../../../types/UserReports'\nimport type { components } from '../../../../../types/api'\n\nimport ChartUtils from '../../../../../components/_charts/utils'\nimport DefinitionUtils from '../../../../../utils/definitionUtils'\nimport UserReportsUtils from '../../../../../components/user-reports/utils'\nimport DashboardListUtils from '../../../../../components/_dashboards/dashboard-list/utils'\nimport FilterUtils from '../../../../../components/_filters/utils'\nimport ScorecardsUtils from '../../../../../components/_dashboards/scorecard/utils'\nimport ScorecardVisualisation from '../../../../../components/_dashboards/scorecard/Scorecard'\nimport ReportActionsUtils from '../../../../../components/_reports/report-actions/utils'\nimport ReportQuery from '../../../../../types/ReportQuery'\nimport LocalsHelper from '../../../../../utils/localsHelper'\nimport { FilterValue } from '../../../../../components/_filters/types'\nimport { FiltersType } from '../../../../../components/_filters/filtersTypeEnum'\n\nconst setDashboardActions = (\n dashboardDefinition: components['schemas']['DashboardDefinition'],\n reportDefinition: components['schemas']['ReportDefinitionSummary'],\n requestData?: RequestedReport,\n) => {\n const reportName = reportDefinition.name\n const { name } = dashboardDefinition\n const actionsUrl = requestData?.url?.request?.fullUrl\n const executionId = requestData?.executionId\n\n let actions = {}\n if (actionsUrl) {\n actions = {\n share: {\n reportName,\n name,\n url: actionsUrl,\n },\n copy: {\n url: actionsUrl,\n },\n }\n if (executionId) {\n actions = {\n ...actions,\n refresh: {\n url: actionsUrl,\n executionId,\n },\n }\n }\n }\n\n return ReportActionsUtils.getActions(actions)\n}\n\nconst getDefinitionData = async ({\n req,\n res,\n services,\n queryData,\n}: {\n req: Request\n res: Response\n services: Services\n queryData?: Dict<string | string[]> | undefined\n}) => {\n const { token } = LocalsHelper.getValues(res)\n const { reportId, id } = req.params\n const dataProductDefinitionsPath = <string>req.query['dataProductDefinitionsPath']\n\n // Dashboard Definition,\n const dashboardDefinition = await services.dashboardService.getDefinition(\n token,\n reportId,\n id,\n dataProductDefinitionsPath,\n queryData,\n )\n\n // Report summary data\n const reportDefinition = await DefinitionUtils.getReportSummary(\n reportId,\n services.reportingService,\n token,\n <string>dataProductDefinitionsPath,\n )\n\n // Get the filters\n const filtersData = await FilterUtils.getFilters({\n fields: dashboardDefinition.filterFields || [],\n req,\n filtersType: FiltersType.INTERACTIVE,\n })\n\n const filtersQuery = FilterUtils.setRequestQueryFromFilterValues(filtersData.filters)\n\n // Create the query\n const query = new ReportQuery({\n fields: dashboardDefinition.filterFields || [],\n queryParams: filtersQuery,\n definitionsPath: <string>dataProductDefinitionsPath,\n reportType: ReportType.DASHBOARD,\n }).toRecordWithFilterPrefix(true)\n\n return {\n query,\n filters: filtersData,\n dashboardDefinition,\n reportDefinition,\n }\n}\n\nconst getSections = (\n dashboardDefinition: components['schemas']['DashboardDefinition'],\n dashboardData: DashboardDataResponse[],\n query: Record<string, string | string[]>,\n): DashboardSection[] => {\n return dashboardDefinition.sections.map((section: components['schemas']['DashboardSectionDefinition']) => {\n const { id, display: title, description } = section\n\n let hasScorecard = false\n const visualisations: DashboardVisualisation[] = section.visualisations.map(\n (visDefinition: components['schemas']['DashboardVisualisationDefinition']) => {\n const { type, display, description: visDescription, id: visId } = visDefinition\n\n let data: DashboardVisualisation['data'] | undefined\n\n switch (type) {\n case DashboardVisualisationType.LIST:\n data = DashboardListUtils.createList(visDefinition, dashboardData)\n break\n\n case DashboardVisualisationType.SCORECARD:\n hasScorecard = true\n data = new ScorecardVisualisation(
|
|
5
|
-
"mappings": "0jBAAA,IAAAA,
|
|
6
|
-
"names": ["utils_exports", "__export", "utils_default", "renderAsyncDashboard", "__toCommonJS", "import_types", "import_UserReports", "import_utils", "import_definitionUtils", "import_Scorecard", "import_ReportQuery", "import_localsHelper", "import_filtersTypeEnum", "setDashboardActions", "dashboardDefinition", "reportDefinition", "requestData", "reportName", "name", "actionsUrl", "executionId", "actions", "ReportActionsUtils", "getDefinitionData", "req", "res", "services", "queryData", "token", "LocalsHelper", "reportId", "id", "dataProductDefinitionsPath", "DefinitionUtils", "filtersData", "FilterUtils", "filtersQuery", "ReportQuery", "getSections", "dashboardData", "query", "section", "title", "description", "hasScorecard", "visualisations", "visDefinition", "type", "display", "visDescription", "visId", "data", "DashboardListUtils", "ScorecardVisualisation", "ChartUtils", "ScorecardsUtils", "updateStore", "tableId", "userId", "sections", "filters", "requestedReportService", "dashboardRequestData", "UserReportsUtils", "csrfToken", "dprUser", "nestedBaseUrl", "bookmarkService", "flattenedData"]
|
|
4
|
+
"sourcesContent": ["import { Request, Response } from 'express'\nimport { Services } from '../../../../../types/Services'\nimport Dict = NodeJS.Dict\nimport {\n DashboardSection,\n DashboardVisualisation,\n DashboardVisualisationType,\n} from '../../../../../components/_dashboards/dashboard-visualisation/types'\nimport type { AsyncReportUtilsParams } from '../../../../../types/AsyncReportUtils'\n\nimport type { DashboardDataResponse } from '../../../../../types/Metrics'\nimport type { RequestedReport } from '../../../../../types/UserReports'\nimport { ReportType } from '../../../../../types/UserReports'\nimport type { components } from '../../../../../types/api'\n\nimport ChartUtils from '../../../../../components/_charts/utils'\nimport DefinitionUtils from '../../../../../utils/definitionUtils'\nimport UserReportsUtils from '../../../../../components/user-reports/utils'\nimport DashboardListUtils from '../../../../../components/_dashboards/dashboard-list/utils'\nimport FilterUtils from '../../../../../components/_filters/utils'\nimport ScorecardsUtils from '../../../../../components/_dashboards/scorecard/utils'\nimport ScorecardVisualisation from '../../../../../components/_dashboards/scorecard/Scorecard'\nimport ScorecardGroupVisualisation from '../../../../../components/_dashboards/scorecard-group/ScorecardGroup'\nimport ReportActionsUtils from '../../../../../components/_reports/report-actions/utils'\nimport ReportQuery from '../../../../../types/ReportQuery'\nimport LocalsHelper from '../../../../../utils/localsHelper'\nimport { FilterValue, GranularDateRangeFilterValue, PartialDate } from '../../../../../components/_filters/types'\nimport { FiltersType } from '../../../../../components/_filters/filtersTypeEnum'\nimport { FilterType } from '../../../../../components/_filters/filter-input/enum'\n\nconst setDashboardActions = (\n dashboardDefinition: components['schemas']['DashboardDefinition'],\n reportDefinition: components['schemas']['ReportDefinitionSummary'],\n requestData?: RequestedReport,\n) => {\n const reportName = reportDefinition.name\n const { name } = dashboardDefinition\n const actionsUrl = requestData?.url?.request?.fullUrl\n const executionId = requestData?.executionId\n\n let actions = {}\n if (actionsUrl) {\n actions = {\n share: {\n reportName,\n name,\n url: actionsUrl,\n },\n copy: {\n url: actionsUrl,\n },\n }\n if (executionId) {\n actions = {\n ...actions,\n refresh: {\n url: actionsUrl,\n executionId,\n },\n }\n }\n }\n\n return ReportActionsUtils.getActions(actions)\n}\n\nconst getDefinitionData = async ({\n req,\n res,\n services,\n queryData,\n}: {\n req: Request\n res: Response\n services: Services\n queryData?: Dict<string | string[]> | undefined\n}) => {\n const { token } = LocalsHelper.getValues(res)\n const { reportId, id } = req.params\n const dataProductDefinitionsPath = <string>req.query['dataProductDefinitionsPath']\n\n // Dashboard Definition,\n const dashboardDefinition = await services.dashboardService.getDefinition(\n token,\n reportId,\n id,\n dataProductDefinitionsPath,\n queryData,\n )\n\n // Report summary data\n const reportDefinition = await DefinitionUtils.getReportSummary(\n reportId,\n services.reportingService,\n token,\n <string>dataProductDefinitionsPath,\n )\n\n // Get the filters\n const filtersData = await FilterUtils.getFilters({\n fields: dashboardDefinition.filterFields || [],\n req,\n filtersType: FiltersType.INTERACTIVE,\n })\n\n const filtersQuery = FilterUtils.setRequestQueryFromFilterValues(filtersData.filters)\n\n // Create the query\n const query = new ReportQuery({\n fields: dashboardDefinition.filterFields || [],\n queryParams: filtersQuery,\n definitionsPath: <string>dataProductDefinitionsPath,\n reportType: ReportType.DASHBOARD,\n }).toRecordWithFilterPrefix(true)\n\n return {\n query,\n filters: filtersData,\n dashboardDefinition,\n reportDefinition,\n }\n}\n\nconst getSections = (\n dashboardDefinition: components['schemas']['DashboardDefinition'],\n dashboardData: DashboardDataResponse[],\n query: Record<string, string | string[]>,\n partialDate?: PartialDate,\n): DashboardSection[] => {\n return dashboardDefinition.sections.map((section: components['schemas']['DashboardSectionDefinition']) => {\n const { id, display: title, description } = section\n\n let hasScorecard = false\n const visualisations: DashboardVisualisation[] = section.visualisations.map(\n (visDefinition: components['schemas']['DashboardVisualisationDefinition']) => {\n const { type, display, description: visDescription, id: visId } = visDefinition\n\n let data: DashboardVisualisation['data'] | undefined\n\n switch (type) {\n case DashboardVisualisationType.LIST:\n data = DashboardListUtils.createList(visDefinition, dashboardData)\n break\n\n case DashboardVisualisationType.SCORECARD:\n hasScorecard = true\n data = new ScorecardVisualisation().withDefinition(visDefinition).withData(dashboardData).build()\n break\n\n case DashboardVisualisationType.SCORECARD_GROUP:\n data = new ScorecardGroupVisualisation().withDefinition(visDefinition).withData(dashboardData).build()\n break\n\n case DashboardVisualisationType.BAR:\n case DashboardVisualisationType.LINE:\n case DashboardVisualisationType.DONUT: {\n data = ChartUtils.createChart(visDefinition, dashboardData, type)\n break\n }\n case DashboardVisualisationType.MATRIX_TIMESERIES:\n case DashboardVisualisationType.BAR_TIMESERIES:\n case DashboardVisualisationType.LINE_TIMESERIES: {\n data = ChartUtils.createTimeseriesCharts(visDefinition, dashboardData, type, query, partialDate)\n break\n }\n default:\n break\n }\n\n return {\n id: visId,\n title: display || '',\n description: visDescription || '',\n type,\n data,\n }\n },\n )\n\n if (hasScorecard) ScorecardsUtils.mergeScorecardsIntoGroup(visualisations)\n\n return { id, title: title || '', description: description || '', visualisations }\n })\n}\n\nconst updateStore = async (\n services: Services,\n tableId: string,\n userId: string,\n sections: DashboardSection[],\n req: Request,\n filters: FilterValue[],\n): Promise<RequestedReport | undefined> => {\n const { requestedReportService } = services\n const dashboardRequestData = await requestedReportService.getReportByTableId(tableId, userId)\n\n // Add to recently viewed\n if (sections && sections.length && dashboardRequestData) {\n UserReportsUtils.updateLastViewed({\n services,\n reportStateData: dashboardRequestData,\n userId,\n req,\n filters,\n })\n }\n\n return dashboardRequestData\n}\n\nconst getPartialDate = (filters: FilterValue[]) => {\n let partialDate: PartialDate | undefined\n const granularDateRangeFilter = <GranularDateRangeFilterValue | undefined>(\n filters.find((f) => f.type === FilterType.granularDateRange.toLowerCase())\n )\n if (granularDateRangeFilter) {\n partialDate = granularDateRangeFilter.value.partialDate\n }\n return partialDate\n}\n\nexport const renderAsyncDashboard = async ({ req, res, services }: AsyncReportUtilsParams) => {\n const { token, csrfToken, dprUser, nestedBaseUrl } = LocalsHelper.getValues(res)\n const { reportId, id, tableId } = req.params\n const { bookmarkService, requestedReportService } = services\n const { id: userId } = dprUser\n\n let requestData: RequestedReport | undefined = await requestedReportService.getReportByTableId(tableId, userId)\n const queryData = requestData?.query?.data\n\n // Get the definition Data\n const { query, filters, reportDefinition, dashboardDefinition } = await getDefinitionData({\n req,\n res,\n services,\n queryData,\n })\n\n // Get the results data\n const dashboardData: DashboardDataResponse[][] = await services.dashboardService.getAsyncDashboard(\n token,\n id,\n reportId,\n tableId,\n query,\n )\n\n const flattenedData: DashboardDataResponse[] = dashboardData.flat()\n const partialDate = getPartialDate(filters.filters)\n\n // Get the dashboard parts\n const sections: DashboardSection[] = getSections(dashboardDefinition, flattenedData, query, partialDate)\n\n // Update the store\n if (requestedReportService) {\n requestData = await updateStore(services, tableId, dprUser.id, sections, req, filters.filters)\n }\n\n return {\n dashboardData: {\n token,\n id,\n reportId,\n name: dashboardDefinition.name,\n description: dashboardDefinition.description,\n reportName: reportDefinition.name,\n bookmarked: await bookmarkService.isBookmarked(id, reportId, dprUser.id),\n nestedBaseUrl,\n csrfToken,\n sections,\n filters,\n type: ReportType.DASHBOARD,\n actions: setDashboardActions(dashboardDefinition, reportDefinition, requestData),\n },\n }\n}\n\nexport default {\n renderAsyncDashboard,\n getDefinitionData,\n getSections,\n setDashboardActions,\n}\n"],
|
|
5
|
+
"mappings": "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",
|
|
6
|
+
"names": ["utils_exports", "__export", "utils_default", "renderAsyncDashboard", "__toCommonJS", "import_types", "import_UserReports", "import_utils", "import_definitionUtils", "import_Scorecard", "import_ScorecardGroup", "import_ReportQuery", "import_localsHelper", "import_filtersTypeEnum", "import_enum", "setDashboardActions", "dashboardDefinition", "reportDefinition", "requestData", "reportName", "name", "actionsUrl", "executionId", "actions", "ReportActionsUtils", "getDefinitionData", "req", "res", "services", "queryData", "token", "LocalsHelper", "reportId", "id", "dataProductDefinitionsPath", "DefinitionUtils", "filtersData", "FilterUtils", "filtersQuery", "ReportQuery", "getSections", "dashboardData", "query", "partialDate", "section", "title", "description", "hasScorecard", "visualisations", "visDefinition", "type", "display", "visDescription", "visId", "data", "DashboardListUtils", "ScorecardVisualisation", "ScorecardGroupVisualisation", "ChartUtils", "ScorecardsUtils", "updateStore", "tableId", "userId", "sections", "filters", "requestedReportService", "dashboardRequestData", "UserReportsUtils", "getPartialDate", "granularDateRangeFilter", "f", "csrfToken", "dprUser", "nestedBaseUrl", "bookmarkService", "flattenedData"]
|
|
7
7
|
}
|