@ministryofjustice/hmpps-digital-prison-reporting-frontend 4.28.7 → 4.29.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 (194) hide show
  1. package/dpr/all.js +6 -8
  2. package/dpr/all.js.map +3 -3
  3. package/dpr/all.scss +296 -414
  4. package/dpr/all.ts +6 -11
  5. package/dpr/components/_catalogue/catalogue-list/utils.test.ts +1 -1
  6. package/dpr/components/_charts/chart/clientClass.js +1 -0
  7. package/dpr/components/_charts/chart/clientClass.js.map +2 -2
  8. package/dpr/components/_charts/chart/clientClass.ts +1 -0
  9. package/dpr/components/_reports/{report-actions → report-heading/report-actions}/actionsTemplate.js.map +1 -1
  10. package/dpr/components/_reports/{report-actions → report-heading/report-actions}/clientClass.js +1 -1
  11. package/dpr/components/_reports/report-heading/report-actions/clientClass.js.map +7 -0
  12. package/dpr/components/_reports/{report-actions → report-heading/report-actions}/clientClass.ts +1 -1
  13. package/dpr/components/_reports/report-heading/report-actions/types.d.js.map +7 -0
  14. package/dpr/components/_reports/{report-actions → report-heading/report-actions}/types.d.ts +1 -1
  15. package/dpr/components/_reports/{report-actions → report-heading/report-actions}/utils.js.map +1 -1
  16. package/dpr/components/_reports/{report-actions → report-heading/report-actions}/utils.test.ts +2 -2
  17. package/dpr/components/_reports/{report-columns-form → report-heading/report-columns/report-columns-form}/clientClass.js +1 -3
  18. package/dpr/components/_reports/report-heading/report-columns/report-columns-form/clientClass.js.map +7 -0
  19. package/dpr/components/_reports/{report-columns-form → report-heading/report-columns/report-columns-form}/clientClass.ts +1 -3
  20. package/dpr/components/_reports/{report-columns-form → report-heading/report-columns/report-columns-form}/types.d.js.map +1 -1
  21. package/dpr/components/_reports/{report-columns-form → report-heading/report-columns/report-columns-form}/utils.js +1 -1
  22. package/dpr/components/_reports/report-heading/report-columns/report-columns-form/utils.js.map +7 -0
  23. package/dpr/components/_reports/{report-columns-form → report-heading/report-columns/report-columns-form}/utils.ts +2 -2
  24. package/dpr/components/_reports/{report-columns → report-heading/report-columns}/view.njk +1 -1
  25. package/dpr/components/_reports/{report-download-message → report-heading/report-download-message}/clientClass.js +1 -1
  26. package/dpr/components/_reports/report-heading/report-download-message/clientClass.js.map +7 -0
  27. package/dpr/components/_reports/{report-download-message → report-heading/report-download-message}/clientClass.ts +1 -1
  28. package/dpr/components/_reports/{report-filters → report-heading/report-filters}/view.njk +1 -1
  29. package/dpr/components/_reports/report-heading/view.njk +4 -4
  30. package/dpr/components/_reports/report-page/report-print-message/view.njk +10 -0
  31. package/dpr/components/_reports/report-page/report-template/report-no-data-message/styles.scss +8 -0
  32. package/dpr/components/_reports/report-page/report-template/report-no-data-message/view.njk +11 -0
  33. package/dpr/components/_reports/{report-pagination → report-page/report-template/report-pagination}/clientClass.js +1 -1
  34. package/dpr/components/_reports/report-page/report-template/report-pagination/clientClass.js.map +7 -0
  35. package/dpr/components/_reports/{report-pagination → report-page/report-template/report-pagination}/clientClass.ts +1 -1
  36. package/dpr/components/_reports/{report-pagination → report-page/report-template/report-pagination}/types.d.js.map +1 -1
  37. package/dpr/components/_reports/{report-pagination → report-page/report-template/report-pagination}/utils.js.map +1 -1
  38. package/dpr/components/_reports/report-page/report-template/report-section/parent-child-template/styles.scss +88 -0
  39. package/dpr/components/_reports/report-page/report-template/report-section/parent-child-template/view.njk +29 -0
  40. package/dpr/components/_reports/{report-data-table → report-page/report-template/report-section/report-data-table}/clientClass.js +17 -10
  41. package/dpr/components/_reports/report-page/report-template/report-section/report-data-table/clientClass.js.map +7 -0
  42. package/dpr/components/_reports/{report-data-table → report-page/report-template/report-section/report-data-table}/clientClass.ts +20 -10
  43. package/dpr/components/_reports/{report-data-table → report-page/report-template/report-section/report-data-table}/style.scss +35 -185
  44. package/dpr/components/_reports/report-page/report-template/report-section/report-data-table/types.d.js.map +7 -0
  45. package/dpr/components/_reports/{report-data-table → report-page/report-template/report-section/report-data-table}/types.d.ts +2 -2
  46. package/dpr/components/_reports/report-page/report-template/report-section/report-data-table/view.njk +27 -0
  47. package/dpr/components/_reports/report-page/report-template/report-section/styles.scss +33 -0
  48. package/dpr/components/_reports/report-page/report-template/report-section/view.njk +58 -0
  49. package/dpr/components/_reports/{report-summary-table → report-page/report-template/report-summary-table}/styles.scss +21 -4
  50. package/dpr/components/_reports/{report-totals → report-page/report-template/report-totals}/utils.js.map +1 -1
  51. package/dpr/components/_reports/report-page/report-template/styles.scss +5 -0
  52. package/dpr/components/_reports/report-page/report-template/template-config.js +66 -0
  53. package/dpr/components/_reports/report-page/report-template/template-config.js.map +7 -0
  54. package/dpr/components/_reports/report-page/report-template/template-config.ts +45 -0
  55. package/dpr/components/_reports/report-page/report-template/utils.js +82 -0
  56. package/dpr/components/_reports/report-page/report-template/utils.js.map +7 -0
  57. package/dpr/components/_reports/report-page/report-template/utils.ts +100 -0
  58. package/dpr/components/_reports/report-page/report-template/view.njk +61 -0
  59. package/dpr/components/_reports/{report-wrapper → report-page}/styles.scss +7 -5
  60. package/dpr/components/_reports/report-page/view.njk +26 -0
  61. package/dpr/components/card-group/view.njk +0 -4
  62. package/dpr/components/report-list/utils.js +11 -3
  63. package/dpr/components/report-list/utils.js.map +2 -2
  64. package/dpr/components/report-list/utils.ts +11 -1
  65. package/dpr/components/report-list/view.njk +2 -2
  66. package/dpr/components/show-more/style.scss +3 -4
  67. package/dpr/data/reportingClient.js.map +2 -2
  68. package/dpr/data/reportingClient.ts +4 -4
  69. package/dpr/routes/journeys/view-report/async/dashboard/utils.js +1 -1
  70. package/dpr/routes/journeys/view-report/async/dashboard/utils.js.map +1 -1
  71. package/dpr/routes/journeys/view-report/async/dashboard/utils.ts +1 -1
  72. package/dpr/routes/journeys/view-report/async/report/controller.js.map +2 -2
  73. package/dpr/routes/journeys/view-report/async/report/controller.ts +0 -1
  74. package/dpr/routes/journeys/view-report/async/report/report-variants.cy.js +207 -56
  75. package/dpr/routes/journeys/view-report/async/report/report-variants.cy.js.map +2 -2
  76. package/dpr/routes/journeys/view-report/async/report/report-variants.cy.ts +333 -64
  77. package/dpr/routes/journeys/view-report/async/report/utils.js +9 -17
  78. package/dpr/routes/journeys/view-report/async/report/utils.js.map +3 -3
  79. package/dpr/routes/journeys/view-report/async/report/utils.ts +12 -22
  80. package/dpr/routes/journeys/view-report/report.njk +2 -2
  81. package/dpr/routes/journeys/view-report/sync/dashboard/utils.js +2 -2
  82. package/dpr/routes/journeys/view-report/sync/dashboard/utils.js.map +1 -1
  83. package/dpr/routes/journeys/view-report/sync/dashboard/utils.ts +2 -2
  84. package/dpr/routes/journeys/view-report/sync/report/utils.js +38 -11
  85. package/dpr/routes/journeys/view-report/sync/report/utils.js.map +3 -3
  86. package/dpr/routes/journeys/view-report/sync/report/utils.ts +39 -14
  87. package/dpr/routes/journeys/view-report/utils.js +1 -1
  88. package/dpr/routes/journeys/view-report/utils.js.map +1 -1
  89. package/dpr/routes/journeys/view-report/utils.ts +1 -1
  90. package/dpr/services/reportingService.js.map +2 -2
  91. package/dpr/services/reportingService.ts +2 -2
  92. package/dpr/types/ReportQuery.js +1 -1
  93. package/dpr/types/ReportQuery.js.map +1 -1
  94. package/dpr/types/ReportQuery.ts +1 -1
  95. package/dpr/types/UserReports.js.map +1 -1
  96. package/dpr/types/UserReports.ts +3 -3
  97. package/dpr/utils/TemplateBuilder/ParentChildDataBuilder/ParentChildDataBuilder.js +193 -0
  98. package/dpr/utils/TemplateBuilder/ParentChildDataBuilder/ParentChildDataBuilder.js.map +7 -0
  99. package/dpr/utils/TemplateBuilder/ParentChildDataBuilder/ParentChildDataBuilder.ts +203 -0
  100. package/dpr/utils/TemplateBuilder/ParentChildDataBuilder/types.d.js.map +7 -0
  101. package/dpr/utils/TemplateBuilder/ParentChildDataBuilder/types.d.ts +36 -0
  102. package/dpr/utils/TemplateBuilder/ReportBuilder/ReportBuilder.js +114 -0
  103. package/dpr/utils/TemplateBuilder/ReportBuilder/ReportBuilder.js.map +7 -0
  104. package/dpr/utils/TemplateBuilder/ReportBuilder/ReportBuilder.ts +117 -0
  105. package/dpr/utils/TemplateBuilder/ReportBuilder/types.d.js.map +7 -0
  106. package/dpr/utils/TemplateBuilder/ReportBuilder/types.d.ts +6 -0
  107. package/dpr/utils/TemplateBuilder/SectionedDataHelper/SectionedDataHelper.js +202 -0
  108. package/dpr/utils/TemplateBuilder/SectionedDataHelper/SectionedDataHelper.js.map +7 -0
  109. package/dpr/utils/TemplateBuilder/SectionedDataHelper/SectionedDataHelper.ts +246 -0
  110. package/dpr/utils/TemplateBuilder/SectionedDataHelper/types.js +17 -0
  111. package/dpr/utils/TemplateBuilder/SectionedDataHelper/types.js.map +7 -0
  112. package/dpr/utils/TemplateBuilder/SectionedDataHelper/types.ts +41 -0
  113. package/dpr/utils/{CollatedSummaryBuilder/CollatedSummaryBuilder.js → TemplateBuilder/SummaryDataHelper/SummaryDataHelper.js} +6 -8
  114. package/dpr/utils/TemplateBuilder/SummaryDataHelper/SummaryDataHelper.js.map +7 -0
  115. package/dpr/utils/{CollatedSummaryBuilder/CollatedSummaryBuilder.test.ts → TemplateBuilder/SummaryDataHelper/SummaryDataHelper.test.ts} +4 -4
  116. package/dpr/utils/{CollatedSummaryBuilder/CollatedSummaryBuilder.ts → TemplateBuilder/SummaryDataHelper/SummaryDataHelper.ts} +6 -9
  117. package/dpr/utils/TemplateBuilder/TemplateBuilder.js +74 -0
  118. package/dpr/utils/TemplateBuilder/TemplateBuilder.js.map +7 -0
  119. package/dpr/utils/TemplateBuilder/TemplateBuilder.ts +68 -0
  120. package/dpr/utils/definitionUtils.js +22 -2
  121. package/dpr/utils/definitionUtils.js.map +2 -2
  122. package/dpr/utils/definitionUtils.ts +26 -1
  123. package/package.json +1 -1
  124. package/dpr/DprLoadingHelper.js +0 -51
  125. package/dpr/DprLoadingHelper.js.map +0 -7
  126. package/dpr/DprLoadingHelper.ts +0 -27
  127. package/dpr/components/_reports/report/view.njk +0 -40
  128. package/dpr/components/_reports/report-actions/clientClass.js.map +0 -7
  129. package/dpr/components/_reports/report-actions/types.d.js.map +0 -7
  130. package/dpr/components/_reports/report-columns-form/clientClass.js.map +0 -7
  131. package/dpr/components/_reports/report-columns-form/utils.js.map +0 -7
  132. package/dpr/components/_reports/report-data-table/clientClass.js.map +0 -7
  133. package/dpr/components/_reports/report-data-table/types.d.js.map +0 -7
  134. package/dpr/components/_reports/report-data-table/utils.js +0 -123
  135. package/dpr/components/_reports/report-data-table/utils.js.map +0 -7
  136. package/dpr/components/_reports/report-data-table/utils.test.ts +0 -604
  137. package/dpr/components/_reports/report-data-table/utils.ts +0 -150
  138. package/dpr/components/_reports/report-data-table/view.njk +0 -24
  139. package/dpr/components/_reports/report-data-table-wrapper/view.njk +0 -27
  140. package/dpr/components/_reports/report-download-message/clientClass.js.map +0 -7
  141. package/dpr/components/_reports/report-no-data-message/styles.scss +0 -4
  142. package/dpr/components/_reports/report-no-data-message/view.njk +0 -13
  143. package/dpr/components/_reports/report-pagination/clientClass.js.map +0 -7
  144. package/dpr/components/_reports/report-print-message/view.njk +0 -8
  145. package/dpr/components/_reports/report-template/view.njk +0 -44
  146. package/dpr/components/_reports/report-wrapper/view.njk +0 -19
  147. package/dpr/components/loading-anim/styles.scss +0 -117
  148. package/dpr/components/loading-anim/view.njk +0 -18
  149. package/dpr/utils/CollatedSummaryBuilder/CollatedSummaryBuilder.js.map +0 -7
  150. package/dpr/utils/ParentChildDataTableBuilder/ParentChildDataTableBuilder.js +0 -202
  151. package/dpr/utils/ParentChildDataTableBuilder/ParentChildDataTableBuilder.js.map +0 -7
  152. package/dpr/utils/ParentChildDataTableBuilder/ParentChildDataTableBuilder.test.ts +0 -503
  153. package/dpr/utils/ParentChildDataTableBuilder/ParentChildDataTableBuilder.ts +0 -224
  154. package/dpr/utils/ParentChildDataTableBuilder/types.d.js.map +0 -7
  155. package/dpr/utils/ParentChildDataTableBuilder/types.d.ts +0 -11
  156. package/dpr/utils/SectionedDataTableBuilder/SectionedDataTableBuilder.js +0 -311
  157. package/dpr/utils/SectionedDataTableBuilder/SectionedDataTableBuilder.js.map +0 -7
  158. package/dpr/utils/SectionedDataTableBuilder/SectionedDataTableBuilder.test.ts +0 -492
  159. package/dpr/utils/SectionedDataTableBuilder/SectionedDataTableBuilder.ts +0 -342
  160. package/dpr/utils/SectionedDataTableBuilder/types.d.js.map +0 -7
  161. package/dpr/utils/SectionedDataTableBuilder/types.d.ts +0 -5
  162. package/dpr/utils/SectionedFieldsTableBuilder/SectionedFieldsTableBuilder.js +0 -146
  163. package/dpr/utils/SectionedFieldsTableBuilder/SectionedFieldsTableBuilder.js.map +0 -7
  164. package/dpr/utils/SectionedFieldsTableBuilder/SectionedFieldsTableBuilder.test.ts +0 -140
  165. package/dpr/utils/SectionedFieldsTableBuilder/SectionedFieldsTableBuilder.ts +0 -150
  166. /package/dpr/components/_reports/{report-actions → report-heading/report-actions}/actionsTemplate.js +0 -0
  167. /package/dpr/components/_reports/{report-actions → report-heading/report-actions}/actionsTemplate.ts +0 -0
  168. /package/dpr/components/_reports/{report-actions → report-heading/report-actions}/style.scss +0 -0
  169. /package/dpr/components/_reports/{report-actions → report-heading/report-actions}/types.d.js +0 -0
  170. /package/dpr/components/_reports/{report-actions → report-heading/report-actions}/utils.js +0 -0
  171. /package/dpr/components/_reports/{report-actions → report-heading/report-actions}/utils.ts +0 -0
  172. /package/dpr/components/_reports/{report-actions → report-heading/report-actions}/view.njk +0 -0
  173. /package/dpr/components/_reports/{report-columns-form → report-heading/report-columns/report-columns-form}/style.scss +0 -0
  174. /package/dpr/components/_reports/{report-columns-form → report-heading/report-columns/report-columns-form}/types.d.js +0 -0
  175. /package/dpr/components/_reports/{report-columns-form → report-heading/report-columns/report-columns-form}/types.d.ts +0 -0
  176. /package/dpr/components/_reports/{report-columns-form → report-heading/report-columns/report-columns-form}/view.njk +0 -0
  177. /package/dpr/components/_reports/{report-columns → report-heading/report-columns}/styles.scss +0 -0
  178. /package/dpr/components/_reports/{report-download-message → report-heading/report-download-message}/style.scss +0 -0
  179. /package/dpr/components/_reports/{report-download-message → report-heading/report-download-message}/view.njk +0 -0
  180. /package/dpr/components/_reports/{report-pagination → report-page/report-template/report-pagination}/style.scss +0 -0
  181. /package/dpr/components/_reports/{report-data-table → report-page/report-template/report-pagination}/types.d.js +0 -0
  182. /package/dpr/components/_reports/{report-pagination → report-page/report-template/report-pagination}/types.d.ts +0 -0
  183. /package/dpr/components/_reports/{report-pagination → report-page/report-template/report-pagination}/utils.js +0 -0
  184. /package/dpr/components/_reports/{report-pagination → report-page/report-template/report-pagination}/utils.test.ts +0 -0
  185. /package/dpr/components/_reports/{report-pagination → report-page/report-template/report-pagination}/utils.ts +0 -0
  186. /package/dpr/components/_reports/{report-pagination → report-page/report-template/report-pagination}/view.njk +0 -0
  187. /package/dpr/components/_reports/{report-pagination → report-page/report-template/report-section/report-data-table}/types.d.js +0 -0
  188. /package/dpr/components/_reports/{report-summary-table → report-page/report-template/report-summary-table}/view.njk +0 -0
  189. /package/dpr/components/_reports/{report-totals → report-page/report-template/report-totals}/style.scss +0 -0
  190. /package/dpr/components/_reports/{report-totals → report-page/report-template/report-totals}/utils.js +0 -0
  191. /package/dpr/components/_reports/{report-totals → report-page/report-template/report-totals}/utils.ts +0 -0
  192. /package/dpr/components/_reports/{report-totals → report-page/report-template/report-totals}/view.njk +0 -0
  193. /package/dpr/utils/{ParentChildDataTableBuilder → TemplateBuilder/ParentChildDataBuilder}/types.d.js +0 -0
  194. /package/dpr/utils/{SectionedDataTableBuilder → TemplateBuilder/ReportBuilder}/types.d.js +0 -0
@@ -1,492 +0,0 @@
1
- import { expect } from '@jest/globals'
2
- import Dict = NodeJS.Dict
3
- import { components } from '../../types/api'
4
- import SectionedDataTableBuilder from './SectionedDataTableBuilder'
5
-
6
- const data: Array<Dict<string>> = [
7
- {
8
- sectionOne: 'A',
9
- sectionTwo: '01/02/03',
10
- oranges: '5',
11
- lemons: 'Yes',
12
- },
13
- {
14
- sectionOne: 'A',
15
- sectionTwo: '01/02/03',
16
- oranges: '6',
17
- lemons: 'No',
18
- },
19
- {
20
- sectionOne: 'A',
21
- sectionTwo: '02/01/03',
22
- oranges: '7',
23
- lemons: 'Yeah',
24
- },
25
- {
26
- sectionOne: 'B',
27
- sectionTwo: '02/01/03',
28
- oranges: '8',
29
- lemons: 'Nah',
30
- },
31
- ]
32
- const fields: Array<components['schemas']['FieldDefinition']> = [
33
- {
34
- header: false,
35
- name: 'sectionOne',
36
- display: 'Section One',
37
- sortable: true,
38
- defaultsort: false,
39
- type: 'string',
40
- mandatory: false,
41
- visible: false,
42
- calculated: false,
43
- },
44
- {
45
- header: false,
46
- name: 'sectionTwo',
47
- display: 'Section Two',
48
- sortable: true,
49
- defaultsort: false,
50
- type: 'string',
51
- mandatory: false,
52
- visible: false,
53
- calculated: false,
54
- },
55
- {
56
- header: false,
57
- name: 'oranges',
58
- display: 'Oranges!',
59
- sortable: true,
60
- defaultsort: true,
61
- type: 'long',
62
- mandatory: false,
63
- visible: true,
64
- calculated: false,
65
- },
66
- {
67
- header: false,
68
- name: 'lemons',
69
- display: 'Lemons?!',
70
- sortable: true,
71
- defaultsort: false,
72
- type: 'string',
73
- mandatory: false,
74
- visible: true,
75
- calculated: false,
76
- },
77
- ]
78
- const specification: components['schemas']['Specification'] = {
79
- fields,
80
- template: 'list-section',
81
- sections: ['sectionOne', 'sectionTwo'],
82
- }
83
-
84
- const headerResultRow = [
85
- {
86
- classes: 'govuk-table__header',
87
- text: 'Oranges!',
88
- },
89
- {
90
- classes: 'govuk-table__header',
91
- text: 'Lemons?!',
92
- },
93
- ]
94
- const resultRows = [
95
- [
96
- {
97
- classes: '',
98
- fieldName: 'oranges',
99
- format: 'numeric',
100
- text: '5',
101
- },
102
- {
103
- classes: '',
104
- fieldName: 'lemons',
105
- format: 'string',
106
- text: 'Yes',
107
- },
108
- ],
109
- [
110
- {
111
- classes: '',
112
- fieldName: 'oranges',
113
- format: 'numeric',
114
- text: '6',
115
- },
116
- {
117
- classes: '',
118
- fieldName: 'lemons',
119
- format: 'string',
120
- text: 'No',
121
- },
122
- ],
123
- [
124
- {
125
- classes: '',
126
- fieldName: 'oranges',
127
- format: 'numeric',
128
- text: '7',
129
- },
130
- {
131
- classes: '',
132
- fieldName: 'lemons',
133
- format: 'string',
134
- text: 'Yeah',
135
- },
136
- ],
137
- [
138
- {
139
- classes: '',
140
- fieldName: 'oranges',
141
- format: 'numeric',
142
- text: '8',
143
- },
144
- {
145
- classes: '',
146
- fieldName: 'lemons',
147
- format: 'string',
148
- text: 'Nah',
149
- },
150
- ],
151
- ]
152
- const sectionHeaders = [
153
- [
154
- [
155
- {
156
- classes: 'dpr-section-header-spacer',
157
- colspan: 2,
158
- text: '',
159
- },
160
- ],
161
- [
162
- {
163
- classes: 'dpr-section-header',
164
- colspan: 2,
165
- html: '<h2 class="govuk-heading-m">Section One: A, Section Two: 01/02/03 <span class=\'govuk-caption-m\'>2 results</span></h2>',
166
- },
167
- ],
168
- [
169
- {
170
- classes: 'dpr-section-header-spacer-bottom',
171
- colspan: 2,
172
- text: '',
173
- },
174
- ],
175
- ],
176
- [
177
- [
178
- {
179
- classes: 'dpr-section-header',
180
- colspan: 2,
181
- html: '<h2 class="govuk-heading-m">Section One: A, Section Two: 02/01/03 <span class=\'govuk-caption-m\'>1 result</span></h2>',
182
- },
183
- ],
184
- [
185
- {
186
- classes: 'dpr-section-header-spacer-bottom',
187
- colspan: 2,
188
- text: '',
189
- },
190
- ],
191
- ],
192
- [
193
- [
194
- {
195
- classes: 'dpr-section-header-spacer',
196
- colspan: 2,
197
- text: '',
198
- },
199
- ],
200
- [
201
- {
202
- classes: 'dpr-section-header',
203
- colspan: 2,
204
- html: '<h2 class="govuk-heading-m">Section One: B, Section Two: 02/01/03 <span class=\'govuk-caption-m\'>1 result</span></h2>',
205
- },
206
- ],
207
- [
208
- {
209
- classes: 'dpr-section-header-spacer-bottom',
210
- colspan: 2,
211
- text: '',
212
- },
213
- ],
214
- ],
215
- ]
216
- describe('SectionedDataTableBuilder', () => {
217
- it('Sections added correctly', () => {
218
- const mapped = new SectionedDataTableBuilder(specification)
219
- .withNoHeaderOptions(['oranges', 'lemons'])
220
- .buildTable(data)
221
-
222
- expect(mapped.rows).toEqual([
223
- ...sectionHeaders[1],
224
- headerResultRow,
225
- resultRows[2],
226
- ...sectionHeaders[0],
227
- headerResultRow,
228
- resultRows[0],
229
- resultRows[1],
230
- ...sectionHeaders[2],
231
- headerResultRow,
232
- resultRows[3],
233
- ])
234
- expect(mapped.head).toBeNull()
235
- expect(mapped.colCount).toEqual(2)
236
- expect(mapped.rowCount).toEqual(4)
237
- })
238
-
239
- it('Section table summaries added correctly', () => {
240
- const mapped = new SectionedDataTableBuilder(specification)
241
- .withNoHeaderOptions(['oranges', 'lemons'])
242
- .withSummaries({
243
- 'table-header': [
244
- {
245
- id: 'table-header',
246
- template: 'table-header',
247
- fields: [],
248
- data: [
249
- {
250
- sectionOne: 'A',
251
- sectionTwo: '01/02/03',
252
- oranges: 'Fruit',
253
- lemons: 'Lots',
254
- },
255
- {
256
- sectionOne: 'A',
257
- sectionTwo: '02/01/03',
258
- oranges: 'Fruit',
259
- lemons: 'Not so much',
260
- },
261
- ],
262
- },
263
- ],
264
- 'table-footer': [
265
- {
266
- id: 'table-footer',
267
- template: 'table-footer',
268
- fields: [],
269
- data: [
270
- {
271
- sectionOne: 'A',
272
- sectionTwo: '02/01/03',
273
- oranges: 'Strawberry',
274
- lemons: 'Lime',
275
- },
276
- {
277
- sectionOne: 'B',
278
- sectionTwo: '02/01/03',
279
- oranges: 'Apples',
280
- lemons: 'Oh no',
281
- },
282
- ],
283
- },
284
- ],
285
- })
286
- .buildTable(data)
287
-
288
- expect(mapped.rows).toEqual([
289
- ...sectionHeaders[1],
290
- headerResultRow,
291
- [
292
- {
293
- classes: 'dpr-report-summary-cell dpr-report-summary-cell-table-header',
294
- fieldName: 'oranges',
295
- format: 'numeric',
296
- text: 'Fruit',
297
- },
298
- {
299
- classes: 'dpr-report-summary-cell dpr-report-summary-cell-table-header',
300
- fieldName: 'lemons',
301
- format: 'string',
302
- text: 'Not so much',
303
- },
304
- ],
305
- resultRows[2],
306
- [
307
- {
308
- classes: 'dpr-report-summary-cell dpr-report-summary-cell-table-footer',
309
- fieldName: 'oranges',
310
- format: 'numeric',
311
- text: 'Strawberry',
312
- },
313
- {
314
- classes: 'dpr-report-summary-cell dpr-report-summary-cell-table-footer',
315
- fieldName: 'lemons',
316
- format: 'string',
317
- text: 'Lime',
318
- },
319
- ],
320
- ...sectionHeaders[0],
321
- headerResultRow,
322
- [
323
- {
324
- classes: 'dpr-report-summary-cell dpr-report-summary-cell-table-header',
325
- fieldName: 'oranges',
326
- format: 'numeric',
327
- text: 'Fruit',
328
- },
329
- {
330
- classes: 'dpr-report-summary-cell dpr-report-summary-cell-table-header',
331
- fieldName: 'lemons',
332
- format: 'string',
333
- text: 'Lots',
334
- },
335
- ],
336
- resultRows[0],
337
- resultRows[1],
338
- ...sectionHeaders[2],
339
- headerResultRow,
340
- resultRows[3],
341
- [
342
- {
343
- classes: 'dpr-report-summary-cell dpr-report-summary-cell-table-footer',
344
- fieldName: 'oranges',
345
- format: 'numeric',
346
- text: 'Apples',
347
- },
348
- {
349
- classes: 'dpr-report-summary-cell dpr-report-summary-cell-table-footer',
350
- fieldName: 'lemons',
351
- format: 'string',
352
- text: 'Oh no',
353
- },
354
- ],
355
- ])
356
- expect(mapped.head).toBeNull()
357
- expect(mapped.colCount).toEqual(2)
358
- expect(mapped.rowCount).toEqual(4)
359
- })
360
-
361
- it('Section summaries added correctly', () => {
362
- const mapped = new SectionedDataTableBuilder(specification)
363
- .withNoHeaderOptions(['oranges', 'lemons'])
364
- .withSummaries({
365
- 'section-header': [
366
- {
367
- id: 'section-header',
368
- template: 'section-header',
369
- fields: [
370
- {
371
- name: 'squishy',
372
- display: 'Squishy?',
373
- type: 'boolean',
374
- },
375
- ],
376
- data: [
377
- {
378
- sectionOne: 'A',
379
- sectionTwo: '01/02/03',
380
- squishy: 'Yes',
381
- },
382
- {
383
- sectionOne: 'A',
384
- sectionTwo: '02/01/03',
385
- squishy: 'No',
386
- },
387
- ],
388
- },
389
- ],
390
- 'section-footer': [
391
- {
392
- id: 'section-footer',
393
- template: 'section-footer',
394
- fields: [
395
- {
396
- name: 'preference',
397
- display: 'Preference',
398
- type: 'string',
399
- },
400
- {
401
- name: 'eaten',
402
- display: 'Eaten',
403
- type: 'long',
404
- },
405
- ],
406
- data: [
407
- {
408
- sectionOne: 'A',
409
- sectionTwo: '02/01/03',
410
- preference: 'Oranges',
411
- eaten: '2005',
412
- },
413
- {
414
- sectionOne: 'B',
415
- sectionTwo: '02/01/03',
416
- preference: 'NO',
417
- eaten: '0',
418
- },
419
- {
420
- sectionOne: 'B',
421
- sectionTwo: '02/01/03',
422
- preference: 'No, really',
423
- eaten: '0',
424
- },
425
- ],
426
- },
427
- ],
428
- })
429
- .buildTable(data)
430
-
431
- expect(mapped.rows).toEqual([
432
- ...sectionHeaders[1],
433
- [
434
- {
435
- classes: 'dpr-summary-cell',
436
- colspan: 2,
437
- html: "<div class='dpr-summary-container-group dpr-summary-container-group-section-header'><div class='dpr-summary-container'><table class='govuk-table'><thead class='govuk-table__head'><th scope='col' class='govuk-table__header'>Squishy?</th></thead><tbody class='govuk-table__body'><tr class='govuk-table__row'><td class='govuk-table__cell govuk-table__cell--string '>No</td></tr></tbody></table></div></div>",
438
- },
439
- ],
440
- headerResultRow,
441
- resultRows[2],
442
- [
443
- {
444
- classes: 'dpr-summary-cell',
445
- colspan: 2,
446
- html: "<div class='dpr-summary-container-group dpr-summary-container-group-section-footer'><div class='dpr-summary-container'><table class='govuk-table'><thead class='govuk-table__head'><th scope='col' class='govuk-table__header'>Preference</th><th scope='col' class='govuk-table__header'>Eaten</th></thead><tbody class='govuk-table__body'><tr class='govuk-table__row'><td class='govuk-table__cell govuk-table__cell--string '>Oranges</td><td class='govuk-table__cell govuk-table__cell--numeric '>2005</td></tr></tbody></table></div></div>",
447
- },
448
- ],
449
- ...sectionHeaders[0],
450
- [
451
- {
452
- classes: 'dpr-summary-cell',
453
- colspan: 2,
454
- html: "<div class='dpr-summary-container-group dpr-summary-container-group-section-header'><div class='dpr-summary-container'><table class='govuk-table'><thead class='govuk-table__head'><th scope='col' class='govuk-table__header'>Squishy?</th></thead><tbody class='govuk-table__body'><tr class='govuk-table__row'><td class='govuk-table__cell govuk-table__cell--string '>Yes</td></tr></tbody></table></div></div>",
455
- },
456
- ],
457
- headerResultRow,
458
- resultRows[0],
459
- resultRows[1],
460
- ...sectionHeaders[2],
461
- headerResultRow,
462
- resultRows[3],
463
- [
464
- {
465
- classes: 'dpr-summary-cell',
466
- colspan: 2,
467
- html: "<div class='dpr-summary-container-group dpr-summary-container-group-section-footer'><div class='dpr-summary-container'><table class='govuk-table'><thead class='govuk-table__head'><th scope='col' class='govuk-table__header'>Preference</th><th scope='col' class='govuk-table__header'>Eaten</th></thead><tbody class='govuk-table__body'><tr class='govuk-table__row'><td class='govuk-table__cell govuk-table__cell--string '>No, really</td><td class='govuk-table__cell govuk-table__cell--numeric '>0</td></tr><tr class='govuk-table__row'><td class='govuk-table__cell govuk-table__cell--string '>NO</td><td class='govuk-table__cell govuk-table__cell--numeric '>0</td></tr></tbody></table></div></div>",
468
- },
469
- ],
470
- ])
471
- expect(mapped.head).toBeNull()
472
- expect(mapped.colCount).toEqual(2)
473
- expect(mapped.rowCount).toEqual(4)
474
- })
475
-
476
- it('Large volumes of sections added correctly', () => {
477
- let bigData: Dict<string>[] = []
478
-
479
- for (let d = 0; d < 10000; d += 1) {
480
- bigData = bigData.concat(data)
481
- }
482
-
483
- const mapped = new SectionedDataTableBuilder(specification)
484
- .withNoHeaderOptions(['oranges', 'lemons'])
485
- .buildTable(bigData)
486
-
487
- expect(mapped.head).toBeNull()
488
- expect(mapped.colCount).toEqual(2)
489
- expect(mapped.rowCount).toEqual(40000)
490
- expect(mapped.rows.length).toEqual(40011)
491
- })
492
- })