@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.
Files changed (166) hide show
  1. package/dpr/components/_async/async-filters-form/types.d.js +1 -1
  2. package/dpr/components/_async/async-filters-form/types.d.js.map +1 -1
  3. package/dpr/components/_async/async-filters-form/types.d.ts +7 -4
  4. package/dpr/components/_async/async-filters-form/utils.js +1 -1
  5. package/dpr/components/_async/async-filters-form/utils.js.map +2 -2
  6. package/dpr/components/_async/async-filters-form/utils.ts +18 -17
  7. package/dpr/components/_catalogue/catalogue-list/utils.test.ts +1 -1
  8. package/dpr/components/_charts/chart/Chart.js +2 -0
  9. package/dpr/components/_charts/chart/Chart.js.map +7 -0
  10. package/dpr/components/_charts/chart/Chart.ts +89 -0
  11. package/dpr/components/_charts/chart/ChartColours.js +2 -0
  12. package/dpr/components/_charts/chart/ChartColours.js.map +7 -0
  13. package/dpr/components/_charts/chart/ChartColours.ts +36 -0
  14. package/dpr/components/_charts/chart/ChartTimeseries.js +2 -0
  15. package/dpr/components/_charts/chart/ChartTimeseries.js.map +7 -0
  16. package/dpr/components/_charts/chart/ChartTimeseries.ts +95 -0
  17. package/dpr/components/_charts/chart/bar/BarChart.js +2 -0
  18. package/dpr/components/_charts/chart/bar/BarChart.js.map +7 -0
  19. package/dpr/components/_charts/chart/bar/BarChart.ts +204 -0
  20. package/dpr/components/_charts/chart/bar/clientClass.mjs +0 -58
  21. package/dpr/components/_charts/chart/bar/types.js +2 -0
  22. package/dpr/components/_charts/chart/bar/types.js.map +7 -0
  23. package/dpr/components/_charts/chart/bar/types.ts +6 -0
  24. package/dpr/components/_charts/chart/bar/validate.js +2 -0
  25. package/dpr/components/_charts/chart/bar/validate.js.map +7 -0
  26. package/dpr/components/_charts/chart/bar/validate.ts +59 -0
  27. package/dpr/components/_charts/chart/bar-timeseries/BarTimeseriesChart.js +2 -0
  28. package/dpr/components/_charts/chart/bar-timeseries/BarTimeseriesChart.js.map +7 -0
  29. package/dpr/components/_charts/chart/bar-timeseries/BarTimeseriesChart.ts +57 -0
  30. package/dpr/components/_charts/chart/bar-timeseries/types.js +2 -0
  31. package/dpr/components/_charts/chart/bar-timeseries/types.js.map +7 -0
  32. package/dpr/components/_charts/chart/bar-timeseries/types.ts +5 -0
  33. package/dpr/components/_charts/chart/bar-timeseries/validate.js +2 -0
  34. package/dpr/components/_charts/chart/bar-timeseries/validate.js.map +7 -0
  35. package/dpr/components/_charts/chart/bar-timeseries/validate.ts +30 -0
  36. package/dpr/components/_charts/chart/buckets/Buckets.js +2 -0
  37. package/dpr/components/_charts/chart/buckets/Buckets.js.map +7 -0
  38. package/dpr/components/_charts/chart/{Buckets.ts → buckets/Buckets.ts} +18 -14
  39. package/dpr/components/_charts/chart/buckets/types.js +2 -0
  40. package/dpr/components/_charts/chart/buckets/types.js.map +7 -0
  41. package/dpr/components/_charts/chart/buckets/types.ts +4 -0
  42. package/dpr/components/_charts/chart/buckets/validate.js +2 -0
  43. package/dpr/components/_charts/chart/buckets/validate.js.map +7 -0
  44. package/dpr/components/_charts/chart/buckets/validate.ts +15 -0
  45. package/dpr/components/_charts/chart/chart-config.js +2 -0
  46. package/dpr/components/_charts/chart/chart-config.js.map +7 -0
  47. package/dpr/components/_charts/chart/chart-config.ts +108 -0
  48. package/dpr/components/_charts/chart/clientClass.mjs +28 -106
  49. package/dpr/components/_charts/chart/doughnut/DoughnutChart.js +2 -0
  50. package/dpr/components/_charts/chart/doughnut/DoughnutChart.js.map +7 -0
  51. package/dpr/components/_charts/chart/doughnut/DoughnutChart.ts +77 -0
  52. package/dpr/components/_charts/chart/doughnut/clientClass.mjs +0 -45
  53. package/dpr/components/_charts/chart/doughnut/types.js +2 -0
  54. package/dpr/components/_charts/chart/doughnut/types.js.map +7 -0
  55. package/dpr/components/_charts/chart/doughnut/types.ts +5 -0
  56. package/dpr/components/_charts/chart/doughnut/validate.js +2 -0
  57. package/dpr/components/_charts/chart/doughnut/validate.js.map +7 -0
  58. package/dpr/components/_charts/chart/doughnut/validate.ts +30 -0
  59. package/dpr/components/_charts/chart/heatmap/HeatmapChart.js +1 -1
  60. package/dpr/components/_charts/chart/heatmap/HeatmapChart.js.map +3 -3
  61. package/dpr/components/_charts/chart/heatmap/HeatmapChart.ts +122 -44
  62. package/dpr/components/_charts/chart/heatmap/clientClass.mjs +7 -89
  63. package/dpr/components/_charts/chart/heatmap/types.js +1 -1
  64. package/dpr/components/_charts/chart/heatmap/types.js.map +1 -1
  65. package/dpr/components/_charts/chart/heatmap/types.ts +5 -0
  66. package/dpr/components/_charts/chart/heatmap/validate.js +2 -0
  67. package/dpr/components/_charts/chart/heatmap/validate.js.map +7 -0
  68. package/dpr/components/_charts/chart/heatmap/validate.ts +25 -0
  69. package/dpr/components/_charts/chart/line/LineChart.js +2 -0
  70. package/dpr/components/_charts/chart/line/LineChart.js.map +7 -0
  71. package/dpr/components/_charts/chart/line/LineChart.ts +89 -0
  72. package/dpr/components/_charts/chart/line/clientClass.mjs +5 -36
  73. package/dpr/components/_charts/chart/line/types.js +2 -0
  74. package/dpr/components/_charts/chart/line/types.js.map +7 -0
  75. package/dpr/components/_charts/chart/line/types.ts +5 -0
  76. package/dpr/components/_charts/chart/line/validate.js +2 -0
  77. package/dpr/components/_charts/chart/line/validate.js.map +7 -0
  78. package/dpr/components/_charts/chart/line/validate.ts +30 -0
  79. package/dpr/components/_charts/chart/line-timeseries/LineTimeseriesChart.js +2 -0
  80. package/dpr/components/_charts/chart/line-timeseries/LineTimeseriesChart.js.map +7 -0
  81. package/dpr/components/_charts/chart/line-timeseries/LineTimeseriesChart.ts +57 -0
  82. package/dpr/components/_charts/chart/line-timeseries/types.js +2 -0
  83. package/dpr/components/_charts/chart/line-timeseries/types.js.map +7 -0
  84. package/dpr/components/_charts/chart/line-timeseries/types.ts +5 -0
  85. package/dpr/components/_charts/chart/line-timeseries/validate.js +2 -0
  86. package/dpr/components/_charts/chart/line-timeseries/validate.js.map +7 -0
  87. package/dpr/components/_charts/chart/line-timeseries/validate.ts +30 -0
  88. package/dpr/components/_charts/chart/view.njk +8 -1
  89. package/dpr/components/_charts/chart-tabs/view.njk +15 -14
  90. package/dpr/components/_charts/utils.js +1 -1
  91. package/dpr/components/_charts/utils.js.map +3 -3
  92. package/dpr/components/_charts/utils.test.ts +9 -3
  93. package/dpr/components/_charts/utils.ts +59 -193
  94. package/dpr/components/_dashboards/dashboard-list/types.js +2 -0
  95. package/dpr/components/_dashboards/dashboard-list/types.js.map +7 -0
  96. package/dpr/components/_dashboards/dashboard-list/types.ts +4 -0
  97. package/dpr/components/_dashboards/dashboard-list/validate.js +2 -0
  98. package/dpr/components/_dashboards/dashboard-list/validate.js.map +7 -0
  99. package/dpr/components/_dashboards/dashboard-list/validate.ts +28 -0
  100. package/dpr/components/_dashboards/dashboard-visualisation/Validate.js +2 -0
  101. package/dpr/components/_dashboards/dashboard-visualisation/Validate.js.map +7 -0
  102. package/dpr/components/_dashboards/dashboard-visualisation/Validate.ts +71 -0
  103. package/dpr/components/_dashboards/dashboard-visualisation/types.js +1 -1
  104. package/dpr/components/_dashboards/dashboard-visualisation/types.js.map +2 -2
  105. package/dpr/components/_dashboards/dashboard-visualisation/types.ts +32 -2
  106. package/dpr/components/_dashboards/scorecard/Scorecard.js +1 -1
  107. package/dpr/components/_dashboards/scorecard/Scorecard.js.map +3 -3
  108. package/dpr/components/_dashboards/scorecard/Scorecard.ts +82 -213
  109. package/dpr/components/_dashboards/scorecard/types.js +1 -1
  110. package/dpr/components/_dashboards/scorecard/types.js.map +1 -1
  111. package/dpr/components/_dashboards/scorecard/types.ts +11 -1
  112. package/dpr/components/_dashboards/scorecard/validate.js +2 -0
  113. package/dpr/components/_dashboards/scorecard/validate.js.map +7 -0
  114. package/dpr/components/_dashboards/scorecard/validate.ts +36 -0
  115. package/dpr/components/_dashboards/scorecard-group/ScorecardGroup.js +2 -0
  116. package/dpr/components/_dashboards/scorecard-group/ScorecardGroup.js.map +7 -0
  117. package/dpr/components/_dashboards/scorecard-group/ScorecardGroup.ts +228 -0
  118. package/dpr/components/_dashboards/scorecard-group/types.js +2 -0
  119. package/dpr/components/_dashboards/scorecard-group/types.js.map +7 -0
  120. package/dpr/components/_dashboards/scorecard-group/types.ts +5 -0
  121. package/dpr/components/_dashboards/scorecard-group/validate.js +2 -0
  122. package/dpr/components/_dashboards/scorecard-group/validate.js.map +7 -0
  123. package/dpr/components/_dashboards/scorecard-group/validate.ts +37 -0
  124. package/dpr/components/_filters/filter-input/types.d.js.map +1 -1
  125. package/dpr/components/_filters/filter-input/types.d.ts +1 -1
  126. package/dpr/components/_filters/types.d.js.map +1 -1
  127. package/dpr/components/_filters/types.d.ts +6 -4
  128. package/dpr/components/_reports/report-actions/types.d.js.map +1 -1
  129. package/dpr/components/_reports/report-actions/types.d.ts +1 -1
  130. package/dpr/components/report-list/types.d.js.map +1 -1
  131. package/dpr/components/report-list/types.d.ts +1 -1
  132. package/dpr/data/types.d.js +1 -1
  133. package/dpr/data/types.d.js.map +1 -1
  134. package/dpr/data/types.d.ts +2 -1
  135. package/dpr/routes/journeys/view-report/async/dashboard/utils.js +1 -1
  136. package/dpr/routes/journeys/view-report/async/dashboard/utils.js.map +3 -3
  137. package/dpr/routes/journeys/view-report/async/dashboard/utils.ts +22 -10
  138. package/dpr/routes/journeys/view-report/async/report/utils.js +1 -1
  139. package/dpr/routes/journeys/view-report/async/report/utils.js.map +2 -2
  140. package/dpr/routes/journeys/view-report/async/report/utils.ts +1 -1
  141. package/dpr/routes/journeys/view-report/controller.js +1 -1
  142. package/dpr/routes/journeys/view-report/controller.js.map +3 -3
  143. package/dpr/routes/journeys/view-report/controller.ts +3 -1
  144. package/dpr/types/Services.d.js +1 -1
  145. package/dpr/types/Services.d.js.map +1 -1
  146. package/dpr/types/Services.d.ts +0 -2
  147. package/dpr/utils/DataTableBuilder/types.d.js +1 -1
  148. package/dpr/utils/DataTableBuilder/types.d.js.map +1 -1
  149. package/dpr/utils/DataTableBuilder/types.d.ts +2 -2
  150. package/dpr/utils/ErrorHandler.js +1 -1
  151. package/dpr/utils/ErrorHandler.js.map +3 -3
  152. package/dpr/utils/ErrorHandler.ts +16 -0
  153. package/dpr/utils/ParentChildDataTableBuilder/types.d.js +1 -1
  154. package/dpr/utils/ParentChildDataTableBuilder/types.d.js.map +1 -1
  155. package/dpr/utils/ParentChildDataTableBuilder/types.d.ts +1 -0
  156. package/dpr/utils/Personalisation/types.d.js +1 -1
  157. package/dpr/utils/Personalisation/types.d.js.map +1 -1
  158. package/dpr/utils/Personalisation/types.d.ts +1 -0
  159. package/dpr/utils/UserStoreItemBuilder.js.map +2 -2
  160. package/dpr/utils/UserStoreItemBuilder.ts +1 -1
  161. package/package.json +1 -1
  162. package/dpr/components/_charts/chart/Buckets.js +0 -2
  163. package/dpr/components/_charts/chart/Buckets.js.map +0 -7
  164. package/dpr/components/_dashboards/dashboard-visualisation/DashboardVisualisation.js +0 -2
  165. package/dpr/components/_dashboards/dashboard-visualisation/DashboardVisualisation.js.map +0 -7
  166. 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,5 @@
1
+ import z from 'zod'
2
+ import ScorecardSchema from './validate'
3
+
4
+ export type ScorecardGroupDefinitionType = z.infer<typeof ScorecardSchema.ScorecardGroupSchema>
5
+ export type ScorecardGroupDefinitionMeasure = z.infer<typeof ScorecardSchema.ScorecardGroupColumn>
@@ -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
  }
@@ -13,7 +13,7 @@ export interface GenericFilterValue {
13
13
  text: string
14
14
  name: string
15
15
  type: FilterType
16
- value?: string
16
+ value?: string | DateRange
17
17
  options?: Array<FilterOption>
18
18
  minimumLength?: number
19
19
  dynamicResourceEndpoint?: string
@@ -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 start: boolean\n end: boolean\n }\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"],
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
- start: boolean
86
- end: boolean
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,4 +1,4 @@
1
- import { LoadType } from '../../../types/UserReports'
1
+ import { LoadType, ReportType } from '../../../types/UserReports'
2
2
 
3
3
  export interface DownloadActionParams {
4
4
  enabled: boolean
@@ -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
@@ -1,2 +1,2 @@
1
- "use strict";var i=Object.defineProperty;var a=Object.getOwnPropertyDescriptor;var o=Object.getOwnPropertyNames;var g=Object.prototype.hasOwnProperty;var f=(e,t,s,r)=>{if(t&&typeof t=="object"||typeof t=="function")for(let n of o(t))!g.call(e,n)&&n!==s&&i(e,n,{get:()=>t[n],enumerable:!(r=a(t,n))||r.enumerable});return e};var c=e=>f(i({},"__esModule",{value:!0}),e);var d={};module.exports=c(d);
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
@@ -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
  }
@@ -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 v=Object.create;var y=Object.defineProperty;var H=Object.getOwnPropertyDescriptor;var Q=Object.getOwnPropertyNames;var G=Object.getPrototypeOf,J=Object.prototype.hasOwnProperty;var W=(e,t)=>{for(var r in t)y(e,r,{get:t[r],enumerable:!0})},E=(e,t,r,a)=>{if(t&&typeof t=="object"||typeof t=="function")for(let o of Q(t))!J.call(e,o)&&o!==r&&y(e,o,{get:()=>t[o],enumerable:!(a=H(t,o))||a.enumerable});return e};var d=(e,t,r)=>(r=e!=null?v(G(e)):{},E(t||!e||!e.__esModule?y(r,"default",{value:e,enumerable:!0}):r,e)),X=e=>E(y({},"__esModule",{value:!0}),e);var K={};W(K,{default:()=>z,renderAsyncDashboard:()=>O});module.exports=X(K);var m=require("../../../../../components/_dashboards/dashboard-visualisation/types"),S=require("../../../../../types/UserReports"),b=d(require("../../../../../components/_charts/utils")),F=d(require("../../../../../utils/definitionUtils")),C=d(require("../../../../../components/user-reports/utils")),B=d(require("../../../../../components/_dashboards/dashboard-list/utils")),g=d(require("../../../../../components/_filters/utils")),L=d(require("../../../../../components/_dashboards/scorecard/utils")),I=d(require("../../../../../components/_dashboards/scorecard/Scorecard")),N=d(require("../../../../../components/_reports/report-actions/utils")),x=d(require("../../../../../types/ReportQuery")),A=d(require("../../../../../utils/localsHelper")),M=require("../../../../../components/_filters/filtersTypeEnum");const w=(e,t,r)=>{const a=t.name,{name:o}=e,i=r?.url?.request?.fullUrl,c=r?.executionId;let s={};return i&&(s={share:{reportName:a,name:o,url:i},copy:{url:i}},c&&(s={...s,refresh:{url:i,executionId:c}})),N.default.getActions(s)},V=async({req:e,res:t,services:r,queryData:a})=>{const{token:o}=A.default.getValues(t),{reportId:i,id:c}=e.params,s=e.query.dataProductDefinitionsPath,p=await r.dashboardService.getDefinition(o,i,c,s,a),n=await F.default.getReportSummary(i,r.reportingService,o,s),u=await g.default.getFilters({fields:p.filterFields||[],req:e,filtersType:M.FiltersType.INTERACTIVE}),f=g.default.setRequestQueryFromFilterValues(u.filters);return{query:new x.default({fields:p.filterFields||[],queryParams:f,definitionsPath:s,reportType:S.ReportType.DASHBOARD}).toRecordWithFilterPrefix(!0),filters:u,dashboardDefinition:p,reportDefinition:n}},P=(e,t,r)=>e.sections.map(a=>{const{id:o,display:i,description:c}=a;let s=!1;const p=a.visualisations.map(n=>{const{type:u,display:f,description:D,id:R}=n;let l;switch(u){case m.DashboardVisualisationType.LIST:l=B.default.createList(n,t);break;case m.DashboardVisualisationType.SCORECARD:s=!0,l=new I.default(t,n).build();break;case m.DashboardVisualisationType.SCORECARD_GROUP:l=new I.default(t,n,!0).build();break;case m.DashboardVisualisationType.BAR:case m.DashboardVisualisationType.LINE:case m.DashboardVisualisationType.DONUT:{l=b.default.createChart(n,t);break}case m.DashboardVisualisationType.MATRIX_TIMESERIES:{l=b.default.createMatrixChart(n,t,r);break}case m.DashboardVisualisationType.BAR_TIMESERIES:case m.DashboardVisualisationType.LINE_TIMESERIES:{l=b.default.createTimeseriesCharts(n,t);break}default:break}return{id:R,title:f||"",description:D||"",type:u,data:l}});return s&&L.default.mergeScorecardsIntoGroup(p),{id:o,title:i||"",description:c||"",visualisations:p}}),j=async(e,t,r,a,o,i)=>{const{requestedReportService:c}=e,s=await c.getReportByTableId(t,r);return a&&a.length&&s&&C.default.updateLastViewed({services:e,reportStateData:s,userId:r,req:o,filters:i}),s},O=async({req:e,res:t,services:r})=>{const{token:a,csrfToken:o,dprUser:i,nestedBaseUrl:c}=A.default.getValues(t),{reportId:s,id:p,tableId:n}=e.params,{bookmarkService:u,requestedReportService:f}=r,{id:D}=i;let R=await f.getReportByTableId(n,D);const l=R?.query?.data,{query:U,filters:q,reportDefinition:T,dashboardDefinition:h}=await V({req:e,res:t,services:r,queryData:l}),_=(await r.dashboardService.getAsyncDashboard(a,p,s,n,U)).flat(),k=P(h,_,U);return f&&(R=await j(r,n,i.id,k,e,q.filters)),{dashboardData:{token:a,id:p,reportId:s,name:h.name,description:h.description,reportName:T.name,bookmarked:await u.isBookmarked(p,s,i.id),nestedBaseUrl:c,csrfToken:o,sections:k,filters:q,type:S.ReportType.DASHBOARD,actions:w(h,T,R)}}};var z={renderAsyncDashboard:O,getDefinitionData:V,getSections:P,setDashboardActions:w};0&&(module.exports={renderAsyncDashboard});
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(dashboardData, visDefinition).build()\n break\n\n case DashboardVisualisationType.SCORECARD_GROUP:\n data = new ScorecardVisualisation(dashboardData, visDefinition, true).build()\n break\n\n case DashboardVisualisationType.BAR:\n case DashboardVisualisationType.LINE:\n case DashboardVisualisationType.DONUT: {\n data = ChartUtils.createChart(visDefinition, dashboardData)\n break\n }\n case DashboardVisualisationType.MATRIX_TIMESERIES: {\n data = ChartUtils.createMatrixChart(visDefinition, dashboardData, query)\n break\n }\n case DashboardVisualisationType.BAR_TIMESERIES:\n case DashboardVisualisationType.LINE_TIMESERIES: {\n data = ChartUtils.createTimeseriesCharts(visDefinition, dashboardData)\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\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\n // Get the dashboard parts\n const sections: DashboardSection[] = getSections(dashboardDefinition, flattenedData, query)\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_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
  }