@ministryofjustice/hmpps-digital-prison-reporting-frontend 4.25.1 → 4.26.1

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 (149) hide show
  1. package/dpr/all.scss +17 -35
  2. package/dpr/components/_async/async-filters-form/style.scss +2 -2
  3. package/dpr/components/_async/async-filters-form/types.d.js.map +1 -1
  4. package/dpr/components/_async/async-filters-form/types.d.ts +1 -1
  5. package/dpr/components/_async/request-details/style.scss +1 -1
  6. package/dpr/components/_charts/chart/Chart.js +1 -1
  7. package/dpr/components/_charts/chart/Chart.js.map +1 -1
  8. package/dpr/components/_charts/chart/ChartColours.js +1 -1
  9. package/dpr/components/_charts/chart/ChartColours.js.map +1 -1
  10. package/dpr/components/_charts/chart/ChartTimeseries.js +1 -1
  11. package/dpr/components/_charts/chart/ChartTimeseries.js.map +1 -1
  12. package/dpr/components/_charts/chart/bar/BarChart.js +1 -1
  13. package/dpr/components/_charts/chart/bar/BarChart.js.map +2 -2
  14. package/dpr/components/_charts/chart/bar/BarChart.ts +1 -1
  15. package/dpr/components/_charts/chart/bar-timeseries/BarTimeseriesChart.js +1 -1
  16. package/dpr/components/_charts/chart/bar-timeseries/BarTimeseriesChart.js.map +1 -1
  17. package/dpr/components/_charts/chart/buckets/Buckets.js +1 -1
  18. package/dpr/components/_charts/chart/buckets/Buckets.js.map +1 -1
  19. package/dpr/components/_charts/chart/doughnut/DoughnutChart.js +1 -1
  20. package/dpr/components/_charts/chart/doughnut/DoughnutChart.js.map +2 -2
  21. package/dpr/components/_charts/chart/doughnut/DoughnutChart.ts +1 -1
  22. package/dpr/components/_charts/chart/heatmap/HeatmapChart.js +1 -1
  23. package/dpr/components/_charts/chart/heatmap/HeatmapChart.js.map +3 -3
  24. package/dpr/components/_charts/chart/heatmap/HeatmapChart.ts +1 -1
  25. package/dpr/components/_charts/chart/line/LineChart.js +1 -1
  26. package/dpr/components/_charts/chart/line/LineChart.js.map +1 -1
  27. package/dpr/components/_charts/chart/line-timeseries/LineTimeseriesChart.js +1 -1
  28. package/dpr/components/_charts/chart/line-timeseries/LineTimeseriesChart.js.map +1 -1
  29. package/dpr/components/_charts/chart/styles.scss +6 -0
  30. package/dpr/components/_charts/chart/view.njk +2 -4
  31. package/dpr/components/_dashboards/scorecard/Scorecard.js +1 -1
  32. package/dpr/components/_dashboards/scorecard/Scorecard.js.map +2 -2
  33. package/dpr/components/_dashboards/scorecard/Scorecard.ts +0 -3
  34. package/dpr/components/_dashboards/scorecard-group/ScorecardGroup.js +1 -1
  35. package/dpr/components/_dashboards/scorecard-group/ScorecardGroup.js.map +3 -3
  36. package/dpr/components/_dashboards/scorecard-group/ScorecardGroup.ts +0 -3
  37. package/dpr/components/_filters/filters-interactive/style.scss +4 -3
  38. package/dpr/components/_filters/fitlers-save-defaults/styles.scss +0 -29
  39. package/dpr/components/_filters/fitlers-save-defaults/view.njk +2 -2
  40. package/dpr/components/_reports/report-heading/styles.scss +4 -0
  41. package/dpr/data/agentConfig.js +1 -1
  42. package/dpr/data/agentConfig.js.map +1 -1
  43. package/dpr/data/dashboardClient.js +1 -1
  44. package/dpr/data/dashboardClient.js.map +1 -1
  45. package/dpr/data/missingReportClient.js +1 -1
  46. package/dpr/data/missingReportClient.js.map +1 -1
  47. package/dpr/data/productCollectionClient.js +1 -1
  48. package/dpr/data/productCollectionClient.js.map +1 -1
  49. package/dpr/data/reportDataStore.js +1 -1
  50. package/dpr/data/reportDataStore.js.map +1 -1
  51. package/dpr/data/reportingClient.js +1 -1
  52. package/dpr/data/reportingClient.js.map +1 -1
  53. package/dpr/data/restClient.js +1 -1
  54. package/dpr/data/restClient.js.map +1 -1
  55. package/dpr/routes/journeys/download-report/controller.js +1 -1
  56. package/dpr/routes/journeys/download-report/controller.js.map +1 -1
  57. package/dpr/routes/journeys/download-report/request-download/form/controller.js +1 -1
  58. package/dpr/routes/journeys/download-report/request-download/form/controller.js.map +1 -1
  59. package/dpr/routes/journeys/download-report/request-download/form/submitted/controller.js +1 -1
  60. package/dpr/routes/journeys/download-report/request-download/form/submitted/controller.js.map +1 -1
  61. package/dpr/routes/journeys/download-report/request-download/service.js +1 -1
  62. package/dpr/routes/journeys/download-report/request-download/service.js.map +1 -1
  63. package/dpr/routes/journeys/my-reports/bookmarks/controller.js +1 -1
  64. package/dpr/routes/journeys/my-reports/bookmarks/controller.js.map +1 -1
  65. package/dpr/routes/journeys/my-reports/bookmarks/list/controller.js +1 -1
  66. package/dpr/routes/journeys/my-reports/bookmarks/list/controller.js.map +1 -1
  67. package/dpr/routes/journeys/my-reports/bookmarks/service.js +4 -4
  68. package/dpr/routes/journeys/my-reports/bookmarks/service.js.map +2 -2
  69. package/dpr/routes/journeys/my-reports/recently-viewed/controller.js +1 -1
  70. package/dpr/routes/journeys/my-reports/recently-viewed/controller.js.map +1 -1
  71. package/dpr/routes/journeys/my-reports/recently-viewed/list/controller.js +1 -1
  72. package/dpr/routes/journeys/my-reports/recently-viewed/list/controller.js.map +1 -1
  73. package/dpr/routes/journeys/my-reports/requested-reports/controller.js +1 -1
  74. package/dpr/routes/journeys/my-reports/requested-reports/controller.js.map +1 -1
  75. package/dpr/routes/journeys/my-reports/requested-reports/list/controller.js +1 -1
  76. package/dpr/routes/journeys/my-reports/requested-reports/list/controller.js.map +1 -1
  77. package/dpr/routes/journeys/product-collection/selected/controller.js +1 -1
  78. package/dpr/routes/journeys/product-collection/selected/controller.js.map +1 -1
  79. package/dpr/routes/journeys/request-missing-report/form/controller.js +1 -1
  80. package/dpr/routes/journeys/request-missing-report/form/controller.js.map +1 -1
  81. package/dpr/routes/journeys/request-missing-report/submitted/controller.js +1 -1
  82. package/dpr/routes/journeys/request-missing-report/submitted/controller.js.map +1 -1
  83. package/dpr/routes/journeys/request-report/controller.js +1 -1
  84. package/dpr/routes/journeys/request-report/controller.js.map +1 -1
  85. package/dpr/routes/journeys/request-report/filters/controller.js +1 -1
  86. package/dpr/routes/journeys/request-report/filters/controller.js.map +1 -1
  87. package/dpr/routes/journeys/request-report/filters/utils.js +1 -1
  88. package/dpr/routes/journeys/request-report/filters/utils.js.map +3 -3
  89. package/dpr/routes/journeys/request-report/filters/utils.ts +8 -1
  90. package/dpr/routes/journeys/request-report/status/controller.js +1 -1
  91. package/dpr/routes/journeys/request-report/status/controller.js.map +1 -1
  92. package/dpr/routes/journeys/view-report/async/controller.js +1 -1
  93. package/dpr/routes/journeys/view-report/async/controller.js.map +1 -1
  94. package/dpr/routes/journeys/view-report/async/dashboard/controller.js +1 -1
  95. package/dpr/routes/journeys/view-report/async/dashboard/controller.js.map +1 -1
  96. package/dpr/routes/journeys/view-report/async/report/controller.js +1 -1
  97. package/dpr/routes/journeys/view-report/async/report/controller.js.map +1 -1
  98. package/dpr/routes/journeys/view-report/controller.js +1 -1
  99. package/dpr/routes/journeys/view-report/controller.js.map +1 -1
  100. package/dpr/routes/journeys/view-report/sync/dashboard/controller.js +1 -1
  101. package/dpr/routes/journeys/view-report/sync/dashboard/controller.js.map +1 -1
  102. package/dpr/routes/journeys/view-report/sync/load-report/controller.js +1 -1
  103. package/dpr/routes/journeys/view-report/sync/load-report/controller.js.map +1 -1
  104. package/dpr/routes/journeys/view-report/sync/report/controller.js +1 -1
  105. package/dpr/routes/journeys/view-report/sync/report/controller.js.map +1 -1
  106. package/dpr/services/defaultFilterValuesService.js +1 -1
  107. package/dpr/services/defaultFilterValuesService.js.map +1 -1
  108. package/dpr/services/featureFlagService.js +1 -1
  109. package/dpr/services/featureFlagService.js.map +1 -1
  110. package/dpr/services/missingReport/missingReportService.js +1 -1
  111. package/dpr/services/missingReport/missingReportService.js.map +1 -1
  112. package/dpr/services/productCollection/productCollectionService.js +1 -1
  113. package/dpr/services/productCollection/productCollectionService.js.map +1 -1
  114. package/dpr/services/productCollection/productCollectionStoreService.js +1 -1
  115. package/dpr/services/productCollection/productCollectionStoreService.js.map +1 -1
  116. package/dpr/services/reportStoreService.js +1 -1
  117. package/dpr/services/reportStoreService.js.map +1 -1
  118. package/dpr/types/DprUser.js +1 -1
  119. package/dpr/types/DprUser.js.map +1 -1
  120. package/dpr/types/ReportQuery.js +1 -1
  121. package/dpr/types/ReportQuery.js.map +1 -1
  122. package/dpr/types/express.d.js +1 -1
  123. package/dpr/types/express.d.js.map +4 -4
  124. package/dpr/types/express.d.ts +1 -1
  125. package/dpr/utils/CollatedSummaryBuilder/CollatedSummaryBuilder.js +1 -1
  126. package/dpr/utils/CollatedSummaryBuilder/CollatedSummaryBuilder.js.map +1 -1
  127. package/dpr/utils/DataTableBuilder/DataTableBuilder.js +1 -1
  128. package/dpr/utils/DataTableBuilder/DataTableBuilder.js.map +3 -3
  129. package/dpr/utils/DataTableBuilder/DataTableBuilder.test.ts +1 -0
  130. package/dpr/utils/DataTableBuilder/DataTableBuilder.ts +1 -1
  131. package/dpr/utils/DateMapper/DateMapper.js +1 -1
  132. package/dpr/utils/DateMapper/DateMapper.js.map +1 -1
  133. package/dpr/utils/ErrorHandler.js +1 -1
  134. package/dpr/utils/ErrorHandler.js.map +2 -2
  135. package/dpr/utils/ParentChildDataTableBuilder/ParentChildDataTableBuilder.js +1 -1
  136. package/dpr/utils/ParentChildDataTableBuilder/ParentChildDataTableBuilder.js.map +2 -2
  137. package/dpr/utils/SectionedDataTableBuilder/SectionedDataTableBuilder.js +1 -1
  138. package/dpr/utils/SectionedDataTableBuilder/SectionedDataTableBuilder.js.map +1 -1
  139. package/dpr/utils/SectionedFieldsTableBuilder/SectionedFieldsTableBuilder.js +1 -1
  140. package/dpr/utils/SectionedFieldsTableBuilder/SectionedFieldsTableBuilder.js.map +2 -2
  141. package/dpr/utils/SectionedFieldsTableBuilder/SectionedFieldsTableBuilder.ts +2 -2
  142. package/dpr/utils/SummaryDataTableBuilder/SummaryDataTableBuilder.js +1 -1
  143. package/dpr/utils/SummaryDataTableBuilder/SummaryDataTableBuilder.js.map +1 -1
  144. package/dpr/utils/UserStoreItemBuilder.js +1 -1
  145. package/dpr/utils/UserStoreItemBuilder.js.map +1 -1
  146. package/dpr/utils/datasetHelper.js +1 -1
  147. package/dpr/utils/datasetHelper.js.map +3 -3
  148. package/dpr/utils/datasetHelper.ts +2 -0
  149. package/package.json +5 -4
@@ -2,6 +2,6 @@
2
2
  "version": 3,
3
3
  "sources": ["../../../../src/dpr/utils/SectionedDataTableBuilder/SectionedDataTableBuilder.ts"],
4
4
  "sourcesContent": ["import Dict = NodeJS.Dict\nimport { components } from '../../types/api'\nimport { Cell, DataTable } from '../DataTableBuilder/types'\nimport type { SummaryTemplate, Template } from '../../types/Templates'\nimport DataTableBuilder from '../DataTableBuilder/DataTableBuilder'\nimport { distinct } from '../arrayUtils'\nimport SummaryDataTableBuilder from '../SummaryDataTableBuilder/SummaryDataTableBuilder'\nimport { SectionSortKey } from './types'\n\nclass SectionedDataTableBuilder extends DataTableBuilder {\n sections: Array<string>\n\n template: Template\n\n constructor(specification: components['schemas']['Specification']) {\n const { fields, sections, template } = specification\n super(fields)\n this.sections = sections\n this.template = template\n }\n\n /**\n * Creates the section heading strings\n *\n * @param {Dict<string>[]} data\n * @param {FieldDefinition[]} sectionFields\n * @return {*} {string[]} array of section headings\n */\n private createSectionHeadings(\n data: Dict<string>[],\n sectionFields: components['schemas']['FieldDefinition'][],\n ): string[] {\n return data\n .map(\n (rowData): SectionSortKey => ({\n description: this.mapSectionDescription(rowData),\n sortKey: this.getSortKey(rowData, sectionFields),\n }),\n )\n .sort(this.sortKeyComparison())\n .map((s) => s.description)\n .reduce(distinct, [])\n }\n\n /**\n * Initialise section heading arrays\n *\n * @private\n * @param {string[]} sectionDescriptions\n * @return {*}\n * @memberof SectionedDataTableBuilder\n */\n initSectionData(sectionDescriptions: string[]) {\n const sectionedData: Dict<Cell[][]> | Dict<Array<Dict<string>>> = {}\n sectionDescriptions.forEach((sectionDescription) => {\n sectionedData[sectionDescription] = []\n })\n return sectionedData\n }\n\n /**\n * Maps the rows to the correct section\n *\n * @private\n * @param {Array<Dict<string>>} data\n * @param {Dict<Cell[][]>} sectionedData\n * @return {*}\n * @memberof SectionedDataTableBuilder\n */\n private mapRowsToSection(data: Array<Dict<string>>, sectionedData: Dict<Cell[][]>) {\n return data.reduce((previousValue, rowData) => {\n const sectionDescription: string = this.mapSectionDescription(rowData)\n const mappedData = this.mapRow(rowData)\n const previousValueDescription = previousValue[sectionDescription]\n\n return {\n ...previousValue,\n ...(previousValueDescription && {\n [sectionDescription]: previousValueDescription.concat([mappedData]),\n }),\n }\n }, sectionedData)\n }\n\n /**\n * Maps the rows to the correct section\n *\n * @private\n * @param {Array<Dict<string>>} data\n * @param {Dict<Cell[][]>} sectionedData\n * @return {*}\n * @memberof SectionedDataTableBuilder\n */\n private mapDataToSection(data: Array<Dict<string>>, sectionedData: Dict<Array<Dict<string>>>) {\n return data.reduce((previousValue, rowData) => {\n const sectionDescription: string = this.mapSectionDescription(rowData)\n const previousValueDescription = previousValue[sectionDescription]\n const section = {\n ...previousValue,\n ...(previousValueDescription && {\n [sectionDescription]: previousValueDescription.concat([rowData]),\n }),\n }\n return section\n }, sectionedData)\n }\n\n /**\n * Gets the counts for rows in section\n *\n * @param {Dict<Cell[][]>} sectionedData\n * @param {string} sectionDescription\n * @return {*}\n * @memberof SectionedDataTableBuilder\n */\n getSectionCount(sectionedData: Dict<Cell[][]> | Dict<Dict<string>[]>, sectionDescription: string) {\n const count = sectionedData[sectionDescription] ? sectionedData[sectionDescription].length : 0\n const countDescription = `${count} result${count === 1 ? '' : 's'}`\n\n return {\n count,\n countDescription,\n }\n }\n\n /**\n * Creates the summaries and builds the table with summaries\n *\n * @private\n * @param {string} sectionDescription\n * @param {Cell[][]} mappedTableData\n * @param {Cell[]} header\n * @return {*}\n * @memberof SectionedDataTableBuilder\n */\n private mapSummariesAndCreateTable(sectionDescription: string, mappedTableData: Cell[][], header: Cell[]) {\n let tableContent: Cell[][] = []\n\n let mappedSectionHeaderSummary: Cell[][] = []\n let mappedHeaderSummary: Cell[][] = []\n let mappedFooterSummary: Cell[][] = []\n let mappedSectionFooterSummary: Cell[][] = []\n\n mappedSectionHeaderSummary = this.mapSectionSummaryTables(sectionDescription, 'section-header', this.columns.length)\n mappedHeaderSummary = this.mapSectionSummaryRows('table-header', sectionDescription)\n mappedFooterSummary = this.mapSectionSummaryRows('table-footer', sectionDescription)\n mappedSectionFooterSummary = this.mapSectionSummaryTables(sectionDescription, 'section-footer', this.columns.length)\n\n tableContent = mappedSectionHeaderSummary\n .concat(mappedTableData.length > 0 ? [header] : [])\n .concat(mappedHeaderSummary)\n .concat(mappedTableData)\n .concat(mappedFooterSummary)\n .concat(mappedSectionFooterSummary)\n\n return tableContent\n }\n\n /**\n * Creates the table data\n * - if summaries are present, includes the summaries data\n *\n * @private\n * @param {string[]} sectionDescriptions\n * @param {Dict<Cell[][]>} sectionedData\n * @param {Cell[]} header\n * @return {*}\n * @memberof SectionedDataTableBuilder\n */\n private createTableContent(sectionDescriptions: string[], sectionedData: Dict<Cell[][]>, header: Cell[]) {\n return sectionDescriptions.flatMap((sectionDescription, index) => {\n const { count, countDescription } = this.getSectionCount(sectionedData, sectionDescription)\n const mappedTableData = sectionedData[sectionDescription]\n\n let tableContent: Cell[][] = []\n if (mappedTableData) {\n if (Object.keys(this.reportSummaries).length) {\n tableContent = this.mapSummariesAndCreateTable(sectionDescription, mappedTableData, header)\n } else {\n tableContent = tableContent.concat(mappedTableData.length > 0 ? [header] : []).concat(mappedTableData)\n }\n }\n\n const sectionHeader = this.createSectionHeader(sectionDescription, index, count, countDescription)\n\n return [...sectionHeader, ...tableContent]\n })\n }\n\n createSectionHeader(sectionDescription: string, index: number, count?: number, countDescription?: string) {\n const header = []\n if (index !== 0) {\n header.push([\n {\n classes: 'dpr-section-header-spacer',\n colspan: this.columns.length,\n text: '',\n },\n ])\n }\n header.push([\n {\n classes: 'dpr-section-header',\n colspan: this.columns.length,\n html: `<h2 class=\"govuk-heading-m\">${sectionDescription}${\n count && count > 0 ? ` <span class='govuk-caption-m'>${countDescription}</span>` : ''\n }</h2>`,\n },\n ])\n header.push([\n {\n classes: 'dpr-section-header-spacer-bottom',\n colspan: this.columns.length,\n text: '',\n },\n ])\n return header\n }\n\n private mapSectionSummaryRows(template: SummaryTemplate, sectionDescription: string): Cell[][] {\n if (this.reportSummaries[template]) {\n return this.reportSummaries[template].flatMap((reportSummary) =>\n reportSummary.data\n .filter((rowData) => this.mapSectionDescription(rowData) === sectionDescription)\n .map((rowData) =>\n this.mapRow(\n rowData,\n `dpr-report-summary-cell dpr-report-summary-cell-${template}`,\n <components['schemas']['FieldDefinition'][]>reportSummary.fields,\n ),\n ),\n )\n }\n return []\n }\n\n private mapSectionSummaryTables(\n sectionDescription: string,\n summaryTemplate: SummaryTemplate,\n columnsLength: number,\n ): Cell[][] {\n const summaries = this.reportSummaries[summaryTemplate]\n if (summaries) {\n const htmlTables = summaries.map((summary) => {\n const data = summary.data.filter((row) => this.mapSectionDescription(row) === sectionDescription)\n\n if (data.length > 0) {\n const dataTable = new SummaryDataTableBuilder(summary, this.sections).buildTable(data)\n\n const htmlTable = this.convertDataTableToHtml(dataTable)\n\n return `<div class='dpr-summary-container'>${htmlTable}</div>`\n }\n return ''\n })\n\n const summaryContent = htmlTables.join('')\n if (summaryContent.length > 0) {\n return [\n [\n {\n classes: 'dpr-summary-cell',\n colspan: columnsLength,\n html: `<div class='dpr-summary-container-group dpr-summary-container-group-${summaryTemplate}'>${summaryContent}</div>`,\n },\n ],\n ]\n }\n }\n return []\n }\n\n mapSectionDescription(rowData: NodeJS.Dict<string>): string {\n const { sections } = this\n\n return this.mapNamesToFields(sections)\n .map((s) => `${s.display}: ${this.mapCellValue(s, rowData[s.name])}`)\n .join(', ')\n }\n\n mapSections(data: Array<Dict<string>>) {\n const sectionHeadings = this.initSectionedHeadings(data)\n let { sectionedData } = sectionHeadings\n\n // Maps data to sections\n if (this.template !== 'summary-section') {\n if (this.template === 'parent-child-section') {\n sectionedData = this.mapDataToSection(data, sectionedData as Dict<Dict<string>[]>)\n } else {\n sectionedData = this.mapRowsToSection(data, sectionedData as Dict<Cell[][]>)\n }\n }\n\n return {\n sectionDescriptions: sectionHeadings.sectionDescriptions,\n sectionedData,\n }\n }\n\n initSectionedHeadings(data: Array<Dict<string>>) {\n // Get the section definition data\n const sectionFields = this.mapNamesToFields(this.sections)\n // create the sectionHeadings\n const sectionDescriptions = this.createSectionHeadings(data, sectionFields)\n // init empty sections\n const sectionedData = this.initSectionData(sectionDescriptions)\n\n return {\n sectionDescriptions,\n sectionedData,\n }\n }\n\n /**\n * Creates the table rows.\n *\n * @private\n * @param {Array<Dict<string>>} data\n * @param {Cell[]} header\n * @return {*} {Cell[][]}\n * @memberof SectionedDataTableBuilder\n */\n private mapSectionedData(data: Array<Dict<string>>, header: Cell[]): Cell[][] {\n const { sectionDescriptions, sectionedData } = this.mapSections(data)\n // Create the table\n const tableContent = this.createTableContent(sectionDescriptions, sectionedData as Dict<Cell[][]>, header)\n\n return tableContent\n }\n\n override buildTable(data: Array<Dict<string>>): DataTable {\n return {\n head: null,\n rows: this.mapSectionedData(data, this.mapHeader(true, 'govuk-table__header')),\n rowCount: data.length,\n colCount: this.columns.length,\n }\n }\n}\n\nexport { SectionedDataTableBuilder }\nexport default SectionedDataTableBuilder\n"],
5
- "mappings": "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",
5
+ "mappings": "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",
6
6
  "names": ["SectionedDataTableBuilder_exports", "__export", "SectionedDataTableBuilder", "SectionedDataTableBuilder_default", "__toCommonJS", "import_DataTableBuilder", "import_arrayUtils", "import_SummaryDataTableBuilder", "DataTableBuilder", "specification", "fields", "sections", "template", "data", "sectionFields", "rowData", "s", "sectionDescriptions", "sectionedData", "sectionDescription", "previousValue", "mappedData", "previousValueDescription", "count", "countDescription", "mappedTableData", "header", "tableContent", "mappedSectionHeaderSummary", "mappedHeaderSummary", "mappedFooterSummary", "mappedSectionFooterSummary", "index", "reportSummary", "summaryTemplate", "columnsLength", "summaries", "summaryContent", "summary", "row", "dataTable", "SummaryDataTableBuilder", "sectionHeadings"]
7
7
  }
@@ -1,2 +1,2 @@
1
- "use strict";var m=Object.create;var o=Object.defineProperty;var f=Object.getOwnPropertyDescriptor;var u=Object.getOwnPropertyNames;var D=Object.getPrototypeOf,F=Object.prototype.hasOwnProperty;var g=(a,i)=>{for(var t in i)o(a,t,{get:i[t],enumerable:!0})},h=(a,i,t,d)=>{if(i&&typeof i=="object"||typeof i=="function")for(let e of u(i))!F.call(a,e)&&e!==t&&o(a,e,{get:()=>i[e],enumerable:!(d=f(i,e))||d.enumerable});return a};var y=(a,i,t)=>(t=a!=null?m(D(a)):{},h(i||!a||!a.__esModule?o(t,"default",{value:a,enumerable:!0}):t,a)),C=a=>h(o({},"__esModule",{value:!0}),a);var T={};g(T,{SectionedFieldsDataTableBuilder:()=>c,default:()=>S});module.exports=C(T);var p=y(require("../ParentChildDataTableBuilder/ParentChildDataTableBuilder"));class c extends p.default{constructor(i){const{sectionedFields:t,template:d}=i.specification;super(i),this.sectionedFields=t,this.sections=this.sectionedFields.map(e=>e.name),this.template=d,this.childVariants=this.variant.childVariants||[]}getChildFields(i){const t=this.childVariants.find(e=>e.id===i);let d=[];if(t){const{specification:e}=t;d=e?e.fields:d}return d}getJoinKey(){return this.childVariants[0].joinFields[0]}initSectionedData(i){return i.flatMap(t=>this.sectionedFields.map(e=>{const s=this.mapNamesToFields([e.name])[0];let n=[];const{child:l}=e;return e.fields?n=this.mapNamesToFields(e.fields):e.child&&(n=this.getChildFields(e.child)),{header:s,fields:n,child:l}}).map(e=>{if(e.child){const s=this.getChildData(e.child),n=e.fields.filter(r=>r.visible),l=this.getJoinKey();return{header:e.header.display,fields:s?s.data.filter(r=>r[l]===t[l]).map(r=>({heading:r[n[0]?.name]||"Not found",data:r[n[1]?.name]||"Not found"})):[]}}return{header:e.header.display,fields:e.fields.filter(s=>s.visible).map(s=>({heading:s.display,data:t[s.name]}))}}))}getChildData(i){return this.childData.find(t=>t.id===i)}createRows(i){return this.initSectionedData(i).flatMap((e,s)=>{let n=[];e.header&&(n=this.createSectionHeader(e.header,s));const l=e.fields.map(r=>[{text:r.heading,classes:"dpr-row-heading"},{text:r.data,classes:"dpr-row-heading-data"}]);return[...n,...l]})}buildTable(i){return{head:[],rows:this.createRows(i),rowCount:i.length,colCount:this.columns.length}}}var S=c;0&&(module.exports={SectionedFieldsDataTableBuilder});
1
+ "use strict";var m=Object.create;var o=Object.defineProperty;var f=Object.getOwnPropertyDescriptor;var u=Object.getOwnPropertyNames;var D=Object.getPrototypeOf,F=Object.prototype.hasOwnProperty;var g=(a,i)=>{for(var t in i)o(a,t,{get:i[t],enumerable:!0})},h=(a,i,t,d)=>{if(i&&typeof i=="object"||typeof i=="function")for(let e of u(i))!F.call(a,e)&&e!==t&&o(a,e,{get:()=>i[e],enumerable:!(d=f(i,e))||d.enumerable});return a};var y=(a,i,t)=>(t=a!=null?m(D(a)):{},h(i||!a||!a.__esModule?o(t,"default",{value:a,enumerable:!0}):t,a)),C=a=>h(o({},"__esModule",{value:!0}),a);var T={};g(T,{SectionedFieldsDataTableBuilder:()=>c,default:()=>S});module.exports=C(T);var p=y(require("../ParentChildDataTableBuilder/ParentChildDataTableBuilder"));class c extends p.default{sectionedFields;constructor(i){const{sectionedFields:t,template:d}=i.specification;super(i),this.sectionedFields=t,this.sections=this.sectionedFields.map(e=>e.name),this.template=d,this.childVariants=this.variant.childVariants||[]}getChildFields(i){const t=this.childVariants.find(e=>e.id===i);let d=[];if(t){const{specification:e}=t;d=e?e.fields:d}return d}getJoinKey(){return this.childVariants[0].joinFields[0]}initSectionedData(i){return i.flatMap(t=>this.sectionedFields.map(e=>{const s=this.mapNamesToFields([e.name])[0];let n=[];const{child:r}=e;return e.fields?n=this.mapNamesToFields(e.fields):e.child&&(n=this.getChildFields(e.child)),{header:s,fields:n,child:r}}).map(e=>{if(e.child){const s=this.getChildData(e.child),n=e.fields.filter(l=>l.visible),r=this.getJoinKey();return{header:e.header.display,fields:s?s.data.filter(l=>l[r]===t[r]).map(l=>({heading:l[n[0]?.name]||"Not found",data:l[n[1]?.name]||"Not found"})):[]}}return{header:e.header.display,fields:e.fields.filter(s=>s.visible).map(s=>({heading:s.display,data:t[s.name]}))}}))}getChildData(i){return this.childData.find(t=>t.id===i)}createRows(i){return this.initSectionedData(i).flatMap((e,s)=>{let n=[];e.header&&(n=this.createSectionHeader(e.header,s));const r=e.fields.map(l=>[{text:l.heading,classes:"dpr-row-heading"},{text:l.data,classes:"dpr-row-heading-data"}]);return[...n,...r]})}buildTable(i){return{head:[],rows:this.createRows(i),rowCount:i.length,colCount:this.columns.length}}}var S=c;0&&(module.exports={SectionedFieldsDataTableBuilder});
2
2
  //# sourceMappingURL=SectionedFieldsTableBuilder.js.map
@@ -1,7 +1,7 @@
1
1
  {
2
2
  "version": 3,
3
3
  "sources": ["../../../../src/dpr/utils/SectionedFieldsTableBuilder/SectionedFieldsTableBuilder.ts"],
4
- "sourcesContent": ["import Dict = NodeJS.Dict\nimport { components } from '../../types/api'\nimport { Cell, DataTable, FieldDefinition } from '../DataTableBuilder/types'\nimport type { Template } from '../../types/Templates'\nimport ParentChildDataTableBuilder from '../ParentChildDataTableBuilder/ParentChildDataTableBuilder'\n\nexport interface SectionedField {\n name: string\n fields?: string[]\n child?: string\n}\n\nclass SectionedFieldsDataTableBuilder extends ParentChildDataTableBuilder {\n // TODO: change this to use schema type if ever implemented in the backend\n sectionedFields: SectionedField[]\n\n override template: Template\n\n override childVariants: components['schemas']['ChildVariantDefinition'][]\n\n constructor(variant: components['schemas']['VariantDefinition']) {\n // TODO: removed the union if sectionedFields changed to use schema type\n const { sectionedFields, template } = variant.specification as components['schemas']['Specification'] & {\n sectionedFields: SectionedField[]\n }\n super(variant)\n\n this.sectionedFields = sectionedFields\n this.sections = this.sectionedFields.map((f) => f.name)\n this.template = template\n this.childVariants = this.variant.childVariants || []\n }\n\n getChildFields(childId: string): FieldDefinition[] {\n const childVariant = this.childVariants.find((child) => child.id === childId)\n let fields: FieldDefinition[] = []\n if (childVariant) {\n const { specification } = childVariant\n fields = specification ? specification.fields : fields\n }\n return fields\n }\n\n getJoinKey() {\n return this.childVariants[0].joinFields[0]\n }\n\n initSectionedData(data: Array<Dict<string>>) {\n return data.flatMap((row) => {\n const initialisedSectionsWithFields = this.sectionedFields.map((section) => {\n const sectionHeader = this.mapNamesToFields([section.name])[0]\n\n let fields: FieldDefinition[] = []\n const { child } = section\n\n if (section.fields) {\n fields = this.mapNamesToFields(section.fields)\n } else if (section.child) {\n fields = this.getChildFields(section.child)\n }\n\n return {\n header: sectionHeader,\n fields,\n child,\n }\n })\n\n return initialisedSectionsWithFields.map((section) => {\n if (section.child) {\n const childData = this.getChildData(section.child)\n const displayFields = section.fields.filter((f) => f.visible)\n const joinKey = this.getJoinKey()\n\n return {\n header: section.header.display,\n fields: childData\n ? childData.data\n .filter((cd) => cd[joinKey] === row[joinKey])\n .map((cd) => {\n return {\n heading: cd[displayFields[0]?.name] || 'Not found',\n data: cd[displayFields[1]?.name] || 'Not found',\n }\n })\n : [],\n }\n }\n return {\n header: section.header.display,\n fields: section.fields\n .filter((f) => f.visible)\n .map((f) => {\n return {\n heading: f.display,\n data: row[f.name],\n }\n }),\n }\n })\n })\n }\n\n getChildData(childId: string) {\n return this.childData.find((d) => d.id === childId)\n }\n\n createRows(data: Array<Dict<string>>): Cell[][] {\n const sectionedData = this.initSectionedData(data)\n\n const rows = sectionedData.flatMap((section, index) => {\n let sectionHeaderRow: Cell[][] = []\n if (section.header) {\n sectionHeaderRow = this.createSectionHeader(section.header, index)\n }\n\n const sectionRows = section.fields.map((field) => {\n return [\n {\n text: field.heading,\n classes: 'dpr-row-heading',\n },\n {\n text: field.data,\n classes: 'dpr-row-heading-data',\n },\n ]\n })\n\n return [...sectionHeaderRow, ...sectionRows]\n })\n\n return rows\n }\n\n override buildTable(data: Array<Dict<string>>): DataTable {\n return {\n head: [\n // { text: '', classes: 'dpr-row-section-header' },\n // { text: '', classes: 'dpr-row-section-header-value' },\n ],\n rows: this.createRows(data),\n rowCount: data.length,\n colCount: this.columns.length,\n }\n }\n}\n\nexport { SectionedFieldsDataTableBuilder }\nexport default SectionedFieldsDataTableBuilder\n"],
5
- "mappings": "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",
4
+ "sourcesContent": ["import Dict = NodeJS.Dict\nimport { components } from '../../types/api'\nimport { Cell, DataTable, FieldDefinition } from '../DataTableBuilder/types'\nimport type { Template } from '../../types/Templates'\nimport ParentChildDataTableBuilder from '../ParentChildDataTableBuilder/ParentChildDataTableBuilder'\n\nexport interface SectionedField {\n name: string\n fields?: string[]\n child?: string\n}\n\nclass SectionedFieldsDataTableBuilder extends ParentChildDataTableBuilder {\n // TODO: change this to use schema type if ever implemented in the backend\n sectionedFields: SectionedField[]\n\n declare template: Template\n\n declare childVariants: components['schemas']['ChildVariantDefinition'][]\n\n constructor(variant: components['schemas']['VariantDefinition']) {\n // TODO: removed the union if sectionedFields changed to use schema type\n const { sectionedFields, template } = variant.specification as components['schemas']['Specification'] & {\n sectionedFields: SectionedField[]\n }\n super(variant)\n\n this.sectionedFields = sectionedFields\n this.sections = this.sectionedFields.map((f) => f.name)\n this.template = template\n this.childVariants = this.variant.childVariants || []\n }\n\n getChildFields(childId: string): FieldDefinition[] {\n const childVariant = this.childVariants.find((child) => child.id === childId)\n let fields: FieldDefinition[] = []\n if (childVariant) {\n const { specification } = childVariant\n fields = specification ? specification.fields : fields\n }\n return fields\n }\n\n getJoinKey() {\n return this.childVariants[0].joinFields[0]\n }\n\n initSectionedData(data: Array<Dict<string>>) {\n return data.flatMap((row) => {\n const initialisedSectionsWithFields = this.sectionedFields.map((section) => {\n const sectionHeader = this.mapNamesToFields([section.name])[0]\n\n let fields: FieldDefinition[] = []\n const { child } = section\n\n if (section.fields) {\n fields = this.mapNamesToFields(section.fields)\n } else if (section.child) {\n fields = this.getChildFields(section.child)\n }\n\n return {\n header: sectionHeader,\n fields,\n child,\n }\n })\n\n return initialisedSectionsWithFields.map((section) => {\n if (section.child) {\n const childData = this.getChildData(section.child)\n const displayFields = section.fields.filter((f) => f.visible)\n const joinKey = this.getJoinKey()\n\n return {\n header: section.header.display,\n fields: childData\n ? childData.data\n .filter((cd) => cd[joinKey] === row[joinKey])\n .map((cd) => {\n return {\n heading: cd[displayFields[0]?.name] || 'Not found',\n data: cd[displayFields[1]?.name] || 'Not found',\n }\n })\n : [],\n }\n }\n return {\n header: section.header.display,\n fields: section.fields\n .filter((f) => f.visible)\n .map((f) => {\n return {\n heading: f.display,\n data: row[f.name],\n }\n }),\n }\n })\n })\n }\n\n getChildData(childId: string) {\n return this.childData.find((d) => d.id === childId)\n }\n\n createRows(data: Array<Dict<string>>): Cell[][] {\n const sectionedData = this.initSectionedData(data)\n\n const rows = sectionedData.flatMap((section, index) => {\n let sectionHeaderRow: Cell[][] = []\n if (section.header) {\n sectionHeaderRow = this.createSectionHeader(section.header, index)\n }\n\n const sectionRows = section.fields.map((field) => {\n return [\n {\n text: field.heading,\n classes: 'dpr-row-heading',\n },\n {\n text: field.data,\n classes: 'dpr-row-heading-data',\n },\n ]\n })\n\n return [...sectionHeaderRow, ...sectionRows]\n })\n\n return rows\n }\n\n override buildTable(data: Array<Dict<string>>): DataTable {\n return {\n head: [\n // { text: '', classes: 'dpr-row-section-header' },\n // { text: '', classes: 'dpr-row-section-header-value' },\n ],\n rows: this.createRows(data),\n rowCount: data.length,\n colCount: this.columns.length,\n }\n }\n}\n\nexport { SectionedFieldsDataTableBuilder }\nexport default SectionedFieldsDataTableBuilder\n"],
5
+ "mappings": "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",
6
6
  "names": ["SectionedFieldsTableBuilder_exports", "__export", "SectionedFieldsDataTableBuilder", "SectionedFieldsTableBuilder_default", "__toCommonJS", "import_ParentChildDataTableBuilder", "ParentChildDataTableBuilder", "variant", "sectionedFields", "template", "f", "childId", "childVariant", "child", "fields", "specification", "data", "row", "section", "sectionHeader", "childData", "displayFields", "joinKey", "cd", "d", "index", "sectionHeaderRow", "sectionRows", "field"]
7
7
  }
@@ -14,9 +14,9 @@ class SectionedFieldsDataTableBuilder extends ParentChildDataTableBuilder {
14
14
  // TODO: change this to use schema type if ever implemented in the backend
15
15
  sectionedFields: SectionedField[]
16
16
 
17
- override template: Template
17
+ declare template: Template
18
18
 
19
- override childVariants: components['schemas']['ChildVariantDefinition'][]
19
+ declare childVariants: components['schemas']['ChildVariantDefinition'][]
20
20
 
21
21
  constructor(variant: components['schemas']['VariantDefinition']) {
22
22
  // TODO: removed the union if sectionedFields changed to use schema type
@@ -1,2 +1,2 @@
1
- "use strict";var n=Object.create;var l=Object.defineProperty;var c=Object.getOwnPropertyDescriptor;var d=Object.getOwnPropertyNames;var f=Object.getPrototypeOf,p=Object.prototype.hasOwnProperty;var y=(a,e)=>{for(var r in e)l(a,r,{get:e[r],enumerable:!0})},o=(a,e,r,s)=>{if(e&&typeof e=="object"||typeof e=="function")for(let t of d(e))!p.call(a,t)&&t!==r&&l(a,t,{get:()=>e[t],enumerable:!(s=c(e,t))||s.enumerable});return a};var b=(a,e,r)=>(r=a!=null?n(f(a)):{},o(e||!a||!a.__esModule?l(r,"default",{value:a,enumerable:!0}):r,a)),T=a=>o(l({},"__esModule",{value:!0}),a);var S={};y(S,{SummaryDataTableBuilder:()=>i,default:()=>D});module.exports=T(S);var u=b(require("../DataTableBuilder/DataTableBuilder"));class i extends u.default{constructor(e,r){const s=e.fields.filter(m=>!r||!r.includes(m.name)).map(m=>m.name),t=e.fields.map(m=>({...m,calculated:!1,sortable:!1,defaultsort:!1,mandatory:!0,visible:!0}));super(t,!0),this.summary=e,this.columns=s}buildSummaryTable(){return super.buildTable(this.summary.data)}}var D=i;0&&(module.exports={SummaryDataTableBuilder});
1
+ "use strict";var n=Object.create;var l=Object.defineProperty;var c=Object.getOwnPropertyDescriptor;var d=Object.getOwnPropertyNames;var f=Object.getPrototypeOf,p=Object.prototype.hasOwnProperty;var y=(a,e)=>{for(var r in e)l(a,r,{get:e[r],enumerable:!0})},o=(a,e,r,s)=>{if(e&&typeof e=="object"||typeof e=="function")for(let t of d(e))!p.call(a,t)&&t!==r&&l(a,t,{get:()=>e[t],enumerable:!(s=c(e,t))||s.enumerable});return a};var b=(a,e,r)=>(r=a!=null?n(f(a)):{},o(e||!a||!a.__esModule?l(r,"default",{value:a,enumerable:!0}):r,a)),T=a=>o(l({},"__esModule",{value:!0}),a);var S={};y(S,{SummaryDataTableBuilder:()=>i,default:()=>D});module.exports=T(S);var u=b(require("../DataTableBuilder/DataTableBuilder"));class i extends u.default{summary;constructor(e,r){const s=e.fields.filter(m=>!r||!r.includes(m.name)).map(m=>m.name),t=e.fields.map(m=>({...m,calculated:!1,sortable:!1,defaultsort:!1,mandatory:!0,visible:!0}));super(t,!0),this.summary=e,this.columns=s}buildSummaryTable(){return super.buildTable(this.summary.data)}}var D=i;0&&(module.exports={SummaryDataTableBuilder});
2
2
  //# sourceMappingURL=SummaryDataTableBuilder.js.map
@@ -2,6 +2,6 @@
2
2
  "version": 3,
3
3
  "sources": ["../../../../src/dpr/utils/SummaryDataTableBuilder/SummaryDataTableBuilder.ts"],
4
4
  "sourcesContent": ["import { components } from '../../types/api'\nimport { AsyncSummary } from '../../types/UserReports'\nimport DataTableBuilder from '../DataTableBuilder/DataTableBuilder'\nimport { DataTable } from '../DataTableBuilder/types'\n\nclass SummaryDataTableBuilder extends DataTableBuilder {\n private summary: AsyncSummary\n\n constructor(summary: AsyncSummary, sections?: Array<string>) {\n const columns = summary.fields\n .filter((field) => !sections || !sections.includes(field.name))\n .map((field) => field.name)\n\n const fields = summary.fields.map((field) => ({\n ...field,\n calculated: false,\n sortable: false,\n defaultsort: false,\n mandatory: true,\n visible: true,\n }))\n\n super(<components['schemas']['FieldDefinition'][]>fields, true)\n\n this.summary = summary\n this.columns = columns\n }\n\n buildSummaryTable(): DataTable {\n return super.buildTable(this.summary.data)\n }\n}\n\nexport { SummaryDataTableBuilder }\nexport default SummaryDataTableBuilder\n"],
5
- "mappings": "0jBAAA,IAAAA,EAAA,GAAAC,EAAAD,EAAA,6BAAAE,EAAA,YAAAC,IAAA,eAAAC,EAAAJ,GAEA,IAAAK,EAA6B,mDAG7B,MAAMH,UAAgC,EAAAI,OAAiB,CAGrD,YAAYC,EAAuBC,EAA0B,CAC3D,MAAMC,EAAUF,EAAQ,OACrB,OAAQG,GAAU,CAACF,GAAY,CAACA,EAAS,SAASE,EAAM,IAAI,CAAC,EAC7D,IAAKA,GAAUA,EAAM,IAAI,EAEtBC,EAASJ,EAAQ,OAAO,IAAKG,IAAW,CAC5C,GAAGA,EACH,WAAY,GACZ,SAAU,GACV,YAAa,GACb,UAAW,GACX,QAAS,EACX,EAAE,EAEF,MAAkDC,EAAQ,EAAI,EAE9D,KAAK,QAAUJ,EACf,KAAK,QAAUE,CACjB,CAEA,mBAA+B,CAC7B,OAAO,MAAM,WAAW,KAAK,QAAQ,IAAI,CAC3C,CACF,CAGA,IAAON,EAAQD",
5
+ "mappings": "0jBAAA,IAAAA,EAAA,GAAAC,EAAAD,EAAA,6BAAAE,EAAA,YAAAC,IAAA,eAAAC,EAAAJ,GAEA,IAAAK,EAA6B,mDAG7B,MAAMH,UAAgC,EAAAI,OAAiB,CAC7C,QAER,YAAYC,EAAuBC,EAA0B,CAC3D,MAAMC,EAAUF,EAAQ,OACrB,OAAQG,GAAU,CAACF,GAAY,CAACA,EAAS,SAASE,EAAM,IAAI,CAAC,EAC7D,IAAKA,GAAUA,EAAM,IAAI,EAEtBC,EAASJ,EAAQ,OAAO,IAAKG,IAAW,CAC5C,GAAGA,EACH,WAAY,GACZ,SAAU,GACV,YAAa,GACb,UAAW,GACX,QAAS,EACX,EAAE,EAEF,MAAkDC,EAAQ,EAAI,EAE9D,KAAK,QAAUJ,EACf,KAAK,QAAUE,CACjB,CAEA,mBAA+B,CAC7B,OAAO,MAAM,WAAW,KAAK,QAAQ,IAAI,CAC3C,CACF,CAGA,IAAON,EAAQD",
6
6
  "names": ["SummaryDataTableBuilder_exports", "__export", "SummaryDataTableBuilder", "SummaryDataTableBuilder_default", "__toCommonJS", "import_DataTableBuilder", "DataTableBuilder", "summary", "sections", "columns", "field", "fields"]
7
7
  }
@@ -1,2 +1,2 @@
1
- "use strict";var I=Object.create;var u=Object.defineProperty;var D=Object.getOwnPropertyDescriptor;var y=Object.getOwnPropertyNames;var R=Object.getPrototypeOf,g=Object.prototype.hasOwnProperty;var f=(r,t)=>{for(var e in t)u(r,e,{get:t[e],enumerable:!0})},d=(r,t,e,i)=>{if(t&&typeof t=="object"||typeof t=="function")for(let s of y(t))!g.call(r,s)&&s!==e&&u(r,s,{get:()=>t[s],enumerable:!(i=D(t,s))||i.enumerable});return r};var q=(r,t,e)=>(e=r!=null?I(R(r)):{},d(t||!r||!r.__esModule?u(e,"default",{value:r,enumerable:!0}):e,r)),U=r=>d(u({},"__esModule",{value:!0}),r);var b={};f(b,{UserStoreItemBuilder:()=>h,default:()=>E});module.exports=U(b);var p=q(require("parseurl")),o=require("../types/UserReports");class h{constructor(t,e){this.build=()=>this.userStoreItem;this.addReportData=({type:t,reportId:e,reportName:i,description:s,id:m,name:n})=>({type:t,reportId:e,reportName:i,description:s,id:m,name:n,timestamp:{}});this.addExecutionData=t=>(this.userStoreItem={...this.userStoreItem,...t},this);this.addChildExecutionData=t=>(this.userStoreItem={...this.userStoreItem,childExecutionData:t},this);this.addFilters=t=>{const e=new URLSearchParams(t).toString();return this.userStoreItem={...this.userStoreItem,filters:{data:t,queryString:e}},this};this.addSortData=t=>{const e=new URLSearchParams(t).toString();return this.userStoreItem={...this.userStoreItem,sortBy:{data:t,queryString:e}},this};this.addRequestUrls=t=>{const{origin:e,pathname:i,search:s,href:m}=this.requestFormData,{executionId:n,dataProductDefinitionsPath:S,dpdPathFromQuery:l}=this.userStoreItem;let a=t.baseUrl.replace("/filters",`/${n}/status`);l&&(a=`${a}?dataProductDefinitionsPath=${S}`);const c=`${e}${a}`;return this.userStoreItem={...this.userStoreItem,url:{origin:e,request:{fullUrl:m,pathname:i,search:s},polling:{fullUrl:c,pathname:a}}},this};this.addAsyncUrls=t=>(t&&(this.userStoreItem={...this.userStoreItem,url:t}),this);this.addReportUrls=t=>{const e=t.get("host"),i=`${t.protocol}://${t.get("host")}${t.originalUrl}`,s=(0,p.default)(t);return this.userStoreItem={...this.userStoreItem,url:{origin:e||this.userStoreItem.url?.origin||"",...this.userStoreItem.url?.request&&{request:this.userStoreItem.url.request},...this.userStoreItem.url?.polling&&{polling:this.userStoreItem.url.polling},report:{...this.userStoreItem.url?.report&&this.userStoreItem.url.report,fullUrl:i,...s&&s.search&&{search:s.search}}}},this};this.addLoadType=t=>(this.userStoreItem={...this.userStoreItem,loadType:t},this);this.addQuery=t=>(this.userStoreItem={...this.userStoreItem,...t&&{query:{data:t.query,summary:t.querySummary}}},this);this.addInteractiveQuery=t=>(t&&(this.userStoreItem={...this.userStoreItem,interactiveQuery:{data:t.query,summary:t.querySummary}}),this);this.addStatus=t=>(this.userStoreItem={...this.userStoreItem,status:t},this);this.addMetrics=t=>(this.userStoreItem={...this.userStoreItem,metrics:t.filter(e=>e.display).map(e=>({name:e.display||""}))},this);this.addTimestamp=()=>{const{status:t}=this.userStoreItem,e=new Date;switch(t){case o.RequestStatus.FAILED:this.userStoreItem.timestamp.failed=e;break;case o.RequestStatus.EXPIRED:this.userStoreItem.timestamp.expired=e;break;case o.RequestStatus.ABORTED:this.userStoreItem.timestamp.aborted=e;break;case o.RequestStatus.FINISHED:this.userStoreItem.timestamp.completed=e;break;case o.RequestStatus.SUBMITTED:this.userStoreItem.timestamp.requested=e;break;case o.RequestStatus.STARTED:case o.RequestStatus.PICKED:break;default:this.userStoreItem.timestamp.lastViewed=e;break}return this};this.addDefinitionsPath=(t,e)=>(t&&(this.userStoreItem={...this.userStoreItem,dataProductDefinitionsPath:t,dpdPathFromQuery:e}),this);this.requestFormData=e||{},this.userStoreItem=this.addReportData(t)}}var E=h;0&&(module.exports={UserStoreItemBuilder});
1
+ "use strict";var I=Object.create;var u=Object.defineProperty;var D=Object.getOwnPropertyDescriptor;var y=Object.getOwnPropertyNames;var R=Object.getPrototypeOf,g=Object.prototype.hasOwnProperty;var f=(r,t)=>{for(var e in t)u(r,e,{get:t[e],enumerable:!0})},d=(r,t,e,i)=>{if(t&&typeof t=="object"||typeof t=="function")for(let s of y(t))!g.call(r,s)&&s!==e&&u(r,s,{get:()=>t[s],enumerable:!(i=D(t,s))||i.enumerable});return r};var q=(r,t,e)=>(e=r!=null?I(R(r)):{},d(t||!r||!r.__esModule?u(e,"default",{value:r,enumerable:!0}):e,r)),U=r=>d(u({},"__esModule",{value:!0}),r);var b={};f(b,{UserStoreItemBuilder:()=>h,default:()=>E});module.exports=U(b);var p=q(require("parseurl")),o=require("../types/UserReports");class h{userStoreItem;requestFormData;constructor(t,e){this.requestFormData=e||{},this.userStoreItem=this.addReportData(t)}build=()=>this.userStoreItem;addReportData=({type:t,reportId:e,reportName:i,description:s,id:m,name:n})=>({type:t,reportId:e,reportName:i,description:s,id:m,name:n,timestamp:{}});addExecutionData=t=>(this.userStoreItem={...this.userStoreItem,...t},this);addChildExecutionData=t=>(this.userStoreItem={...this.userStoreItem,childExecutionData:t},this);addFilters=t=>{const e=new URLSearchParams(t).toString();return this.userStoreItem={...this.userStoreItem,filters:{data:t,queryString:e}},this};addSortData=t=>{const e=new URLSearchParams(t).toString();return this.userStoreItem={...this.userStoreItem,sortBy:{data:t,queryString:e}},this};addRequestUrls=t=>{const{origin:e,pathname:i,search:s,href:m}=this.requestFormData,{executionId:n,dataProductDefinitionsPath:S,dpdPathFromQuery:l}=this.userStoreItem;let a=t.baseUrl.replace("/filters",`/${n}/status`);l&&(a=`${a}?dataProductDefinitionsPath=${S}`);const c=`${e}${a}`;return this.userStoreItem={...this.userStoreItem,url:{origin:e,request:{fullUrl:m,pathname:i,search:s},polling:{fullUrl:c,pathname:a}}},this};addAsyncUrls=t=>(t&&(this.userStoreItem={...this.userStoreItem,url:t}),this);addReportUrls=t=>{const e=t.get("host"),i=`${t.protocol}://${t.get("host")}${t.originalUrl}`,s=(0,p.default)(t);return this.userStoreItem={...this.userStoreItem,url:{origin:e||this.userStoreItem.url?.origin||"",...this.userStoreItem.url?.request&&{request:this.userStoreItem.url.request},...this.userStoreItem.url?.polling&&{polling:this.userStoreItem.url.polling},report:{...this.userStoreItem.url?.report&&this.userStoreItem.url.report,fullUrl:i,...s&&s.search&&{search:s.search}}}},this};addLoadType=t=>(this.userStoreItem={...this.userStoreItem,loadType:t},this);addQuery=t=>(this.userStoreItem={...this.userStoreItem,...t&&{query:{data:t.query,summary:t.querySummary}}},this);addInteractiveQuery=t=>(t&&(this.userStoreItem={...this.userStoreItem,interactiveQuery:{data:t.query,summary:t.querySummary}}),this);addStatus=t=>(this.userStoreItem={...this.userStoreItem,status:t},this);addMetrics=t=>(this.userStoreItem={...this.userStoreItem,metrics:t.filter(e=>e.display).map(e=>({name:e.display||""}))},this);addTimestamp=()=>{const{status:t}=this.userStoreItem,e=new Date;switch(t){case o.RequestStatus.FAILED:this.userStoreItem.timestamp.failed=e;break;case o.RequestStatus.EXPIRED:this.userStoreItem.timestamp.expired=e;break;case o.RequestStatus.ABORTED:this.userStoreItem.timestamp.aborted=e;break;case o.RequestStatus.FINISHED:this.userStoreItem.timestamp.completed=e;break;case o.RequestStatus.SUBMITTED:this.userStoreItem.timestamp.requested=e;break;case o.RequestStatus.STARTED:case o.RequestStatus.PICKED:break;default:this.userStoreItem.timestamp.lastViewed=e;break}return this};addDefinitionsPath=(t,e)=>(t&&(this.userStoreItem={...this.userStoreItem,dataProductDefinitionsPath:t,dpdPathFromQuery:e}),this)}var E=h;0&&(module.exports={UserStoreItemBuilder});
2
2
  //# sourceMappingURL=UserStoreItemBuilder.js.map
@@ -2,6 +2,6 @@
2
2
  "version": 3,
3
3
  "sources": ["../../../src/dpr/utils/UserStoreItemBuilder.ts"],
4
4
  "sourcesContent": ["import type { Request } from 'express'\nimport parseUrl from 'parseurl'\nimport {\n AsyncReportUrlData,\n LoadType,\n ReportType,\n RequestedReport,\n RequestFormData,\n RequestStatus,\n UserReportData,\n} from '../types/UserReports'\nimport Dict = NodeJS.Dict\nimport { ChildReportExecutionData, ExecutionData } from '../types/ExecutionData'\nimport { components } from '../types/api'\n\ninterface ReportData {\n type: ReportType\n reportId: string\n reportName: string\n description: string\n id: string\n name: string\n}\n\nclass UserStoreItemBuilder {\n userStoreItem: UserReportData\n\n requestFormData: RequestFormData | Record<string, never>\n\n constructor(reportData: ReportData, requestFormData?: RequestFormData) {\n this.requestFormData = requestFormData || {}\n this.userStoreItem = this.addReportData(reportData)\n }\n\n build = () => {\n return this.userStoreItem as RequestedReport\n }\n\n addReportData = ({ type, reportId, reportName, description, id, name }: ReportData) => {\n return {\n type: type as ReportType,\n reportId,\n reportName,\n description,\n id,\n name,\n timestamp: {},\n }\n }\n\n addExecutionData = (executionData: ExecutionData) => {\n this.userStoreItem = {\n ...(<UserReportData>this.userStoreItem),\n ...executionData,\n }\n return this\n }\n\n addChildExecutionData = (childExecutionData: Array<ChildReportExecutionData>) => {\n this.userStoreItem = {\n ...(<UserReportData>this.userStoreItem),\n childExecutionData,\n }\n return this\n }\n\n addFilters = (filterData?: Record<string, string>) => {\n const filtersQueryString = new URLSearchParams(filterData).toString()\n this.userStoreItem = {\n ...this.userStoreItem,\n ...{\n filters: {\n data: filterData,\n queryString: filtersQueryString,\n },\n },\n }\n return this\n }\n\n addSortData = (sortData?: Record<string, string>) => {\n const sortByQueryString = new URLSearchParams(sortData).toString()\n this.userStoreItem = {\n ...this.userStoreItem,\n ...{\n sortBy: {\n data: sortData,\n queryString: sortByQueryString,\n },\n },\n }\n return this\n }\n\n addRequestUrls = (req: Request) => {\n const { origin, pathname, search, href } = this.requestFormData\n const { executionId, dataProductDefinitionsPath, dpdPathFromQuery } = this.userStoreItem\n\n // Polling path\n let pollingPath = req.baseUrl.replace('/filters', `/${executionId}/status`)\n if (dpdPathFromQuery) {\n pollingPath = `${pollingPath}?dataProductDefinitionsPath=${dataProductDefinitionsPath}`\n }\n const pollingFullUrl = `${origin}${pollingPath}`\n this.userStoreItem = {\n ...this.userStoreItem,\n ...{\n url: {\n origin,\n request: {\n fullUrl: href,\n pathname,\n search,\n },\n polling: {\n fullUrl: pollingFullUrl,\n pathname: pollingPath,\n },\n },\n },\n }\n\n return this\n }\n\n addAsyncUrls = (url?: AsyncReportUrlData) => {\n if (url) {\n this.userStoreItem = {\n ...this.userStoreItem,\n ...{\n url,\n },\n }\n }\n\n return this\n }\n\n addReportUrls = (req: Request) => {\n const origin = req.get('host')\n const fullUrl = `${req.protocol}://${req.get('host')}${req.originalUrl}`\n const urlData = parseUrl(req)\n\n this.userStoreItem = {\n ...this.userStoreItem,\n ...{\n url: {\n origin: origin || this.userStoreItem.url?.origin || '',\n ...(this.userStoreItem.url?.request && { request: this.userStoreItem.url.request }),\n ...(this.userStoreItem.url?.polling && { polling: this.userStoreItem.url.polling }),\n report: {\n ...(this.userStoreItem.url?.report && this.userStoreItem.url.report),\n fullUrl,\n ...(urlData && urlData.search && { search: urlData.search }),\n },\n },\n },\n }\n\n return this\n }\n\n addLoadType = (loadType: LoadType) => {\n this.userStoreItem = {\n ...this.userStoreItem,\n loadType,\n }\n\n return this\n }\n\n addQuery = (queryData?: { query: Dict<string | string[]>; querySummary: Array<Dict<string>> }) => {\n this.userStoreItem = {\n ...this.userStoreItem,\n ...(queryData && {\n query: {\n data: queryData.query,\n summary: queryData.querySummary,\n },\n }),\n }\n return this\n }\n\n addInteractiveQuery = (queryData?: { query: Dict<string | string[]>; querySummary: Array<Dict<string>> }) => {\n if (queryData) {\n this.userStoreItem = {\n ...this.userStoreItem,\n ...{\n interactiveQuery: {\n data: queryData.query,\n summary: queryData.querySummary,\n },\n },\n }\n }\n return this\n }\n\n addStatus = (status: RequestStatus) => {\n this.userStoreItem = {\n ...this.userStoreItem,\n status,\n }\n return this\n }\n\n addMetrics = (metrics: components['schemas']['DashboardSectionDefinition'][]) => {\n this.userStoreItem = {\n ...this.userStoreItem,\n metrics: metrics.filter((metric) => metric.display).map((metric) => ({ name: metric.display || '' })),\n }\n return this\n }\n\n addTimestamp = () => {\n const { status } = this.userStoreItem\n const ts = new Date()\n switch (status) {\n case RequestStatus.FAILED:\n this.userStoreItem.timestamp.failed = ts\n break\n case RequestStatus.EXPIRED:\n this.userStoreItem.timestamp.expired = ts\n break\n case RequestStatus.ABORTED:\n this.userStoreItem.timestamp.aborted = ts\n break\n case RequestStatus.FINISHED:\n this.userStoreItem.timestamp.completed = ts\n break\n case RequestStatus.SUBMITTED:\n this.userStoreItem.timestamp.requested = ts\n break\n case RequestStatus.STARTED:\n case RequestStatus.PICKED:\n break\n default:\n this.userStoreItem.timestamp.lastViewed = ts\n break\n }\n return this\n }\n\n addDefinitionsPath = (definitionsPath: string, dpdPathFromQuery: boolean) => {\n if (definitionsPath) {\n this.userStoreItem = {\n ...this.userStoreItem,\n dataProductDefinitionsPath: definitionsPath,\n dpdPathFromQuery,\n }\n }\n return this\n }\n}\n\nexport { UserStoreItemBuilder }\nexport default UserStoreItemBuilder\n"],
5
- "mappings": "0jBAAA,IAAAA,EAAA,GAAAC,EAAAD,EAAA,0BAAAE,EAAA,YAAAC,IAAA,eAAAC,EAAAJ,GACA,IAAAK,EAAqB,uBACrBC,EAQO,gCAcP,MAAMJ,CAAqB,CAKzB,YAAYK,EAAwBC,EAAmC,CAKvE,WAAQ,IACC,KAAK,cAGd,mBAAgB,CAAC,CAAE,KAAAC,EAAM,SAAAC,EAAU,WAAAC,EAAY,YAAAC,EAAa,GAAAC,EAAI,KAAAC,CAAK,KAC5D,CACL,KAAML,EACN,SAAAC,EACA,WAAAC,EACA,YAAAC,EACA,GAAAC,EACA,KAAAC,EACA,UAAW,CAAC,CACd,GAGF,sBAAoBC,IAClB,KAAK,cAAgB,CACnB,GAAoB,KAAK,cACzB,GAAGA,CACL,EACO,MAGT,2BAAyBC,IACvB,KAAK,cAAgB,CACnB,GAAoB,KAAK,cACzB,mBAAAA,CACF,EACO,MAGT,gBAAcC,GAAwC,CACpD,MAAMC,EAAqB,IAAI,gBAAgBD,CAAU,EAAE,SAAS,EACpE,YAAK,cAAgB,CACnB,GAAG,KAAK,cAEN,QAAS,CACP,KAAMA,EACN,YAAaC,CACf,CAEJ,EACO,IACT,EAEA,iBAAeC,GAAsC,CACnD,MAAMC,EAAoB,IAAI,gBAAgBD,CAAQ,EAAE,SAAS,EACjE,YAAK,cAAgB,CACnB,GAAG,KAAK,cAEN,OAAQ,CACN,KAAMA,EACN,YAAaC,CACf,CAEJ,EACO,IACT,EAEA,oBAAkBC,GAAiB,CACjC,KAAM,CAAE,OAAAC,EAAQ,SAAAC,EAAU,OAAAC,EAAQ,KAAAC,CAAK,EAAI,KAAK,gBAC1C,CAAE,YAAAC,EAAa,2BAAAC,EAA4B,iBAAAC,CAAiB,EAAI,KAAK,cAG3E,IAAIC,EAAcR,EAAI,QAAQ,QAAQ,WAAY,IAAIK,CAAW,SAAS,EACtEE,IACFC,EAAc,GAAGA,CAAW,+BAA+BF,CAA0B,IAEvF,MAAMG,EAAiB,GAAGR,CAAM,GAAGO,CAAW,GAC9C,YAAK,cAAgB,CACnB,GAAG,KAAK,cAEN,IAAK,CACH,OAAAP,EACA,QAAS,CACP,QAASG,EACT,SAAAF,EACA,OAAAC,CACF,EACA,QAAS,CACP,QAASM,EACT,SAAUD,CACZ,CACF,CAEJ,EAEO,IACT,EAEA,kBAAgBE,IACVA,IACF,KAAK,cAAgB,CACnB,GAAG,KAAK,cAEN,IAAAA,CAEJ,GAGK,MAGT,mBAAiBV,GAAiB,CAChC,MAAMC,EAASD,EAAI,IAAI,MAAM,EACvBW,EAAU,GAAGX,EAAI,QAAQ,MAAMA,EAAI,IAAI,MAAM,CAAC,GAAGA,EAAI,WAAW,GAChEY,KAAU,EAAAC,SAASb,CAAG,EAE5B,YAAK,cAAgB,CACnB,GAAG,KAAK,cAEN,IAAK,CACH,OAAQC,GAAU,KAAK,cAAc,KAAK,QAAU,GACpD,GAAI,KAAK,cAAc,KAAK,SAAW,CAAE,QAAS,KAAK,cAAc,IAAI,OAAQ,EACjF,GAAI,KAAK,cAAc,KAAK,SAAW,CAAE,QAAS,KAAK,cAAc,IAAI,OAAQ,EACjF,OAAQ,CACN,GAAI,KAAK,cAAc,KAAK,QAAU,KAAK,cAAc,IAAI,OAC7D,QAAAU,EACA,GAAIC,GAAWA,EAAQ,QAAU,CAAE,OAAQA,EAAQ,MAAO,CAC5D,CACF,CAEJ,EAEO,IACT,EAEA,iBAAeE,IACb,KAAK,cAAgB,CACnB,GAAG,KAAK,cACR,SAAAA,CACF,EAEO,MAGT,cAAYC,IACV,KAAK,cAAgB,CACnB,GAAG,KAAK,cACR,GAAIA,GAAa,CACf,MAAO,CACL,KAAMA,EAAU,MAChB,QAASA,EAAU,YACrB,CACF,CACF,EACO,MAGT,yBAAuBA,IACjBA,IACF,KAAK,cAAgB,CACnB,GAAG,KAAK,cAEN,iBAAkB,CAChB,KAAMA,EAAU,MAChB,QAASA,EAAU,YACrB,CAEJ,GAEK,MAGT,eAAaC,IACX,KAAK,cAAgB,CACnB,GAAG,KAAK,cACR,OAAAA,CACF,EACO,MAGT,gBAAcC,IACZ,KAAK,cAAgB,CACnB,GAAG,KAAK,cACR,QAASA,EAAQ,OAAQC,GAAWA,EAAO,OAAO,EAAE,IAAKA,IAAY,CAAE,KAAMA,EAAO,SAAW,EAAG,EAAE,CACtG,EACO,MAGT,kBAAe,IAAM,CACnB,KAAM,CAAE,OAAAF,CAAO,EAAI,KAAK,cAClBG,EAAK,IAAI,KACf,OAAQH,EAAQ,CACd,KAAK,gBAAc,OACjB,KAAK,cAAc,UAAU,OAASG,EACtC,MACF,KAAK,gBAAc,QACjB,KAAK,cAAc,UAAU,QAAUA,EACvC,MACF,KAAK,gBAAc,QACjB,KAAK,cAAc,UAAU,QAAUA,EACvC,MACF,KAAK,gBAAc,SACjB,KAAK,cAAc,UAAU,UAAYA,EACzC,MACF,KAAK,gBAAc,UACjB,KAAK,cAAc,UAAU,UAAYA,EACzC,MACF,KAAK,gBAAc,QACnB,KAAK,gBAAc,OACjB,MACF,QACE,KAAK,cAAc,UAAU,WAAaA,EAC1C,KACJ,CACA,OAAO,IACT,EAEA,wBAAqB,CAACC,EAAyBb,KACzCa,IACF,KAAK,cAAgB,CACnB,GAAG,KAAK,cACR,2BAA4BA,EAC5B,iBAAAb,CACF,GAEK,MA9NP,KAAK,gBAAkBpB,GAAmB,CAAC,EAC3C,KAAK,cAAgB,KAAK,cAAcD,CAAU,CACpD,CA8NF,CAGA,IAAOJ,EAAQD",
5
+ "mappings": "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",
6
6
  "names": ["UserStoreItemBuilder_exports", "__export", "UserStoreItemBuilder", "UserStoreItemBuilder_default", "__toCommonJS", "import_parseurl", "import_UserReports", "reportData", "requestFormData", "type", "reportId", "reportName", "description", "id", "name", "executionData", "childExecutionData", "filterData", "filtersQueryString", "sortData", "sortByQueryString", "req", "origin", "pathname", "search", "href", "executionId", "dataProductDefinitionsPath", "dpdPathFromQuery", "pollingPath", "pollingFullUrl", "url", "fullUrl", "urlData", "parseUrl", "loadType", "queryData", "status", "metrics", "metric", "ts", "definitionsPath"]
7
7
  }
@@ -1,2 +1,2 @@
1
- "use strict";var y=Object.defineProperty;var O=Object.getOwnPropertyDescriptor;var q=Object.getOwnPropertyNames;var T=Object.prototype.hasOwnProperty;var j=(e,s)=>{for(var n in s)y(e,n,{get:s[n],enumerable:!0})},A=(e,s,n,t)=>{if(s&&typeof s=="object"||typeof s=="function")for(let o of q(s))!T.call(e,o)&&o!==n&&y(e,o,{get:()=>s[o],enumerable:!(t=O(s,o))||t.enumerable});return e};var B=e=>A(y({},"__esModule",{value:!0}),e);var H={};j(H,{default:()=>S,filterKeys:()=>w,filterRowsByDisplayColumns:()=>E,getDatasetRows:()=>v,getEarliestDataset:()=>C,getGroupKey:()=>k,getKeyIds:()=>R,getKeyVariations:()=>b,getLastestDataset:()=>x,groupRowsByKey:()=>K,groupRowsByTimestamp:()=>V});module.exports=B(H);const v=(e,s)=>{const{measures:n,filters:t,expectNulls:o}=e.columns,a=e.columns.keys,i=n.map(c=>c.id),r=a?.map(c=>c.id)||[];let l=t?.map(c=>c.id)||[];l=[...new Set(l)];const p=a?.some(c=>c.optional);s.length&&s[0].ts&&r.unshift("ts");const h=s.filter(c=>{const g=[];return Object.keys(c).forEach(m=>{const u=c[m].raw;let f=!0;if(l.includes(m)&&t){const I=t?t.filter(d=>d.id===m).map(d=>d.equals):[],D=[];I.forEach(d=>{d===null?D.push(u===""||u===void 0||u===null):D.push(d===u)}),f=D.some(Boolean)}else r.includes(m)&&p?f=!0:r.includes(m)&&!p||i.includes(m)?f=u!==""&&u!==void 0&&u!==null:o&&(f=u===""||u===void 0||u===null);g.push(f)}),g.every(m=>m)});return p?w(h,a||[]):h},b=e=>{const s=[],n=e.map(a=>a.id),t=e.every(a=>a.optional),o=[...n];return n.reverse().forEach(a=>{const i=e.find(r=>r.id===a);s.push([...o]),i&&i.optional&&o.pop()}),t&&s.push([]),s},R=(e,s)=>{let n=[];return s.every(t=>{const o=[];return e.forEach(a=>{const i=[];Object.keys(a).forEach(r=>{const l=a[r].raw;let p=!0;t.includes(r)&&(p=l!==""&&l!==void 0&&l!==null),i.push(p)}),i.every(r=>r)&&o.push(a)}),o.length>0?(n=t,!1):(n=t,!0)}),n},w=(e,s)=>{const n=b(s),t=R(e,n);return e.filter(o=>{const a=[];return Object.keys(o).forEach(i=>{const r=o[i].raw;let l=!0;t.includes(i)&&(l=r!==""&&r!==void 0&&r!==null),a.push(l)}),a.every(i=>i)})},x=e=>{const s=e[e.length-1]?.ts?.raw;return s?e.filter(n=>n.ts.raw===s):e},C=e=>{const s=e[0]?.ts?.raw;return s?e.filter(n=>n.ts.raw===s):e},V=e=>[...new Set(e.map(n=>n.ts.raw))].map(n=>e.filter(t=>t.ts.raw===n)),K=(e,s)=>[...new Set(e.map(t=>t[s].raw))].map(t=>e.filter(o=>o[s].raw===t)),k=(e,s)=>{if(!s||!s.length||!e.length)return;const n=e[0];let t=s.length-1,o=!1;for(;!o;){const a=`${s[t]?.id}`;a&&t!==-1&&(!n[a]||!n[a].raw||n[a].raw===""||n[a].raw===null)?t-=1:o=!0}return t!==-1?s[t]:void 0},E=(e,s,n=!1)=>{const{keys:t,measures:o}=e.columns,a=t||[];let i=[...o];n&&(i=[...a,...o]);const r=i.map(l=>l.id);return s.map(l=>Object.keys(l).filter(p=>r.includes(p)).reduce((p,h)=>(p[h]=l[h],p),{}))};var S={getDatasetRows:v,getLastestDataset:x,getEarliestDataset:C,filterRowsByDisplayColumns:E,groupRowsByTimestamp:V,groupRowsByKey:K,getGroupKey:k,getKeyVariations:b,getKeyIds:R,filterKeys:w};0&&(module.exports={filterKeys,filterRowsByDisplayColumns,getDatasetRows,getEarliestDataset,getGroupKey,getKeyIds,getKeyVariations,getLastestDataset,groupRowsByKey,groupRowsByTimestamp});
1
+ "use strict";var B=Object.create;var D=Object.defineProperty;var T=Object.getOwnPropertyDescriptor;var j=Object.getOwnPropertyNames;var A=Object.getPrototypeOf,S=Object.prototype.hasOwnProperty;var G=(e,s)=>{for(var n in s)D(e,n,{get:s[n],enumerable:!0})},v=(e,s,n,t)=>{if(s&&typeof s=="object"||typeof s=="function")for(let o of j(s))!S.call(e,o)&&o!==n&&D(e,o,{get:()=>s[o],enumerable:!(t=T(s,o))||t.enumerable});return e};var H=(e,s,n)=>(n=e!=null?B(A(e)):{},v(s||!e||!e.__esModule?D(n,"default",{value:e,enumerable:!0}):n,e)),L=e=>v(D({},"__esModule",{value:!0}),e);var U={};G(U,{default:()=>N,filterKeys:()=>g,filterRowsByDisplayColumns:()=>O,getDatasetRows:()=>C,getEarliestDataset:()=>E,getGroupKey:()=>I,getKeyIds:()=>R,getKeyVariations:()=>b,getLastestDataset:()=>V,groupRowsByKey:()=>k,groupRowsByTimestamp:()=>K});module.exports=L(U);var x=H(require("./logger"));const C=(e,s)=>{const{measures:n,filters:t,expectNulls:o}=e.columns;x.default.info("DEBUG: Dashboard vis filterValues:",t);const a=e.columns.keys,i=n.map(c=>c.id),r=a?.map(c=>c.id)||[];let l=t?.map(c=>c.id)||[];l=[...new Set(l)];const p=a?.some(c=>c.optional);s.length&&s[0].ts&&r.unshift("ts");const h=s.filter(c=>{const w=[];return Object.keys(c).forEach(f=>{const u=c[f].raw;let m=!0;if(l.includes(f)&&t){const q=t?t.filter(d=>d.id===f).map(d=>d.equals):[],y=[];q.forEach(d=>{d===null?y.push(u===""||u===void 0||u===null):y.push(d===u)}),m=y.some(Boolean)}else r.includes(f)&&p?m=!0:r.includes(f)&&!p||i.includes(f)?m=u!==""&&u!==void 0&&u!==null:o&&(m=u===""||u===void 0||u===null);w.push(m)}),w.every(f=>f)});return p?g(h,a||[]):h},b=e=>{const s=[],n=e.map(a=>a.id),t=e.every(a=>a.optional),o=[...n];return n.reverse().forEach(a=>{const i=e.find(r=>r.id===a);s.push([...o]),i&&i.optional&&o.pop()}),t&&s.push([]),s},R=(e,s)=>{let n=[];return s.every(t=>{const o=[];return e.forEach(a=>{const i=[];Object.keys(a).forEach(r=>{const l=a[r].raw;let p=!0;t.includes(r)&&(p=l!==""&&l!==void 0&&l!==null),i.push(p)}),i.every(r=>r)&&o.push(a)}),o.length>0?(n=t,!1):(n=t,!0)}),n},g=(e,s)=>{const n=b(s),t=R(e,n);return e.filter(o=>{const a=[];return Object.keys(o).forEach(i=>{const r=o[i].raw;let l=!0;t.includes(i)&&(l=r!==""&&r!==void 0&&r!==null),a.push(l)}),a.every(i=>i)})},V=e=>{const s=e[e.length-1]?.ts?.raw;return s?e.filter(n=>n.ts.raw===s):e},E=e=>{const s=e[0]?.ts?.raw;return s?e.filter(n=>n.ts.raw===s):e},K=e=>[...new Set(e.map(n=>n.ts.raw))].map(n=>e.filter(t=>t.ts.raw===n)),k=(e,s)=>[...new Set(e.map(t=>t[s].raw))].map(t=>e.filter(o=>o[s].raw===t)),I=(e,s)=>{if(!s||!s.length||!e.length)return;const n=e[0];let t=s.length-1,o=!1;for(;!o;){const a=`${s[t]?.id}`;a&&t!==-1&&(!n[a]||!n[a].raw||n[a].raw===""||n[a].raw===null)?t-=1:o=!0}return t!==-1?s[t]:void 0},O=(e,s,n=!1)=>{const{keys:t,measures:o}=e.columns,a=t||[];let i=[...o];n&&(i=[...a,...o]);const r=i.map(l=>l.id);return s.map(l=>Object.keys(l).filter(p=>r.includes(p)).reduce((p,h)=>(p[h]=l[h],p),{}))};var N={getDatasetRows:C,getLastestDataset:V,getEarliestDataset:E,filterRowsByDisplayColumns:O,groupRowsByTimestamp:K,groupRowsByKey:k,getGroupKey:I,getKeyVariations:b,getKeyIds:R,filterKeys:g};0&&(module.exports={filterKeys,filterRowsByDisplayColumns,getDatasetRows,getEarliestDataset,getGroupKey,getKeyIds,getKeyVariations,getLastestDataset,groupRowsByKey,groupRowsByTimestamp});
2
2
  //# sourceMappingURL=datasetHelper.js.map
@@ -1,7 +1,7 @@
1
1
  {
2
2
  "version": 3,
3
3
  "sources": ["../../../src/dpr/utils/datasetHelper.ts"],
4
- "sourcesContent": ["import { DashboardDataResponse } from '../types/Metrics'\nimport { components } from '../types/api'\n\nexport const getDatasetRows = (\n listDefinition: components['schemas']['DashboardVisualisationDefinition'],\n dashboardData: DashboardDataResponse[],\n) => {\n const { measures, filters, expectNulls } = listDefinition.columns\n const keys = <Array<components['schemas']['DashboardVisualisationColumnDefinition']>>listDefinition.columns.keys\n\n const displayColumnsIds = measures.map((col) => col.id)\n const keyColumnsIds = keys?.map((col) => col.id) || []\n let filterColIds = filters?.map((col) => col.id) || []\n filterColIds = [...new Set(filterColIds)]\n const hasOptionalKeys = keys?.some((key) => key.optional)\n\n if (dashboardData.length && dashboardData[0]['ts']) keyColumnsIds.unshift('ts')\n\n const filtered = dashboardData.filter((datasetRow: DashboardDataResponse) => {\n const validRow: boolean[] = []\n\n Object.keys(datasetRow).forEach((fieldId) => {\n const value = datasetRow[fieldId].raw\n // All rows are valid until proven otherwise\n let valid = true\n\n // 1. check if the column value is equal to a defined column value\n if (filterColIds.includes(fieldId) && filters) {\n const filterValues = filters ? filters.filter((f) => f.id === fieldId).map((f) => f.equals) : []\n const validFilters: boolean[] = []\n filterValues.forEach((filterValue) => {\n if (filterValue === null) {\n validFilters.push(value === '' || value === undefined || value === null)\n } else {\n validFilters.push(filterValue === value)\n }\n })\n valid = validFilters.some(Boolean)\n\n // 3. check keys exist in the defined columns\n } else if (keyColumnsIds.includes(fieldId) && hasOptionalKeys) {\n valid = true\n\n // 3. check keys exist in the defined columns\n } else if (keyColumnsIds.includes(fieldId) && !hasOptionalKeys) {\n valid = value !== '' && value !== undefined && value !== null\n\n // 2. check values exist in the defined columns\n } else if (displayColumnsIds.includes(fieldId)) {\n valid = value !== '' && value !== undefined && value !== null\n\n // 3. check that all remaining columns are null.\n } else if (expectNulls) {\n valid = value === '' || value === undefined || value === null\n }\n\n validRow.push(valid)\n })\n\n return validRow.every((val) => val)\n })\n\n if (hasOptionalKeys) {\n return filterKeys(filtered, keys || [])\n }\n\n return filtered\n}\n\nexport const getKeyVariations = (keys: Array<components['schemas']['DashboardVisualisationColumnDefinition']>) => {\n const colIdVariations: string[][] = []\n const keyColumnsIds = keys.map((col) => col.id)\n const allOptional = keys.every((key) => key.optional)\n const colIdCopy = [...keyColumnsIds]\n\n keyColumnsIds.reverse().forEach((id) => {\n const key = keys.find((k) => k.id === id)\n colIdVariations.push([...colIdCopy])\n if (key && key.optional) {\n colIdCopy.pop()\n }\n })\n\n if (allOptional) colIdVariations.push([])\n return colIdVariations\n}\n\nexport const getKeyIds = (dashboardData: DashboardDataResponse[], colIdVariations: string[][]) => {\n let validHeadIds: string[] = []\n colIdVariations.every((ids: string[]) => {\n const validRows = []\n\n dashboardData.forEach((datasetRow: DashboardDataResponse) => {\n const validRow: boolean[] = []\n\n Object.keys(datasetRow).forEach((datasetField) => {\n const value = datasetRow[datasetField].raw\n let valid = true\n if (ids.includes(datasetField)) {\n valid = value !== '' && value !== undefined && value !== null\n }\n validRow.push(valid)\n })\n\n if (validRow.every((val) => val)) {\n validRows.push(datasetRow)\n }\n })\n\n if (validRows.length > 0) {\n validHeadIds = ids\n return false\n }\n validHeadIds = ids\n return true\n })\n\n return validHeadIds\n}\n\nexport const filterKeys = (\n dashboardData: DashboardDataResponse[],\n keys: Array<components['schemas']['DashboardVisualisationColumnDefinition']>,\n) => {\n const colIdVariations = getKeyVariations(keys)\n const validHeadIds = getKeyIds(dashboardData, colIdVariations)\n\n return dashboardData.filter((datasetRow: DashboardDataResponse) => {\n const validRow: boolean[] = []\n Object.keys(datasetRow).forEach((datasetField) => {\n const value = datasetRow[datasetField].raw\n let valid = true\n if (validHeadIds.includes(datasetField)) {\n valid = value !== '' && value !== undefined && value !== null\n }\n validRow.push(valid)\n })\n\n return validRow.every((val) => val)\n })\n}\n\nexport const getLastestDataset = (dashboardData: DashboardDataResponse[]): DashboardDataResponse[] => {\n const latestTimestamp = dashboardData[dashboardData.length - 1]?.['ts']?.raw\n if (latestTimestamp) {\n return dashboardData.filter((data) => data['ts'].raw === latestTimestamp)\n }\n return dashboardData\n}\n\nexport const getEarliestDataset = (dashboardData: DashboardDataResponse[]): DashboardDataResponse[] => {\n const latestTimestamp = dashboardData[0]?.['ts']?.raw\n if (latestTimestamp) {\n return dashboardData.filter((data) => data['ts'].raw === latestTimestamp)\n }\n return dashboardData\n}\n\nexport const groupRowsByTimestamp = (dashboardData: DashboardDataResponse[]): DashboardDataResponse[][] => {\n const uniqueTimestamps = [...new Set(dashboardData.map((item) => item['ts'].raw))]\n return uniqueTimestamps.map((ts) => {\n return dashboardData.filter((d) => d['ts'].raw === ts)\n })\n}\n\nexport const groupRowsByKey = (dashboardData: DashboardDataResponse[], key: string): DashboardDataResponse[][] => {\n const uniqueKeyValues = [...new Set(dashboardData.map((item) => item[key].raw))]\n return uniqueKeyValues.map((keyValue) => {\n return dashboardData.filter((d) => d[key].raw === keyValue)\n })\n}\n\nexport const getGroupKey = (\n rawData: DashboardDataResponse[],\n keys?: Array<components['schemas']['DashboardVisualisationColumnDefinition']>,\n) => {\n if (!keys || !keys.length || !rawData.length) {\n return undefined\n }\n\n const data = rawData[0]\n let index = keys.length - 1\n let keyFound = false\n while (!keyFound) {\n const k = `${keys[index]?.id}`\n if (k && index !== -1 && (!data[k] || !data[k].raw || data[k].raw === '' || data[k].raw === null)) {\n index -= 1\n } else {\n keyFound = true\n }\n }\n\n return index !== -1 ? keys[index] : undefined\n}\n\nexport const filterRowsByDisplayColumns = (\n listDefinition: components['schemas']['DashboardVisualisationDefinition'],\n dashboardData: DashboardDataResponse[],\n includeKeys = false,\n) => {\n const { keys: keyCols, measures } = listDefinition.columns\n const keys = keyCols || []\n let displayColumns = [...measures]\n if (includeKeys) {\n displayColumns = [...keys, ...measures]\n }\n const displayColumnsIds = displayColumns.map((col) => col.id)\n\n return dashboardData.map((datasetRow: DashboardDataResponse) => {\n return Object.keys(datasetRow)\n .filter((key) => displayColumnsIds.includes(key))\n .reduce((acc, key) => {\n acc[key] = datasetRow[key]\n return acc\n }, {} as unknown as DashboardDataResponse)\n })\n}\n\nexport default {\n getDatasetRows,\n getLastestDataset,\n getEarliestDataset,\n filterRowsByDisplayColumns,\n groupRowsByTimestamp,\n groupRowsByKey,\n getGroupKey,\n getKeyVariations,\n getKeyIds,\n filterKeys,\n}\n"],
5
- "mappings": "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",
6
- "names": ["datasetHelper_exports", "__export", "datasetHelper_default", "filterKeys", "filterRowsByDisplayColumns", "getDatasetRows", "getEarliestDataset", "getGroupKey", "getKeyIds", "getKeyVariations", "getLastestDataset", "groupRowsByKey", "groupRowsByTimestamp", "__toCommonJS", "listDefinition", "dashboardData", "measures", "filters", "expectNulls", "keys", "displayColumnsIds", "col", "keyColumnsIds", "filterColIds", "hasOptionalKeys", "key", "filtered", "datasetRow", "validRow", "fieldId", "value", "valid", "filterValues", "f", "validFilters", "filterValue", "val", "colIdVariations", "allOptional", "colIdCopy", "id", "k", "validHeadIds", "ids", "validRows", "datasetField", "latestTimestamp", "data", "item", "ts", "d", "keyValue", "rawData", "index", "keyFound", "includeKeys", "keyCols", "displayColumns", "acc"]
4
+ "sourcesContent": ["import { DashboardDataResponse } from '../types/Metrics'\nimport { components } from '../types/api'\nimport logger from './logger'\n\nexport const getDatasetRows = (\n listDefinition: components['schemas']['DashboardVisualisationDefinition'],\n dashboardData: DashboardDataResponse[],\n) => {\n const { measures, filters, expectNulls } = listDefinition.columns\n logger.info('DEBUG: Dashboard vis filterValues:', filters)\n const keys = <Array<components['schemas']['DashboardVisualisationColumnDefinition']>>listDefinition.columns.keys\n\n const displayColumnsIds = measures.map((col) => col.id)\n const keyColumnsIds = keys?.map((col) => col.id) || []\n let filterColIds = filters?.map((col) => col.id) || []\n filterColIds = [...new Set(filterColIds)]\n const hasOptionalKeys = keys?.some((key) => key.optional)\n\n if (dashboardData.length && dashboardData[0]['ts']) keyColumnsIds.unshift('ts')\n\n const filtered = dashboardData.filter((datasetRow: DashboardDataResponse) => {\n const validRow: boolean[] = []\n\n Object.keys(datasetRow).forEach((fieldId) => {\n const value = datasetRow[fieldId].raw\n // All rows are valid until proven otherwise\n let valid = true\n\n // 1. check if the column value is equal to a defined column value\n if (filterColIds.includes(fieldId) && filters) {\n const filterValues = filters ? filters.filter((f) => f.id === fieldId).map((f) => f.equals) : []\n const validFilters: boolean[] = []\n filterValues.forEach((filterValue) => {\n if (filterValue === null) {\n validFilters.push(value === '' || value === undefined || value === null)\n } else {\n validFilters.push(filterValue === value)\n }\n })\n valid = validFilters.some(Boolean)\n\n // 3. check keys exist in the defined columns\n } else if (keyColumnsIds.includes(fieldId) && hasOptionalKeys) {\n valid = true\n\n // 3. check keys exist in the defined columns\n } else if (keyColumnsIds.includes(fieldId) && !hasOptionalKeys) {\n valid = value !== '' && value !== undefined && value !== null\n\n // 2. check values exist in the defined columns\n } else if (displayColumnsIds.includes(fieldId)) {\n valid = value !== '' && value !== undefined && value !== null\n\n // 3. check that all remaining columns are null.\n } else if (expectNulls) {\n valid = value === '' || value === undefined || value === null\n }\n\n validRow.push(valid)\n })\n\n return validRow.every((val) => val)\n })\n\n if (hasOptionalKeys) {\n return filterKeys(filtered, keys || [])\n }\n\n return filtered\n}\n\nexport const getKeyVariations = (keys: Array<components['schemas']['DashboardVisualisationColumnDefinition']>) => {\n const colIdVariations: string[][] = []\n const keyColumnsIds = keys.map((col) => col.id)\n const allOptional = keys.every((key) => key.optional)\n const colIdCopy = [...keyColumnsIds]\n\n keyColumnsIds.reverse().forEach((id) => {\n const key = keys.find((k) => k.id === id)\n colIdVariations.push([...colIdCopy])\n if (key && key.optional) {\n colIdCopy.pop()\n }\n })\n\n if (allOptional) colIdVariations.push([])\n return colIdVariations\n}\n\nexport const getKeyIds = (dashboardData: DashboardDataResponse[], colIdVariations: string[][]) => {\n let validHeadIds: string[] = []\n colIdVariations.every((ids: string[]) => {\n const validRows = []\n\n dashboardData.forEach((datasetRow: DashboardDataResponse) => {\n const validRow: boolean[] = []\n\n Object.keys(datasetRow).forEach((datasetField) => {\n const value = datasetRow[datasetField].raw\n let valid = true\n if (ids.includes(datasetField)) {\n valid = value !== '' && value !== undefined && value !== null\n }\n validRow.push(valid)\n })\n\n if (validRow.every((val) => val)) {\n validRows.push(datasetRow)\n }\n })\n\n if (validRows.length > 0) {\n validHeadIds = ids\n return false\n }\n validHeadIds = ids\n return true\n })\n\n return validHeadIds\n}\n\nexport const filterKeys = (\n dashboardData: DashboardDataResponse[],\n keys: Array<components['schemas']['DashboardVisualisationColumnDefinition']>,\n) => {\n const colIdVariations = getKeyVariations(keys)\n const validHeadIds = getKeyIds(dashboardData, colIdVariations)\n\n return dashboardData.filter((datasetRow: DashboardDataResponse) => {\n const validRow: boolean[] = []\n Object.keys(datasetRow).forEach((datasetField) => {\n const value = datasetRow[datasetField].raw\n let valid = true\n if (validHeadIds.includes(datasetField)) {\n valid = value !== '' && value !== undefined && value !== null\n }\n validRow.push(valid)\n })\n\n return validRow.every((val) => val)\n })\n}\n\nexport const getLastestDataset = (dashboardData: DashboardDataResponse[]): DashboardDataResponse[] => {\n const latestTimestamp = dashboardData[dashboardData.length - 1]?.['ts']?.raw\n if (latestTimestamp) {\n return dashboardData.filter((data) => data['ts'].raw === latestTimestamp)\n }\n return dashboardData\n}\n\nexport const getEarliestDataset = (dashboardData: DashboardDataResponse[]): DashboardDataResponse[] => {\n const latestTimestamp = dashboardData[0]?.['ts']?.raw\n if (latestTimestamp) {\n return dashboardData.filter((data) => data['ts'].raw === latestTimestamp)\n }\n return dashboardData\n}\n\nexport const groupRowsByTimestamp = (dashboardData: DashboardDataResponse[]): DashboardDataResponse[][] => {\n const uniqueTimestamps = [...new Set(dashboardData.map((item) => item['ts'].raw))]\n return uniqueTimestamps.map((ts) => {\n return dashboardData.filter((d) => d['ts'].raw === ts)\n })\n}\n\nexport const groupRowsByKey = (dashboardData: DashboardDataResponse[], key: string): DashboardDataResponse[][] => {\n const uniqueKeyValues = [...new Set(dashboardData.map((item) => item[key].raw))]\n return uniqueKeyValues.map((keyValue) => {\n return dashboardData.filter((d) => d[key].raw === keyValue)\n })\n}\n\nexport const getGroupKey = (\n rawData: DashboardDataResponse[],\n keys?: Array<components['schemas']['DashboardVisualisationColumnDefinition']>,\n) => {\n if (!keys || !keys.length || !rawData.length) {\n return undefined\n }\n\n const data = rawData[0]\n let index = keys.length - 1\n let keyFound = false\n while (!keyFound) {\n const k = `${keys[index]?.id}`\n if (k && index !== -1 && (!data[k] || !data[k].raw || data[k].raw === '' || data[k].raw === null)) {\n index -= 1\n } else {\n keyFound = true\n }\n }\n\n return index !== -1 ? keys[index] : undefined\n}\n\nexport const filterRowsByDisplayColumns = (\n listDefinition: components['schemas']['DashboardVisualisationDefinition'],\n dashboardData: DashboardDataResponse[],\n includeKeys = false,\n) => {\n const { keys: keyCols, measures } = listDefinition.columns\n const keys = keyCols || []\n let displayColumns = [...measures]\n if (includeKeys) {\n displayColumns = [...keys, ...measures]\n }\n const displayColumnsIds = displayColumns.map((col) => col.id)\n\n return dashboardData.map((datasetRow: DashboardDataResponse) => {\n return Object.keys(datasetRow)\n .filter((key) => displayColumnsIds.includes(key))\n .reduce((acc, key) => {\n acc[key] = datasetRow[key]\n return acc\n }, {} as unknown as DashboardDataResponse)\n })\n}\n\nexport default {\n getDatasetRows,\n getLastestDataset,\n getEarliestDataset,\n filterRowsByDisplayColumns,\n groupRowsByTimestamp,\n groupRowsByKey,\n getGroupKey,\n getKeyVariations,\n getKeyIds,\n filterKeys,\n}\n"],
5
+ "mappings": "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",
6
+ "names": ["datasetHelper_exports", "__export", "datasetHelper_default", "filterKeys", "filterRowsByDisplayColumns", "getDatasetRows", "getEarliestDataset", "getGroupKey", "getKeyIds", "getKeyVariations", "getLastestDataset", "groupRowsByKey", "groupRowsByTimestamp", "__toCommonJS", "import_logger", "listDefinition", "dashboardData", "measures", "filters", "expectNulls", "logger", "keys", "displayColumnsIds", "col", "keyColumnsIds", "filterColIds", "hasOptionalKeys", "key", "filtered", "datasetRow", "validRow", "fieldId", "value", "valid", "filterValues", "f", "validFilters", "filterValue", "val", "colIdVariations", "allOptional", "colIdCopy", "id", "k", "validHeadIds", "ids", "validRows", "datasetField", "latestTimestamp", "data", "item", "ts", "d", "keyValue", "rawData", "index", "keyFound", "includeKeys", "keyCols", "displayColumns", "acc"]
7
7
  }
@@ -1,11 +1,13 @@
1
1
  import { DashboardDataResponse } from '../types/Metrics'
2
2
  import { components } from '../types/api'
3
+ import logger from './logger'
3
4
 
4
5
  export const getDatasetRows = (
5
6
  listDefinition: components['schemas']['DashboardVisualisationDefinition'],
6
7
  dashboardData: DashboardDataResponse[],
7
8
  ) => {
8
9
  const { measures, filters, expectNulls } = listDefinition.columns
10
+ logger.info('DEBUG: Dashboard vis filterValues:', filters)
9
11
  const keys = <Array<components['schemas']['DashboardVisualisationColumnDefinition']>>listDefinition.columns.keys
10
12
 
11
13
  const displayColumnsIds = measures.map((col) => col.id)
package/package.json CHANGED
@@ -1,11 +1,11 @@
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.25.1",
4
+ "version": "4.26.1",
5
5
  "main": "dpr/all.mjs",
6
6
  "sass": "dpr/all.scss",
7
7
  "engines": {
8
- "node": "^22",
8
+ "node": "^22 || ^24",
9
9
  "npm": ">=10 <12"
10
10
  },
11
11
  "repository": {
@@ -140,6 +140,7 @@
140
140
  "dependencies": {
141
141
  "@flipt-io/flipt": "^1.5.0",
142
142
  "@ministryofjustice/frontend": "^6.0.0",
143
+ "@tsconfig/node24": "24.0.3",
143
144
  "agentkeepalive": "^4.5.0",
144
145
  "bunyan": "^1.8.15",
145
146
  "bunyan-format": "^0.2.1",
@@ -179,7 +180,7 @@
179
180
  "@types/express": "4.17.21",
180
181
  "@types/express-session": "^1.18.2",
181
182
  "@types/jest": "^29.5.4",
182
- "@types/node": "^22.10.2",
183
+ "@types/node": "24.10.4",
183
184
  "@types/nunjucks": "^3.2.3",
184
185
  "@types/nunjucks-date": "^0.0.10",
185
186
  "@types/parseurl": "^1.3.3",
@@ -236,7 +237,7 @@
236
237
  "ts-jest": "^29.1.1",
237
238
  "ts-node": "^10.9.2",
238
239
  "tsconfig-paths": "^4.2.0",
239
- "typescript": "^5.4",
240
+ "typescript": "^5.9.3",
240
241
  "wait-on": "^9.0.1",
241
242
  "wiremock": "^3.13.1"
242
243
  },