@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
@@ -0,0 +1,74 @@
1
+ "use strict";
2
+ var __defProp = Object.defineProperty;
3
+ var __getOwnPropDesc = Object.getOwnPropertyDescriptor;
4
+ var __getOwnPropNames = Object.getOwnPropertyNames;
5
+ var __hasOwnProp = Object.prototype.hasOwnProperty;
6
+ var __export = (target, all) => {
7
+ for (var name in all)
8
+ __defProp(target, name, { get: all[name], enumerable: true });
9
+ };
10
+ var __copyProps = (to, from, except, desc) => {
11
+ if (from && typeof from === "object" || typeof from === "function") {
12
+ for (let key of __getOwnPropNames(from))
13
+ if (!__hasOwnProp.call(to, key) && key !== except)
14
+ __defProp(to, key, { get: () => from[key], enumerable: !(desc = __getOwnPropDesc(from, key)) || desc.enumerable });
15
+ }
16
+ return to;
17
+ };
18
+ var __toCommonJS = (mod) => __copyProps(__defProp({}, "__esModule", { value: true }), mod);
19
+ var TemplateBuilder_exports = {};
20
+ __export(TemplateBuilder_exports, {
21
+ TemplateBuilder: () => TemplateBuilder
22
+ });
23
+ module.exports = __toCommonJS(TemplateBuilder_exports);
24
+ var import_definitionUtils = require("../definitionUtils");
25
+ class TemplateBuilder {
26
+ variant;
27
+ specification;
28
+ columns = [];
29
+ sections = [];
30
+ data;
31
+ fields;
32
+ sectionFields = [];
33
+ template;
34
+ reportQuery;
35
+ interactive = false;
36
+ pageSummaries;
37
+ summaries;
38
+ constructor(variant) {
39
+ const { specification } = (0, import_definitionUtils.validateVariant)(variant);
40
+ const { template, fields, sections } = specification;
41
+ this.variant = variant;
42
+ this.interactive = Boolean(variant.interactive);
43
+ this.specification = specification;
44
+ this.template = template;
45
+ this.fields = fields;
46
+ this.sections = sections;
47
+ }
48
+ withColumns(columns) {
49
+ this.columns = columns;
50
+ return this;
51
+ }
52
+ withData(data) {
53
+ this.data = data;
54
+ return this;
55
+ }
56
+ withQuery(reportQuery) {
57
+ this.reportQuery = reportQuery;
58
+ return this;
59
+ }
60
+ withSummaries(summariesData) {
61
+ this.pageSummaries = summariesData.filter((summary) => {
62
+ return summary.template.includes("page");
63
+ });
64
+ this.summaries = summariesData.filter((summary) => {
65
+ return summary.template.includes("section") || summary.template.includes("table");
66
+ });
67
+ return this;
68
+ }
69
+ }
70
+ // Annotate the CommonJS export names for ESM import in node:
71
+ 0 && (module.exports = {
72
+ TemplateBuilder
73
+ });
74
+ //# sourceMappingURL=TemplateBuilder.js.map
@@ -0,0 +1,7 @@
1
+ {
2
+ "version": 3,
3
+ "sources": ["../../../dpr/utils/TemplateBuilder/TemplateBuilder.ts"],
4
+ "sourcesContent": ["import { AsyncSummary } from '../../types/UserReports'\nimport { Template } from '../../types/Templates'\nimport { components } from '../../types/api'\nimport ReportQuery from '../../types/ReportQuery'\nimport { validateVariant } from '../definitionUtils'\n\nexport class TemplateBuilder {\n variant: components['schemas']['VariantDefinition']\n\n specification: components['schemas']['Specification']\n\n columns: Array<string> = []\n\n sections: Array<string> = []\n\n data!: Array<Record<string, string>>\n\n fields: components['schemas']['FieldDefinition'][]\n\n sectionFields: components['schemas']['FieldDefinition'][] = []\n\n template: Template\n\n reportQuery!: ReportQuery\n\n interactive = false\n\n pageSummaries!: AsyncSummary[]\n\n summaries!: AsyncSummary[]\n\n constructor(variant: components['schemas']['VariantDefinition']) {\n const { specification } = validateVariant(variant)\n const { template, fields, sections } = specification\n\n this.variant = variant\n this.interactive = Boolean(variant.interactive)\n this.specification = specification\n this.template = template\n this.fields = fields\n this.sections = sections\n }\n\n withColumns(columns: string[]) {\n this.columns = columns\n return this\n }\n\n withData(data: Array<Record<string, string>>) {\n this.data = data\n return this\n }\n\n withQuery(reportQuery: ReportQuery) {\n this.reportQuery = reportQuery\n return this\n }\n\n withSummaries(summariesData: AsyncSummary[]) {\n this.pageSummaries = summariesData.filter((summary) => {\n return summary.template.includes('page')\n })\n this.summaries = summariesData.filter((summary) => {\n return summary.template.includes('section') || summary.template.includes('table')\n })\n return this\n }\n}\n"],
5
+ "mappings": ";;;;;;;;;;;;;;;;;;AAAA;AAAA;AAAA;AAAA;AAAA;AAIA,6BAAgC;AAEzB,MAAM,gBAAgB;AAAA,EAC3B;AAAA,EAEA;AAAA,EAEA,UAAyB,CAAC;AAAA,EAE1B,WAA0B,CAAC;AAAA,EAE3B;AAAA,EAEA;AAAA,EAEA,gBAA4D,CAAC;AAAA,EAE7D;AAAA,EAEA;AAAA,EAEA,cAAc;AAAA,EAEd;AAAA,EAEA;AAAA,EAEA,YAAY,SAAqD;AAC/D,UAAM,EAAE,cAAc,QAAI,wCAAgB,OAAO;AACjD,UAAM,EAAE,UAAU,QAAQ,SAAS,IAAI;AAEvC,SAAK,UAAU;AACf,SAAK,cAAc,QAAQ,QAAQ,WAAW;AAC9C,SAAK,gBAAgB;AACrB,SAAK,WAAW;AAChB,SAAK,SAAS;AACd,SAAK,WAAW;AAAA,EAClB;AAAA,EAEA,YAAY,SAAmB;AAC7B,SAAK,UAAU;AACf,WAAO;AAAA,EACT;AAAA,EAEA,SAAS,MAAqC;AAC5C,SAAK,OAAO;AACZ,WAAO;AAAA,EACT;AAAA,EAEA,UAAU,aAA0B;AAClC,SAAK,cAAc;AACnB,WAAO;AAAA,EACT;AAAA,EAEA,cAAc,eAA+B;AAC3C,SAAK,gBAAgB,cAAc,OAAO,CAAC,YAAY;AACrD,aAAO,QAAQ,SAAS,SAAS,MAAM;AAAA,IACzC,CAAC;AACD,SAAK,YAAY,cAAc,OAAO,CAAC,YAAY;AACjD,aAAO,QAAQ,SAAS,SAAS,SAAS,KAAK,QAAQ,SAAS,SAAS,OAAO;AAAA,IAClF,CAAC;AACD,WAAO;AAAA,EACT;AACF;",
6
+ "names": []
7
+ }
@@ -0,0 +1,68 @@
1
+ import { AsyncSummary } from '../../types/UserReports'
2
+ import { Template } from '../../types/Templates'
3
+ import { components } from '../../types/api'
4
+ import ReportQuery from '../../types/ReportQuery'
5
+ import { validateVariant } from '../definitionUtils'
6
+
7
+ export class TemplateBuilder {
8
+ variant: components['schemas']['VariantDefinition']
9
+
10
+ specification: components['schemas']['Specification']
11
+
12
+ columns: Array<string> = []
13
+
14
+ sections: Array<string> = []
15
+
16
+ data!: Array<Record<string, string>>
17
+
18
+ fields: components['schemas']['FieldDefinition'][]
19
+
20
+ sectionFields: components['schemas']['FieldDefinition'][] = []
21
+
22
+ template: Template
23
+
24
+ reportQuery!: ReportQuery
25
+
26
+ interactive = false
27
+
28
+ pageSummaries!: AsyncSummary[]
29
+
30
+ summaries!: AsyncSummary[]
31
+
32
+ constructor(variant: components['schemas']['VariantDefinition']) {
33
+ const { specification } = validateVariant(variant)
34
+ const { template, fields, sections } = specification
35
+
36
+ this.variant = variant
37
+ this.interactive = Boolean(variant.interactive)
38
+ this.specification = specification
39
+ this.template = template
40
+ this.fields = fields
41
+ this.sections = sections
42
+ }
43
+
44
+ withColumns(columns: string[]) {
45
+ this.columns = columns
46
+ return this
47
+ }
48
+
49
+ withData(data: Array<Record<string, string>>) {
50
+ this.data = data
51
+ return this
52
+ }
53
+
54
+ withQuery(reportQuery: ReportQuery) {
55
+ this.reportQuery = reportQuery
56
+ return this
57
+ }
58
+
59
+ withSummaries(summariesData: AsyncSummary[]) {
60
+ this.pageSummaries = summariesData.filter((summary) => {
61
+ return summary.template.includes('page')
62
+ })
63
+ this.summaries = summariesData.filter((summary) => {
64
+ return summary.template.includes('section') || summary.template.includes('table')
65
+ })
66
+ return this
67
+ }
68
+ }
@@ -33,11 +33,14 @@ __export(definitionUtils_exports, {
33
33
  getField: () => getField,
34
34
  getFieldDisplayName: () => getFieldDisplayName,
35
35
  getFields: () => getFields,
36
+ getFieldsByName: () => getFieldsByName,
36
37
  getFilter: () => getFilter,
37
38
  getFilters: () => getFilters,
38
39
  getFiltersDefaultsValues: () => getFiltersDefaultsValues,
39
40
  getReportSummary: () => getReportSummary,
40
- getTemplate: () => getTemplate
41
+ getTemplate: () => getTemplate,
42
+ validateDefinition: () => validateDefinition,
43
+ validateVariant: () => validateVariant
41
44
  });
42
45
  module.exports = __toCommonJS(definitionUtils_exports);
43
46
  var import_filtersTypeEnum = require("../components/_filters/filtersTypeEnum");
@@ -107,6 +110,20 @@ const getFilters = (fields) => {
107
110
  const filters = fields.filter((field) => field.filter).map((field) => field.filter);
108
111
  return filters.length ? filters : [];
109
112
  };
113
+ const getFieldsByName = (names, fields) => {
114
+ return names.map((s) => fields.find((field) => field.name === s)).filter((field) => field !== void 0);
115
+ };
116
+ const validateDefinition = (definition) => {
117
+ const { variant } = definition;
118
+ return validateVariant(variant);
119
+ };
120
+ const validateVariant = (variant) => {
121
+ const { specification } = variant;
122
+ if (!specification) {
123
+ throw new Error("No specification in definition");
124
+ }
125
+ return { variant, specification };
126
+ };
110
127
  const getReportSummary = (reportId, reportingService, token, definitionPath) => reportingService.getDefinitionSummary(token, reportId, definitionPath);
111
128
  var definitionUtils_default = {
112
129
  getCurrentVariantDefinition,
@@ -125,10 +142,13 @@ var definitionUtils_default = {
125
142
  getField,
126
143
  getFieldDisplayName,
127
144
  getFields,
145
+ getFieldsByName,
128
146
  getFilter,
129
147
  getFilters,
130
148
  getFiltersDefaultsValues,
131
149
  getReportSummary,
132
- getTemplate
150
+ getTemplate,
151
+ validateDefinition,
152
+ validateVariant
133
153
  });
134
154
  //# sourceMappingURL=definitionUtils.js.map
@@ -1,7 +1,7 @@
1
1
  {
2
2
  "version": 3,
3
3
  "sources": ["../../dpr/utils/definitionUtils.ts"],
4
- "sourcesContent": ["import { FiltersType } from '../components/_filters/filtersTypeEnum'\nimport ReportingService from '../services/reportingService'\nimport { components } from '../types/api'\nimport { Template } from '../types/Templates'\nimport { ReportType } from '../types/UserReports'\nimport logger from './logger'\n\nexport const getFilter = (\n fields: components['schemas']['FieldDefinition'][],\n fieldId: string,\n): components['schemas']['FilterDefinition'] | undefined => {\n return fields.find((f) => f.name === fieldId)?.filter\n}\n\nexport const getFiltersDefaultsValues = (fields: components['schemas']['FieldDefinition'][]) => {\n return fields\n .filter((field) => field.filter)\n .map((field) => {\n const { name, display } = field\n\n const defaultValue = field.filter?.defaultValue\n const defaultGranularity = field.filter?.defaultGranularity\n const defaultQuickFilterValue = field.filter?.defaultQuickFilterValue\n const type = field.filter?.type || ReportType.REPORT\n const interactive = field.filter?.interactive || FiltersType.REQUEST\n\n return {\n name,\n display,\n type,\n interactive,\n ...(defaultValue && { defaultValue }),\n ...(defaultGranularity && { defaultGranularity }),\n ...(defaultQuickFilterValue && { defaultQuickFilterValue }),\n }\n })\n}\n\nexport const getCurrentVariantDefinition = (\n definitions: components['schemas']['ReportDefinitionSummary'][],\n reportId: string,\n variantId: string,\n): components['schemas']['VariantDefinition'] | undefined => {\n if (!definitions) {\n logger.info('No definitions')\n return undefined\n }\n\n let variantDef: components['schemas']['VariantDefinition']\n const reportDef = definitions.find(\n (report: components['schemas']['ReportDefinitionSummary']) => report.id === reportId,\n )\n\n if (reportDef) {\n // TODO: this needs fixing, we should never be using `as unknown as`, but the types are very mixed up here\n variantDef = reportDef.variants.find(\n (variant) => variantId === variant.id,\n ) as unknown as components['schemas']['VariantDefinition']\n\n return variantDef\n }\n\n return undefined\n}\n\nexport const getFieldDisplayName = (fields: components['schemas']['FieldDefinition'][], fieldId: string) => {\n const ids = fieldId.split('.')\n const field = fields.find((f) => {\n return f.name === ids[0]\n })\n if (field) {\n return ids[1] ? `${field.display} ${ids[1]}` : field.display\n }\n return fieldId\n}\n\nexport const getField = (fields: components['schemas']['FieldDefinition'][], fieldId: string) => {\n return fields.find((field) => {\n return field.name === fieldId\n })\n}\n\nexport const getFields = (\n definition: components['schemas']['SingleVariantReportDefinition'],\n): components['schemas']['FieldDefinition'][] => {\n return definition.variant.specification?.fields || []\n}\n\nexport const getTemplate = (definition: components['schemas']['SingleVariantReportDefinition']): Template => {\n return definition.variant.specification?.template || 'list'\n}\n\nexport const getFilters = (\n fields: components['schemas']['FieldDefinition'][],\n): components['schemas']['FilterDefinition'][] => {\n const filters: components['schemas']['FilterDefinition'][] = fields\n .filter((field: components['schemas']['FieldDefinition']) => field.filter)\n .map((field: components['schemas']['FieldDefinition']) => <components['schemas']['FilterDefinition']>field.filter)\n\n return filters.length ? filters : []\n}\n\nexport const getReportSummary = (\n reportId: string,\n reportingService: ReportingService,\n token: string,\n definitionPath: string,\n) => reportingService.getDefinitionSummary(token, reportId, definitionPath)\n\nexport default {\n getCurrentVariantDefinition,\n getFieldDisplayName,\n getField,\n getFields,\n getTemplate,\n getFilter,\n getFilters,\n getFiltersDefaultsValues,\n getReportSummary,\n}\n"],
5
- "mappings": ";;;;;;;;;;;;;;;;;;;;;;;;;;;;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA,6BAA4B;AAI5B,yBAA2B;AAC3B,oBAAmB;AAEZ,MAAM,YAAY,CACvB,QACA,YAC0D;AAC1D,SAAO,OAAO,KAAK,CAAC,MAAM,EAAE,SAAS,OAAO,GAAG;AACjD;AAEO,MAAM,2BAA2B,CAAC,WAAuD;AAC9F,SAAO,OACJ,OAAO,CAAC,UAAU,MAAM,MAAM,EAC9B,IAAI,CAAC,UAAU;AACd,UAAM,EAAE,MAAM,QAAQ,IAAI;AAE1B,UAAM,eAAe,MAAM,QAAQ;AACnC,UAAM,qBAAqB,MAAM,QAAQ;AACzC,UAAM,0BAA0B,MAAM,QAAQ;AAC9C,UAAM,OAAO,MAAM,QAAQ,QAAQ,8BAAW;AAC9C,UAAM,cAAc,MAAM,QAAQ,eAAe,mCAAY;AAE7D,WAAO;AAAA,MACL;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA,GAAI,gBAAgB,EAAE,aAAa;AAAA,MACnC,GAAI,sBAAsB,EAAE,mBAAmB;AAAA,MAC/C,GAAI,2BAA2B,EAAE,wBAAwB;AAAA,IAC3D;AAAA,EACF,CAAC;AACL;AAEO,MAAM,8BAA8B,CACzC,aACA,UACA,cAC2D;AAC3D,MAAI,CAAC,aAAa;AAChB,kBAAAA,QAAO,KAAK,gBAAgB;AAC5B,WAAO;AAAA,EACT;AAEA,MAAI;AACJ,QAAM,YAAY,YAAY;AAAA,IAC5B,CAAC,WAA6D,OAAO,OAAO;AAAA,EAC9E;AAEA,MAAI,WAAW;AAEb,iBAAa,UAAU,SAAS;AAAA,MAC9B,CAAC,YAAY,cAAc,QAAQ;AAAA,IACrC;AAEA,WAAO;AAAA,EACT;AAEA,SAAO;AACT;AAEO,MAAM,sBAAsB,CAAC,QAAoD,YAAoB;AAC1G,QAAM,MAAM,QAAQ,MAAM,GAAG;AAC7B,QAAM,QAAQ,OAAO,KAAK,CAAC,MAAM;AAC/B,WAAO,EAAE,SAAS,IAAI,CAAC;AAAA,EACzB,CAAC;AACD,MAAI,OAAO;AACT,WAAO,IAAI,CAAC,IAAI,GAAG,MAAM,OAAO,IAAI,IAAI,CAAC,CAAC,KAAK,MAAM;AAAA,EACvD;AACA,SAAO;AACT;AAEO,MAAM,WAAW,CAAC,QAAoD,YAAoB;AAC/F,SAAO,OAAO,KAAK,CAAC,UAAU;AAC5B,WAAO,MAAM,SAAS;AAAA,EACxB,CAAC;AACH;AAEO,MAAM,YAAY,CACvB,eAC+C;AAC/C,SAAO,WAAW,QAAQ,eAAe,UAAU,CAAC;AACtD;AAEO,MAAM,cAAc,CAAC,eAAiF;AAC3G,SAAO,WAAW,QAAQ,eAAe,YAAY;AACvD;AAEO,MAAM,aAAa,CACxB,WACgD;AAChD,QAAM,UAAuD,OAC1D,OAAO,CAAC,UAAoD,MAAM,MAAM,EACxE,IAAI,CAAC,UAA+F,MAAM,MAAM;AAEnH,SAAO,QAAQ,SAAS,UAAU,CAAC;AACrC;AAEO,MAAM,mBAAmB,CAC9B,UACA,kBACA,OACA,mBACG,iBAAiB,qBAAqB,OAAO,UAAU,cAAc;AAE1E,IAAO,0BAAQ;AAAA,EACb;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AACF;",
4
+ "sourcesContent": ["import { FiltersType } from '../components/_filters/filtersTypeEnum'\nimport ReportingService from '../services/reportingService'\nimport { components } from '../types/api'\nimport { Template } from '../types/Templates'\nimport { ReportType } from '../types/UserReports'\nimport logger from './logger'\n\nexport const getFilter = (\n fields: components['schemas']['FieldDefinition'][],\n fieldId: string,\n): components['schemas']['FilterDefinition'] | undefined => {\n return fields.find((f) => f.name === fieldId)?.filter\n}\n\nexport const getFiltersDefaultsValues = (fields: components['schemas']['FieldDefinition'][]) => {\n return fields\n .filter((field) => field.filter)\n .map((field) => {\n const { name, display } = field\n\n const defaultValue = field.filter?.defaultValue\n const defaultGranularity = field.filter?.defaultGranularity\n const defaultQuickFilterValue = field.filter?.defaultQuickFilterValue\n const type = field.filter?.type || ReportType.REPORT\n const interactive = field.filter?.interactive || FiltersType.REQUEST\n\n return {\n name,\n display,\n type,\n interactive,\n ...(defaultValue && { defaultValue }),\n ...(defaultGranularity && { defaultGranularity }),\n ...(defaultQuickFilterValue && { defaultQuickFilterValue }),\n }\n })\n}\n\nexport const getCurrentVariantDefinition = (\n definitions: components['schemas']['ReportDefinitionSummary'][],\n reportId: string,\n variantId: string,\n): components['schemas']['VariantDefinition'] | undefined => {\n if (!definitions) {\n logger.info('No definitions')\n return undefined\n }\n\n let variantDef: components['schemas']['VariantDefinition']\n const reportDef = definitions.find(\n (report: components['schemas']['ReportDefinitionSummary']) => report.id === reportId,\n )\n\n if (reportDef) {\n // TODO: this needs fixing, we should never be using `as unknown as`, but the types are very mixed up here\n variantDef = reportDef.variants.find(\n (variant) => variantId === variant.id,\n ) as unknown as components['schemas']['VariantDefinition']\n\n return variantDef\n }\n\n return undefined\n}\n\nexport const getFieldDisplayName = (\n fields: components['schemas']['FieldDefinition'][] | components['schemas']['SummaryField'][],\n fieldId: string,\n) => {\n const ids = fieldId.split('.')\n const field = fields.find((f) => {\n return f.name === ids[0]\n })\n if (field) {\n return ids[1] ? `${field.display} ${ids[1]}` : field.display\n }\n return fieldId\n}\n\nexport const getField = (fields: components['schemas']['FieldDefinition'][], fieldId: string) => {\n return fields.find((field) => {\n return field.name === fieldId\n })\n}\n\nexport const getFields = (\n definition: components['schemas']['SingleVariantReportDefinition'],\n): components['schemas']['FieldDefinition'][] => {\n return definition.variant.specification?.fields || []\n}\n\nexport const getTemplate = (definition: components['schemas']['SingleVariantReportDefinition']): Template => {\n return definition.variant.specification?.template || 'list'\n}\n\nexport const getFilters = (\n fields: components['schemas']['FieldDefinition'][],\n): components['schemas']['FilterDefinition'][] => {\n const filters: components['schemas']['FilterDefinition'][] = fields\n .filter((field: components['schemas']['FieldDefinition']) => field.filter)\n .map((field: components['schemas']['FieldDefinition']) => <components['schemas']['FilterDefinition']>field.filter)\n\n return filters.length ? filters : []\n}\n\nexport const getFieldsByName = (\n names: string[],\n fields: components['schemas']['FieldDefinition'][],\n): components['schemas']['FieldDefinition'][] => {\n return names.map((s) => fields.find((field) => field.name === s)).filter((field) => field !== undefined)\n}\n\nexport const validateDefinition = (definition: components['schemas']['SingleVariantReportDefinition']) => {\n const { variant } = definition\n return validateVariant(variant)\n}\n\nexport const validateVariant = (variant: components['schemas']['VariantDefinition']) => {\n const { specification } = variant\n\n if (!specification) {\n throw new Error('No specification in definition')\n }\n\n return { variant, specification }\n}\n\nexport const getReportSummary = (\n reportId: string,\n reportingService: ReportingService,\n token: string,\n definitionPath: string,\n) => reportingService.getDefinitionSummary(token, reportId, definitionPath)\n\nexport default {\n getCurrentVariantDefinition,\n getFieldDisplayName,\n getField,\n getFields,\n getTemplate,\n getFilter,\n getFilters,\n getFiltersDefaultsValues,\n getReportSummary,\n}\n"],
5
+ "mappings": ";;;;;;;;;;;;;;;;;;;;;;;;;;;;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA,6BAA4B;AAI5B,yBAA2B;AAC3B,oBAAmB;AAEZ,MAAM,YAAY,CACvB,QACA,YAC0D;AAC1D,SAAO,OAAO,KAAK,CAAC,MAAM,EAAE,SAAS,OAAO,GAAG;AACjD;AAEO,MAAM,2BAA2B,CAAC,WAAuD;AAC9F,SAAO,OACJ,OAAO,CAAC,UAAU,MAAM,MAAM,EAC9B,IAAI,CAAC,UAAU;AACd,UAAM,EAAE,MAAM,QAAQ,IAAI;AAE1B,UAAM,eAAe,MAAM,QAAQ;AACnC,UAAM,qBAAqB,MAAM,QAAQ;AACzC,UAAM,0BAA0B,MAAM,QAAQ;AAC9C,UAAM,OAAO,MAAM,QAAQ,QAAQ,8BAAW;AAC9C,UAAM,cAAc,MAAM,QAAQ,eAAe,mCAAY;AAE7D,WAAO;AAAA,MACL;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA,GAAI,gBAAgB,EAAE,aAAa;AAAA,MACnC,GAAI,sBAAsB,EAAE,mBAAmB;AAAA,MAC/C,GAAI,2BAA2B,EAAE,wBAAwB;AAAA,IAC3D;AAAA,EACF,CAAC;AACL;AAEO,MAAM,8BAA8B,CACzC,aACA,UACA,cAC2D;AAC3D,MAAI,CAAC,aAAa;AAChB,kBAAAA,QAAO,KAAK,gBAAgB;AAC5B,WAAO;AAAA,EACT;AAEA,MAAI;AACJ,QAAM,YAAY,YAAY;AAAA,IAC5B,CAAC,WAA6D,OAAO,OAAO;AAAA,EAC9E;AAEA,MAAI,WAAW;AAEb,iBAAa,UAAU,SAAS;AAAA,MAC9B,CAAC,YAAY,cAAc,QAAQ;AAAA,IACrC;AAEA,WAAO;AAAA,EACT;AAEA,SAAO;AACT;AAEO,MAAM,sBAAsB,CACjC,QACA,YACG;AACH,QAAM,MAAM,QAAQ,MAAM,GAAG;AAC7B,QAAM,QAAQ,OAAO,KAAK,CAAC,MAAM;AAC/B,WAAO,EAAE,SAAS,IAAI,CAAC;AAAA,EACzB,CAAC;AACD,MAAI,OAAO;AACT,WAAO,IAAI,CAAC,IAAI,GAAG,MAAM,OAAO,IAAI,IAAI,CAAC,CAAC,KAAK,MAAM;AAAA,EACvD;AACA,SAAO;AACT;AAEO,MAAM,WAAW,CAAC,QAAoD,YAAoB;AAC/F,SAAO,OAAO,KAAK,CAAC,UAAU;AAC5B,WAAO,MAAM,SAAS;AAAA,EACxB,CAAC;AACH;AAEO,MAAM,YAAY,CACvB,eAC+C;AAC/C,SAAO,WAAW,QAAQ,eAAe,UAAU,CAAC;AACtD;AAEO,MAAM,cAAc,CAAC,eAAiF;AAC3G,SAAO,WAAW,QAAQ,eAAe,YAAY;AACvD;AAEO,MAAM,aAAa,CACxB,WACgD;AAChD,QAAM,UAAuD,OAC1D,OAAO,CAAC,UAAoD,MAAM,MAAM,EACxE,IAAI,CAAC,UAA+F,MAAM,MAAM;AAEnH,SAAO,QAAQ,SAAS,UAAU,CAAC;AACrC;AAEO,MAAM,kBAAkB,CAC7B,OACA,WAC+C;AAC/C,SAAO,MAAM,IAAI,CAAC,MAAM,OAAO,KAAK,CAAC,UAAU,MAAM,SAAS,CAAC,CAAC,EAAE,OAAO,CAAC,UAAU,UAAU,MAAS;AACzG;AAEO,MAAM,qBAAqB,CAAC,eAAuE;AACxG,QAAM,EAAE,QAAQ,IAAI;AACpB,SAAO,gBAAgB,OAAO;AAChC;AAEO,MAAM,kBAAkB,CAAC,YAAwD;AACtF,QAAM,EAAE,cAAc,IAAI;AAE1B,MAAI,CAAC,eAAe;AAClB,UAAM,IAAI,MAAM,gCAAgC;AAAA,EAClD;AAEA,SAAO,EAAE,SAAS,cAAc;AAClC;AAEO,MAAM,mBAAmB,CAC9B,UACA,kBACA,OACA,mBACG,iBAAiB,qBAAqB,OAAO,UAAU,cAAc;AAE1E,IAAO,0BAAQ;AAAA,EACb;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AACF;",
6
6
  "names": ["logger"]
7
7
  }
@@ -63,7 +63,10 @@ export const getCurrentVariantDefinition = (
63
63
  return undefined
64
64
  }
65
65
 
66
- export const getFieldDisplayName = (fields: components['schemas']['FieldDefinition'][], fieldId: string) => {
66
+ export const getFieldDisplayName = (
67
+ fields: components['schemas']['FieldDefinition'][] | components['schemas']['SummaryField'][],
68
+ fieldId: string,
69
+ ) => {
67
70
  const ids = fieldId.split('.')
68
71
  const field = fields.find((f) => {
69
72
  return f.name === ids[0]
@@ -100,6 +103,28 @@ export const getFilters = (
100
103
  return filters.length ? filters : []
101
104
  }
102
105
 
106
+ export const getFieldsByName = (
107
+ names: string[],
108
+ fields: components['schemas']['FieldDefinition'][],
109
+ ): components['schemas']['FieldDefinition'][] => {
110
+ return names.map((s) => fields.find((field) => field.name === s)).filter((field) => field !== undefined)
111
+ }
112
+
113
+ export const validateDefinition = (definition: components['schemas']['SingleVariantReportDefinition']) => {
114
+ const { variant } = definition
115
+ return validateVariant(variant)
116
+ }
117
+
118
+ export const validateVariant = (variant: components['schemas']['VariantDefinition']) => {
119
+ const { specification } = variant
120
+
121
+ if (!specification) {
122
+ throw new Error('No specification in definition')
123
+ }
124
+
125
+ return { variant, specification }
126
+ }
127
+
103
128
  export const getReportSummary = (
104
129
  reportId: string,
105
130
  reportingService: ReportingService,
package/package.json CHANGED
@@ -1,7 +1,7 @@
1
1
  {
2
2
  "name": "@ministryofjustice/hmpps-digital-prison-reporting-frontend",
3
3
  "description": "The Digital Prison Reporting Frontend contains templates and code to help display data effectively in UI applications.",
4
- "version": "4.28.7",
4
+ "version": "4.29.0",
5
5
  "main": "dpr/all",
6
6
  "sass": "dpr/all.scss",
7
7
  "engines": {
@@ -1,51 +0,0 @@
1
- "use strict";
2
- var __defProp = Object.defineProperty;
3
- var __getOwnPropDesc = Object.getOwnPropertyDescriptor;
4
- var __getOwnPropNames = Object.getOwnPropertyNames;
5
- var __hasOwnProp = Object.prototype.hasOwnProperty;
6
- var __export = (target, all) => {
7
- for (var name in all)
8
- __defProp(target, name, { get: all[name], enumerable: true });
9
- };
10
- var __copyProps = (to, from, except, desc) => {
11
- if (from && typeof from === "object" || typeof from === "function") {
12
- for (let key of __getOwnPropNames(from))
13
- if (!__hasOwnProp.call(to, key) && key !== except)
14
- __defProp(to, key, { get: () => from[key], enumerable: !(desc = __getOwnPropDesc(from, key)) || desc.enumerable });
15
- }
16
- return to;
17
- };
18
- var __toCommonJS = (mod) => __copyProps(__defProp({}, "__esModule", { value: true }), mod);
19
- var DprLoadingHelper_exports = {};
20
- __export(DprLoadingHelper_exports, {
21
- DprLoadingHelper: () => DprLoadingHelper,
22
- default: () => DprLoadingHelper_default
23
- });
24
- module.exports = __toCommonJS(DprLoadingHelper_exports);
25
- class DprLoadingHelper {
26
- showLoadingAnimation(wrapperClass) {
27
- const loadingPanelClass = ".dpr-loading-panel";
28
- document.querySelectorAll(loadingPanelClass).forEach((l) => {
29
- l.classList.add("show");
30
- });
31
- let loadingAnimClass = ".dpr-loading-anim";
32
- if (wrapperClass) loadingAnimClass = `.${wrapperClass} ${loadingAnimClass}`;
33
- document.querySelectorAll(loadingAnimClass).forEach((l) => {
34
- l.classList.add("show");
35
- });
36
- }
37
- hideLoadingAnimation() {
38
- document.querySelectorAll(".dpr-loading-panel").forEach((l) => {
39
- l.classList.remove("show");
40
- });
41
- document.querySelectorAll(".dpr-loading-anim").forEach((l) => {
42
- l.classList.remove("show");
43
- });
44
- }
45
- }
46
- var DprLoadingHelper_default = DprLoadingHelper;
47
- // Annotate the CommonJS export names for ESM import in node:
48
- 0 && (module.exports = {
49
- DprLoadingHelper
50
- });
51
- //# sourceMappingURL=DprLoadingHelper.js.map
@@ -1,7 +0,0 @@
1
- {
2
- "version": 3,
3
- "sources": ["../dpr/DprLoadingHelper.ts"],
4
- "sourcesContent": ["// @ts-nocheck\nclass DprLoadingHelper {\n showLoadingAnimation(wrapperClass) {\n const loadingPanelClass = '.dpr-loading-panel'\n document.querySelectorAll(loadingPanelClass).forEach((l) => {\n l.classList.add('show')\n })\n\n let loadingAnimClass = '.dpr-loading-anim'\n if (wrapperClass) loadingAnimClass = `.${wrapperClass} ${loadingAnimClass}`\n document.querySelectorAll(loadingAnimClass).forEach((l) => {\n l.classList.add('show')\n })\n }\n\n hideLoadingAnimation() {\n document.querySelectorAll('.dpr-loading-panel').forEach((l) => {\n l.classList.remove('show')\n })\n document.querySelectorAll('.dpr-loading-anim').forEach((l) => {\n l.classList.remove('show')\n })\n }\n}\n\nexport { DprLoadingHelper }\nexport default DprLoadingHelper\n"],
5
- "mappings": ";;;;;;;;;;;;;;;;;;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AACA,MAAM,iBAAiB;AAAA,EACrB,qBAAqB,cAAc;AACjC,UAAM,oBAAoB;AAC1B,aAAS,iBAAiB,iBAAiB,EAAE,QAAQ,CAAC,MAAM;AAC1D,QAAE,UAAU,IAAI,MAAM;AAAA,IACxB,CAAC;AAED,QAAI,mBAAmB;AACvB,QAAI,aAAc,oBAAmB,IAAI,YAAY,IAAI,gBAAgB;AACzE,aAAS,iBAAiB,gBAAgB,EAAE,QAAQ,CAAC,MAAM;AACzD,QAAE,UAAU,IAAI,MAAM;AAAA,IACxB,CAAC;AAAA,EACH;AAAA,EAEA,uBAAuB;AACrB,aAAS,iBAAiB,oBAAoB,EAAE,QAAQ,CAAC,MAAM;AAC7D,QAAE,UAAU,OAAO,MAAM;AAAA,IAC3B,CAAC;AACD,aAAS,iBAAiB,mBAAmB,EAAE,QAAQ,CAAC,MAAM;AAC5D,QAAE,UAAU,OAAO,MAAM;AAAA,IAC3B,CAAC;AAAA,EACH;AACF;AAGA,IAAO,2BAAQ;",
6
- "names": []
7
- }
@@ -1,27 +0,0 @@
1
- // @ts-nocheck
2
- class DprLoadingHelper {
3
- showLoadingAnimation(wrapperClass) {
4
- const loadingPanelClass = '.dpr-loading-panel'
5
- document.querySelectorAll(loadingPanelClass).forEach((l) => {
6
- l.classList.add('show')
7
- })
8
-
9
- let loadingAnimClass = '.dpr-loading-anim'
10
- if (wrapperClass) loadingAnimClass = `.${wrapperClass} ${loadingAnimClass}`
11
- document.querySelectorAll(loadingAnimClass).forEach((l) => {
12
- l.classList.add('show')
13
- })
14
- }
15
-
16
- hideLoadingAnimation() {
17
- document.querySelectorAll('.dpr-loading-panel').forEach((l) => {
18
- l.classList.remove('show')
19
- })
20
- document.querySelectorAll('.dpr-loading-anim').forEach((l) => {
21
- l.classList.remove('show')
22
- })
23
- }
24
- }
25
-
26
- export { DprLoadingHelper }
27
- export default DprLoadingHelper
@@ -1,40 +0,0 @@
1
- {% from "../report-data-table-wrapper/view.njk" import dprDataTableWrapper %}
2
- {% from "../report-summary-table/view.njk" import dprReportSummary %}
3
- {% from "../report-totals/view.njk" import dprReportTotals %}
4
- {% from "../report-no-data-message/view.njk" import dprReportNoDataMessage %}
5
- {% from "../../code-block/view.njk" import dprCodeBlock %}
6
-
7
- {% macro dprReport(options, count, template) %}
8
- {% set reportSummaries = options.reportSummaries %}
9
- {% set dataTable = options.dataTable %}
10
- {% set pagination = options.pagination %}
11
- {% set classification = options.classification %}
12
- {% set template = options.template %}
13
-
14
- {% if not count or count === 0 %}
15
- {{ dprReportNoDataMessage(url) }}
16
- {% else %}
17
-
18
- {{ dprReportSummary(reportSummaries, 'page-header') }}
19
- {{ dprReportTotals(options.totals) }}
20
- <div class='dpr-table-container dpr-table-container--{{ template }}'>
21
- {% if template === 'summary-section' %}
22
- {% for datatable in dataTable[0].rows %}
23
- {% if datatable[0].html %}
24
- {{ datatable[0].html | safe }}
25
- {% endif %}
26
- {% endfor %}
27
- {% else %}
28
- {{ dprDataTableWrapper(dataTable, classification) }}
29
- {% endif %}
30
- </div>
31
-
32
- <div class='govuk-!-margin-bottom-6 govuk-!-margin-top-6'>
33
- {{ dprReportTotals(options.totals) }}
34
- </div>
35
-
36
- {{ dprReportSummary(reportSummaries, 'page-footer') }}
37
-
38
- {% endif %}
39
-
40
- {% endmacro %}
@@ -1,7 +0,0 @@
1
- {
2
- "version": 3,
3
- "sources": ["../../../../dpr/components/_reports/report-actions/clientClass.ts"],
4
- "sourcesContent": ["// @ts-nocheck\nimport { DprClientClass } from '../../../DprClientClass'\n\nclass IconButtonList extends DprClientClass {\n static getModuleName() {\n return 'report-actions'\n }\n\n initialise() {\n this.refreshButton = document.getElementById('dpr-button-refresh')\n this.printButton = document.getElementById('dpr-button-printable')\n this.shareButton = document.getElementById('dpr-button-sharable')\n this.downloadButton = document.getElementById('dpr-button-downloadable')\n this.copyButton = document.getElementById('dpr-button-copy')\n\n this.initRefreshEvent()\n this.initPrintButtonEvent()\n this.initShareButtonEvent()\n this.initCopyButtonEvent()\n }\n\n initPrintButtonEvent() {\n if (this.printButton) {\n const disabled = this.printButton.getAttribute('data-disabled')\n this.printButton.addEventListener('click', () => {\n if (disabled !== 'true') {\n window.print()\n }\n })\n\n this.printButton.addEventListener('keyup', (e) => {\n if (e.key === 'Enter') {\n if (disabled !== 'true') {\n window.print()\n }\n }\n })\n }\n }\n\n initShareButtonEvent() {\n if (this.shareButton) {\n const href = this.shareButton.getAttribute('data-href')\n this.shareButton.addEventListener('click', () => {\n window.location = href\n })\n\n this.shareButton.addEventListener('keyup', (e) => {\n if (e.key === 'Enter') {\n window.location = href\n }\n })\n }\n }\n\n initCopyButtonEvent() {\n if (this.copyButton) {\n const href = this.copyButton.getAttribute('data-href')\n this.copyButton.addEventListener('click', () => {\n navigator.clipboard.writeText(href)\n })\n\n this.copyButton.addEventListener('keyup', (e) => {\n if (e.key === 'Enter') {\n navigator.clipboard.writeText(href)\n }\n })\n }\n }\n\n initRefreshEvent() {\n if (this.refreshButton) {\n const href = this.refreshButton.getAttribute('data-href')\n this.refreshButton.addEventListener('click', () => {\n window.location = href\n })\n\n this.refreshButton.addEventListener('keyup', (e) => {\n if (e.key === 'Enter') {\n window.location = href\n }\n })\n }\n }\n}\n\nexport { IconButtonList }\nexport default IconButtonList\n"],
5
- "mappings": ";;;;;;;;;;;;;;;;;;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AACA,4BAA+B;AAE/B,MAAM,uBAAuB,qCAAe;AAAA,EAC1C,OAAO,gBAAgB;AACrB,WAAO;AAAA,EACT;AAAA,EAEA,aAAa;AACX,SAAK,gBAAgB,SAAS,eAAe,oBAAoB;AACjE,SAAK,cAAc,SAAS,eAAe,sBAAsB;AACjE,SAAK,cAAc,SAAS,eAAe,qBAAqB;AAChE,SAAK,iBAAiB,SAAS,eAAe,yBAAyB;AACvE,SAAK,aAAa,SAAS,eAAe,iBAAiB;AAE3D,SAAK,iBAAiB;AACtB,SAAK,qBAAqB;AAC1B,SAAK,qBAAqB;AAC1B,SAAK,oBAAoB;AAAA,EAC3B;AAAA,EAEA,uBAAuB;AACrB,QAAI,KAAK,aAAa;AACpB,YAAM,WAAW,KAAK,YAAY,aAAa,eAAe;AAC9D,WAAK,YAAY,iBAAiB,SAAS,MAAM;AAC/C,YAAI,aAAa,QAAQ;AACvB,iBAAO,MAAM;AAAA,QACf;AAAA,MACF,CAAC;AAED,WAAK,YAAY,iBAAiB,SAAS,CAAC,MAAM;AAChD,YAAI,EAAE,QAAQ,SAAS;AACrB,cAAI,aAAa,QAAQ;AACvB,mBAAO,MAAM;AAAA,UACf;AAAA,QACF;AAAA,MACF,CAAC;AAAA,IACH;AAAA,EACF;AAAA,EAEA,uBAAuB;AACrB,QAAI,KAAK,aAAa;AACpB,YAAM,OAAO,KAAK,YAAY,aAAa,WAAW;AACtD,WAAK,YAAY,iBAAiB,SAAS,MAAM;AAC/C,eAAO,WAAW;AAAA,MACpB,CAAC;AAED,WAAK,YAAY,iBAAiB,SAAS,CAAC,MAAM;AAChD,YAAI,EAAE,QAAQ,SAAS;AACrB,iBAAO,WAAW;AAAA,QACpB;AAAA,MACF,CAAC;AAAA,IACH;AAAA,EACF;AAAA,EAEA,sBAAsB;AACpB,QAAI,KAAK,YAAY;AACnB,YAAM,OAAO,KAAK,WAAW,aAAa,WAAW;AACrD,WAAK,WAAW,iBAAiB,SAAS,MAAM;AAC9C,kBAAU,UAAU,UAAU,IAAI;AAAA,MACpC,CAAC;AAED,WAAK,WAAW,iBAAiB,SAAS,CAAC,MAAM;AAC/C,YAAI,EAAE,QAAQ,SAAS;AACrB,oBAAU,UAAU,UAAU,IAAI;AAAA,QACpC;AAAA,MACF,CAAC;AAAA,IACH;AAAA,EACF;AAAA,EAEA,mBAAmB;AACjB,QAAI,KAAK,eAAe;AACtB,YAAM,OAAO,KAAK,cAAc,aAAa,WAAW;AACxD,WAAK,cAAc,iBAAiB,SAAS,MAAM;AACjD,eAAO,WAAW;AAAA,MACpB,CAAC;AAED,WAAK,cAAc,iBAAiB,SAAS,CAAC,MAAM;AAClD,YAAI,EAAE,QAAQ,SAAS;AACrB,iBAAO,WAAW;AAAA,QACpB;AAAA,MACF,CAAC;AAAA,IACH;AAAA,EACF;AACF;AAGA,IAAO,sBAAQ;",
6
- "names": []
7
- }
@@ -1,7 +0,0 @@
1
- {
2
- "version": 3,
3
- "sources": ["../../../../dpr/components/_reports/report-actions/types.d.ts"],
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
- "mappings": ";;;;;;;;;;;;;;AAAA;AAAA;",
6
- "names": []
7
- }
@@ -1,7 +0,0 @@
1
- {
2
- "version": 3,
3
- "sources": ["../../../../dpr/components/_reports/report-columns-form/clientClass.ts"],
4
- "sourcesContent": ["// @ts-nocheck\nimport DprQueryParamClass from '../../../DprQueryParamClass'\n\nclass Columns extends DprQueryParamClass {\n static getModuleName() {\n return 'columns'\n }\n\n initialise() {\n this.form = this.getElement()\n this.embbeddedReportList = document.getElementById('dpr-embedded-report-list')\n this.submitButton = this.getElement().querySelector('.dpr-apply-columns-button')\n this.resetButton = this.getElement().querySelector('.dpr-reset-columns-button')\n\n this.initInputsFromQueryParams()\n this.initQueryParamsFromInputs(this.form.elements)\n this.initInputEvents(this.form.elements)\n\n this.initSubmitButton()\n this.initResetButton()\n }\n\n initSubmitButton() {\n this.submitButton.addEventListener('click', (e) => {\n e.preventDefault()\n this.loadingHelper.showLoadingAnimation()\n\n if (this.embbeddedReportList) {\n window.location.reload()\n } else {\n this.form.requestSubmit()\n }\n })\n }\n\n initResetButton() {\n this.resetButton.addEventListener('click', (e) => {\n e.preventDefault()\n this.loadingHelper.showLoadingAnimation()\n this.clearQueryParams('columns')\n window.location.reload()\n })\n }\n}\n\nexport { Columns }\nexport default Columns\n"],
5
- "mappings": ";;;;;;;;;;;;;;;;;;;;;;;;;;;;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AACA,gCAA+B;AAE/B,MAAM,gBAAgB,0BAAAA,QAAmB;AAAA,EACvC,OAAO,gBAAgB;AACrB,WAAO;AAAA,EACT;AAAA,EAEA,aAAa;AACX,SAAK,OAAO,KAAK,WAAW;AAC5B,SAAK,sBAAsB,SAAS,eAAe,0BAA0B;AAC7E,SAAK,eAAe,KAAK,WAAW,EAAE,cAAc,2BAA2B;AAC/E,SAAK,cAAc,KAAK,WAAW,EAAE,cAAc,2BAA2B;AAE9E,SAAK,0BAA0B;AAC/B,SAAK,0BAA0B,KAAK,KAAK,QAAQ;AACjD,SAAK,gBAAgB,KAAK,KAAK,QAAQ;AAEvC,SAAK,iBAAiB;AACtB,SAAK,gBAAgB;AAAA,EACvB;AAAA,EAEA,mBAAmB;AACjB,SAAK,aAAa,iBAAiB,SAAS,CAAC,MAAM;AACjD,QAAE,eAAe;AACjB,WAAK,cAAc,qBAAqB;AAExC,UAAI,KAAK,qBAAqB;AAC5B,eAAO,SAAS,OAAO;AAAA,MACzB,OAAO;AACL,aAAK,KAAK,cAAc;AAAA,MAC1B;AAAA,IACF,CAAC;AAAA,EACH;AAAA,EAEA,kBAAkB;AAChB,SAAK,YAAY,iBAAiB,SAAS,CAAC,MAAM;AAChD,QAAE,eAAe;AACjB,WAAK,cAAc,qBAAqB;AACxC,WAAK,iBAAiB,SAAS;AAC/B,aAAO,SAAS,OAAO;AAAA,IACzB,CAAC;AAAA,EACH;AACF;AAGA,IAAO,sBAAQ;",
6
- "names": ["DprQueryParamClass"]
7
- }
@@ -1,7 +0,0 @@
1
- {
2
- "version": 3,
3
- "sources": ["../../../../dpr/components/_reports/report-columns-form/utils.ts"],
4
- "sourcesContent": ["import { Request } from 'express'\nimport { components } from '../../../types/api'\nimport { Column, Columns } from './types'\nimport { distinct } from '../../../utils/arrayUtils'\n\nexport const mandatoryColumns = (fields: Array<components['schemas']['FieldDefinition']>) =>\n fields.filter((field) => field.mandatory).map((field) => field.name)\n\nconst visibleColumns = (fields: Array<components['schemas']['FieldDefinition']>) =>\n fields.filter((field) => field.visible).map((field) => field.name)\n\nexport const ensureMandatoryColumns = (\n fields: Array<components['schemas']['FieldDefinition']>,\n queryColumns?: string[] | string,\n) => {\n let queryCols\n if (queryColumns) {\n queryCols = Array.isArray(queryColumns) ? queryColumns : [queryColumns]\n }\n const visibleCols = visibleColumns(fields)\n const mandatoryCols = mandatoryColumns(fields)\n\n const columns = queryCols || visibleCols\n return [...mandatoryCols, ...columns].reduce(distinct, [])\n}\n\n/**\n * Converts the columns from a DPD into a column readable format\n *\n * @param specification\n * @param requestedColumns\n */\nexport const getColumns = (specification: components['schemas']['Specification'], req: Request): Columns => {\n const requestedColumns = <string[] | string | undefined>req.query['columns']\n const { fields } = specification\n\n const options: Column[] = fields\n .filter((field) => !specification.sections || !specification.sections.includes(field.name))\n .map((field) => ({\n text: field.display,\n value: field.name,\n disabled: field.mandatory,\n }))\n\n return {\n name: 'columns',\n options,\n text: 'Select report columns',\n value: ensureMandatoryColumns(fields, requestedColumns),\n }\n}\n\nexport default {\n getColumns,\n ensureMandatoryColumns,\n mandatoryColumns,\n}\n"],
5
- "mappings": ";;;;;;;;;;;;;;;;;;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAGA,wBAAyB;AAElB,MAAM,mBAAmB,CAAC,WAC/B,OAAO,OAAO,CAAC,UAAU,MAAM,SAAS,EAAE,IAAI,CAAC,UAAU,MAAM,IAAI;AAErE,MAAM,iBAAiB,CAAC,WACtB,OAAO,OAAO,CAAC,UAAU,MAAM,OAAO,EAAE,IAAI,CAAC,UAAU,MAAM,IAAI;AAE5D,MAAM,yBAAyB,CACpC,QACA,iBACG;AACH,MAAI;AACJ,MAAI,cAAc;AAChB,gBAAY,MAAM,QAAQ,YAAY,IAAI,eAAe,CAAC,YAAY;AAAA,EACxE;AACA,QAAM,cAAc,eAAe,MAAM;AACzC,QAAM,gBAAgB,iBAAiB,MAAM;AAE7C,QAAM,UAAU,aAAa;AAC7B,SAAO,CAAC,GAAG,eAAe,GAAG,OAAO,EAAE,OAAO,4BAAU,CAAC,CAAC;AAC3D;AAQO,MAAM,aAAa,CAAC,eAAuD,QAA0B;AAC1G,QAAM,mBAAkD,IAAI,MAAM,SAAS;AAC3E,QAAM,EAAE,OAAO,IAAI;AAEnB,QAAM,UAAoB,OACvB,OAAO,CAAC,UAAU,CAAC,cAAc,YAAY,CAAC,cAAc,SAAS,SAAS,MAAM,IAAI,CAAC,EACzF,IAAI,CAAC,WAAW;AAAA,IACf,MAAM,MAAM;AAAA,IACZ,OAAO,MAAM;AAAA,IACb,UAAU,MAAM;AAAA,EAClB,EAAE;AAEJ,SAAO;AAAA,IACL,MAAM;AAAA,IACN;AAAA,IACA,MAAM;AAAA,IACN,OAAO,uBAAuB,QAAQ,gBAAgB;AAAA,EACxD;AACF;AAEA,IAAO,gBAAQ;AAAA,EACb;AAAA,EACA;AAAA,EACA;AACF;",
6
- "names": []
7
- }
@@ -1,7 +0,0 @@
1
- {
2
- "version": 3,
3
- "sources": ["../../../../dpr/components/_reports/report-data-table/clientClass.ts"],
4
- "sourcesContent": ["// @ts-nocheck\nimport { DprClientClass } from '../../../DprClientClass'\n\nclass DataTable extends DprClientClass {\n static getModuleName() {\n return 'data-table'\n }\n\n initialise() {\n this.tableContainer = document.getElementById('dpr-table-wrapper')\n this.table = document.getElementById('dpr-data-table')\n this.overflowGradient = document.getElementById('dpr-overflow-gradient')\n this.createTableHeaderAndFooter()\n this.initTableScrollListener()\n }\n\n initTableScrollListener() {\n this.checkOffsetWidths()\n\n window.addEventListener('resize', () => {\n this.checkOffsetWidths()\n })\n\n this.tableContainer.addEventListener('scroll', (event) => {\n const endOfScroll = this.table.offsetWidth\n const currentScroll = event.target.offsetWidth + event.target.scrollLeft\n if (endOfScroll === currentScroll) {\n this.overflowGradient.style.display = 'none'\n } else {\n this.overflowGradient.style.display = 'block'\n }\n })\n }\n\n checkOffsetWidths() {\n if (this.tableContainer.offsetWidth >= this.table.offsetWidth) {\n this.overflowGradient.style.display = 'none'\n } else {\n this.overflowGradient.style.display = 'block'\n }\n }\n\n createTableHeaderAndFooter() {\n if (this.table) {\n const classification = this.table.getAttribute('data-classification')\n const headLength = Number(this.table.getAttribute('data-col-length'))\n const classificationContent = `<b>${classification}</b>`\n\n // Headers\n const header = this.table.createTHead()\n\n const classificationHeaderRow = header.insertRow(0)\n const classificationHeaderCell = classificationHeaderRow.insertCell(0)\n classificationHeaderCell.outerHTML = `<th class=\"govuk-table__header govuk-table__cell--content print-header-footer\" colspan=${headLength}>${classificationContent}</th>`\n\n // Footers\n const footer = this.table.createTFoot()\n\n const classificationFooterRow = footer.insertRow(0)\n const classificationFooterCell = classificationFooterRow.insertCell(0)\n classificationFooterCell.outerHTML = `<td class=\"govuk-table__cell govuk-table__cell--content print-header-footer table-row--no-border\" colspan=${headLength}>${classificationContent}</td>`\n }\n }\n}\n\nexport { DataTable }\nexport default DataTable\n"],
5
- "mappings": ";;;;;;;;;;;;;;;;;;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AACA,4BAA+B;AAE/B,MAAM,kBAAkB,qCAAe;AAAA,EACrC,OAAO,gBAAgB;AACrB,WAAO;AAAA,EACT;AAAA,EAEA,aAAa;AACX,SAAK,iBAAiB,SAAS,eAAe,mBAAmB;AACjE,SAAK,QAAQ,SAAS,eAAe,gBAAgB;AACrD,SAAK,mBAAmB,SAAS,eAAe,uBAAuB;AACvE,SAAK,2BAA2B;AAChC,SAAK,wBAAwB;AAAA,EAC/B;AAAA,EAEA,0BAA0B;AACxB,SAAK,kBAAkB;AAEvB,WAAO,iBAAiB,UAAU,MAAM;AACtC,WAAK,kBAAkB;AAAA,IACzB,CAAC;AAED,SAAK,eAAe,iBAAiB,UAAU,CAAC,UAAU;AACxD,YAAM,cAAc,KAAK,MAAM;AAC/B,YAAM,gBAAgB,MAAM,OAAO,cAAc,MAAM,OAAO;AAC9D,UAAI,gBAAgB,eAAe;AACjC,aAAK,iBAAiB,MAAM,UAAU;AAAA,MACxC,OAAO;AACL,aAAK,iBAAiB,MAAM,UAAU;AAAA,MACxC;AAAA,IACF,CAAC;AAAA,EACH;AAAA,EAEA,oBAAoB;AAClB,QAAI,KAAK,eAAe,eAAe,KAAK,MAAM,aAAa;AAC7D,WAAK,iBAAiB,MAAM,UAAU;AAAA,IACxC,OAAO;AACL,WAAK,iBAAiB,MAAM,UAAU;AAAA,IACxC;AAAA,EACF;AAAA,EAEA,6BAA6B;AAC3B,QAAI,KAAK,OAAO;AACd,YAAM,iBAAiB,KAAK,MAAM,aAAa,qBAAqB;AACpE,YAAM,aAAa,OAAO,KAAK,MAAM,aAAa,iBAAiB,CAAC;AACpE,YAAM,wBAAwB,MAAM,cAAc;AAGlD,YAAM,SAAS,KAAK,MAAM,YAAY;AAEtC,YAAM,0BAA0B,OAAO,UAAU,CAAC;AAClD,YAAM,2BAA2B,wBAAwB,WAAW,CAAC;AACrE,+BAAyB,YAAY,0FAA0F,UAAU,IAAI,qBAAqB;AAGlK,YAAM,SAAS,KAAK,MAAM,YAAY;AAEtC,YAAM,0BAA0B,OAAO,UAAU,CAAC;AAClD,YAAM,2BAA2B,wBAAwB,WAAW,CAAC;AACrE,+BAAyB,YAAY,6GAA6G,UAAU,IAAI,qBAAqB;AAAA,IACvL;AAAA,EACF;AACF;AAGA,IAAO,sBAAQ;",
6
- "names": []
7
- }
@@ -1,7 +0,0 @@
1
- {
2
- "version": 3,
3
- "sources": ["../../../../dpr/components/_reports/report-data-table/types.d.ts"],
4
- "sourcesContent": ["import { DataTable } from '../../../utils/DataTableBuilder/types'\nimport { Pagination } from '../report-pagination/types'\n\nexport interface DataTableOptions {\n dataTable: DataTable\n classification: string\n printable?: boolean\n pagination: Pagination\n totals: string\n count?: number\n}\n"],
5
- "mappings": ";;;;;;;;;;;;;;AAAA;AAAA;",
6
- "names": []
7
- }
@@ -1,123 +0,0 @@
1
- "use strict";
2
- var __create = Object.create;
3
- var __defProp = Object.defineProperty;
4
- var __getOwnPropDesc = Object.getOwnPropertyDescriptor;
5
- var __getOwnPropNames = Object.getOwnPropertyNames;
6
- var __getProtoOf = Object.getPrototypeOf;
7
- var __hasOwnProp = Object.prototype.hasOwnProperty;
8
- var __export = (target, all) => {
9
- for (var name in all)
10
- __defProp(target, name, { get: all[name], enumerable: true });
11
- };
12
- var __copyProps = (to, from, except, desc) => {
13
- if (from && typeof from === "object" || typeof from === "function") {
14
- for (let key of __getOwnPropNames(from))
15
- if (!__hasOwnProp.call(to, key) && key !== except)
16
- __defProp(to, key, { get: () => from[key], enumerable: !(desc = __getOwnPropDesc(from, key)) || desc.enumerable });
17
- }
18
- return to;
19
- };
20
- var __toESM = (mod, isNodeMode, target) => (target = mod != null ? __create(__getProtoOf(mod)) : {}, __copyProps(
21
- // If the importer is in node compatibility mode or this is not an ESM
22
- // file that has been converted to a CommonJS file using a Babel-
23
- // compatible transform (i.e. "__esModule" has not been set), then set
24
- // "default" to the CommonJS "module.exports" for node compatibility.
25
- isNodeMode || !mod || !mod.__esModule ? __defProp(target, "default", { value: mod, enumerable: true }) : target,
26
- mod
27
- ));
28
- var __toCommonJS = (mod) => __copyProps(__defProp({}, "__esModule", { value: true }), mod);
29
- var utils_exports = {};
30
- __export(utils_exports, {
31
- createDataTable: () => createDataTable,
32
- default: () => utils_default
33
- });
34
- module.exports = __toCommonJS(utils_exports);
35
- var import_CollatedSummaryBuilder = __toESM(require("../../../utils/CollatedSummaryBuilder/CollatedSummaryBuilder"));
36
- var import_DataTableBuilder = __toESM(require("../../../utils/DataTableBuilder/DataTableBuilder"));
37
- var import_ParentChildDataTableBuilder = __toESM(require("../../../utils/ParentChildDataTableBuilder/ParentChildDataTableBuilder"));
38
- var import_SectionedDataTableBuilder = __toESM(require("../../../utils/SectionedDataTableBuilder/SectionedDataTableBuilder"));
39
- var import_SectionedFieldsTableBuilder = __toESM(require("../../../utils/SectionedFieldsTableBuilder/SectionedFieldsTableBuilder"));
40
- const validateDefinition = (definition) => {
41
- const { variant } = definition;
42
- const { specification } = variant;
43
- if (!specification) {
44
- throw new Error("No specification in definition");
45
- }
46
- return { variant, specification };
47
- };
48
- const buildListTable = (definition, columns, reportData, summariesData, reportQuery) => {
49
- const { variant, specification } = validateDefinition(definition);
50
- const { interactive } = variant;
51
- const collatedSummaryBuilder = new import_CollatedSummaryBuilder.default(specification, summariesData);
52
- return new import_DataTableBuilder.default(specification.fields).withSummaries(collatedSummaryBuilder.collateDataTableSummaries()).withHeaderOptions({
53
- columns: columns.value,
54
- reportQuery,
55
- interactive: Boolean(interactive)
56
- }).buildTable(reportData);
57
- };
58
- const buildParentChildTable = (definition, columns, reportData, childData) => {
59
- return new import_ParentChildDataTableBuilder.default(definition.variant).withNoHeaderOptions(columns.value).withChildData(childData).buildTable(reportData);
60
- };
61
- const buildSummarySectionTable = (definition, columns, reportData, summariesData, reportQuery) => {
62
- const { variant, specification } = validateDefinition(definition);
63
- const { interactive } = variant;
64
- const collatedSummaryBuilder = new import_CollatedSummaryBuilder.default(specification, summariesData);
65
- return new import_SectionedDataTableBuilder.default(specification).withSummaries(collatedSummaryBuilder.collateDataTableSummaries()).withHeaderOptions({
66
- columns: columns.value,
67
- reportQuery,
68
- interactive: Boolean(interactive)
69
- }).buildTable(reportData);
70
- };
71
- const buildRowSectionedTable = (definition, reportData, childData) => {
72
- const { variant } = definition;
73
- const { interactive } = variant;
74
- return reportData.map((rowData) => {
75
- return new import_SectionedFieldsTableBuilder.default(variant).withHeaderOptions({
76
- columns: new Array(2),
77
- interactive: Boolean(interactive)
78
- }).withChildData(childData).buildTable([rowData]);
79
- });
80
- };
81
- const createDataTable = (definition, columns, reportData, childData, summariesData, reportQuery) => {
82
- let dataTables = [];
83
- const { specification } = validateDefinition(definition);
84
- const { template } = specification;
85
- switch (template) {
86
- case "summary-section":
87
- case "list-section": {
88
- const dataTable = buildSummarySectionTable(definition, columns, reportData, summariesData, reportQuery);
89
- dataTables.push(dataTable);
90
- break;
91
- }
92
- case "parent-child":
93
- case "parent-child-section": {
94
- const dataTable = buildParentChildTable(definition, columns, reportData, childData);
95
- dataTables.push(dataTable);
96
- break;
97
- }
98
- case "list": {
99
- const dataTable = buildListTable(definition, columns, reportData, summariesData, reportQuery);
100
- dataTables.push(dataTable);
101
- break;
102
- }
103
- case "row-section-child":
104
- case "row-section": {
105
- dataTables = buildRowSectionedTable(definition, reportData, childData);
106
- break;
107
- }
108
- default: {
109
- const dataTable = buildListTable(definition, columns, reportData, summariesData, reportQuery);
110
- dataTables.push(dataTable);
111
- break;
112
- }
113
- }
114
- return dataTables;
115
- };
116
- var utils_default = {
117
- createDataTable
118
- };
119
- // Annotate the CommonJS export names for ESM import in node:
120
- 0 && (module.exports = {
121
- createDataTable
122
- });
123
- //# sourceMappingURL=utils.js.map