@ministryofjustice/hmpps-digital-prison-reporting-frontend 4.28.1 → 4.28.2

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.
@@ -13,7 +13,7 @@
13
13
  {{ dprRequestDetails(renderData) }}
14
14
 
15
15
  {{ govukInsetText({
16
- html: "<p><strong>Please keep this window open to preserve your progress</strong></p> <p>Your" + type + " will be ready shortly.</p>"
16
+ html: "<p><strong>Please keep this window open to preserve your progress</strong></p> <p>Your " + type + " will be ready shortly.</p>"
17
17
  }) }}
18
18
 
19
19
  <form id="dpr-sync-loading-form" action="./{{ type }}" method="get"></form>
@@ -96,8 +96,8 @@ const initReportQuery = async (definition, columns, res, req, services, requestD
96
96
  res,
97
97
  services
98
98
  });
99
- const sortColumn = req.query?.["sortColumn"] || requestData?.query?.data?.["sortColumn"];
100
- const sortedAsc = req.query?.["sortedAsc"] || requestData?.query?.data?.["sortedAsc"];
99
+ const sortColumn = req.query?.["sortColumn"] || requestData?.sortBy?.data?.["sortColumn"];
100
+ const sortedAsc = req.query?.["sortedAsc"] || requestData?.sortBy?.data?.["sortedAsc"];
101
101
  const selectedPage = req.query?.["selectedPage"];
102
102
  const pageSize = req.query?.["pageSize"];
103
103
  const filtersQuery = import_utils3.default.setRequestQueryFromFilterValues(filtersData.filters);
@@ -1,7 +1,7 @@
1
1
  {
2
2
  "version": 3,
3
3
  "sources": ["../../../../../../dpr/routes/journeys/view-report/async/report/utils.ts"],
4
- "sourcesContent": ["import parseUrl from 'parseurl'\nimport { Url } from 'url'\nimport { Request, Response } from 'express'\n\n// Types\nimport type { Columns } from '../../../../../components/_reports/report-columns-form/types'\nimport type { AsyncReportUtilsParams } from '../../../../../types/AsyncReportUtils'\nimport type { DataTable } from '../../../../../utils/DataTableBuilder/types'\nimport type { components } from '../../../../../types/api'\nimport type { AsyncSummary, RequestedReport } from '../../../../../types/UserReports'\nimport { LoadType, ReportType } from '../../../../../types/UserReports'\nimport ReportQuery from '../../../../../types/ReportQuery'\nimport type { ChildData } from '../../../../../utils/ParentChildDataTableBuilder/types'\nimport type { ExtractedDefinitionData, ExtractedRequestData, ReportUrls } from './types'\nimport type { DownloadActionParams } from '../../../../../components/_reports/report-actions/types'\nimport { FiltersType } from '../../../../../components/_filters/filtersTypeEnum'\nimport type { Services } from '../../../../../types/Services'\n\n// Utils\nimport definitionUtils from '../../../../../utils/definitionUtils'\nimport PaginationUtils from '../../../../../components/_reports/report-pagination/utils'\nimport TotalsUtils from '../../../../../components/_reports/report-totals/utils'\nimport ReportFiltersUtils from '../../../../../components/_filters/utils'\nimport ColumnUtils from '../../../../../components/_reports/report-columns-form/utils'\nimport ReportActionsUtils from '../../../../../components/_reports/report-actions/utils'\nimport UserReportsUtils from '../../../../../components/user-reports/utils'\nimport LocalsHelper from '../../../../../utils/localsHelper'\nimport DataTableUtils from '../../../../../components/_reports/report-data-table/utils'\nimport RequestedReportService from '../../../my-reports/requested-reports/service'\n\nimport CollatedSummaryBuilder from '../../../../../utils/CollatedSummaryBuilder/CollatedSummaryBuilder'\n\nexport const getData = async ({\n res,\n req,\n services,\n token,\n userId,\n}: AsyncReportUtilsParams & { token: string; userId: string }) => {\n const { definitionsPath: definitionPath } = LocalsHelper.getValues(res)\n const { reportId, variantId, id, tableId } = req.params\n const reportVariantId = variantId || id\n\n // Get the request data\n const requestedReportService = <RequestedReportService>services.requestedReportService\n const requestData: RequestedReport | undefined = await requestedReportService.getReportByTableId(tableId, userId)\n const queryData = requestData?.query?.data\n\n // Get the definition\n const definition: components['schemas']['SingleVariantReportDefinition'] =\n await services.reportingService.getDefinition(token, reportId, reportVariantId, definitionPath, queryData)\n const { variant } = definition\n const { specification } = variant\n\n if (!specification) {\n throw new Error('No specification found in variant definition')\n }\n\n // Get the columns\n const columns = ColumnUtils.getColumns(specification, req)\n\n // initialise report query\n const reportQuery = await initReportQuery(definition, columns, res, req, services, requestData)\n\n // Get the reportData\n const reportData = await getReportData({ definition, services, token, req, res, reportQuery })\n\n // Get the summary data, if applicable\n const { summaries } = definition.variant\n const summariesData = !summaries ? [] : await getSummariesData(summaries, services, token, req, res)\n\n // Get the child data, if applicable\n const { childVariants } = definition.variant\n const childData: ChildData[] = !childVariants\n ? []\n : await getChildData(childVariants, services, token, req, res, requestData)\n\n return {\n definition,\n requestData,\n reportData,\n summariesData,\n childData,\n reportQuery,\n columns,\n }\n}\n\nconst initReportQuery = async (\n definition: components['schemas']['SingleVariantReportDefinition'],\n columns: Columns,\n res: Response,\n req: Request,\n services: Services,\n requestData?: RequestedReport,\n) => {\n const { definitionsPath } = LocalsHelper.getValues(res)\n const fields = definitionUtils.getFields(definition)\n const template = definitionUtils.getTemplate(definition)\n\n const filtersData = await ReportFiltersUtils.getFilters({\n fields,\n req,\n filtersType: FiltersType.INTERACTIVE,\n res,\n services,\n })\n\n // Sort\n const sortColumn = req.query?.['sortColumn'] || requestData?.query?.data?.['sortColumn']\n const sortedAsc = req.query?.['sortedAsc'] || requestData?.query?.data?.['sortedAsc']\n\n // Pagination\n const selectedPage = req.query?.['selectedPage']\n const pageSize = req.query?.['pageSize']\n\n // Filters\n const filtersQuery = ReportFiltersUtils.setRequestQueryFromFilterValues(filtersData.filters)\n\n const queryParams = {\n ...(sortColumn && { sortColumn }),\n ...(sortedAsc && { sortedAsc }),\n ...filtersQuery,\n ...(pageSize && { pageSize }),\n ...(selectedPage && { selectedPage }),\n ...(columns && { columns: columns.value }),\n }\n\n return new ReportQuery({\n fields,\n template,\n queryParams,\n definitionsPath,\n })\n}\n\nconst getReportData = async (args: {\n definition: components['schemas']['SingleVariantReportDefinition']\n services: Services\n token: string\n req: Request\n res: Response\n reportQuery: ReportQuery\n}) => {\n const { services, token, req, reportQuery } = args\n const { reportId, variantId, id, tableId } = req.params\n const reportVariantId = variantId || id\n\n return services.reportingService.getAsyncReport(\n token,\n reportId,\n reportVariantId,\n tableId,\n reportQuery.toRecordWithFilterPrefix(true),\n )\n}\n\nexport const getSummariesData = async (\n summaries: components['schemas']['ReportSummary'][],\n services: Services,\n token: string,\n req: Request,\n res: Response,\n): Promise<AsyncSummary[]> => {\n const { reportId, variantId, id, tableId } = req.params\n const { definitionsPath: dataProductDefinitionsPath } = LocalsHelper.getValues(res)\n const reportVariantId = variantId || id\n\n return Promise.all(\n summaries.map(async (summary) => {\n const summaryReport = await services.reportingService.getAsyncSummaryReport(\n token,\n reportId,\n reportVariantId,\n tableId,\n summary.id,\n {\n dataProductDefinitionsPath,\n },\n )\n\n return {\n ...summary,\n data: summaryReport,\n }\n }),\n )\n}\n\nexport const getChildData = async (\n childVariants: components['schemas']['ChildVariantDefinition'][],\n services: Services,\n token: string,\n req: Request,\n res: Response,\n requestData?: RequestedReport,\n): Promise<ChildData[]> => {\n const { definitionsPath: dataProductDefinitionsPath } = LocalsHelper.getValues(res)\n const { reportId } = req.params\n const childExecutionData = requestData?.childExecutionData\n if (!childExecutionData) {\n throw new Error('getChildData: No execution data found for child variants')\n }\n return Promise.all(\n childVariants.map(async (childVariant) => {\n const { specification } = childVariant\n if (!specification) {\n throw new Error('getChildData: No specification found in child variant definition')\n }\n\n const query = new ReportQuery({\n fields: specification?.fields || [],\n template: 'parent-child',\n queryParams: req.query,\n definitionsPath: dataProductDefinitionsPath,\n }).toRecordWithFilterPrefix(true)\n\n const childData = childExecutionData.find((e) => e.variantId === childVariant.id)\n if (!childData || !childData.tableId) {\n throw new Error('getChildData: No matching child execution data found')\n }\n const { tableId: childTableId } = childData\n\n const childReport = await services.reportingService.getAsyncReport(\n token,\n reportId,\n childVariant.id,\n childTableId,\n query,\n )\n\n return {\n id: childVariant.id,\n data: childReport,\n }\n }),\n )\n}\n\n/**\n * Entry point function to render the report\n *\n * @param {AsyncReportUtilsParams} { req, res, services }\n * @return {*}\n */\nexport const renderReport = async ({ req, res, services }: AsyncReportUtilsParams) => {\n const { token, dprUser } = LocalsHelper.getValues(res)\n\n // Get the report data\n const { definition, requestData, reportData, childData, summariesData, reportQuery, columns } = await getData({\n req,\n res,\n services,\n token,\n userId: dprUser.id,\n })\n\n // Get the data table\n const dataTable: DataTable[] = DataTableUtils.createDataTable(\n definition,\n columns,\n reportData,\n childData,\n summariesData,\n reportQuery,\n )\n\n // Get the template data\n const templateData = await getTemplateData(\n req,\n res,\n services,\n definition,\n summariesData,\n dataTable,\n columns,\n reportQuery,\n requestData,\n )\n\n const renderData = {\n ...templateData,\n dataTable,\n }\n\n if (requestData && Object.keys(requestData).length) {\n UserReportsUtils.updateLastViewed({\n req,\n services,\n reportStateData: requestData,\n userId: dprUser.id,\n filters: templateData.filterData.filters,\n })\n }\n\n return { renderData }\n}\n\nconst getTemplateData = async (\n req: Request,\n res: Response,\n services: Services,\n definition: components['schemas']['SingleVariantReportDefinition'],\n summariesData: AsyncSummary[],\n dataTable: DataTable[],\n columns: Columns,\n reportQuery: ReportQuery,\n requestData?: RequestedReport,\n) => {\n const { nestedBaseUrl } = LocalsHelper.getValues(res)\n\n // get url data\n const url = parseUrl(req)\n if (!url) {\n throw new Error('Unable to set url data from request')\n }\n\n const urls = url ? setUrls(url, req) : undefined\n\n // get from definition\n const definitionData = extractDataFromDefinition(definition)\n const { fields, specification } = definitionData\n\n // get from requestedData\n const requestedData = requestData ? extractDataFromRequest(requestData) : undefined\n\n // Get the count\n const count = await getCount(definition, services, res, req, reportQuery)\n\n // Get the filters\n const filterData = await ReportFiltersUtils.getFilters({\n fields,\n req,\n res,\n services,\n filtersType: FiltersType.INTERACTIVE,\n })\n\n // Set the features\n const features = await setFeatures(services, res, req, columns, definitionData, requestedData, urls)\n\n // Set the extra meta data\n const meta = setMetaData(res, req)\n\n let reportSummaries\n if (summariesData.length) {\n const collatedSummaryBuilder = new CollatedSummaryBuilder(specification, summariesData)\n reportSummaries = collatedSummaryBuilder.collatePageSummaries()\n }\n\n let pagination\n let totals\n if (definitionData.template === 'list') {\n pagination = PaginationUtils.getPaginationData(url, count, req)\n const { pageSize, currentPage, totalRows } = pagination\n totals = TotalsUtils.getTotals(pageSize, currentPage, totalRows, dataTable[0].rowCount)\n }\n\n return {\n ...(showColumns(specification) && { columns }),\n filterData,\n count,\n nestedBaseUrl,\n ...meta,\n ...features,\n ...definitionData,\n ...requestedData,\n ...urls,\n ...(pagination && { pagination }),\n ...(totals && { totals }),\n ...(reportSummaries && { reportSummaries }),\n }\n}\n\nconst showColumns = (specification: components['schemas']['Specification']) => {\n const { template } = specification\n\n return !['row-section', 'row-section-child', 'summary', 'summary-section'].includes(template)\n}\n\nconst setMetaData = (res: Response, req: Request) => {\n const { csrfToken } = LocalsHelper.getValues(res)\n const { tableId, reportId, id } = req.params\n\n return {\n csrfToken,\n loadType: LoadType.ASYNC,\n type: ReportType.REPORT,\n tableId,\n reportId,\n id,\n }\n}\n\nconst setUrls = (url: Url, req: Request): ReportUrls => {\n const { search } = url\n const encodedSearch = search ? encodeURIComponent(search) : undefined\n const pathname = search ? req.originalUrl.split(search)[0] : req.originalUrl\n const reportUrl = pathname.replace('/download-disabled', '').replace('/download-disabled?', '')\n\n return {\n reportUrl,\n reportSearch: search || undefined,\n encodedSearch,\n pathname,\n }\n}\n\nconst setFeatures = async (\n services: Services,\n res: Response,\n req: Request,\n columns: Columns,\n definitionData: ExtractedDefinitionData,\n requestData?: ExtractedRequestData,\n urls?: ReportUrls,\n) => {\n const { csrfToken, dprUser, bookmarkingEnabled, downloadingEnabled } = LocalsHelper.getValues(res)\n const { reportId, id } = req.params\n const { downloadPermissionService, bookmarkService } = services\n\n let canDownload = false\n if (downloadingEnabled) {\n canDownload = await downloadPermissionService.downloadEnabledForReport(dprUser.id, reportId, id)\n }\n\n let bookmarked\n if (bookmarkingEnabled) {\n bookmarked = await bookmarkService.isBookmarked(id, reportId, dprUser.id)\n }\n\n const actions = setActions(csrfToken, columns, canDownload, res, req, definitionData, requestData, urls)\n\n return {\n actions,\n canDownload,\n bookmarked,\n }\n}\n\nconst getCount = async (\n definition: components['schemas']['SingleVariantReportDefinition'],\n services: Services,\n res: Response,\n req: Request,\n reportQuery: ReportQuery,\n) => {\n const { token } = LocalsHelper.getValues(res)\n const { tableId, reportId, id } = req.params\n\n return !definition.variant.interactive\n ? services.reportingService.getAsyncCount(token, tableId)\n : services.reportingService.getAsyncInteractiveCount(token, tableId, reportId, id, reportQuery)\n}\n\nconst extractDataFromDefinition = (\n definition: components['schemas']['SingleVariantReportDefinition'],\n): ExtractedDefinitionData => {\n const { variant, name: reportName, description: reportDescription } = definition\n const { classification, printable, specification, name, description } = variant\n if (!specification) {\n throw new Error('No specification found in variant definition')\n }\n const { template, fields } = specification\n\n return {\n reportName,\n name,\n description: description || reportDescription,\n classification,\n printable: Boolean(printable),\n specification,\n template,\n fields,\n }\n}\n\nconst extractDataFromRequest = (requestData: RequestedReport): ExtractedRequestData => {\n const { query, url, timestamp } = requestData\n\n return {\n executionId: requestData.executionId,\n requestedTimestamp: timestamp.requested ? new Date(timestamp.requested).toLocaleString() : undefined,\n querySummary: query?.summary || [],\n queryData: query?.data,\n requestUrl: url?.request,\n defaultQuery: url?.report?.default,\n dataProductDefinitionsPath: requestData.dataProductDefinitionsPath,\n }\n}\n\nconst setActions = (\n csrfToken: string,\n columns: Columns,\n canDownload: boolean,\n res: Response,\n req: Request,\n definitionData: ExtractedDefinitionData,\n requestData?: ExtractedRequestData,\n urls?: ReportUrls,\n) => {\n const { reportName, name, printable } = definitionData\n const { tableId, id, reportId } = req.params\n const { nestedBaseUrl, definitionsPath, downloadingEnabled } = LocalsHelper.getValues(res)\n\n // DownloadActionParams\n let downloadConfig: DownloadActionParams | undefined\n if (urls && downloadingEnabled) {\n downloadConfig = {\n enabled: downloadingEnabled,\n name,\n reportName,\n csrfToken,\n reportId,\n id,\n tableId,\n columns: columns.value,\n definitionPath: definitionsPath,\n loadType: LoadType.ASYNC,\n nestedBaseUrl,\n canDownload,\n currentUrl: urls.pathname,\n currentQueryParams: urls.reportSearch,\n ...(requestData?.queryData && {\n sortColumn: <string>requestData.queryData['sortColumn'],\n sortedAsc: <string>requestData.queryData['sortedAsc'],\n }),\n }\n }\n\n let shareConfig\n let copyConfig\n if (requestData?.requestUrl?.fullUrl) {\n shareConfig = {\n reportName,\n name,\n url: requestData.requestUrl.fullUrl,\n }\n copyConfig = {\n url: requestData.requestUrl.fullUrl,\n }\n }\n\n let refreshConfig\n if (requestData?.executionId && requestData?.requestUrl?.fullUrl) {\n refreshConfig = {\n url: requestData.requestUrl.fullUrl,\n executionId: requestData.executionId,\n }\n }\n\n return ReportActionsUtils.getActions({\n ...(downloadConfig && { download: downloadConfig }),\n ...(shareConfig && { share: shareConfig }),\n ...(refreshConfig && { refresh: refreshConfig }),\n ...(copyConfig && { copy: copyConfig }),\n print: { enabled: printable },\n })\n}\n\nexport default {\n renderReport,\n}\n"],
5
- "mappings": "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",
4
+ "sourcesContent": ["import parseUrl from 'parseurl'\nimport { Url } from 'url'\nimport { Request, Response } from 'express'\n\n// Types\nimport type { Columns } from '../../../../../components/_reports/report-columns-form/types'\nimport type { AsyncReportUtilsParams } from '../../../../../types/AsyncReportUtils'\nimport type { DataTable } from '../../../../../utils/DataTableBuilder/types'\nimport type { components } from '../../../../../types/api'\nimport type { AsyncSummary, RequestedReport } from '../../../../../types/UserReports'\nimport { LoadType, ReportType } from '../../../../../types/UserReports'\nimport ReportQuery from '../../../../../types/ReportQuery'\nimport type { ChildData } from '../../../../../utils/ParentChildDataTableBuilder/types'\nimport type { ExtractedDefinitionData, ExtractedRequestData, ReportUrls } from './types'\nimport type { DownloadActionParams } from '../../../../../components/_reports/report-actions/types'\nimport { FiltersType } from '../../../../../components/_filters/filtersTypeEnum'\nimport type { Services } from '../../../../../types/Services'\n\n// Utils\nimport definitionUtils from '../../../../../utils/definitionUtils'\nimport PaginationUtils from '../../../../../components/_reports/report-pagination/utils'\nimport TotalsUtils from '../../../../../components/_reports/report-totals/utils'\nimport ReportFiltersUtils from '../../../../../components/_filters/utils'\nimport ColumnUtils from '../../../../../components/_reports/report-columns-form/utils'\nimport ReportActionsUtils from '../../../../../components/_reports/report-actions/utils'\nimport UserReportsUtils from '../../../../../components/user-reports/utils'\nimport LocalsHelper from '../../../../../utils/localsHelper'\nimport DataTableUtils from '../../../../../components/_reports/report-data-table/utils'\nimport RequestedReportService from '../../../my-reports/requested-reports/service'\n\nimport CollatedSummaryBuilder from '../../../../../utils/CollatedSummaryBuilder/CollatedSummaryBuilder'\n\nexport const getData = async ({\n res,\n req,\n services,\n token,\n userId,\n}: AsyncReportUtilsParams & { token: string; userId: string }) => {\n const { definitionsPath: definitionPath } = LocalsHelper.getValues(res)\n const { reportId, variantId, id, tableId } = req.params\n const reportVariantId = variantId || id\n\n // Get the request data\n const requestedReportService = <RequestedReportService>services.requestedReportService\n const requestData: RequestedReport | undefined = await requestedReportService.getReportByTableId(tableId, userId)\n const queryData = requestData?.query?.data\n\n // Get the definition\n const definition: components['schemas']['SingleVariantReportDefinition'] =\n await services.reportingService.getDefinition(token, reportId, reportVariantId, definitionPath, queryData)\n const { variant } = definition\n const { specification } = variant\n\n if (!specification) {\n throw new Error('No specification found in variant definition')\n }\n\n // Get the columns\n const columns = ColumnUtils.getColumns(specification, req)\n\n // initialise report query\n const reportQuery = await initReportQuery(definition, columns, res, req, services, requestData)\n\n // Get the reportData\n const reportData = await getReportData({ definition, services, token, req, res, reportQuery })\n\n // Get the summary data, if applicable\n const { summaries } = definition.variant\n const summariesData = !summaries ? [] : await getSummariesData(summaries, services, token, req, res)\n\n // Get the child data, if applicable\n const { childVariants } = definition.variant\n const childData: ChildData[] = !childVariants\n ? []\n : await getChildData(childVariants, services, token, req, res, requestData)\n\n return {\n definition,\n requestData,\n reportData,\n summariesData,\n childData,\n reportQuery,\n columns,\n }\n}\n\nconst initReportQuery = async (\n definition: components['schemas']['SingleVariantReportDefinition'],\n columns: Columns,\n res: Response,\n req: Request,\n services: Services,\n requestData?: RequestedReport,\n) => {\n const { definitionsPath } = LocalsHelper.getValues(res)\n const fields = definitionUtils.getFields(definition)\n const template = definitionUtils.getTemplate(definition)\n\n const filtersData = await ReportFiltersUtils.getFilters({\n fields,\n req,\n filtersType: FiltersType.INTERACTIVE,\n res,\n services,\n })\n\n // Sort\n const sortColumn = req.query?.['sortColumn'] || requestData?.sortBy?.data?.['sortColumn']\n const sortedAsc = req.query?.['sortedAsc'] || requestData?.sortBy?.data?.['sortedAsc']\n\n // Pagination\n const selectedPage = req.query?.['selectedPage']\n const pageSize = req.query?.['pageSize']\n\n // Filters\n const filtersQuery = ReportFiltersUtils.setRequestQueryFromFilterValues(filtersData.filters)\n\n const queryParams = {\n ...(sortColumn && { sortColumn }),\n ...(sortedAsc && { sortedAsc }),\n ...filtersQuery,\n ...(pageSize && { pageSize }),\n ...(selectedPage && { selectedPage }),\n ...(columns && { columns: columns.value }),\n }\n\n return new ReportQuery({\n fields,\n template,\n queryParams,\n definitionsPath,\n })\n}\n\nconst getReportData = async (args: {\n definition: components['schemas']['SingleVariantReportDefinition']\n services: Services\n token: string\n req: Request\n res: Response\n reportQuery: ReportQuery\n}) => {\n const { services, token, req, reportQuery } = args\n const { reportId, variantId, id, tableId } = req.params\n const reportVariantId = variantId || id\n\n return services.reportingService.getAsyncReport(\n token,\n reportId,\n reportVariantId,\n tableId,\n reportQuery.toRecordWithFilterPrefix(true),\n )\n}\n\nexport const getSummariesData = async (\n summaries: components['schemas']['ReportSummary'][],\n services: Services,\n token: string,\n req: Request,\n res: Response,\n): Promise<AsyncSummary[]> => {\n const { reportId, variantId, id, tableId } = req.params\n const { definitionsPath: dataProductDefinitionsPath } = LocalsHelper.getValues(res)\n const reportVariantId = variantId || id\n\n return Promise.all(\n summaries.map(async (summary) => {\n const summaryReport = await services.reportingService.getAsyncSummaryReport(\n token,\n reportId,\n reportVariantId,\n tableId,\n summary.id,\n {\n dataProductDefinitionsPath,\n },\n )\n\n return {\n ...summary,\n data: summaryReport,\n }\n }),\n )\n}\n\nexport const getChildData = async (\n childVariants: components['schemas']['ChildVariantDefinition'][],\n services: Services,\n token: string,\n req: Request,\n res: Response,\n requestData?: RequestedReport,\n): Promise<ChildData[]> => {\n const { definitionsPath: dataProductDefinitionsPath } = LocalsHelper.getValues(res)\n const { reportId } = req.params\n const childExecutionData = requestData?.childExecutionData\n if (!childExecutionData) {\n throw new Error('getChildData: No execution data found for child variants')\n }\n return Promise.all(\n childVariants.map(async (childVariant) => {\n const { specification } = childVariant\n if (!specification) {\n throw new Error('getChildData: No specification found in child variant definition')\n }\n\n const query = new ReportQuery({\n fields: specification?.fields || [],\n template: 'parent-child',\n queryParams: req.query,\n definitionsPath: dataProductDefinitionsPath,\n }).toRecordWithFilterPrefix(true)\n\n const childData = childExecutionData.find((e) => e.variantId === childVariant.id)\n if (!childData || !childData.tableId) {\n throw new Error('getChildData: No matching child execution data found')\n }\n const { tableId: childTableId } = childData\n\n const childReport = await services.reportingService.getAsyncReport(\n token,\n reportId,\n childVariant.id,\n childTableId,\n query,\n )\n\n return {\n id: childVariant.id,\n data: childReport,\n }\n }),\n )\n}\n\n/**\n * Entry point function to render the report\n *\n * @param {AsyncReportUtilsParams} { req, res, services }\n * @return {*}\n */\nexport const renderReport = async ({ req, res, services }: AsyncReportUtilsParams) => {\n const { token, dprUser } = LocalsHelper.getValues(res)\n\n // Get the report data\n const { definition, requestData, reportData, childData, summariesData, reportQuery, columns } = await getData({\n req,\n res,\n services,\n token,\n userId: dprUser.id,\n })\n\n // Get the data table\n const dataTable: DataTable[] = DataTableUtils.createDataTable(\n definition,\n columns,\n reportData,\n childData,\n summariesData,\n reportQuery,\n )\n\n // Get the template data\n const templateData = await getTemplateData(\n req,\n res,\n services,\n definition,\n summariesData,\n dataTable,\n columns,\n reportQuery,\n requestData,\n )\n\n const renderData = {\n ...templateData,\n dataTable,\n }\n\n if (requestData && Object.keys(requestData).length) {\n UserReportsUtils.updateLastViewed({\n req,\n services,\n reportStateData: requestData,\n userId: dprUser.id,\n filters: templateData.filterData.filters,\n })\n }\n\n return { renderData }\n}\n\nconst getTemplateData = async (\n req: Request,\n res: Response,\n services: Services,\n definition: components['schemas']['SingleVariantReportDefinition'],\n summariesData: AsyncSummary[],\n dataTable: DataTable[],\n columns: Columns,\n reportQuery: ReportQuery,\n requestData?: RequestedReport,\n) => {\n const { nestedBaseUrl } = LocalsHelper.getValues(res)\n\n // get url data\n const url = parseUrl(req)\n if (!url) {\n throw new Error('Unable to set url data from request')\n }\n\n const urls = url ? setUrls(url, req) : undefined\n\n // get from definition\n const definitionData = extractDataFromDefinition(definition)\n const { fields, specification } = definitionData\n\n // get from requestedData\n const requestedData = requestData ? extractDataFromRequest(requestData) : undefined\n\n // Get the count\n const count = await getCount(definition, services, res, req, reportQuery)\n\n // Get the filters\n const filterData = await ReportFiltersUtils.getFilters({\n fields,\n req,\n res,\n services,\n filtersType: FiltersType.INTERACTIVE,\n })\n\n // Set the features\n const features = await setFeatures(services, res, req, columns, definitionData, requestedData, urls)\n\n // Set the extra meta data\n const meta = setMetaData(res, req)\n\n let reportSummaries\n if (summariesData.length) {\n const collatedSummaryBuilder = new CollatedSummaryBuilder(specification, summariesData)\n reportSummaries = collatedSummaryBuilder.collatePageSummaries()\n }\n\n let pagination\n let totals\n if (definitionData.template === 'list') {\n pagination = PaginationUtils.getPaginationData(url, count, req)\n const { pageSize, currentPage, totalRows } = pagination\n totals = TotalsUtils.getTotals(pageSize, currentPage, totalRows, dataTable[0].rowCount)\n }\n\n return {\n ...(showColumns(specification) && { columns }),\n filterData,\n count,\n nestedBaseUrl,\n ...meta,\n ...features,\n ...definitionData,\n ...requestedData,\n ...urls,\n ...(pagination && { pagination }),\n ...(totals && { totals }),\n ...(reportSummaries && { reportSummaries }),\n }\n}\n\nconst showColumns = (specification: components['schemas']['Specification']) => {\n const { template } = specification\n\n return !['row-section', 'row-section-child', 'summary', 'summary-section'].includes(template)\n}\n\nconst setMetaData = (res: Response, req: Request) => {\n const { csrfToken } = LocalsHelper.getValues(res)\n const { tableId, reportId, id } = req.params\n\n return {\n csrfToken,\n loadType: LoadType.ASYNC,\n type: ReportType.REPORT,\n tableId,\n reportId,\n id,\n }\n}\n\nconst setUrls = (url: Url, req: Request): ReportUrls => {\n const { search } = url\n const encodedSearch = search ? encodeURIComponent(search) : undefined\n const pathname = search ? req.originalUrl.split(search)[0] : req.originalUrl\n const reportUrl = pathname.replace('/download-disabled', '').replace('/download-disabled?', '')\n\n return {\n reportUrl,\n reportSearch: search || undefined,\n encodedSearch,\n pathname,\n }\n}\n\nconst setFeatures = async (\n services: Services,\n res: Response,\n req: Request,\n columns: Columns,\n definitionData: ExtractedDefinitionData,\n requestData?: ExtractedRequestData,\n urls?: ReportUrls,\n) => {\n const { csrfToken, dprUser, bookmarkingEnabled, downloadingEnabled } = LocalsHelper.getValues(res)\n const { reportId, id } = req.params\n const { downloadPermissionService, bookmarkService } = services\n\n let canDownload = false\n if (downloadingEnabled) {\n canDownload = await downloadPermissionService.downloadEnabledForReport(dprUser.id, reportId, id)\n }\n\n let bookmarked\n if (bookmarkingEnabled) {\n bookmarked = await bookmarkService.isBookmarked(id, reportId, dprUser.id)\n }\n\n const actions = setActions(csrfToken, columns, canDownload, res, req, definitionData, requestData, urls)\n\n return {\n actions,\n canDownload,\n bookmarked,\n }\n}\n\nconst getCount = async (\n definition: components['schemas']['SingleVariantReportDefinition'],\n services: Services,\n res: Response,\n req: Request,\n reportQuery: ReportQuery,\n) => {\n const { token } = LocalsHelper.getValues(res)\n const { tableId, reportId, id } = req.params\n\n return !definition.variant.interactive\n ? services.reportingService.getAsyncCount(token, tableId)\n : services.reportingService.getAsyncInteractiveCount(token, tableId, reportId, id, reportQuery)\n}\n\nconst extractDataFromDefinition = (\n definition: components['schemas']['SingleVariantReportDefinition'],\n): ExtractedDefinitionData => {\n const { variant, name: reportName, description: reportDescription } = definition\n const { classification, printable, specification, name, description } = variant\n if (!specification) {\n throw new Error('No specification found in variant definition')\n }\n const { template, fields } = specification\n\n return {\n reportName,\n name,\n description: description || reportDescription,\n classification,\n printable: Boolean(printable),\n specification,\n template,\n fields,\n }\n}\n\nconst extractDataFromRequest = (requestData: RequestedReport): ExtractedRequestData => {\n const { query, url, timestamp } = requestData\n\n return {\n executionId: requestData.executionId,\n requestedTimestamp: timestamp.requested ? new Date(timestamp.requested).toLocaleString() : undefined,\n querySummary: query?.summary || [],\n queryData: query?.data,\n requestUrl: url?.request,\n defaultQuery: url?.report?.default,\n dataProductDefinitionsPath: requestData.dataProductDefinitionsPath,\n }\n}\n\nconst setActions = (\n csrfToken: string,\n columns: Columns,\n canDownload: boolean,\n res: Response,\n req: Request,\n definitionData: ExtractedDefinitionData,\n requestData?: ExtractedRequestData,\n urls?: ReportUrls,\n) => {\n const { reportName, name, printable } = definitionData\n const { tableId, id, reportId } = req.params\n const { nestedBaseUrl, definitionsPath, downloadingEnabled } = LocalsHelper.getValues(res)\n\n // DownloadActionParams\n let downloadConfig: DownloadActionParams | undefined\n if (urls && downloadingEnabled) {\n downloadConfig = {\n enabled: downloadingEnabled,\n name,\n reportName,\n csrfToken,\n reportId,\n id,\n tableId,\n columns: columns.value,\n definitionPath: definitionsPath,\n loadType: LoadType.ASYNC,\n nestedBaseUrl,\n canDownload,\n currentUrl: urls.pathname,\n currentQueryParams: urls.reportSearch,\n ...(requestData?.queryData && {\n sortColumn: <string>requestData.queryData['sortColumn'],\n sortedAsc: <string>requestData.queryData['sortedAsc'],\n }),\n }\n }\n\n let shareConfig\n let copyConfig\n if (requestData?.requestUrl?.fullUrl) {\n shareConfig = {\n reportName,\n name,\n url: requestData.requestUrl.fullUrl,\n }\n copyConfig = {\n url: requestData.requestUrl.fullUrl,\n }\n }\n\n let refreshConfig\n if (requestData?.executionId && requestData?.requestUrl?.fullUrl) {\n refreshConfig = {\n url: requestData.requestUrl.fullUrl,\n executionId: requestData.executionId,\n }\n }\n\n return ReportActionsUtils.getActions({\n ...(downloadConfig && { download: downloadConfig }),\n ...(shareConfig && { share: shareConfig }),\n ...(refreshConfig && { refresh: refreshConfig }),\n ...(copyConfig && { copy: copyConfig }),\n print: { enabled: printable },\n })\n}\n\nexport default {\n renderReport,\n}\n"],
5
+ "mappings": "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",
6
6
  "names": ["import_utils", "LocalsHelper", "ColumnUtils", "definitionUtils", "ReportFiltersUtils", "ReportQuery", "DataTableUtils", "UserReportsUtils", "parseUrl", "CollatedSummaryBuilder", "PaginationUtils", "TotalsUtils", "ReportActionsUtils"]
7
7
  }
@@ -107,8 +107,8 @@ const initReportQuery = async (
107
107
  })
108
108
 
109
109
  // Sort
110
- const sortColumn = req.query?.['sortColumn'] || requestData?.query?.data?.['sortColumn']
111
- const sortedAsc = req.query?.['sortedAsc'] || requestData?.query?.data?.['sortedAsc']
110
+ const sortColumn = req.query?.['sortColumn'] || requestData?.sortBy?.data?.['sortColumn']
111
+ const sortedAsc = req.query?.['sortedAsc'] || requestData?.sortBy?.data?.['sortedAsc']
112
112
 
113
113
  // Pagination
114
114
  const selectedPage = req.query?.['selectedPage']
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.1",
4
+ "version": "4.28.2",
5
5
  "main": "dpr/all",
6
6
  "sass": "dpr/all.scss",
7
7
  "engines": {
@@ -197,7 +197,6 @@
197
197
  "audit-ci": "^6.6.1",
198
198
  "autoprefixer": "^10.4.15",
199
199
  "axe-core": "^4.9.0",
200
- "cssnano": "^6.0.1",
201
200
  "cypress": "^14.5.4",
202
201
  "cypress-axe": "^1.6.0",
203
202
  "cypress-multi-reporters": "^2.0.5",
@@ -249,4 +248,4 @@
249
248
  "peerDependencies": {
250
249
  "jquery": "^3.7.1"
251
250
  }
252
- }
251
+ }