@ministryofjustice/hmpps-digital-prison-reporting-frontend 4.18.3 → 4.20.0

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (84) hide show
  1. package/dpr/components/_async/async-filters-form/view.njk +1 -1
  2. package/dpr/components/_async/async-polling/clientClass.mjs +0 -22
  3. package/dpr/components/_async/async-polling/view.njk +11 -8
  4. package/dpr/components/_catalogue/catalogue-list/utils.js +1 -1
  5. package/dpr/components/_catalogue/catalogue-list/utils.js.map +3 -3
  6. package/dpr/components/_catalogue/catalogue-list/utils.ts +50 -57
  7. package/dpr/components/_charts/utils.js +1 -1
  8. package/dpr/components/_charts/utils.js.map +3 -3
  9. package/dpr/components/_charts/utils.ts +17 -9
  10. package/dpr/components/_sync/sync-load/view.njk +1 -1
  11. package/dpr/components/user-reports/utils.js +1 -1
  12. package/dpr/components/user-reports/utils.js.map +2 -2
  13. package/dpr/components/user-reports/utils.ts +4 -4
  14. package/dpr/data/dashboardClient.js +1 -1
  15. package/dpr/data/dashboardClient.js.map +2 -2
  16. package/dpr/data/dashboardClient.ts +17 -0
  17. package/dpr/data/reportingClient.js +1 -1
  18. package/dpr/data/reportingClient.js.map +3 -3
  19. package/dpr/data/reportingClient.ts +1 -24
  20. package/dpr/middleware/setUpDprResources.js +1 -1
  21. package/dpr/middleware/setUpDprResources.js.map +3 -3
  22. package/dpr/middleware/setUpDprResources.ts +21 -3
  23. package/dpr/routes/authError.njk +10 -0
  24. package/dpr/routes/index.js +1 -1
  25. package/dpr/routes/index.js.map +3 -3
  26. package/dpr/routes/index.ts +7 -1
  27. package/dpr/routes/journeys/api-failures.cy.js +2 -0
  28. package/dpr/routes/journeys/api-failures.cy.js.map +7 -0
  29. package/dpr/routes/journeys/api-failures.cy.ts +377 -0
  30. package/dpr/routes/journeys/my-reports/bookmarks/service.js.map +2 -2
  31. package/dpr/routes/journeys/my-reports/bookmarks/service.ts +1 -0
  32. package/dpr/routes/journeys/request-report/controller.js +1 -1
  33. package/dpr/routes/journeys/request-report/controller.js.map +3 -3
  34. package/dpr/routes/journeys/request-report/controller.ts +25 -5
  35. package/dpr/routes/journeys/request-report/filters/controller.js +1 -1
  36. package/dpr/routes/journeys/request-report/filters/controller.js.map +2 -2
  37. package/dpr/routes/journeys/request-report/filters/controller.ts +1 -1
  38. package/dpr/routes/journeys/request-report/routes.js +1 -1
  39. package/dpr/routes/journeys/request-report/routes.js.map +3 -3
  40. package/dpr/routes/journeys/request-report/routes.ts +16 -0
  41. package/dpr/routes/journeys/request-report/status/controller.js +1 -1
  42. package/dpr/routes/journeys/request-report/status/controller.js.map +3 -3
  43. package/dpr/routes/journeys/request-report/status/controller.ts +0 -17
  44. package/dpr/routes/journeys/request-report/status/routes.js +1 -1
  45. package/dpr/routes/journeys/request-report/status/routes.js.map +2 -2
  46. package/dpr/routes/journeys/request-report/status/routes.ts +0 -1
  47. package/dpr/routes/journeys/view-report/async/dashboard/utils.js +1 -1
  48. package/dpr/routes/journeys/view-report/async/dashboard/utils.js.map +2 -2
  49. package/dpr/routes/journeys/view-report/async/dashboard/utils.ts +12 -4
  50. package/dpr/routes/journeys/view-report/sync/dashboard/controller.js +2 -0
  51. package/dpr/routes/journeys/view-report/sync/dashboard/controller.js.map +7 -0
  52. package/dpr/routes/journeys/view-report/sync/dashboard/controller.ts +39 -0
  53. package/dpr/routes/journeys/view-report/sync/dashboard/routes.js +2 -0
  54. package/dpr/routes/journeys/view-report/sync/dashboard/routes.js.map +7 -0
  55. package/dpr/routes/journeys/view-report/sync/dashboard/routes.ts +18 -0
  56. package/dpr/routes/journeys/view-report/sync/dashboard/utils.js +2 -0
  57. package/dpr/routes/journeys/view-report/sync/dashboard/utils.js.map +7 -0
  58. package/dpr/routes/journeys/view-report/sync/dashboard/utils.ts +149 -0
  59. package/dpr/routes/journeys/view-report/sync/load-report/controller.js +1 -1
  60. package/dpr/routes/journeys/view-report/sync/load-report/controller.js.map +3 -3
  61. package/dpr/routes/journeys/view-report/sync/load-report/controller.ts +43 -13
  62. package/dpr/routes/journeys/view-report/sync/report/routes.js +1 -1
  63. package/dpr/routes/journeys/view-report/sync/report/routes.js.map +3 -3
  64. package/dpr/routes/journeys/view-report/sync/report/routes.ts +2 -2
  65. package/dpr/routes/journeys/view-report/sync/routes.js +1 -1
  66. package/dpr/routes/journeys/view-report/sync/routes.js.map +3 -3
  67. package/dpr/routes/journeys/view-report/sync/routes.ts +2 -0
  68. package/dpr/routes/journeys/view-report/sync/tests.cy.js +1 -1
  69. package/dpr/routes/journeys/view-report/sync/tests.cy.js.map +2 -2
  70. package/dpr/routes/journeys/view-report/sync/tests.cy.ts +21 -1
  71. package/dpr/routes/serviceProblem.njk +10 -0
  72. package/dpr/services/dashboardService.js +1 -1
  73. package/dpr/services/dashboardService.js.map +2 -2
  74. package/dpr/services/dashboardService.ts +9 -0
  75. package/dpr/types/ReportQuery.js +1 -1
  76. package/dpr/types/ReportQuery.js.map +2 -2
  77. package/dpr/types/ReportQuery.ts +1 -1
  78. package/dpr/types/api.d.js +1 -1
  79. package/dpr/types/api.d.js.map +1 -1
  80. package/dpr/types/api.d.ts +139 -3
  81. package/dpr/utils/datasetHelper.js +1 -1
  82. package/dpr/utils/datasetHelper.js.map +3 -3
  83. package/dpr/utils/datasetHelper.ts +18 -9
  84. package/package.json +6 -7
@@ -1,7 +1,7 @@
1
1
  {
2
2
  "version": 3,
3
3
  "sources": ["../../../../src/dpr/components/user-reports/utils.ts"],
4
- "sourcesContent": ["import { Response, Request } from 'express'\nimport dayjs from 'dayjs'\nimport { RenderTableListResponse } from './types'\nimport Dict = NodeJS.Dict\nimport {\n FormattedUserReportData,\n UserReportData,\n RequestStatus,\n ReportType,\n RequestedReport,\n StoredReportData,\n meta,\n} from '../../types/UserReports'\nimport { FilterValue } from '../_filters/types'\nimport { Services } from '../../types/Services'\n\nimport { AsyncReportUtilsParams } from '../../types/AsyncReportUtils'\nimport { getExpiredStatus } from '../../utils/requestStatusHelper'\nimport SelectedFiltersUtils from '../_filters/filters-selected/utils'\nimport FiltersUtils from '../_filters/utils'\nimport { itemActionsHtml, createListItemProduct } from '../../utils/reportListsHelper'\nimport RequestedReportUtils from './requested/utils'\nimport RecentlyViewedCardGroupUtils from './viewed/utils'\nimport BookmarklistUtils from './bookmarks/utils'\nimport LocalsHelper from '../../utils/localsHelper'\nimport DateMapper from '../../utils/DateMapper/DateMapper'\nimport UserStoreItemBuilder from '../../utils/UserStoreItemBuilder'\n\nconst formatData = (reportData: UserReportData): FormattedUserReportData => {\n const reportDataCopy: UserReportData = JSON.parse(JSON.stringify(reportData))\n\n const {\n executionId,\n tableId,\n variantName,\n name,\n reportId,\n variantId,\n id,\n description,\n query,\n interactiveQuery,\n status,\n reportName,\n dataProductDefinitionsPath,\n type: reportType,\n url,\n } = reportDataCopy\n\n let summary: { name: string; value: string }[] = []\n if (query) {\n summary = query.summary as { name: string; value: string }[]\n }\n let interactiveSummary: { name: string; value: string }[] = []\n if (interactiveQuery) {\n interactiveSummary = interactiveQuery.summary as { name: string; value: string }[]\n }\n\n const type = reportType || ReportType.REPORT\n\n return {\n id: executionId,\n text: name || variantName || '',\n reportName,\n description,\n tag: 'MIS',\n summary,\n interactiveSummary,\n status,\n type,\n ...(status && setDataFromStatus(status, reportDataCopy)),\n meta: {\n reportId,\n id: variantId || id,\n executionId,\n tableId,\n status,\n type,\n dataProductDefinitionsPath,\n pollingUrl: url?.polling?.pathname,\n reportUrl: url?.report?.pathname,\n },\n }\n}\n\nconst formatTable = (data: FormattedUserReportData[], type: 'requested' | 'viewed') => {\n const rows = data.map((card: FormattedUserReportData) => {\n return formatTableRow(card, type)\n })\n\n return {\n rows,\n head: [\n { text: 'Product', classes: 'dpr-req-product-head' },\n { text: 'Filters', classes: 'dpr-req-filters-head' },\n { text: 'Status', classes: 'dpr-req-status-head' },\n { text: 'Actions', classes: 'dpr-req-actions-head' },\n ],\n }\n}\n\nconst formatTableRow = (data: FormattedUserReportData, type: 'requested' | 'viewed') => {\n let statusClass\n let itemActions = ''\n\n const { href, id, reportName, text, timestamp, type: reportType, status } = data\n if (href && id) {\n switch (status) {\n case RequestStatus.FAILED:\n statusClass = 'govuk-tag--red'\n itemActions = itemActionsHtml(href, id, type, status)\n break\n case RequestStatus.EXPIRED:\n statusClass = 'govuk-tag--grey'\n itemActions = itemActionsHtml(href, id, type, status)\n break\n case RequestStatus.ABORTED:\n statusClass = 'govuk-tag--orange'\n itemActions = itemActionsHtml(href, id, type, status)\n break\n case RequestStatus.READY:\n case RequestStatus.FINISHED:\n itemActions = `<a class=govuk-link govuk-link--no-visited-state dpr-type__${reportType}' href=\"${href}\">Go to ${reportType}</a>`\n statusClass = 'govuk-tag--green'\n break\n case RequestStatus.PICKED:\n case RequestStatus.SUBMITTED:\n case RequestStatus.STARTED:\n itemActions = `<a class='govuk-link govuk-link--no-visited-state dpr-type__${reportType}' href=\"${href}\">Go to status</a>`\n break\n default:\n break\n }\n }\n\n let filtersSummary = ''\n if (data.summary || data.interactiveSummary) {\n filtersSummary = createSummaryHtml(data)\n }\n\n return [\n {\n html: createListItemProduct(reportName, text, reportType, timestamp),\n },\n { html: filtersSummary },\n {\n html: `<strong class=\"govuk-tag dpr-request-status-tag ${statusClass}\">${status}</strong>`,\n classes: 'dpr-req-cell dpr-req-cell__status',\n },\n {\n html: `${itemActions}`,\n classes: 'dpr-req-cell dpr-req-cell__status',\n },\n ]\n}\n\nconst getTotals = (formattedCount: number, maxRows = 20) => {\n return {\n amount: formattedCount,\n shown: maxRows && formattedCount > maxRows ? maxRows : formattedCount,\n max: maxRows,\n }\n}\n\nconst createSummaryHtml = (data: FormattedUserReportData) => {\n const summaryHtml = data.summary\n ?.map((item) => `<li class=\"govuk-body-s dpr-query-summary\"><strong>${item.name}</strong>: ${item.value}</li>`)\n .join('')\n\n const interactiveSummaryHtml = data.interactiveSummary\n ?.map(\n (item) =>\n `<li class=\"govuk-body-s dpr-interactive-query-summary\"><strong>${item.name}</strong>: ${item.value}</li>`,\n )\n .join('')\n\n return `<ul class=\"dpr-card-group__item__filters-list govuk-!-margin-top-0 govuk-!-margin-bottom-0\">${summaryHtml}${interactiveSummaryHtml}</ul>`\n}\n\nconst getMeta = (formattedData: FormattedUserReportData[], res: Response): meta[] => {\n const { nestedBaseUrl } = LocalsHelper.getValues(res)\n\n return formattedData.map((d) => {\n return {\n reportId: d.meta?.reportId,\n id: d.meta.id,\n executionId: d.meta.executionId,\n tableId: d.meta.tableId,\n status: d.meta.status,\n requestedAt: d.meta.requestedAt,\n type: d.meta.type,\n dataProductDefinitionsPath: d.meta.dataProductDefinitionsPath,\n pollingUrl: d.meta.pollingUrl,\n reportUrl: d.meta.reportUrl,\n nestedBaseUrl,\n }\n })\n}\n\nexport const setDataFromStatus = (status: RequestStatus, reportsData: UserReportData) => {\n let timestamp\n let href\n let formattedDate\n const { url, timestamp: time } = reportsData\n const polling = url?.polling\n const request = url?.request\n const report = url?.report\n\n const dateMapper = new DateMapper()\n switch (status) {\n case RequestStatus.FAILED: {\n formattedDate = time.failed\n ? dateMapper.toDateString(<string>(<unknown>time.failed), 'local-date')\n : dayjs().format('DD/MM/YYYY')\n href = polling?.fullUrl\n timestamp = `Failed at: ${formattedDate}`\n break\n }\n case RequestStatus.ABORTED: {\n href = request?.fullUrl\n formattedDate = dateMapper.toDateString(<string>(<unknown>time.aborted), 'local-date')\n timestamp = `Aborted at: ${formattedDate}`\n break\n }\n case RequestStatus.FINISHED:\n href = report?.fullUrl\n formattedDate = dateMapper.toDateString(<string>(<unknown>time.completed), 'local-date')\n timestamp = `Ready at: ${formattedDate}`\n break\n case RequestStatus.EXPIRED: {\n href = request?.fullUrl\n formattedDate = dateMapper.toDateString(<string>(<unknown>time.expired), 'local-date')\n timestamp = `Expired at: ${formattedDate}`\n break\n }\n case RequestStatus.READY: {\n href = report?.fullUrl\n formattedDate = dateMapper.toDateString(<string>(<unknown>time.lastViewed), 'local-date')\n timestamp = `Last viewed: ${formattedDate}`\n break\n }\n case RequestStatus.SUBMITTED:\n case RequestStatus.STARTED:\n case RequestStatus.PICKED:\n href = polling?.fullUrl\n formattedDate = dateMapper.toDateString(<string>(<unknown>time.requested), 'local-date')\n timestamp = `Requested at: ${formattedDate}`\n break\n default:\n formattedDate = dateMapper.toDateString(<string>(<unknown>time.lastViewed), 'local-date')\n timestamp = `Last viewed: ${formattedDate}`\n break\n }\n\n return {\n timestamp,\n href,\n }\n}\n\nexport const renderList = async ({\n res,\n reportsData,\n maxRows,\n filterFunction,\n type,\n}: {\n res: Response\n reportsData: StoredReportData[]\n maxRows?: number\n filterFunction: (report: UserReportData) => boolean\n type: 'requested' | 'viewed'\n}): Promise<RenderTableListResponse> => {\n const { csrfToken } = LocalsHelper.getValues(res)\n\n let formatted = reportsData.filter(filterFunction).map(formatData)\n const formattedCount = formatted.length\n\n if (maxRows) formatted = formatted.slice(0, maxRows)\n const tableData = formatTable(formatted, type)\n\n const path = type === 'requested' ? 'requested-reports' : 'recently-viewed'\n const head = {\n ...(formatted.length && { href: `dpr/my-reports/${path}/list` }),\n ...(!formatted.length && { emptyMessage: `You have 0 ${type} reports` }),\n }\n\n const result: RenderTableListResponse = {\n head,\n tableData,\n total: getTotals(formattedCount, maxRows),\n meta: getMeta(formatted, res),\n csrfToken,\n ...(maxRows && { maxRows }),\n }\n\n return result\n}\n\nexport const updateExpiredStatus = async ({ req, res, services }: AsyncReportUtilsParams) => {\n const { dprUser } = LocalsHelper.getValues(res)\n const report = await getExpiredStatus({ req, res, services })\n\n if (report && report.isExpired) {\n await services.recentlyViewedService.setToExpired(report.executionId, dprUser.id)\n await services.requestedReportService.setToExpired(report.executionId, dprUser.id)\n }\n\n return report ? report.isExpired : false\n}\n\nexport const init = async ({ services, res, maxRows = 6 }: { services: Services; res: Response; maxRows?: number }) => {\n const { requestedReports, recentlyViewedReports, bookmarkingEnabled } = LocalsHelper.getValues(res)\n const requestedReportsList = await renderList({\n res,\n reportsData: requestedReports,\n filterFunction: RequestedReportUtils.filterReports,\n maxRows,\n type: 'requested',\n })\n const viewedReportsList = await renderList({\n res,\n reportsData: recentlyViewedReports,\n filterFunction: RecentlyViewedCardGroupUtils.filterReports,\n maxRows,\n type: 'viewed',\n })\n\n let bookmarks\n if (bookmarkingEnabled) {\n bookmarks = await BookmarklistUtils.renderBookmarkList({\n res,\n services,\n maxRows,\n })\n }\n\n return {\n requestedReports: requestedReportsList,\n viewedReports: viewedReportsList,\n bookmarks,\n }\n}\n\nexport const updateLastViewed = async ({\n req,\n services,\n reportStateData,\n userId,\n filters,\n}: {\n req: Request\n services: Services\n reportStateData: RequestedReport\n userId: string\n filters: FilterValue[]\n}) => {\n const { type, reportId, reportName, description, id, name, executionId, tableId, query, url } = reportStateData\n const reportData = { type, reportId, reportName, description, id, name }\n const executionData = { executionId, tableId }\n const queryData = query ? { query: query.data, querySummary: query.summary } : { query: {}, querySummary: [] }\n\n const columns = <string[]>req.query?.['columns']\n const { selectedPage, pageSize, sortColumn, sortedAsc } = <Dict<string>>req.query\n const filtersQuery = FiltersUtils.setRequestQueryFromFilterValues(filters, true)\n const reqQuery = {\n ...filtersQuery,\n ...(columns && { columns }),\n ...(selectedPage && { selectedPage }),\n ...(pageSize && { pageSize }),\n ...(sortColumn && { sortColumn }),\n ...(sortedAsc && { sortedAsc }),\n }\n const interactiveQueryData: { query: Dict<string | string[]>; querySummary: Array<Dict<string>> } = {\n query: reqQuery,\n querySummary: SelectedFiltersUtils.getQuerySummary(filtersQuery, filters),\n }\n\n const recentlyViewedData = new UserStoreItemBuilder(reportData)\n .addExecutionData(executionData)\n .addQuery(queryData)\n .addInteractiveQuery(interactiveQueryData)\n .addStatus(RequestStatus.READY)\n .addTimestamp()\n .addAsyncUrls(url)\n .addReportUrls(req)\n .build()\n\n if (executionId) await services.requestedReportService.updateLastViewed(executionId, userId)\n await services.recentlyViewedService.setRecentlyViewed(recentlyViewedData, userId)\n}\n\nexport default {\n renderList,\n updateExpiredStatus,\n init,\n updateLastViewed,\n}\n"],
5
- "mappings": "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",
4
+ "sourcesContent": ["import { Response, Request } from 'express'\nimport dayjs from 'dayjs'\nimport { RenderTableListResponse } from './types'\nimport Dict = NodeJS.Dict\nimport {\n FormattedUserReportData,\n UserReportData,\n RequestStatus,\n ReportType,\n RequestedReport,\n StoredReportData,\n meta,\n} from '../../types/UserReports'\nimport { FilterValue } from '../_filters/types'\nimport { Services } from '../../types/Services'\n\nimport { AsyncReportUtilsParams } from '../../types/AsyncReportUtils'\nimport { getExpiredStatus } from '../../utils/requestStatusHelper'\nimport SelectedFiltersUtils from '../_filters/filters-selected/utils'\nimport FiltersUtils from '../_filters/utils'\nimport { itemActionsHtml, createListItemProduct } from '../../utils/reportListsHelper'\nimport RequestedReportUtils from './requested/utils'\nimport RecentlyViewedCardGroupUtils from './viewed/utils'\nimport BookmarklistUtils from './bookmarks/utils'\nimport LocalsHelper from '../../utils/localsHelper'\nimport DateMapper from '../../utils/DateMapper/DateMapper'\nimport UserStoreItemBuilder from '../../utils/UserStoreItemBuilder'\n\nconst formatData = (reportData: UserReportData): FormattedUserReportData => {\n const reportDataCopy: UserReportData = JSON.parse(JSON.stringify(reportData))\n\n const {\n executionId,\n tableId,\n variantName,\n name,\n reportId,\n variantId,\n id,\n description,\n query,\n interactiveQuery,\n status,\n reportName,\n dataProductDefinitionsPath,\n type: reportType,\n url,\n } = reportDataCopy\n\n let summary: { name: string; value: string }[] = []\n if (query) {\n summary = query.summary as { name: string; value: string }[]\n }\n let interactiveSummary: { name: string; value: string }[] = []\n if (interactiveQuery) {\n interactiveSummary = interactiveQuery.summary as { name: string; value: string }[]\n }\n\n const type = reportType || ReportType.REPORT\n\n return {\n id: executionId,\n text: name || variantName || '',\n reportName,\n description,\n tag: 'MIS',\n summary,\n interactiveSummary,\n status,\n type,\n ...(status && setDataFromStatus(status, reportDataCopy)),\n meta: {\n reportId,\n id: variantId || id,\n executionId,\n tableId,\n status,\n type,\n dataProductDefinitionsPath,\n pollingUrl: url?.polling?.pathname,\n reportUrl: url?.report?.pathname,\n },\n }\n}\n\nconst formatTable = (data: FormattedUserReportData[], type: 'requested' | 'viewed') => {\n const rows = data.map((card: FormattedUserReportData) => {\n return formatTableRow(card, type)\n })\n\n return {\n rows,\n head: [\n { text: 'Product', classes: 'dpr-req-product-head' },\n { text: 'Filters', classes: 'dpr-req-filters-head' },\n { text: 'Status', classes: 'dpr-req-status-head' },\n { text: 'Actions', classes: 'dpr-req-actions-head' },\n ],\n }\n}\n\nconst formatTableRow = (data: FormattedUserReportData, type: 'requested' | 'viewed') => {\n let statusClass\n let itemActions = ''\n\n const { href, id, reportName, text, timestamp, type: reportType, status } = data\n if (href) {\n switch (status) {\n case RequestStatus.FAILED:\n statusClass = 'govuk-tag--red'\n itemActions = id ? itemActionsHtml(href, id, type, status) : ''\n break\n case RequestStatus.EXPIRED:\n statusClass = 'govuk-tag--grey'\n itemActions = id ? itemActionsHtml(href, id, type, status) : ''\n break\n case RequestStatus.ABORTED:\n statusClass = 'govuk-tag--orange'\n itemActions = id ? itemActionsHtml(href, id, type, status) : ''\n break\n case RequestStatus.READY:\n case RequestStatus.FINISHED:\n itemActions = `<a class=govuk-link govuk-link--no-visited-state dpr-type__${reportType}' href=\"${href}\">Go to ${reportType}</a>`\n statusClass = 'govuk-tag--green'\n break\n case RequestStatus.PICKED:\n case RequestStatus.SUBMITTED:\n case RequestStatus.STARTED:\n itemActions = `<a class='govuk-link govuk-link--no-visited-state dpr-type__${reportType}' href=\"${href}\">Go to status</a>`\n break\n default:\n break\n }\n }\n\n let filtersSummary = ''\n if (data.summary || data.interactiveSummary) {\n filtersSummary = createSummaryHtml(data)\n }\n\n return [\n {\n html: createListItemProduct(reportName, text, reportType, timestamp),\n },\n { html: filtersSummary },\n {\n html: `<strong class=\"govuk-tag dpr-request-status-tag ${statusClass}\">${status}</strong>`,\n classes: 'dpr-req-cell dpr-req-cell__status',\n },\n {\n html: `${itemActions}`,\n classes: 'dpr-req-cell dpr-req-cell__status',\n },\n ]\n}\n\nconst getTotals = (formattedCount: number, maxRows = 20) => {\n return {\n amount: formattedCount,\n shown: maxRows && formattedCount > maxRows ? maxRows : formattedCount,\n max: maxRows,\n }\n}\n\nconst createSummaryHtml = (data: FormattedUserReportData) => {\n const summaryHtml = data.summary\n ?.map((item) => `<li class=\"govuk-body-s dpr-query-summary\"><strong>${item.name}</strong>: ${item.value}</li>`)\n .join('')\n\n const interactiveSummaryHtml = data.interactiveSummary\n ?.map(\n (item) =>\n `<li class=\"govuk-body-s dpr-interactive-query-summary\"><strong>${item.name}</strong>: ${item.value}</li>`,\n )\n .join('')\n\n return `<ul class=\"dpr-card-group__item__filters-list govuk-!-margin-top-0 govuk-!-margin-bottom-0\">${summaryHtml}${interactiveSummaryHtml}</ul>`\n}\n\nconst getMeta = (formattedData: FormattedUserReportData[], res: Response): meta[] => {\n const { nestedBaseUrl } = LocalsHelper.getValues(res)\n\n return formattedData.map((d) => {\n return {\n reportId: d.meta?.reportId,\n id: d.meta.id,\n executionId: d.meta.executionId,\n tableId: d.meta.tableId,\n status: d.meta.status,\n requestedAt: d.meta.requestedAt,\n type: d.meta.type,\n dataProductDefinitionsPath: d.meta.dataProductDefinitionsPath,\n pollingUrl: d.meta.pollingUrl,\n reportUrl: d.meta.reportUrl,\n nestedBaseUrl,\n }\n })\n}\n\nexport const setDataFromStatus = (status: RequestStatus, reportsData: UserReportData) => {\n let timestamp\n let href\n let formattedDate\n const { url, timestamp: time } = reportsData\n const polling = url?.polling\n const request = url?.request\n const report = url?.report\n\n const dateMapper = new DateMapper()\n switch (status) {\n case RequestStatus.FAILED: {\n formattedDate = time.failed\n ? dateMapper.toDateString(<string>(<unknown>time.failed), 'local-date')\n : dayjs().format('DD/MM/YYYY')\n href = polling?.fullUrl\n timestamp = `Failed at: ${formattedDate}`\n break\n }\n case RequestStatus.ABORTED: {\n href = request?.fullUrl\n formattedDate = dateMapper.toDateString(<string>(<unknown>time.aborted), 'local-date')\n timestamp = `Aborted at: ${formattedDate}`\n break\n }\n case RequestStatus.FINISHED:\n href = report?.fullUrl\n formattedDate = dateMapper.toDateString(<string>(<unknown>time.completed), 'local-date')\n timestamp = `Ready at: ${formattedDate}`\n break\n case RequestStatus.EXPIRED: {\n href = request?.fullUrl\n formattedDate = dateMapper.toDateString(<string>(<unknown>time.expired), 'local-date')\n timestamp = `Expired at: ${formattedDate}`\n break\n }\n case RequestStatus.READY: {\n href = report?.fullUrl\n formattedDate = dateMapper.toDateString(<string>(<unknown>time.lastViewed), 'local-date')\n timestamp = `Last viewed: ${formattedDate}`\n break\n }\n case RequestStatus.SUBMITTED:\n case RequestStatus.STARTED:\n case RequestStatus.PICKED:\n href = polling?.fullUrl\n formattedDate = dateMapper.toDateString(<string>(<unknown>time.requested), 'local-date')\n timestamp = `Requested at: ${formattedDate}`\n break\n default:\n formattedDate = dateMapper.toDateString(<string>(<unknown>time.lastViewed), 'local-date')\n timestamp = `Last viewed: ${formattedDate}`\n break\n }\n\n return {\n timestamp,\n href,\n }\n}\n\nexport const renderList = async ({\n res,\n reportsData,\n maxRows,\n filterFunction,\n type,\n}: {\n res: Response\n reportsData: StoredReportData[]\n maxRows?: number\n filterFunction: (report: UserReportData) => boolean\n type: 'requested' | 'viewed'\n}): Promise<RenderTableListResponse> => {\n const { csrfToken } = LocalsHelper.getValues(res)\n\n let formatted = reportsData.filter(filterFunction).map(formatData)\n const formattedCount = formatted.length\n\n if (maxRows) formatted = formatted.slice(0, maxRows)\n const tableData = formatTable(formatted, type)\n\n const path = type === 'requested' ? 'requested-reports' : 'recently-viewed'\n const head = {\n ...(formatted.length && { href: `dpr/my-reports/${path}/list` }),\n ...(!formatted.length && { emptyMessage: `You have 0 ${type} reports` }),\n }\n\n const result: RenderTableListResponse = {\n head,\n tableData,\n total: getTotals(formattedCount, maxRows),\n meta: getMeta(formatted, res),\n csrfToken,\n ...(maxRows && { maxRows }),\n }\n\n return result\n}\n\nexport const updateExpiredStatus = async ({ req, res, services }: AsyncReportUtilsParams) => {\n const { dprUser } = LocalsHelper.getValues(res)\n const report = await getExpiredStatus({ req, res, services })\n\n if (report && report.isExpired) {\n await services.recentlyViewedService.setToExpired(report.executionId, dprUser.id)\n await services.requestedReportService.setToExpired(report.executionId, dprUser.id)\n }\n\n return report ? report.isExpired : false\n}\n\nexport const init = async ({ services, res, maxRows = 6 }: { services: Services; res: Response; maxRows?: number }) => {\n const { requestedReports, recentlyViewedReports, bookmarkingEnabled } = LocalsHelper.getValues(res)\n const requestedReportsList = await renderList({\n res,\n reportsData: requestedReports,\n filterFunction: RequestedReportUtils.filterReports,\n maxRows,\n type: 'requested',\n })\n const viewedReportsList = await renderList({\n res,\n reportsData: recentlyViewedReports,\n filterFunction: RecentlyViewedCardGroupUtils.filterReports,\n maxRows,\n type: 'viewed',\n })\n\n let bookmarks\n if (bookmarkingEnabled) {\n bookmarks = await BookmarklistUtils.renderBookmarkList({\n res,\n services,\n maxRows,\n })\n }\n\n return {\n requestedReports: requestedReportsList,\n viewedReports: viewedReportsList,\n bookmarks,\n }\n}\n\nexport const updateLastViewed = async ({\n req,\n services,\n reportStateData,\n userId,\n filters,\n}: {\n req: Request\n services: Services\n reportStateData: RequestedReport\n userId: string\n filters: FilterValue[]\n}) => {\n const { type, reportId, reportName, description, id, name, executionId, tableId, query, url } = reportStateData\n const reportData = { type, reportId, reportName, description, id, name }\n const executionData = { executionId, tableId }\n const queryData = query ? { query: query.data, querySummary: query.summary } : { query: {}, querySummary: [] }\n\n const columns = <string[]>req.query?.['columns']\n const { selectedPage, pageSize, sortColumn, sortedAsc } = <Dict<string>>req.query\n const filtersQuery = FiltersUtils.setRequestQueryFromFilterValues(filters, true)\n const reqQuery = {\n ...filtersQuery,\n ...(columns && { columns }),\n ...(selectedPage && { selectedPage }),\n ...(pageSize && { pageSize }),\n ...(sortColumn && { sortColumn }),\n ...(sortedAsc && { sortedAsc }),\n }\n const interactiveQueryData: { query: Dict<string | string[]>; querySummary: Array<Dict<string>> } = {\n query: reqQuery,\n querySummary: SelectedFiltersUtils.getQuerySummary(filtersQuery, filters),\n }\n\n const recentlyViewedData = new UserStoreItemBuilder(reportData)\n .addExecutionData(executionData)\n .addQuery(queryData)\n .addInteractiveQuery(interactiveQueryData)\n .addStatus(RequestStatus.READY)\n .addTimestamp()\n .addAsyncUrls(url)\n .addReportUrls(req)\n .build()\n\n if (executionId) await services.requestedReportService.updateLastViewed(executionId, userId)\n await services.recentlyViewedService.setRecentlyViewed(recentlyViewedData, userId)\n}\n\nexport default {\n renderList,\n updateExpiredStatus,\n init,\n updateLastViewed,\n}\n"],
5
+ "mappings": "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",
6
6
  "names": ["utils_exports", "__export", "utils_default", "init", "renderList", "setDataFromStatus", "updateExpiredStatus", "updateLastViewed", "__toCommonJS", "import_dayjs", "import_UserReports", "import_requestStatusHelper", "import_utils", "import_reportListsHelper", "import_localsHelper", "import_DateMapper", "import_UserStoreItemBuilder", "formatData", "reportData", "reportDataCopy", "executionId", "tableId", "variantName", "name", "reportId", "variantId", "id", "description", "query", "interactiveQuery", "status", "reportName", "dataProductDefinitionsPath", "reportType", "url", "summary", "interactiveSummary", "type", "formatTable", "data", "card", "formatTableRow", "statusClass", "itemActions", "href", "text", "timestamp", "filtersSummary", "createSummaryHtml", "getTotals", "formattedCount", "maxRows", "summaryHtml", "item", "interactiveSummaryHtml", "getMeta", "formattedData", "res", "nestedBaseUrl", "LocalsHelper", "d", "reportsData", "formattedDate", "time", "polling", "request", "report", "dateMapper", "DateMapper", "dayjs", "filterFunction", "csrfToken", "formatted", "tableData", "path", "req", "services", "dprUser", "requestedReports", "recentlyViewedReports", "bookmarkingEnabled", "requestedReportsList", "RequestedReportUtils", "viewedReportsList", "RecentlyViewedCardGroupUtils", "bookmarks", "BookmarklistUtils", "reportStateData", "userId", "filters", "executionData", "queryData", "columns", "selectedPage", "pageSize", "sortColumn", "sortedAsc", "filtersQuery", "FiltersUtils", "interactiveQueryData", "SelectedFiltersUtils", "recentlyViewedData", "UserStoreItemBuilder"]
7
7
  }
@@ -104,19 +104,19 @@ const formatTableRow = (data: FormattedUserReportData, type: 'requested' | 'view
104
104
  let itemActions = ''
105
105
 
106
106
  const { href, id, reportName, text, timestamp, type: reportType, status } = data
107
- if (href && id) {
107
+ if (href) {
108
108
  switch (status) {
109
109
  case RequestStatus.FAILED:
110
110
  statusClass = 'govuk-tag--red'
111
- itemActions = itemActionsHtml(href, id, type, status)
111
+ itemActions = id ? itemActionsHtml(href, id, type, status) : ''
112
112
  break
113
113
  case RequestStatus.EXPIRED:
114
114
  statusClass = 'govuk-tag--grey'
115
- itemActions = itemActionsHtml(href, id, type, status)
115
+ itemActions = id ? itemActionsHtml(href, id, type, status) : ''
116
116
  break
117
117
  case RequestStatus.ABORTED:
118
118
  statusClass = 'govuk-tag--orange'
119
- itemActions = itemActionsHtml(href, id, type, status)
119
+ itemActions = id ? itemActionsHtml(href, id, type, status) : ''
120
120
  break
121
121
  case RequestStatus.READY:
122
122
  case RequestStatus.FINISHED:
@@ -1,2 +1,2 @@
1
- "use strict";var D=Object.create;var a=Object.defineProperty;var u=Object.getOwnPropertyDescriptor;var p=Object.getOwnPropertyNames;var b=Object.getPrototypeOf,C=Object.prototype.hasOwnProperty;var $=(e,s)=>{for(var t in s)a(e,t,{get:s[t],enumerable:!0})},m=(e,s,t,i)=>{if(s&&typeof s=="object"||typeof s=="function")for(let n of p(s))!C.call(e,n)&&n!==t&&a(e,n,{get:()=>s[n],enumerable:!(i=u(s,n))||i.enumerable});return e};var l=(e,s,t)=>(t=e!=null?D(b(e)):{},m(s||!e||!e.__esModule?a(t,"default",{value:e,enumerable:!0}):t,e)),y=e=>m(a({},"__esModule",{value:!0}),e);var R={};$(R,{DashboardClient:()=>c,default:()=>d});module.exports=y(R);var h=l(require("../utils/logger")),f=l(require("./restClient"));class c{constructor(s){this.restClient=new f.default("Dashboard API Client",s)}getDefinition(s,t,i,n,r){const o={...r,dataProductDefinitionsPath:n};return this.logInfo("Get definition:",{dpdId:i,dashboardId:t,...o}),this.restClient.get({path:`/definitions/${i}/dashboards/${t}`,query:o,token:s}).then(g=>g)}requestAsyncDashboard(s,t,i,n){return this.logInfo("Request dashboard:",{reportId:t,dashboardId:i}),this.restClient.get({path:`/async/dashboards/${t}/${i}`,token:s,query:n}).then(r=>r)}getAsyncDashboard(s,t,i,n,r){return this.logInfo("Get dashboard:",{reportId:t,dashboardId:i,tableId:n}),this.restClient.get({path:`/reports/${t}/dashboards/${i}/tables/${n}/result`,token:s,query:r}).then(o=>o)}getAsyncStatus(s,t,i,n,r,o){return this.logInfo("Get status:",{reportId:t,dashboardId:i,executionId:n,tableId:r}),this.restClient.get({path:`/reports/${t}/dashboards/${i}/statements/${n}/status`,token:s,query:{dataProductDefinitionsPath:o,tableId:r}}).then(g=>g)}cancelAsyncRequest(s,t,i,n,r){return this.logInfo("Cancel request:",{reportId:t,dashboardId:i,executionId:n}),this.restClient.delete({path:`/reports/${t}/dashboards/${i}/statements/${n}`,token:s,query:{dataProductDefinitionsPath:r}}).then(o=>o)}logInfo(s,t){h.default.info(`Dashboard client: ${s}:`),t&&Object.keys(t).length&&h.default.info(JSON.stringify(t,null,2))}}var d=c;0&&(module.exports={DashboardClient});
1
+ "use strict";var f=Object.create;var a=Object.defineProperty;var u=Object.getOwnPropertyDescriptor;var p=Object.getOwnPropertyNames;var b=Object.getPrototypeOf,$=Object.prototype.hasOwnProperty;var C=(i,s)=>{for(var t in s)a(i,t,{get:s[t],enumerable:!0})},m=(i,s,t,n)=>{if(s&&typeof s=="object"||typeof s=="function")for(let e of p(s))!$.call(i,e)&&e!==t&&a(i,e,{get:()=>s[e],enumerable:!(n=u(s,e))||n.enumerable});return i};var l=(i,s,t)=>(t=i!=null?f(b(i)):{},m(s||!i||!i.__esModule?a(t,"default",{value:i,enumerable:!0}):t,i)),d=i=>m(a({},"__esModule",{value:!0}),i);var y={};C(y,{DashboardClient:()=>c,default:()=>R});module.exports=d(y);var h=l(require("../utils/logger")),D=l(require("./restClient"));class c{constructor(s){this.restClient=new D.default("Dashboard API Client",s)}getDefinition(s,t,n,e,r){const o={...r,dataProductDefinitionsPath:e};return this.logInfo("Get definition:",{dpdId:n,dashboardId:t,...o}),this.restClient.get({path:`/definitions/${n}/dashboards/${t}`,query:o,token:s}).then(g=>g)}requestAsyncDashboard(s,t,n,e){return this.logInfo("Request dashboard:",{reportId:t,dashboardId:n}),this.restClient.get({path:`/async/dashboards/${t}/${n}`,token:s,query:e}).then(r=>r)}getAsyncDashboard(s,t,n,e,r){return this.logInfo("Get dashboard:",{reportId:t,dashboardId:n,tableId:e}),this.restClient.get({path:`/reports/${t}/dashboards/${n}/tables/${e}/result`,token:s,query:r}).then(o=>o)}getAsyncStatus(s,t,n,e,r,o){return this.logInfo("Get status:",{reportId:t,dashboardId:n,executionId:e,tableId:r}),this.restClient.get({path:`/reports/${t}/dashboards/${n}/statements/${e}/status`,token:s,query:{dataProductDefinitionsPath:o,tableId:r}}).then(g=>g)}cancelAsyncRequest(s,t,n,e,r){return this.logInfo("Cancel request:",{reportId:t,dashboardId:n,executionId:e}),this.restClient.delete({path:`/reports/${t}/dashboards/${n}/statements/${e}`,token:s,query:{dataProductDefinitionsPath:r}}).then(o=>o)}getSyncDashboard(s,t,n,e){return this.logInfo("Get dashboard:",{reportId:t,dashboardId:n}),this.restClient.get({path:`/reports/${t}/dashboards/${n}`,token:s,query:e}).then(r=>r)}logInfo(s,t){h.default.info(`Dashboard client: ${s}:`),t&&Object.keys(t).length&&h.default.info(JSON.stringify(t,null,2))}}var R=c;0&&(module.exports={DashboardClient});
2
2
  //# sourceMappingURL=dashboardClient.js.map
@@ -1,7 +1,7 @@
1
1
  {
2
2
  "version": 3,
3
3
  "sources": ["../../../src/dpr/data/dashboardClient.ts"],
4
- "sourcesContent": ["import logger from '../utils/logger'\nimport RestClient from './restClient'\nimport Dict = NodeJS.Dict\nimport { ApiConfig } from './types'\nimport { components } from '../types/api'\nimport { DashboardDataResponse } from '../types/Metrics'\n\nclass DashboardClient {\n restClient: RestClient\n\n constructor(config: ApiConfig) {\n this.restClient = new RestClient('Dashboard API Client', config)\n }\n\n getDefinition(\n token: string,\n dashboardId: string,\n dpdId: string,\n definitionsPath?: string,\n queryData?: Dict<string | string[]> | undefined,\n ): Promise<components['schemas']['DashboardDefinition']> {\n const query = {\n ...queryData,\n dataProductDefinitionsPath: definitionsPath,\n }\n this.logInfo('Get definition:', { dpdId, dashboardId, ...query })\n\n return this.restClient\n .get({\n path: `/definitions/${dpdId}/dashboards/${dashboardId}`,\n query,\n token,\n })\n .then((response) => <components['schemas']['DashboardDefinition']>response)\n }\n\n requestAsyncDashboard(\n token: string,\n reportId: string,\n dashboardId: string,\n query: Record<string, string | boolean | number>,\n ): Promise<Dict<string>> {\n this.logInfo('Request dashboard:', { reportId, dashboardId })\n\n return this.restClient\n .get({\n path: `/async/dashboards/${reportId}/${dashboardId}`,\n token,\n query,\n })\n .then((response) => <Dict<string>>response)\n }\n\n getAsyncDashboard(\n token: string,\n reportId: string,\n dashboardId: string,\n tableId: string,\n query: Record<string, string | string[]>,\n ): Promise<DashboardDataResponse[][]> {\n this.logInfo('Get dashboard:', { reportId, dashboardId, tableId })\n\n return this.restClient\n .get({\n path: `/reports/${reportId}/dashboards/${dashboardId}/tables/${tableId}/result`,\n token,\n query,\n })\n .then((response) => <DashboardDataResponse[][]>response)\n }\n\n getAsyncStatus(\n token: string,\n reportId: string,\n dashboardId: string,\n executionId: string,\n tableId?: string,\n dataProductDefinitionsPath?: string,\n ): Promise<components['schemas']['StatementExecutionStatus']> {\n this.logInfo('Get status:', { reportId, dashboardId, executionId, tableId })\n\n return this.restClient\n .get({\n path: `/reports/${reportId}/dashboards/${dashboardId}/statements/${executionId}/status`,\n token,\n query: {\n dataProductDefinitionsPath,\n tableId,\n },\n })\n .then((response) => <components['schemas']['StatementExecutionStatus']>response)\n }\n\n cancelAsyncRequest(\n token: string,\n reportId: string,\n dashboardId: string,\n executionId: string,\n dataProductDefinitionsPath?: string,\n ): Promise<Dict<string>> {\n this.logInfo('Cancel request:', { reportId, dashboardId, executionId })\n\n return this.restClient\n .delete({\n path: `/reports/${reportId}/dashboards/${dashboardId}/statements/${executionId}`,\n token,\n query: {\n dataProductDefinitionsPath,\n },\n })\n .then((response) => <Dict<string>>response)\n }\n\n logInfo(title: string, args?: Dict<string>) {\n logger.info(`Dashboard client: ${title}:`)\n if (args && Object.keys(args).length) logger.info(JSON.stringify(args, null, 2))\n }\n}\n\nexport { DashboardClient }\nexport default DashboardClient\n"],
5
- "mappings": "0jBAAA,IAAAA,EAAA,GAAAC,EAAAD,EAAA,qBAAAE,EAAA,YAAAC,IAAA,eAAAC,EAAAJ,GAAA,IAAAK,EAAmB,8BACnBC,EAAuB,2BAMvB,MAAMJ,CAAgB,CAGpB,YAAYK,EAAmB,CAC7B,KAAK,WAAa,IAAI,EAAAC,QAAW,uBAAwBD,CAAM,CACjE,CAEA,cACEE,EACAC,EACAC,EACAC,EACAC,EACuD,CACvD,MAAMC,EAAQ,CACZ,GAAGD,EACH,2BAA4BD,CAC9B,EACA,YAAK,QAAQ,kBAAmB,CAAE,MAAAD,EAAO,YAAAD,EAAa,GAAGI,CAAM,CAAC,EAEzD,KAAK,WACT,IAAI,CACH,KAAM,gBAAgBH,CAAK,eAAeD,CAAW,GACrD,MAAAI,EACA,MAAAL,CACF,CAAC,EACA,KAAMM,GAA2DA,CAAQ,CAC9E,CAEA,sBACEN,EACAO,EACAN,EACAI,EACuB,CACvB,YAAK,QAAQ,qBAAsB,CAAE,SAAAE,EAAU,YAAAN,CAAY,CAAC,EAErD,KAAK,WACT,IAAI,CACH,KAAM,qBAAqBM,CAAQ,IAAIN,CAAW,GAClD,MAAAD,EACA,MAAAK,CACF,CAAC,EACA,KAAMC,GAA2BA,CAAQ,CAC9C,CAEA,kBACEN,EACAO,EACAN,EACAO,EACAH,EACoC,CACpC,YAAK,QAAQ,iBAAkB,CAAE,SAAAE,EAAU,YAAAN,EAAa,QAAAO,CAAQ,CAAC,EAE1D,KAAK,WACT,IAAI,CACH,KAAM,YAAYD,CAAQ,eAAeN,CAAW,WAAWO,CAAO,UACtE,MAAAR,EACA,MAAAK,CACF,CAAC,EACA,KAAMC,GAAwCA,CAAQ,CAC3D,CAEA,eACEN,EACAO,EACAN,EACAQ,EACAD,EACAE,EAC4D,CAC5D,YAAK,QAAQ,cAAe,CAAE,SAAAH,EAAU,YAAAN,EAAa,YAAAQ,EAAa,QAAAD,CAAQ,CAAC,EAEpE,KAAK,WACT,IAAI,CACH,KAAM,YAAYD,CAAQ,eAAeN,CAAW,eAAeQ,CAAW,UAC9E,MAAAT,EACA,MAAO,CACL,2BAAAU,EACA,QAAAF,CACF,CACF,CAAC,EACA,KAAMF,GAAgEA,CAAQ,CACnF,CAEA,mBACEN,EACAO,EACAN,EACAQ,EACAC,EACuB,CACvB,YAAK,QAAQ,kBAAmB,CAAE,SAAAH,EAAU,YAAAN,EAAa,YAAAQ,CAAY,CAAC,EAE/D,KAAK,WACT,OAAO,CACN,KAAM,YAAYF,CAAQ,eAAeN,CAAW,eAAeQ,CAAW,GAC9E,MAAAT,EACA,MAAO,CACL,2BAAAU,CACF,CACF,CAAC,EACA,KAAMJ,GAA2BA,CAAQ,CAC9C,CAEA,QAAQK,EAAeC,EAAqB,CAC1C,EAAAC,QAAO,KAAK,qBAAqBF,CAAK,GAAG,EACrCC,GAAQ,OAAO,KAAKA,CAAI,EAAE,QAAQ,EAAAC,QAAO,KAAK,KAAK,UAAUD,EAAM,KAAM,CAAC,CAAC,CACjF,CACF,CAGA,IAAOlB,EAAQD",
4
+ "sourcesContent": ["import logger from '../utils/logger'\nimport RestClient from './restClient'\nimport Dict = NodeJS.Dict\nimport { ApiConfig } from './types'\nimport { components } from '../types/api'\nimport { DashboardDataResponse } from '../types/Metrics'\n\nclass DashboardClient {\n restClient: RestClient\n\n constructor(config: ApiConfig) {\n this.restClient = new RestClient('Dashboard API Client', config)\n }\n\n getDefinition(\n token: string,\n dashboardId: string,\n dpdId: string,\n definitionsPath?: string,\n queryData?: Dict<string | string[]> | undefined,\n ): Promise<components['schemas']['DashboardDefinition']> {\n const query = {\n ...queryData,\n dataProductDefinitionsPath: definitionsPath,\n }\n this.logInfo('Get definition:', { dpdId, dashboardId, ...query })\n\n return this.restClient\n .get({\n path: `/definitions/${dpdId}/dashboards/${dashboardId}`,\n query,\n token,\n })\n .then((response) => <components['schemas']['DashboardDefinition']>response)\n }\n\n requestAsyncDashboard(\n token: string,\n reportId: string,\n dashboardId: string,\n query: Record<string, string | boolean | number>,\n ): Promise<Dict<string>> {\n this.logInfo('Request dashboard:', { reportId, dashboardId })\n\n return this.restClient\n .get({\n path: `/async/dashboards/${reportId}/${dashboardId}`,\n token,\n query,\n })\n .then((response) => <Dict<string>>response)\n }\n\n getAsyncDashboard(\n token: string,\n reportId: string,\n dashboardId: string,\n tableId: string,\n query: Record<string, string | string[]>,\n ): Promise<DashboardDataResponse[][]> {\n this.logInfo('Get dashboard:', { reportId, dashboardId, tableId })\n\n return this.restClient\n .get({\n path: `/reports/${reportId}/dashboards/${dashboardId}/tables/${tableId}/result`,\n token,\n query,\n })\n .then((response) => <DashboardDataResponse[][]>response)\n }\n\n getAsyncStatus(\n token: string,\n reportId: string,\n dashboardId: string,\n executionId: string,\n tableId?: string,\n dataProductDefinitionsPath?: string,\n ): Promise<components['schemas']['StatementExecutionStatus']> {\n this.logInfo('Get status:', { reportId, dashboardId, executionId, tableId })\n\n return this.restClient\n .get({\n path: `/reports/${reportId}/dashboards/${dashboardId}/statements/${executionId}/status`,\n token,\n query: {\n dataProductDefinitionsPath,\n tableId,\n },\n })\n .then((response) => <components['schemas']['StatementExecutionStatus']>response)\n }\n\n cancelAsyncRequest(\n token: string,\n reportId: string,\n dashboardId: string,\n executionId: string,\n dataProductDefinitionsPath?: string,\n ): Promise<Dict<string>> {\n this.logInfo('Cancel request:', { reportId, dashboardId, executionId })\n\n return this.restClient\n .delete({\n path: `/reports/${reportId}/dashboards/${dashboardId}/statements/${executionId}`,\n token,\n query: {\n dataProductDefinitionsPath,\n },\n })\n .then((response) => <Dict<string>>response)\n }\n\n getSyncDashboard(\n token: string,\n reportId: string,\n dashboardId: string,\n query: Record<string, string | string[]>,\n ): Promise<DashboardDataResponse[][]> {\n this.logInfo('Get dashboard:', { reportId, dashboardId })\n\n return this.restClient\n .get({\n path: `/reports/${reportId}/dashboards/${dashboardId}`,\n token,\n query,\n })\n .then((response) => <DashboardDataResponse[][]>response)\n }\n\n logInfo(title: string, args?: Dict<string>) {\n logger.info(`Dashboard client: ${title}:`)\n if (args && Object.keys(args).length) logger.info(JSON.stringify(args, null, 2))\n }\n}\n\nexport { DashboardClient }\nexport default DashboardClient\n"],
5
+ "mappings": "0jBAAA,IAAAA,EAAA,GAAAC,EAAAD,EAAA,qBAAAE,EAAA,YAAAC,IAAA,eAAAC,EAAAJ,GAAA,IAAAK,EAAmB,8BACnBC,EAAuB,2BAMvB,MAAMJ,CAAgB,CAGpB,YAAYK,EAAmB,CAC7B,KAAK,WAAa,IAAI,EAAAC,QAAW,uBAAwBD,CAAM,CACjE,CAEA,cACEE,EACAC,EACAC,EACAC,EACAC,EACuD,CACvD,MAAMC,EAAQ,CACZ,GAAGD,EACH,2BAA4BD,CAC9B,EACA,YAAK,QAAQ,kBAAmB,CAAE,MAAAD,EAAO,YAAAD,EAAa,GAAGI,CAAM,CAAC,EAEzD,KAAK,WACT,IAAI,CACH,KAAM,gBAAgBH,CAAK,eAAeD,CAAW,GACrD,MAAAI,EACA,MAAAL,CACF,CAAC,EACA,KAAMM,GAA2DA,CAAQ,CAC9E,CAEA,sBACEN,EACAO,EACAN,EACAI,EACuB,CACvB,YAAK,QAAQ,qBAAsB,CAAE,SAAAE,EAAU,YAAAN,CAAY,CAAC,EAErD,KAAK,WACT,IAAI,CACH,KAAM,qBAAqBM,CAAQ,IAAIN,CAAW,GAClD,MAAAD,EACA,MAAAK,CACF,CAAC,EACA,KAAMC,GAA2BA,CAAQ,CAC9C,CAEA,kBACEN,EACAO,EACAN,EACAO,EACAH,EACoC,CACpC,YAAK,QAAQ,iBAAkB,CAAE,SAAAE,EAAU,YAAAN,EAAa,QAAAO,CAAQ,CAAC,EAE1D,KAAK,WACT,IAAI,CACH,KAAM,YAAYD,CAAQ,eAAeN,CAAW,WAAWO,CAAO,UACtE,MAAAR,EACA,MAAAK,CACF,CAAC,EACA,KAAMC,GAAwCA,CAAQ,CAC3D,CAEA,eACEN,EACAO,EACAN,EACAQ,EACAD,EACAE,EAC4D,CAC5D,YAAK,QAAQ,cAAe,CAAE,SAAAH,EAAU,YAAAN,EAAa,YAAAQ,EAAa,QAAAD,CAAQ,CAAC,EAEpE,KAAK,WACT,IAAI,CACH,KAAM,YAAYD,CAAQ,eAAeN,CAAW,eAAeQ,CAAW,UAC9E,MAAAT,EACA,MAAO,CACL,2BAAAU,EACA,QAAAF,CACF,CACF,CAAC,EACA,KAAMF,GAAgEA,CAAQ,CACnF,CAEA,mBACEN,EACAO,EACAN,EACAQ,EACAC,EACuB,CACvB,YAAK,QAAQ,kBAAmB,CAAE,SAAAH,EAAU,YAAAN,EAAa,YAAAQ,CAAY,CAAC,EAE/D,KAAK,WACT,OAAO,CACN,KAAM,YAAYF,CAAQ,eAAeN,CAAW,eAAeQ,CAAW,GAC9E,MAAAT,EACA,MAAO,CACL,2BAAAU,CACF,CACF,CAAC,EACA,KAAMJ,GAA2BA,CAAQ,CAC9C,CAEA,iBACEN,EACAO,EACAN,EACAI,EACoC,CACpC,YAAK,QAAQ,iBAAkB,CAAE,SAAAE,EAAU,YAAAN,CAAY,CAAC,EAEjD,KAAK,WACT,IAAI,CACH,KAAM,YAAYM,CAAQ,eAAeN,CAAW,GACpD,MAAAD,EACA,MAAAK,CACF,CAAC,EACA,KAAMC,GAAwCA,CAAQ,CAC3D,CAEA,QAAQK,EAAeC,EAAqB,CAC1C,EAAAC,QAAO,KAAK,qBAAqBF,CAAK,GAAG,EACrCC,GAAQ,OAAO,KAAKA,CAAI,EAAE,QAAQ,EAAAC,QAAO,KAAK,KAAK,UAAUD,EAAM,KAAM,CAAC,CAAC,CACjF,CACF,CAGA,IAAOlB,EAAQD",
6
6
  "names": ["dashboardClient_exports", "__export", "DashboardClient", "dashboardClient_default", "__toCommonJS", "import_logger", "import_restClient", "config", "RestClient", "token", "dashboardId", "dpdId", "definitionsPath", "queryData", "query", "response", "reportId", "tableId", "executionId", "dataProductDefinitionsPath", "title", "args", "logger"]
7
7
  }
@@ -111,6 +111,23 @@ class DashboardClient {
111
111
  .then((response) => <Dict<string>>response)
112
112
  }
113
113
 
114
+ getSyncDashboard(
115
+ token: string,
116
+ reportId: string,
117
+ dashboardId: string,
118
+ query: Record<string, string | string[]>,
119
+ ): Promise<DashboardDataResponse[][]> {
120
+ this.logInfo('Get dashboard:', { reportId, dashboardId })
121
+
122
+ return this.restClient
123
+ .get({
124
+ path: `/reports/${reportId}/dashboards/${dashboardId}`,
125
+ token,
126
+ query,
127
+ })
128
+ .then((response) => <DashboardDataResponse[][]>response)
129
+ }
130
+
114
131
  logInfo(title: string, args?: Dict<string>) {
115
132
  logger.info(`Dashboard client: ${title}:`)
116
133
  if (args && Object.keys(args).length) logger.info(JSON.stringify(args, null, 2))
@@ -1,2 +1,2 @@
1
- "use strict";var y=Object.create;var u=Object.defineProperty;var f=Object.getOwnPropertyDescriptor;var R=Object.getOwnPropertyNames;var C=Object.getPrototypeOf,D=Object.prototype.hasOwnProperty;var $=(s,e)=>{for(var t in e)u(s,t,{get:e[t],enumerable:!0})},c=(s,e,t,n)=>{if(e&&typeof e=="object"||typeof e=="function")for(let i of R(e))!D.call(s,i)&&i!==t&&u(s,i,{get:()=>e[i],enumerable:!(n=f(e,i))||n.enumerable});return s};var m=(s,e,t)=>(t=s!=null?y(C(s)):{},c(e||!s||!s.__esModule?u(t,"default",{value:s,enumerable:!0}):t,s)),P=s=>c(u({},"__esModule",{value:!0}),s);var q={};$(q,{ReportingClient:()=>h,default:()=>A});module.exports=P(q);var a=m(require("../utils/logger")),l=m(require("./restClient"));class h{constructor(e){this.restClient=new l.default("Reporting API Client",e)}getCount(e,t,n){return a.default.info(`Reporting client: Get count. { resourceName: ${e} }`),this.restClient.get({path:`/${e}/count`,query:n.toRecordWithFilterPrefix(!0),token:t}).then(i=>i.count)}getList(e,t,n){return this.getListWithWarnings(e,t,n).then(i=>i.data)}getListWithWarnings(e,t,n){return a.default.info(`Reporting client: Get list. { resourceName: ${e} }`),this.restClient.getWithHeaders({path:`/${e}`,query:n.toRecordWithFilterPrefix(!0),token:t}).then(i=>({data:i.data,warnings:{noDataAvailable:i.headers["x-no-data-warning"]}}))}getDefinitionSummary(e,t,n){this.logInfo("Get definition summary",{reportId:t});const i={...n&&{dataProductDefinitionsPath:n}};return this.restClient.get({path:`/definitions/${t}`,query:i,token:e}).then(r=>r)}getDefinitions(e,t){this.logInfo("Get definitions");const n={renderMethod:"HTML",...t&&{dataProductDefinitionsPath:t}};return this.restClient.get({path:"/definitions",query:n,token:e}).then(i=>i)}getDefinition(e,t,n,i,r){const o={...r,dataProductDefinitionsPath:i};return this.logInfo("Get definition",{reportId:t,variantId:n,...o}),this.restClient.get({path:`/definitions/${t}/${n}`,query:o,token:e}).then(g=>g)}getFieldValues({token:e,definitionName:t,variantName:n,fieldName:i,prefix:r,definitionsPath:o}){const g={dataProductDefinitionsPath:o,prefix:r};return this.logInfo("Get field values",{definitionName:t,variantName:n,fieldName:i,prefix:r}),this.restClient.get({path:`/reports/${t}/${n}/${i}`,token:e,query:g}).then(p=>p)}requestAsyncReport(e,t,n,i){return this.logInfo("Request report",{reportId:t,variantId:n}),this.restClient.get({path:`/async/reports/${t}/${n}`,token:e,query:i}).then(r=>r)}cancelAsyncRequest(e,t,n,i,r){return this.logInfo("Cancel Request",{reportId:t,variantId:n,executionId:i}),this.restClient.delete({path:`/reports/${t}/${n}/statements/${i}`,token:e,query:{dataProductDefinitionsPath:r}}).then(o=>o)}getAsyncReport(e,t,n,i,r){return this.logInfo("Get Data",{reportId:t,variantId:n,tableId:i}),this.restClient.get({path:`/reports/${t}/${n}/tables/${i}/result`,token:e,query:r}).then(o=>o)}getAsyncSummaryReport(e,t,n,i,r,o){return this.logInfo("Get summary data",{reportId:t,variantId:n,tableId:i,summaryId:r}),this.restClient.get({path:`/reports/${t}/${n}/tables/${i}/result/summary/${r}`,token:e,query:o}).then(g=>g)}getAsyncReportStatus(e,t,n,i,r,o){return this.logInfo("Get status",{reportId:t,variantId:n,tableId:o,executionId:i}),this.restClient.get({path:`/reports/${t}/${n}/statements/${i}/status`,token:e,query:{dataProductDefinitionsPath:r,tableId:o}}).then(g=>g)}getAsyncCount(e,t,n){return this.logInfo("Get count",{tableId:t}),this.restClient.get({path:`/report/tables/${t}/count`,token:e,query:{dataProductDefinitionsPath:n}}).then(i=>i.count)}getAsyncInteractiveCount(e,t,n,i,r){return this.logInfo("Get interactive count",{tableId:t,reportId:n,id:i}),this.restClient.get({path:`/reports/${n}/${i}/tables/${t}/count`,token:e,query:r.toRecordWithFilterPrefix(!0)}).then(o=>o.count)}logInfo(e,t){a.default.info(`Reporting Client: ${e}:`),t&&Object.keys(t).length&&a.default.info(JSON.stringify(t,null,2))}}var A=h;0&&(module.exports={ReportingClient});
1
+ "use strict";var l=Object.create;var u=Object.defineProperty;var f=Object.getOwnPropertyDescriptor;var y=Object.getOwnPropertyNames;var R=Object.getPrototypeOf,C=Object.prototype.hasOwnProperty;var D=(s,e)=>{for(var t in e)u(s,t,{get:e[t],enumerable:!0})},c=(s,e,t,i)=>{if(e&&typeof e=="object"||typeof e=="function")for(let n of y(e))!C.call(s,n)&&n!==t&&u(s,n,{get:()=>e[n],enumerable:!(i=f(e,n))||i.enumerable});return s};var h=(s,e,t)=>(t=s!=null?l(R(s)):{},c(e||!s||!s.__esModule?u(t,"default",{value:s,enumerable:!0}):t,s)),$=s=>c(u({},"__esModule",{value:!0}),s);var A={};D(A,{ReportingClient:()=>m,default:()=>P});module.exports=$(A);var a=h(require("../utils/logger")),p=h(require("./restClient"));class m{constructor(e){this.restClient=new p.default("Reporting API Client",e)}getCount(e,t,i){return a.default.info(`Reporting client: Get count. { resourceName: ${e} }`),this.restClient.get({path:`/${e}/count`,query:i.toRecordWithFilterPrefix(!0),token:t}).then(n=>n.count)}getList(e,t,i){return this.getListWithWarnings(e,t,i).then(n=>n.data)}getListWithWarnings(e,t,i){return a.default.info(`Reporting client: Get list. { resourceName: ${e} }`),this.restClient.getWithHeaders({path:`/${e}`,query:i.toRecordWithFilterPrefix(!0),token:t}).then(n=>({data:n.data,warnings:{noDataAvailable:n.headers["x-no-data-warning"]}}))}getDefinitionSummary(e,t,i){this.logInfo("Get definition summary",{reportId:t});const n={...i&&{dataProductDefinitionsPath:i}};return this.restClient.get({path:`/definitions/${t}`,query:n,token:e}).then(r=>r)}getDefinitions(e,t){this.logInfo("Get definitions");const i={renderMethod:"HTML",...t&&{dataProductDefinitionsPath:t}};return this.restClient.get({path:"/definitions",query:i,token:e}).then(n=>n)}getDefinition(e,t,i,n,r){const o={...r,dataProductDefinitionsPath:n};return this.logInfo("Get definition",{reportId:t,variantId:i,...o}),this.restClient.get({path:`/definitions/${t}/${i}`,query:o,token:e}).then(g=>g)}requestAsyncReport(e,t,i,n){return this.logInfo("Request report",{reportId:t,variantId:i}),this.restClient.get({path:`/async/reports/${t}/${i}`,token:e,query:n}).then(r=>r)}cancelAsyncRequest(e,t,i,n,r){return this.logInfo("Cancel Request",{reportId:t,variantId:i,executionId:n}),this.restClient.delete({path:`/reports/${t}/${i}/statements/${n}`,token:e,query:{dataProductDefinitionsPath:r}}).then(o=>o)}getAsyncReport(e,t,i,n,r){return this.logInfo("Get Data",{reportId:t,variantId:i,tableId:n}),this.restClient.get({path:`/reports/${t}/${i}/tables/${n}/result`,token:e,query:r}).then(o=>o)}getAsyncSummaryReport(e,t,i,n,r,o){return this.logInfo("Get summary data",{reportId:t,variantId:i,tableId:n,summaryId:r}),this.restClient.get({path:`/reports/${t}/${i}/tables/${n}/result/summary/${r}`,token:e,query:o}).then(g=>g)}getAsyncReportStatus(e,t,i,n,r,o){return this.logInfo("Get status",{reportId:t,variantId:i,tableId:o,executionId:n}),this.restClient.get({path:`/reports/${t}/${i}/statements/${n}/status`,token:e,query:{dataProductDefinitionsPath:r,tableId:o}}).then(g=>g)}getAsyncCount(e,t,i){return this.logInfo("Get count",{tableId:t}),this.restClient.get({path:`/report/tables/${t}/count`,token:e,query:{dataProductDefinitionsPath:i}}).then(n=>n.count)}getAsyncInteractiveCount(e,t,i,n,r){return this.logInfo("Get interactive count",{tableId:t,reportId:i,id:n}),this.restClient.get({path:`/reports/${i}/${n}/tables/${t}/count`,token:e,query:r.toRecordWithFilterPrefix(!0)}).then(o=>o.count)}logInfo(e,t){a.default.info(`Reporting Client: ${e}:`),t&&Object.keys(t).length&&a.default.info(JSON.stringify(t,null,2))}}var P=m;0&&(module.exports={ReportingClient});
2
2
  //# sourceMappingURL=reportingClient.js.map
@@ -1,7 +1,7 @@
1
1
  {
2
2
  "version": 3,
3
3
  "sources": ["../../../src/dpr/data/reportingClient.ts"],
4
- "sourcesContent": ["import ReportQuery from '../types/ReportQuery'\nimport logger from '../utils/logger'\nimport RestClient from './restClient'\nimport Dict = NodeJS.Dict\nimport { components, operations } from '../types/api'\nimport { ApiConfig, Count, FieldValuesRequest, ListWithWarnings } from './types'\nimport type { ResultWithHeaders } from './restClient'\n\nclass ReportingClient {\n restClient: RestClient\n\n constructor(config: ApiConfig) {\n this.restClient = new RestClient('Reporting API Client', config)\n }\n\n getCount(resourceName: string, token: string, countRequest: ReportQuery): Promise<number> {\n logger.info(`Reporting client: Get count. { resourceName: ${resourceName} }`)\n\n return this.restClient\n .get({\n path: `/${resourceName}/count`,\n query: countRequest.toRecordWithFilterPrefix(true),\n token,\n })\n .then((response) => (<Count>response).count)\n }\n\n getList(resourceName: string, token: string, listRequest: ReportQuery): Promise<Array<Dict<string>>> {\n return this.getListWithWarnings(resourceName, token, listRequest).then((response) => response.data)\n }\n\n getListWithWarnings(resourceName: string, token: string, listRequest: ReportQuery): Promise<ListWithWarnings> {\n logger.info(`Reporting client: Get list. { resourceName: ${resourceName} }`)\n\n return this.restClient\n .getWithHeaders<Array<Dict<string>>>({\n path: `/${resourceName}`,\n query: listRequest.toRecordWithFilterPrefix(true),\n token,\n })\n .then((response: ResultWithHeaders<Array<Dict<string>>>) => ({\n data: response.data,\n warnings: {\n noDataAvailable: response.headers['x-no-data-warning'],\n },\n }))\n }\n\n getDefinitionSummary(\n token: string,\n reportId: string,\n definitionsPath?: string,\n ): Promise<components['schemas']['ReportDefinitionSummary']> {\n this.logInfo('Get definition summary', { reportId })\n\n const queryParams: operations['definitionSummary']['parameters']['query'] = {\n ...(definitionsPath && { dataProductDefinitionsPath: definitionsPath }),\n }\n\n return this.restClient\n .get({\n path: `/definitions/${reportId}`,\n query: queryParams,\n token,\n })\n .then((response) => <components['schemas']['ReportDefinitionSummary']>response)\n }\n\n getDefinitions(\n token: string,\n definitionsPath?: string,\n ): Promise<Array<components['schemas']['ReportDefinitionSummary']>> {\n this.logInfo('Get definitions')\n\n const queryParams: operations['definitions_1']['parameters']['query'] = {\n renderMethod: 'HTML',\n ...(definitionsPath && { dataProductDefinitionsPath: definitionsPath }),\n }\n\n return this.restClient\n .get({\n path: '/definitions',\n query: queryParams,\n token,\n })\n .then((response) => <Array<components['schemas']['ReportDefinitionSummary']>>response)\n }\n\n getDefinition(\n token: string,\n reportId: string,\n variantId: string,\n definitionsPath?: string,\n queryData?: Dict<string | string[]>,\n ): Promise<components['schemas']['SingleVariantReportDefinition']> {\n const query = {\n ...queryData,\n dataProductDefinitionsPath: definitionsPath,\n }\n\n this.logInfo('Get definition', { reportId, variantId, ...query })\n\n return this.restClient\n .get({\n path: `/definitions/${reportId}/${variantId}`,\n query,\n token,\n })\n .then((response) => <components['schemas']['SingleVariantReportDefinition']>response)\n }\n\n getFieldValues({\n token,\n definitionName,\n variantName,\n fieldName,\n prefix,\n definitionsPath,\n }: FieldValuesRequest): Promise<Array<string>> {\n const query = {\n dataProductDefinitionsPath: definitionsPath,\n prefix,\n }\n this.logInfo('Get field values', { definitionName, variantName, fieldName, prefix })\n\n return this.restClient\n .get({\n path: `/reports/${definitionName}/${variantName}/${fieldName}`,\n token,\n query,\n })\n .then((response) => <Array<string>>response)\n }\n\n requestAsyncReport(\n token: string,\n reportId: string,\n variantId: string,\n query: Record<string, string | boolean | number>,\n ): Promise<Dict<string>> {\n this.logInfo('Request report', { reportId, variantId })\n\n return this.restClient\n .get({\n path: `/async/reports/${reportId}/${variantId}`,\n token,\n query,\n })\n .then((response) => <Dict<string>>response)\n }\n\n cancelAsyncRequest(\n token: string,\n reportId: string,\n variantId: string,\n executionId: string,\n dataProductDefinitionsPath?: string,\n ): Promise<Dict<string>> {\n this.logInfo('Cancel Request', { reportId, variantId, executionId })\n\n return this.restClient\n .delete({\n path: `/reports/${reportId}/${variantId}/statements/${executionId}`,\n token,\n query: {\n dataProductDefinitionsPath,\n },\n })\n .then((response) => <Dict<string>>response)\n }\n\n getAsyncReport(\n token: string,\n reportId: string,\n variantId: string,\n tableId: string,\n query: Record<string, string | string[]>,\n ): Promise<Array<Dict<string>>> {\n this.logInfo('Get Data', { reportId, variantId, tableId })\n\n return this.restClient\n .get({\n path: `/reports/${reportId}/${variantId}/tables/${tableId}/result`,\n token,\n query,\n })\n .then((response) => <Array<Dict<string>>>response)\n }\n\n getAsyncSummaryReport(\n token: string,\n reportId: string,\n variantId: string,\n tableId: string,\n summaryId: string,\n query: Dict<string | number>,\n ): Promise<Array<Dict<string>>> {\n this.logInfo('Get summary data', { reportId, variantId, tableId, summaryId })\n\n return this.restClient\n .get({\n path: `/reports/${reportId}/${variantId}/tables/${tableId}/result/summary/${summaryId}`,\n token,\n query,\n })\n .then((response) => <Array<Dict<string>>>response)\n }\n\n getAsyncReportStatus(\n token: string,\n reportId: string,\n variantId: string,\n executionId: string,\n dataProductDefinitionsPath?: string,\n tableId?: string,\n ): Promise<components['schemas']['StatementExecutionStatus']> {\n this.logInfo('Get status', { reportId, variantId, tableId, executionId })\n\n return this.restClient\n .get({\n path: `/reports/${reportId}/${variantId}/statements/${executionId}/status`,\n token,\n query: {\n dataProductDefinitionsPath,\n tableId,\n },\n })\n .then((response) => <components['schemas']['StatementExecutionStatus']>response)\n }\n\n getAsyncCount(token: string, tableId: string, dataProductDefinitionsPath?: string): Promise<number> {\n this.logInfo('Get count', { tableId })\n\n return this.restClient\n .get({\n path: `/report/tables/${tableId}/count`,\n token,\n query: {\n dataProductDefinitionsPath,\n },\n })\n .then((response) => (<Count>response).count)\n }\n\n getAsyncInteractiveCount(\n token: string,\n tableId: string,\n reportId: string,\n id: string,\n filters: ReportQuery,\n ): Promise<number> {\n this.logInfo('Get interactive count', { tableId, reportId, id })\n\n return this.restClient\n .get({\n path: `/reports/${reportId}/${id}/tables/${tableId}/count`,\n token,\n query: filters.toRecordWithFilterPrefix(true),\n })\n .then((response) => (<Count>response).count)\n }\n\n logInfo(title: string, args?: Dict<string>) {\n logger.info(`Reporting Client: ${title}:`)\n if (args && Object.keys(args).length) logger.info(JSON.stringify(args, null, 2))\n }\n}\n\nexport { ReportingClient }\nexport default ReportingClient\n"],
5
- "mappings": "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",
6
- "names": ["reportingClient_exports", "__export", "ReportingClient", "reportingClient_default", "__toCommonJS", "import_logger", "import_restClient", "config", "RestClient", "resourceName", "token", "countRequest", "logger", "response", "listRequest", "reportId", "definitionsPath", "queryParams", "variantId", "queryData", "query", "definitionName", "variantName", "fieldName", "prefix", "executionId", "dataProductDefinitionsPath", "tableId", "summaryId", "id", "filters", "title", "args"]
4
+ "sourcesContent": ["import ReportQuery from '../types/ReportQuery'\nimport logger from '../utils/logger'\nimport RestClient from './restClient'\nimport Dict = NodeJS.Dict\nimport { components, operations } from '../types/api'\nimport { ApiConfig, Count, ListWithWarnings } from './types'\nimport type { ResultWithHeaders } from './restClient'\n\nclass ReportingClient {\n restClient: RestClient\n\n constructor(config: ApiConfig) {\n this.restClient = new RestClient('Reporting API Client', config)\n }\n\n getCount(resourceName: string, token: string, countRequest: ReportQuery): Promise<number> {\n logger.info(`Reporting client: Get count. { resourceName: ${resourceName} }`)\n\n return this.restClient\n .get({\n path: `/${resourceName}/count`,\n query: countRequest.toRecordWithFilterPrefix(true),\n token,\n })\n .then((response) => (<Count>response).count)\n }\n\n getList(resourceName: string, token: string, listRequest: ReportQuery): Promise<Array<Dict<string>>> {\n return this.getListWithWarnings(resourceName, token, listRequest).then((response) => response.data)\n }\n\n getListWithWarnings(resourceName: string, token: string, listRequest: ReportQuery): Promise<ListWithWarnings> {\n logger.info(`Reporting client: Get list. { resourceName: ${resourceName} }`)\n\n return this.restClient\n .getWithHeaders<Array<Dict<string>>>({\n path: `/${resourceName}`,\n query: listRequest.toRecordWithFilterPrefix(true),\n token,\n })\n .then((response: ResultWithHeaders<Array<Dict<string>>>) => ({\n data: response.data,\n warnings: {\n noDataAvailable: response.headers['x-no-data-warning'],\n },\n }))\n }\n\n getDefinitionSummary(\n token: string,\n reportId: string,\n definitionsPath?: string,\n ): Promise<components['schemas']['ReportDefinitionSummary']> {\n this.logInfo('Get definition summary', { reportId })\n\n const queryParams: operations['definitionSummary']['parameters']['query'] = {\n ...(definitionsPath && { dataProductDefinitionsPath: definitionsPath }),\n }\n\n return this.restClient\n .get({\n path: `/definitions/${reportId}`,\n query: queryParams,\n token,\n })\n .then((response) => <components['schemas']['ReportDefinitionSummary']>response)\n }\n\n getDefinitions(\n token: string,\n definitionsPath?: string,\n ): Promise<Array<components['schemas']['ReportDefinitionSummary']>> {\n this.logInfo('Get definitions')\n\n const queryParams: operations['definitions_1']['parameters']['query'] = {\n renderMethod: 'HTML',\n ...(definitionsPath && { dataProductDefinitionsPath: definitionsPath }),\n }\n\n return this.restClient\n .get({\n path: '/definitions',\n query: queryParams,\n token,\n })\n .then((response) => <Array<components['schemas']['ReportDefinitionSummary']>>response)\n }\n\n getDefinition(\n token: string,\n reportId: string,\n variantId: string,\n definitionsPath?: string,\n queryData?: Dict<string | string[]>,\n ): Promise<components['schemas']['SingleVariantReportDefinition']> {\n const query = {\n ...queryData,\n dataProductDefinitionsPath: definitionsPath,\n }\n\n this.logInfo('Get definition', { reportId, variantId, ...query })\n\n return this.restClient\n .get({\n path: `/definitions/${reportId}/${variantId}`,\n query,\n token,\n })\n .then((response) => <components['schemas']['SingleVariantReportDefinition']>response)\n }\n\n requestAsyncReport(\n token: string,\n reportId: string,\n variantId: string,\n query: Record<string, string | boolean | number>,\n ): Promise<Dict<string>> {\n this.logInfo('Request report', { reportId, variantId })\n\n return this.restClient\n .get({\n path: `/async/reports/${reportId}/${variantId}`,\n token,\n query,\n })\n .then((response) => <Dict<string>>response)\n }\n\n cancelAsyncRequest(\n token: string,\n reportId: string,\n variantId: string,\n executionId: string,\n dataProductDefinitionsPath?: string,\n ): Promise<Dict<string>> {\n this.logInfo('Cancel Request', { reportId, variantId, executionId })\n\n return this.restClient\n .delete({\n path: `/reports/${reportId}/${variantId}/statements/${executionId}`,\n token,\n query: {\n dataProductDefinitionsPath,\n },\n })\n .then((response) => <Dict<string>>response)\n }\n\n getAsyncReport(\n token: string,\n reportId: string,\n variantId: string,\n tableId: string,\n query: Record<string, string | string[]>,\n ): Promise<Array<Dict<string>>> {\n this.logInfo('Get Data', { reportId, variantId, tableId })\n\n return this.restClient\n .get({\n path: `/reports/${reportId}/${variantId}/tables/${tableId}/result`,\n token,\n query,\n })\n .then((response) => <Array<Dict<string>>>response)\n }\n\n getAsyncSummaryReport(\n token: string,\n reportId: string,\n variantId: string,\n tableId: string,\n summaryId: string,\n query: Dict<string | number>,\n ): Promise<Array<Dict<string>>> {\n this.logInfo('Get summary data', { reportId, variantId, tableId, summaryId })\n\n return this.restClient\n .get({\n path: `/reports/${reportId}/${variantId}/tables/${tableId}/result/summary/${summaryId}`,\n token,\n query,\n })\n .then((response) => <Array<Dict<string>>>response)\n }\n\n getAsyncReportStatus(\n token: string,\n reportId: string,\n variantId: string,\n executionId: string,\n dataProductDefinitionsPath?: string,\n tableId?: string,\n ): Promise<components['schemas']['StatementExecutionStatus']> {\n this.logInfo('Get status', { reportId, variantId, tableId, executionId })\n\n return this.restClient\n .get({\n path: `/reports/${reportId}/${variantId}/statements/${executionId}/status`,\n token,\n query: {\n dataProductDefinitionsPath,\n tableId,\n },\n })\n .then((response) => <components['schemas']['StatementExecutionStatus']>response)\n }\n\n getAsyncCount(token: string, tableId: string, dataProductDefinitionsPath?: string): Promise<number> {\n this.logInfo('Get count', { tableId })\n\n return this.restClient\n .get({\n path: `/report/tables/${tableId}/count`,\n token,\n query: {\n dataProductDefinitionsPath,\n },\n })\n .then((response) => (<Count>response).count)\n }\n\n getAsyncInteractiveCount(\n token: string,\n tableId: string,\n reportId: string,\n id: string,\n filters: ReportQuery,\n ): Promise<number> {\n this.logInfo('Get interactive count', { tableId, reportId, id })\n\n return this.restClient\n .get({\n path: `/reports/${reportId}/${id}/tables/${tableId}/count`,\n token,\n query: filters.toRecordWithFilterPrefix(true),\n })\n .then((response) => (<Count>response).count)\n }\n\n logInfo(title: string, args?: Dict<string>) {\n logger.info(`Reporting Client: ${title}:`)\n if (args && Object.keys(args).length) logger.info(JSON.stringify(args, null, 2))\n }\n}\n\nexport { ReportingClient }\nexport default ReportingClient\n"],
5
+ "mappings": "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",
6
+ "names": ["reportingClient_exports", "__export", "ReportingClient", "reportingClient_default", "__toCommonJS", "import_logger", "import_restClient", "config", "RestClient", "resourceName", "token", "countRequest", "logger", "response", "listRequest", "reportId", "definitionsPath", "queryParams", "variantId", "queryData", "query", "executionId", "dataProductDefinitionsPath", "tableId", "summaryId", "id", "filters", "title", "args"]
7
7
  }
@@ -3,7 +3,7 @@ import logger from '../utils/logger'
3
3
  import RestClient from './restClient'
4
4
  import Dict = NodeJS.Dict
5
5
  import { components, operations } from '../types/api'
6
- import { ApiConfig, Count, FieldValuesRequest, ListWithWarnings } from './types'
6
+ import { ApiConfig, Count, ListWithWarnings } from './types'
7
7
  import type { ResultWithHeaders } from './restClient'
8
8
 
9
9
  class ReportingClient {
@@ -109,29 +109,6 @@ class ReportingClient {
109
109
  .then((response) => <components['schemas']['SingleVariantReportDefinition']>response)
110
110
  }
111
111
 
112
- getFieldValues({
113
- token,
114
- definitionName,
115
- variantName,
116
- fieldName,
117
- prefix,
118
- definitionsPath,
119
- }: FieldValuesRequest): Promise<Array<string>> {
120
- const query = {
121
- dataProductDefinitionsPath: definitionsPath,
122
- prefix,
123
- }
124
- this.logInfo('Get field values', { definitionName, variantName, fieldName, prefix })
125
-
126
- return this.restClient
127
- .get({
128
- path: `/reports/${definitionName}/${variantName}/${fieldName}`,
129
- token,
130
- query,
131
- })
132
- .then((response) => <Array<string>>response)
133
- }
134
-
135
112
  requestAsyncReport(
136
113
  token: string,
137
114
  reportId: string,
@@ -1,2 +1,2 @@
1
- "use strict";var y=Object.create;var s=Object.defineProperty;var C=Object.getOwnPropertyDescriptor;var q=Object.getOwnPropertyNames;var w=Object.getPrototypeOf,E=Object.prototype.hasOwnProperty;var V=(t,e)=>{for(var o in e)s(t,o,{get:e[o],enumerable:!0})},R=(t,e,o,r)=>{if(e&&typeof e=="object"||typeof e=="function")for(let i of q(e))!E.call(t,i)&&i!==o&&s(t,i,{get:()=>e[i],enumerable:!(r=C(e,i))||r.enumerable});return t};var S=(t,e,o)=>(o=t!=null?y(w(t)):{},R(e||!t||!t.__esModule?s(o,"default",{value:t,enumerable:!0}):o,t)),v=t=>R(s({},"__esModule",{value:!0}),t);var B={};V(B,{default:()=>A,populateDefinitions:()=>D,populateRequestedReports:()=>b,setupResources:()=>h});module.exports=v(B);var c=S(require("../utils/definitionUtils")),m=S(require("../utils/localsHelper"));const Q=(t,e)=>t[e]?t[e].toString():null,F=t=>Q(t,"dataProductDefinitionsPath"),I=t=>{const e=F(t);return e||null},h=(t,e)=>async(o,r,i)=>{x(o,r);try{return await D(t,o,r,e),await b(t,r),i()}catch(a){return i(a)}},x=(t,e)=>{const o=t.flash("DPR_ERRORS");o&&o[0]&&(e.locals.validationErrors=JSON.parse(o[0]))},D=async(t,e,o,r)=>{const{token:i,dprUser:a}=m.default.getValues(o),d=I(e.query),n=e.body?.dataProductDefinitionsPath,l=d||n;l&&(o.locals.dpdPathFromQuery=!0);const P=r?.dataProductDefinitionsPath;P&&(o.locals.dpdPathFromConfig=!0),o.locals.definitionsPath=l||P,o.locals.pathSuffix=`?dataProductDefinitionsPath=${o.locals.definitionsPath}`;let u;i&&(u=await t.productCollectionStoreService.getSelectedProductCollectionId(a.id)),o.locals.definitions=await Promise.all([t.reportingService.getDefinitions(i,o.locals.definitionsPath),u&&t.productCollectionService.getProductCollection(i,u)]).then(([g,p])=>{if(p&&p){const k=p.products.map(f=>f.productId);return g.filter(f=>k.includes(f.id))}return g})??[]},b=async(t,e)=>{const{dprUser:o}=m.default.getValues(e);if(o.id){const{definitions:r,definitionsPath:i}=e.locals,a=await t.requestedReportService.getAllReports(o.id);e.locals.requestedReports=i?a.filter(n=>c.default.getCurrentVariantDefinition(r,n.reportId,n.id)):a;const d=await t.recentlyViewedService.getAllReports(o.id);if(e.locals.recentlyViewedReports=i?d.filter(n=>c.default.getCurrentVariantDefinition(r,n.reportId,n.id)):d,e.locals.downloadingEnabled=t.downloadPermissionService.enabled,e.locals.bookmarkingEnabled=t.bookmarkService.enabled,e.locals.collectionsEnabled=t.productCollectionService.enabled,e.locals.requestMissingEnabled=t.missingReportService.enabled,e.locals.saveDefaultsEnabled=t.defaultFilterValuesService.enabled,e.locals.bookmarkingEnabled){const n=await t.bookmarkService.getAllBookmarks(o.id);e.locals.bookmarks=i?n.filter(l=>c.default.getCurrentVariantDefinition(r,l.reportId,l.id)):n}}};var A=h;0&&(module.exports={populateDefinitions,populateRequestedReports,setupResources});
1
+ "use strict";var y=Object.create;var d=Object.defineProperty;var E=Object.getOwnPropertyDescriptor;var w=Object.getOwnPropertyNames;var C=Object.getPrototypeOf,v=Object.prototype.hasOwnProperty;var F=(t,e)=>{for(var o in e)d(t,o,{get:e[o],enumerable:!0})},P=(t,e,o,i)=>{if(e&&typeof e=="object"||typeof e=="function")for(let r of w(e))!v.call(t,r)&&r!==o&&d(t,r,{get:()=>e[r],enumerable:!(i=E(e,r))||i.enumerable});return t};var S=(t,e,o)=>(o=t!=null?y(C(t)):{},P(e||!t||!t.__esModule?d(o,"default",{value:t,enumerable:!0}):o,t)),V=t=>P(d({},"__esModule",{value:!0}),t);var B={};F(B,{default:()=>A,errorRequestHandler:()=>h,populateDefinitions:()=>b,populateRequestedReports:()=>k,setupResources:()=>D});module.exports=V(B);var c=S(require("../utils/definitionUtils")),m=S(require("../utils/localsHelper"));const H=(t,e)=>t[e]?t[e].toString():null,Q=t=>H(t,"dataProductDefinitionsPath"),x=t=>{const e=Q(t);return e||null},h=t=>(e,o,i,r)=>e.status===401||e.status===403?i.render("dpr/routes/authError.njk",{layoutPath:t,message:"Sorry, there is a problem with authenticating your request"}):e.status>=400?i.render("dpr/routes/serviceProblem.njk",{layoutPath:t}):r(),D=(t,e,o)=>async(i,r,a)=>{I(i,r);try{return await b(t,i,r,o),await k(t,r),a()}catch(s){return h(e)(s,i,r,a)}},I=(t,e)=>{const o=t.flash("DPR_ERRORS");o&&o[0]&&(e.locals.validationErrors=JSON.parse(o[0]))},b=async(t,e,o,i)=>{const{token:r,dprUser:a}=m.default.getValues(o),s=x(e.query),n=e.body?.dataProductDefinitionsPath,l=s||n;l&&(o.locals.dpdPathFromQuery=!0);const g=i?.dataProductDefinitionsPath;g&&(o.locals.dpdPathFromConfig=!0),o.locals.definitionsPath=l||g,o.locals.pathSuffix=`?dataProductDefinitionsPath=${o.locals.definitionsPath}`;let u;r&&(u=await t.productCollectionStoreService.getSelectedProductCollectionId(a.id)),o.locals.definitions=await Promise.all([t.reportingService.getDefinitions(r,o.locals.definitionsPath),u&&t.productCollectionService.getProductCollection(r,u)]).then(([R,p])=>{if(p&&p){const q=p.products.map(f=>f.productId);return R.filter(f=>q.includes(f.id))}return R})??[]},k=async(t,e)=>{const{dprUser:o}=m.default.getValues(e);if(o.id){const{definitions:i,definitionsPath:r}=e.locals,a=await t.requestedReportService.getAllReports(o.id);e.locals.requestedReports=r?a.filter(n=>c.default.getCurrentVariantDefinition(i,n.reportId,n.id)):a;const s=await t.recentlyViewedService.getAllReports(o.id);if(e.locals.recentlyViewedReports=r?s.filter(n=>c.default.getCurrentVariantDefinition(i,n.reportId,n.id)):s,e.locals.downloadingEnabled=t.downloadPermissionService.enabled,e.locals.bookmarkingEnabled=t.bookmarkService.enabled,e.locals.collectionsEnabled=t.productCollectionService.enabled,e.locals.requestMissingEnabled=t.missingReportService.enabled,e.locals.saveDefaultsEnabled=t.defaultFilterValuesService.enabled,e.locals.bookmarkingEnabled){const n=await t.bookmarkService.getAllBookmarks(o.id);e.locals.bookmarks=r?n.filter(l=>c.default.getCurrentVariantDefinition(i,l.reportId,l.id)):n}}};var A=D;0&&(module.exports={errorRequestHandler,populateDefinitions,populateRequestedReports,setupResources});
2
2
  //# sourceMappingURL=setUpDprResources.js.map
@@ -1,7 +1,7 @@
1
1
  {
2
2
  "version": 3,
3
3
  "sources": ["../../../src/dpr/middleware/setUpDprResources.ts"],
4
- "sourcesContent": ["/* eslint-disable @typescript-eslint/no-explicit-any */\nimport { RequestHandler, Response, Request } from 'express'\nimport type { ParsedQs } from 'qs'\nimport { Services } from '../types/Services'\nimport { RequestedReport, StoredReportData } from '../types/UserReports'\nimport DefinitionUtils from '../utils/definitionUtils'\nimport { BookmarkStoreData } from '../types/Bookmark'\nimport { DprConfig } from '../types/DprConfig'\nimport localsHelper from '../utils/localsHelper'\n\nconst getQueryParamAsString = (query: ParsedQs, name: string) => (query[name] ? query[name].toString() : null)\nconst getDefinitionsPath = (query: ParsedQs) => getQueryParamAsString(query, 'dataProductDefinitionsPath')\n\nconst deriveDefinitionsPath = (query: ParsedQs): string | null => {\n const definitionsPath = getDefinitionsPath(query)\n if (definitionsPath) {\n return definitionsPath\n }\n\n return null\n}\n\nexport const setupResources = (services: Services, config?: DprConfig): RequestHandler => {\n return async (req, res, next) => {\n populateValidationErrors(req, res)\n try {\n await populateDefinitions(services, req, res, config)\n await populateRequestedReports(services, res)\n return next()\n } catch (error) {\n return next(error)\n }\n }\n}\n\nconst populateValidationErrors = (req: Request, res: Response) => {\n const errors = req.flash(`DPR_ERRORS`)\n if (errors && errors[0]) {\n res.locals['validationErrors'] = JSON.parse(errors[0])\n }\n}\n\nexport const populateDefinitions = async (services: Services, req: Request, res: Response, config?: DprConfig) => {\n // Get the DPD path from the query\n const { token, dprUser } = localsHelper.getValues(res)\n\n const dpdPathFromQuery = deriveDefinitionsPath(req.query)\n const dpdPathFromBody = req.body?.dataProductDefinitionsPath\n const definitionsPathFromQuery = dpdPathFromQuery || dpdPathFromBody\n\n if (definitionsPathFromQuery) {\n res.locals['dpdPathFromQuery'] = true\n }\n\n // Get the DPD path from the config\n const dpdPathFromConfig = config?.dataProductDefinitionsPath\n if (dpdPathFromConfig) {\n res.locals['dpdPathFromConfig'] = true\n }\n\n // query takes presedence over config\n res.locals['definitionsPath'] = definitionsPathFromQuery || dpdPathFromConfig\n res.locals['pathSuffix'] = `?dataProductDefinitionsPath=${res.locals['definitionsPath']}`\n\n let selectedProductCollectionId: string | undefined\n if (token) {\n selectedProductCollectionId = await services.productCollectionStoreService.getSelectedProductCollectionId(\n dprUser.id,\n )\n }\n\n res.locals['definitions'] =\n (await Promise.all([\n services.reportingService.getDefinitions(token, res.locals['definitionsPath']),\n selectedProductCollectionId &&\n services.productCollectionService.getProductCollection(token, selectedProductCollectionId),\n ]).then(([defs, selectedProductCollection]) => {\n if (selectedProductCollection && selectedProductCollection) {\n const productIds = selectedProductCollection.products.map((product) => product.productId)\n return defs.filter((def) => productIds.includes(def.id))\n }\n return defs\n })) ?? []\n}\n\nexport const populateRequestedReports = async (services: Services, res: Response) => {\n const { dprUser } = localsHelper.getValues(res)\n if (dprUser.id) {\n const { definitions, definitionsPath } = res.locals\n\n const requested = await services.requestedReportService.getAllReports(dprUser.id)\n res.locals['requestedReports'] = !definitionsPath\n ? requested\n : requested.filter((report: RequestedReport) => {\n return DefinitionUtils.getCurrentVariantDefinition(definitions, report.reportId, report.id)\n })\n\n const recent = await services.recentlyViewedService.getAllReports(dprUser.id)\n res.locals['recentlyViewedReports'] = !definitionsPath\n ? recent\n : recent.filter((report: StoredReportData) => {\n return DefinitionUtils.getCurrentVariantDefinition(definitions, report.reportId, report.id)\n })\n\n res.locals['downloadingEnabled'] = services.downloadPermissionService.enabled\n res.locals['bookmarkingEnabled'] = services.bookmarkService.enabled\n res.locals['collectionsEnabled'] = services.productCollectionService.enabled\n res.locals['requestMissingEnabled'] = services.missingReportService.enabled\n res.locals['saveDefaultsEnabled'] = services.defaultFilterValuesService.enabled\n\n if (res.locals['bookmarkingEnabled']) {\n const bookmarks = await services.bookmarkService.getAllBookmarks(dprUser.id)\n res.locals['bookmarks'] = !definitionsPath\n ? bookmarks\n : bookmarks.filter((bookmark: BookmarkStoreData) => {\n return DefinitionUtils.getCurrentVariantDefinition(definitions, bookmark.reportId, bookmark.id)\n })\n }\n }\n}\n\nexport default setupResources\n"],
5
- "mappings": "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",
6
- "names": ["setUpDprResources_exports", "__export", "setUpDprResources_default", "populateDefinitions", "populateRequestedReports", "setupResources", "__toCommonJS", "import_definitionUtils", "import_localsHelper", "getQueryParamAsString", "query", "name", "getDefinitionsPath", "deriveDefinitionsPath", "definitionsPath", "services", "config", "req", "res", "next", "populateValidationErrors", "error", "errors", "token", "dprUser", "localsHelper", "dpdPathFromQuery", "dpdPathFromBody", "definitionsPathFromQuery", "dpdPathFromConfig", "selectedProductCollectionId", "defs", "selectedProductCollection", "productIds", "product", "def", "definitions", "requested", "report", "DefinitionUtils", "recent", "bookmarks", "bookmark"]
4
+ "sourcesContent": ["/* eslint-disable @typescript-eslint/no-explicit-any */\nimport { RequestHandler, Response, Request, ErrorRequestHandler, NextFunction } from 'express'\nimport type { ParsedQs } from 'qs'\nimport { HTTPError } from 'superagent'\nimport { Services } from '../types/Services'\nimport { RequestedReport, StoredReportData } from '../types/UserReports'\nimport DefinitionUtils from '../utils/definitionUtils'\nimport { BookmarkStoreData } from '../types/Bookmark'\nimport { DprConfig } from '../types/DprConfig'\nimport localsHelper from '../utils/localsHelper'\n\nconst getQueryParamAsString = (query: ParsedQs, name: string) => (query[name] ? query[name].toString() : null)\nconst getDefinitionsPath = (query: ParsedQs) => getQueryParamAsString(query, 'dataProductDefinitionsPath')\n\nconst deriveDefinitionsPath = (query: ParsedQs): string | null => {\n const definitionsPath = getDefinitionsPath(query)\n if (definitionsPath) {\n return definitionsPath\n }\n\n return null\n}\n\nexport const errorRequestHandler =\n (layoutPath: string): ErrorRequestHandler =>\n (error: HTTPError, _req: Request, res: Response, next: NextFunction) => {\n if (error.status === 401 || error.status === 403) {\n return res.render('dpr/routes/authError.njk', {\n layoutPath,\n message: 'Sorry, there is a problem with authenticating your request',\n })\n }\n if (error.status >= 400) {\n return res.render('dpr/routes/serviceProblem.njk', {\n layoutPath,\n })\n }\n return next()\n }\n\nexport const setupResources = (services: Services, layoutPath: string, config?: DprConfig): RequestHandler => {\n return async (req, res, next) => {\n populateValidationErrors(req, res)\n try {\n await populateDefinitions(services, req, res, config)\n await populateRequestedReports(services, res)\n return next()\n } catch (error) {\n return errorRequestHandler(layoutPath)(error, req, res, next)\n }\n }\n}\n\nconst populateValidationErrors = (req: Request, res: Response) => {\n const errors = req.flash(`DPR_ERRORS`)\n if (errors && errors[0]) {\n res.locals['validationErrors'] = JSON.parse(errors[0])\n }\n}\n\nexport const populateDefinitions = async (services: Services, req: Request, res: Response, config?: DprConfig) => {\n // Get the DPD path from the query\n const { token, dprUser } = localsHelper.getValues(res)\n\n const dpdPathFromQuery = deriveDefinitionsPath(req.query)\n const dpdPathFromBody = req.body?.dataProductDefinitionsPath\n const definitionsPathFromQuery = dpdPathFromQuery || dpdPathFromBody\n\n if (definitionsPathFromQuery) {\n res.locals['dpdPathFromQuery'] = true\n }\n\n // Get the DPD path from the config\n const dpdPathFromConfig = config?.dataProductDefinitionsPath\n if (dpdPathFromConfig) {\n res.locals['dpdPathFromConfig'] = true\n }\n\n // query takes presedence over config\n res.locals['definitionsPath'] = definitionsPathFromQuery || dpdPathFromConfig\n res.locals['pathSuffix'] = `?dataProductDefinitionsPath=${res.locals['definitionsPath']}`\n\n let selectedProductCollectionId: string | undefined\n if (token) {\n selectedProductCollectionId = await services.productCollectionStoreService.getSelectedProductCollectionId(\n dprUser.id,\n )\n }\n\n res.locals['definitions'] =\n (await Promise.all([\n services.reportingService.getDefinitions(token, res.locals['definitionsPath']),\n selectedProductCollectionId &&\n services.productCollectionService.getProductCollection(token, selectedProductCollectionId),\n ]).then(([defs, selectedProductCollection]) => {\n if (selectedProductCollection && selectedProductCollection) {\n const productIds = selectedProductCollection.products.map((product) => product.productId)\n return defs.filter((def) => productIds.includes(def.id))\n }\n return defs\n })) ?? []\n}\n\nexport const populateRequestedReports = async (services: Services, res: Response) => {\n const { dprUser } = localsHelper.getValues(res)\n if (dprUser.id) {\n const { definitions, definitionsPath } = res.locals\n\n const requested = await services.requestedReportService.getAllReports(dprUser.id)\n res.locals['requestedReports'] = !definitionsPath\n ? requested\n : requested.filter((report: RequestedReport) => {\n return DefinitionUtils.getCurrentVariantDefinition(definitions, report.reportId, report.id)\n })\n\n const recent = await services.recentlyViewedService.getAllReports(dprUser.id)\n res.locals['recentlyViewedReports'] = !definitionsPath\n ? recent\n : recent.filter((report: StoredReportData) => {\n return DefinitionUtils.getCurrentVariantDefinition(definitions, report.reportId, report.id)\n })\n\n res.locals['downloadingEnabled'] = services.downloadPermissionService.enabled\n res.locals['bookmarkingEnabled'] = services.bookmarkService.enabled\n res.locals['collectionsEnabled'] = services.productCollectionService.enabled\n res.locals['requestMissingEnabled'] = services.missingReportService.enabled\n res.locals['saveDefaultsEnabled'] = services.defaultFilterValuesService.enabled\n\n if (res.locals['bookmarkingEnabled']) {\n const bookmarks = await services.bookmarkService.getAllBookmarks(dprUser.id)\n res.locals['bookmarks'] = !definitionsPath\n ? bookmarks\n : bookmarks.filter((bookmark: BookmarkStoreData) => {\n return DefinitionUtils.getCurrentVariantDefinition(definitions, bookmark.reportId, bookmark.id)\n })\n }\n }\n}\n\nexport default setupResources\n"],
5
+ "mappings": "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",
6
+ "names": ["setUpDprResources_exports", "__export", "setUpDprResources_default", "errorRequestHandler", "populateDefinitions", "populateRequestedReports", "setupResources", "__toCommonJS", "import_definitionUtils", "import_localsHelper", "getQueryParamAsString", "query", "name", "getDefinitionsPath", "deriveDefinitionsPath", "definitionsPath", "layoutPath", "error", "_req", "res", "next", "services", "config", "req", "populateValidationErrors", "errors", "token", "dprUser", "localsHelper", "dpdPathFromQuery", "dpdPathFromBody", "definitionsPathFromQuery", "dpdPathFromConfig", "selectedProductCollectionId", "defs", "selectedProductCollection", "productIds", "product", "def", "definitions", "requested", "report", "DefinitionUtils", "recent", "bookmarks", "bookmark"]
7
7
  }
@@ -1,6 +1,7 @@
1
1
  /* eslint-disable @typescript-eslint/no-explicit-any */
2
- import { RequestHandler, Response, Request } from 'express'
2
+ import { RequestHandler, Response, Request, ErrorRequestHandler, NextFunction } from 'express'
3
3
  import type { ParsedQs } from 'qs'
4
+ import { HTTPError } from 'superagent'
4
5
  import { Services } from '../types/Services'
5
6
  import { RequestedReport, StoredReportData } from '../types/UserReports'
6
7
  import DefinitionUtils from '../utils/definitionUtils'
@@ -20,7 +21,24 @@ const deriveDefinitionsPath = (query: ParsedQs): string | null => {
20
21
  return null
21
22
  }
22
23
 
23
- export const setupResources = (services: Services, config?: DprConfig): RequestHandler => {
24
+ export const errorRequestHandler =
25
+ (layoutPath: string): ErrorRequestHandler =>
26
+ (error: HTTPError, _req: Request, res: Response, next: NextFunction) => {
27
+ if (error.status === 401 || error.status === 403) {
28
+ return res.render('dpr/routes/authError.njk', {
29
+ layoutPath,
30
+ message: 'Sorry, there is a problem with authenticating your request',
31
+ })
32
+ }
33
+ if (error.status >= 400) {
34
+ return res.render('dpr/routes/serviceProblem.njk', {
35
+ layoutPath,
36
+ })
37
+ }
38
+ return next()
39
+ }
40
+
41
+ export const setupResources = (services: Services, layoutPath: string, config?: DprConfig): RequestHandler => {
24
42
  return async (req, res, next) => {
25
43
  populateValidationErrors(req, res)
26
44
  try {
@@ -28,7 +46,7 @@ export const setupResources = (services: Services, config?: DprConfig): RequestH
28
46
  await populateRequestedReports(services, res)
29
47
  return next()
30
48
  } catch (error) {
31
- return next(error)
49
+ return errorRequestHandler(layoutPath)(error, req, res, next)
32
50
  }
33
51
  }
34
52
  }
@@ -0,0 +1,10 @@
1
+ {% extends layoutPath %}
2
+
3
+ {% block content %}
4
+ <h1 class="govuk-heading-xl">Sorry, there is a problem with authenticating your request.</h1>
5
+ <p>The problem has been reported to the service team.</p>
6
+ <p>Try again later.</p>
7
+ <h2 class="govuk-heading-m">Get help</h2>
8
+ <p>Contact the helpdesk on 0800 917 5148 or #6598 from inside an establishment.</p>
9
+ <p><a class="govuk-link--no-visited-state" href="{{ digitalPrisonServicesUrl }}">Go to digital services home page</a></p>
10
+ {% endblock %}
@@ -1,2 +1,2 @@
1
- "use strict";var c=Object.create;var i=Object.defineProperty;var g=Object.getOwnPropertyDescriptor;var l=Object.getOwnPropertyNames;var v=Object.getPrototypeOf,y=Object.prototype.hasOwnProperty;var R=(e,r)=>{for(var t in r)i(e,t,{get:r[t],enumerable:!0})},m=(e,r,t,u)=>{if(r&&typeof r=="object"||typeof r=="function")for(let o of l(r))!y.call(e,o)&&o!==t&&i(e,o,{get:()=>r[o],enumerable:!(u=g(r,o))||u.enumerable});return e};var s=(e,r,t)=>(t=e!=null?c(v(e)):{},m(r||!e||!e.__esModule?i(t,"default",{value:e,enumerable:!0}):t,e)),P=e=>m(i({},"__esModule",{value:!0}),e);var h={};R(h,{default:()=>d});module.exports=P(h);var n=require("express"),p=s(require("../utils/logger")),f=s(require("./journeys/routes")),a=s(require("../middleware/setUpNestedRoute"));function S(e){p.default.info("Initialiasing DPR routes...");const r=(0,n.Router)({mergeParams:!0});return r.use("/",(0,a.default)(),(0,f.default)(e)),r}var d=S;
1
+ "use strict";var l=Object.create;var i=Object.defineProperty;var g=Object.getOwnPropertyDescriptor;var y=Object.getOwnPropertyNames;var R=Object.getPrototypeOf,v=Object.prototype.hasOwnProperty;var d=(e,r)=>{for(var t in r)i(e,t,{get:r[t],enumerable:!0})},m=(e,r,t,u)=>{if(r&&typeof r=="object"||typeof r=="function")for(let o of y(r))!v.call(e,o)&&o!==t&&i(e,o,{get:()=>r[o],enumerable:!(u=g(r,o))||u.enumerable});return e};var s=(e,r,t)=>(t=e!=null?l(R(e)):{},m(r||!e||!e.__esModule?i(t,"default",{value:e,enumerable:!0}):t,e)),P=e=>m(i({},"__esModule",{value:!0}),e);var q={};d(q,{default:()=>h});module.exports=P(q);var n=require("express"),f=s(require("../utils/logger")),p=s(require("./journeys/routes")),a=s(require("../middleware/setUpNestedRoute")),c=require("../middleware/setUpDprResources");function S(e){f.default.info("Initialiasing DPR routes...");const r=(0,n.Router)({mergeParams:!0});return r.use("/",(0,a.default)(),(0,p.default)(e),(0,c.errorRequestHandler)(e.layoutPath)),r}var h=S;
2
2
  //# sourceMappingURL=index.js.map
@@ -1,7 +1,7 @@
1
1
  {
2
2
  "version": 3,
3
3
  "sources": ["../../../src/dpr/routes/index.ts"],
4
- "sourcesContent": ["import { Router } from 'express'\nimport type { Services } from '../types/Services'\nimport logger from '../utils/logger'\nimport JourneyRoutes from './journeys/routes'\n// middleware\nimport setUpNestedRoute from '../middleware/setUpNestedRoute'\n\nfunction routes(routeImportParams: { services: Services; layoutPath: string }) {\n logger.info('Initialiasing DPR routes...')\n const router = Router({ mergeParams: true })\n router.use('/', setUpNestedRoute(), JourneyRoutes(routeImportParams))\n return router\n}\n\nexport default routes\n"],
5
- "mappings": "0jBAAA,IAAAA,EAAA,GAAAC,EAAAD,EAAA,aAAAE,IAAA,eAAAC,EAAAH,GAAA,IAAAI,EAAuB,mBAEvBC,EAAmB,8BACnBC,EAA0B,gCAE1BC,EAA6B,6CAE7B,SAASC,EAAOC,EAA+D,CAC7E,EAAAC,QAAO,KAAK,6BAA6B,EACzC,MAAMC,KAAS,UAAO,CAAE,YAAa,EAAK,CAAC,EAC3C,OAAAA,EAAO,IAAI,OAAK,EAAAC,SAAiB,KAAG,EAAAC,SAAcJ,CAAiB,CAAC,EAC7DE,CACT,CAEA,IAAOT,EAAQM",
6
- "names": ["routes_exports", "__export", "routes_default", "__toCommonJS", "import_express", "import_logger", "import_routes", "import_setUpNestedRoute", "routes", "routeImportParams", "logger", "router", "setUpNestedRoute", "JourneyRoutes"]
4
+ "sourcesContent": ["import { Router } from 'express'\nimport type { Services } from '../types/Services'\nimport logger from '../utils/logger'\nimport JourneyRoutes from './journeys/routes'\n// middleware\nimport setUpNestedRoute from '../middleware/setUpNestedRoute'\nimport { errorRequestHandler } from '../middleware/setUpDprResources'\n\nfunction routes(routeImportParams: { services: Services; layoutPath: string }) {\n logger.info('Initialiasing DPR routes...')\n const router = Router({ mergeParams: true })\n router.use(\n '/',\n setUpNestedRoute(),\n JourneyRoutes(routeImportParams),\n errorRequestHandler(routeImportParams.layoutPath),\n )\n return router\n}\n\nexport default routes\n"],
5
+ "mappings": "0jBAAA,IAAAA,EAAA,GAAAC,EAAAD,EAAA,aAAAE,IAAA,eAAAC,EAAAH,GAAA,IAAAI,EAAuB,mBAEvBC,EAAmB,8BACnBC,EAA0B,gCAE1BC,EAA6B,6CAC7BC,EAAoC,2CAEpC,SAASC,EAAOC,EAA+D,CAC7E,EAAAC,QAAO,KAAK,6BAA6B,EACzC,MAAMC,KAAS,UAAO,CAAE,YAAa,EAAK,CAAC,EAC3C,OAAAA,EAAO,IACL,OACA,EAAAC,SAAiB,KACjB,EAAAC,SAAcJ,CAAiB,KAC/B,uBAAoBA,EAAkB,UAAU,CAClD,EACOE,CACT,CAEA,IAAOV,EAAQO",
6
+ "names": ["routes_exports", "__export", "routes_default", "__toCommonJS", "import_express", "import_logger", "import_routes", "import_setUpNestedRoute", "import_setUpDprResources", "routes", "routeImportParams", "logger", "router", "setUpNestedRoute", "JourneyRoutes"]
7
7
  }
@@ -4,11 +4,17 @@ import logger from '../utils/logger'
4
4
  import JourneyRoutes from './journeys/routes'
5
5
  // middleware
6
6
  import setUpNestedRoute from '../middleware/setUpNestedRoute'
7
+ import { errorRequestHandler } from '../middleware/setUpDprResources'
7
8
 
8
9
  function routes(routeImportParams: { services: Services; layoutPath: string }) {
9
10
  logger.info('Initialiasing DPR routes...')
10
11
  const router = Router({ mergeParams: true })
11
- router.use('/', setUpNestedRoute(), JourneyRoutes(routeImportParams))
12
+ router.use(
13
+ '/',
14
+ setUpNestedRoute(),
15
+ JourneyRoutes(routeImportParams),
16
+ errorRequestHandler(routeImportParams.layoutPath),
17
+ )
12
18
  return router
13
19
  }
14
20
 
@@ -0,0 +1,2 @@
1
+ "use strict";var t=require("cypress-tests/cypressUtils");context("Try to run the app with failing and broken api endpoints",()=>{const i="/embedded/platform/";beforeEach(()=>{(0,t.stubBaseTasks)()}),describe("erroring endpoints - reports",()=>{it("should cope with definitions list failing",()=>{(0,t.executeReportStubs)(),cy.task("stubDefinitionRequestExamplesSuccess"),cy.task("stubRequestSuccessResult20"),cy.task("getDefinitionSummariesFailure"),cy.visit(i),cy.findByRole("heading",{name:/Sorry, there is a problem with the service/}).should("be.visible")}),it("should cope with definitions list being unauthd",()=>{(0,t.executeReportStubs)(),cy.task("stubDefinitionRequestExamplesSuccess"),cy.task("stubRequestSuccessResult20"),cy.task("getDefinitionSummariesUnauthenticatedFailure"),cy.visit(i),cy.findByRole("heading",{name:/Sorry, there is a problem with authenticating your request/}).should("be.visible")}),it("should cope with single definition endpoint failing",()=>{(0,t.executeReportStubs)(),cy.task("stubDefinitionRequestExamplesSuccess"),cy.task("stubRequestSuccessResult20"),cy.task("getSingleDefinitionFailure"),cy.visit(i),cy.findByLabelText(/Reports catalogue.*/i).within(()=>{cy.findByRole("row",{name:(s,e)=>!!e?.textContent?.includes("Successful Report")&&!!e?.textContent?.includes("this will succeed")}).within(()=>{cy.findByRole("link",{name:"Request report"}).click()})}),cy.findByRole("heading",{name:/Your report has failed to generate/}).should("be.visible")}),it("should cope with single definition failing",()=>{(0,t.executeReportStubs)(),cy.task("stubDefinitionRequestExamplesSuccess"),cy.task("stubRequestSuccessResult20"),cy.task("getSingleDefinitionFailure"),cy.visit(i),cy.findByLabelText(/Reports catalogue.*/i).within(()=>{cy.findByRole("row",{name:(s,e)=>!!e?.textContent?.includes("Successful Report")&&!!e?.textContent?.includes("this will succeed")}).within(()=>{cy.findByRole("link",{name:"Request report"}).click()})}),cy.findByRole("heading",{name:/Your report has failed to generate/}).should("be.visible")}),it("should cope with single definition variant failing",()=>{(0,t.executeReportStubs)(),cy.task("stubDefinitionRequestExamplesSuccess"),cy.task("stubRequestSuccessResult20"),cy.task("getSingleDefinitionVariantFailure"),cy.visit(i),cy.findByLabelText(/Reports catalogue.*/i).within(()=>{cy.findByRole("row",{name:(s,e)=>!!e?.textContent?.includes("Successful Report")&&!!e?.textContent?.includes("this will succeed")}).within(()=>{cy.findByRole("link",{name:"Request report"}).click()})}),cy.findByRole("heading",{name:/Your report has failed to generate/}).should("be.visible")}),it("should cope with count failing",()=>{(0,t.executeReportStubs)(),cy.task("stubDefinitionRequestExamplesSuccess"),cy.task("stubRequestSuccessResult20"),cy.task("getAsyncCountFailure"),cy.visit(i),cy.findByLabelText(/Reports catalogue.*/i).within(()=>{cy.findByRole("row",{name:(s,e)=>!!e?.textContent?.includes("Successful Report")&&!!e?.textContent?.includes("this will succeed")}).within(()=>{cy.findByRole("link",{name:"Request report"}).click()})}),cy.findByRole("button",{name:/Request/}).click(),cy.findByRole("heading",{name:/Your report has failed to generate/}).should("be.visible")}),it("should cope with requestAsyncReport failing",()=>{(0,t.executeReportStubs)(),cy.task("stubDefinitionRequestExamplesSuccess"),cy.task("stubRequestSuccessResult20"),cy.task("requestAsyncReportFailure"),cy.visit(i),cy.findByLabelText(/Reports catalogue.*/i).within(()=>{cy.findByRole("row",{name:(s,e)=>!!e?.textContent?.includes("Successful Report")&&!!e?.textContent?.includes("this will succeed")}).within(()=>{cy.findByRole("link",{name:"Request report"}).click()})}),cy.findByRole("button",{name:/Request/}).click(),cy.findByRole("heading",{name:/Your report has failed to generate/}).should("be.visible")}),it("should cope with cancelAsyncRequest failing",()=>{(0,t.stubBaseTasks)(),(0,t.stubDefinitionsTasks)(),cy.task("stubViewAsyncReportingResults"),cy.task("stubRequestSuccessReportTablesCount"),cy.task("stubAsyncRequestSuccessReportTablesCount"),cy.task("stubDefinitionRequestExamplesSuccess"),cy.task("stubRequestSuccessResult20"),cy.task("cancelAsyncRequestFailure"),cy.visit(i),cy.findByLabelText(/Reports catalogue.*/i).within(()=>{cy.findByRole("row",{name:(s,e)=>!!e?.textContent?.includes("Successful Report")&&!!e?.textContent?.includes("this will succeed")}).within(()=>{cy.findByRole("link",{name:"Request report"}).click()})}),cy.findByRole("button",{name:/Request/}).click(),cy.findByRole("button",{name:/Cancel request/}).click(),cy.findByRole("heading",{name:/Your report has failed to generate/}).should("be.visible")}),it("should cope with getAsyncReport failing",()=>{(0,t.executeReportStubs)(),cy.task("stubDefinitionRequestExamplesSuccess"),cy.task("stubRequestSuccessResult20"),cy.task("getAsyncReportFailure"),cy.visit(i),cy.findByLabelText(/Reports catalogue.*/i).within(()=>{cy.findByRole("row",{name:(s,e)=>!!e?.textContent?.includes("Successful Report")&&!!e?.textContent?.includes("this will succeed")}).within(()=>{cy.findByRole("link",{name:"Request report"}).click()})}),cy.findByRole("button",{name:/Request/}).click(),cy.findByRole("heading",{name:/Your report has failed to generate/}).should("be.visible")}),it("should cope with getAsyncSummaryReport failing",()=>{(0,t.stubBaseTasks)(),(0,t.stubDefinitionsTasks)(),cy.task("stubViewAsyncReportingResults"),cy.task("getAsyncSummaryReportFailure"),cy.visit(i),cy.findByLabelText(/Reports catalogue.*/i).within(()=>{cy.findByRole("row",{name:(s,e)=>!!e?.textContent?.includes("Successful Report")&&!!e?.textContent?.includes("this will succeed")}).within(()=>{cy.findByRole("link",{name:"Request report"}).click()})}),cy.findByRole("button",{name:/Request/}).click(),cy.findByRole("heading",{name:/Your report has failed to generate/}).should("be.visible")}),it("should cope with getAsyncReportStatus failing",()=>{(0,t.executeReportStubs)(),cy.task("stubDefinitionRequestExamplesSuccess"),cy.task("getAsyncReportStatusFailure"),cy.visit(i),cy.findByLabelText(/Reports catalogue.*/i).within(()=>{cy.findByRole("row",{name:(s,e)=>!!e?.textContent?.includes("Successful Report")&&!!e?.textContent?.includes("this will succeed")}).within(()=>{cy.findByRole("link",{name:"Request report"}).click()})}),cy.findByRole("button",{name:/Request/}).click(),cy.findByRole("heading",{name:/Your report has failed to generate/}).should("be.visible")})}),describe("erroring endpoints - dashboards",()=>{it("should cope with single definition endpoint failing",()=>{(0,t.executeDashboardStubs)(),cy.task("stubDataQualityDashboardsResultMock"),cy.task("stubListExampleDashboard"),cy.task("stubDefinitionFeatureTestingInteractive"),cy.task("getSingleDashboardFailure"),cy.visit(i),cy.findByLabelText(/Reports catalogue.*/i).within(()=>{cy.findByRole("row",{name:(s,e)=>!!e.textContent?.includes("Data quality data set")}).within(()=>{cy.findByRole("link",{name:"Request dashboard"}).click()})}),cy.findByRole("heading",{name:/Your report has failed to generate/}).should("be.visible")}),it("should cope with requestAsyncDashboard failing",()=>{(0,t.executeDashboardStubs)(),cy.task("stubDataQualityDashboardsResultMock"),cy.task("stubListExampleDashboard"),cy.task("stubDefinitionFeatureTestingInteractive"),cy.task("requestAsyncDashboardFailure"),cy.visit(i),cy.findByLabelText(/Reports catalogue.*/i).within(()=>{cy.findByRole("row",{name:(s,e)=>!!e.textContent?.includes("Data quality data set")}).within(()=>{cy.findByRole("link",{name:"Request dashboard"}).click()})}),cy.findByRole("button",{name:"Request dashboard"}).click(),cy.findByRole("heading",{name:/Your report has failed to generate/}).should("be.visible")}),it("should cope with getAsyncDashboard failing",()=>{(0,t.executeDashboardStubs)(),cy.task("stubDataQualityDashboardsResultMock"),cy.task("stubListExampleDashboard"),cy.task("stubDefinitionFeatureTestingInteractive"),cy.task("getAsyncDashboardFailure"),cy.visit(i),cy.findByLabelText(/Reports catalogue.*/i).within(()=>{cy.findByRole("row",{name:(s,e)=>!!e.textContent?.includes("Data quality data set")}).within(()=>{cy.findByRole("link",{name:"Request dashboard"}).click()})}),cy.findByRole("button",{name:"Request dashboard"}).click(),cy.findByRole("heading",{name:/Your report has failed to generate/}).should("be.visible")}),it("should cope with getAsyncDashboardStatus failing",()=>{(0,t.stubBaseTasks)(),(0,t.stubDefinitionsTasks)(),cy.task("stubViewAsyncResults"),cy.task("stubDataQualityDashboardsResultMock"),cy.task("stubListExampleDashboard"),cy.task("stubDefinitionFeatureTestingInteractive"),cy.task("getAsyncDashboardStatusFailure"),cy.visit(i),cy.findByLabelText(/Reports catalogue.*/i).within(()=>{cy.findByRole("row",{name:(s,e)=>!!e.textContent?.includes("Data quality data set")}).within(()=>{cy.findByRole("link",{name:"Request dashboard"}).click()})}),cy.findByRole("button",{name:"Request dashboard"}).click(),cy.findByRole("heading",{name:/Your report has failed to generate/}).should("be.visible")}),it("should cope with cancelAsyncRequest failing",()=>{(0,t.stubBaseTasks)(),(0,t.stubDefinitionsTasks)(),cy.task("stubReportsStartedStatus"),cy.task("stubMockDashboardsStatusStarted"),cy.task("stubViewAsyncResults"),cy.task("stubDataQualityDashboardsResultMock"),cy.task("stubListExampleDashboard"),cy.task("stubDefinitionFeatureTestingInteractive"),cy.task("cancelAsyncRequestDashboardFailure"),cy.visit(i),cy.findByLabelText(/Reports catalogue.*/i).within(()=>{cy.findByRole("row",{name:(s,e)=>!!e.textContent?.includes("Data quality data set")}).within(()=>{cy.findByRole("link",{name:"Request dashboard"}).click()})}),cy.findByRole("button",{name:/Request/}).click(),cy.findByRole("button",{name:/Cancel request/}).click(),cy.task("stubMockDashboardsStatusFinished"),cy.findByRole("heading",{name:/Failed to abort request/}).should("be.visible")})})});
2
+ //# sourceMappingURL=api-failures.cy.js.map