@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.
- package/dpr/components/_async/async-filters-form/view.njk +1 -1
- package/dpr/components/_async/async-polling/clientClass.mjs +0 -22
- package/dpr/components/_async/async-polling/view.njk +11 -8
- package/dpr/components/_catalogue/catalogue-list/utils.js +1 -1
- package/dpr/components/_catalogue/catalogue-list/utils.js.map +3 -3
- package/dpr/components/_catalogue/catalogue-list/utils.ts +50 -57
- package/dpr/components/_charts/utils.js +1 -1
- package/dpr/components/_charts/utils.js.map +3 -3
- package/dpr/components/_charts/utils.ts +17 -9
- package/dpr/components/_sync/sync-load/view.njk +1 -1
- package/dpr/components/user-reports/utils.js +1 -1
- package/dpr/components/user-reports/utils.js.map +2 -2
- package/dpr/components/user-reports/utils.ts +4 -4
- package/dpr/data/dashboardClient.js +1 -1
- package/dpr/data/dashboardClient.js.map +2 -2
- package/dpr/data/dashboardClient.ts +17 -0
- package/dpr/data/reportingClient.js +1 -1
- package/dpr/data/reportingClient.js.map +3 -3
- package/dpr/data/reportingClient.ts +1 -24
- package/dpr/middleware/setUpDprResources.js +1 -1
- package/dpr/middleware/setUpDprResources.js.map +3 -3
- package/dpr/middleware/setUpDprResources.ts +21 -3
- package/dpr/routes/authError.njk +10 -0
- package/dpr/routes/index.js +1 -1
- package/dpr/routes/index.js.map +3 -3
- package/dpr/routes/index.ts +7 -1
- package/dpr/routes/journeys/api-failures.cy.js +2 -0
- package/dpr/routes/journeys/api-failures.cy.js.map +7 -0
- package/dpr/routes/journeys/api-failures.cy.ts +377 -0
- package/dpr/routes/journeys/my-reports/bookmarks/service.js.map +2 -2
- package/dpr/routes/journeys/my-reports/bookmarks/service.ts +1 -0
- package/dpr/routes/journeys/request-report/controller.js +1 -1
- package/dpr/routes/journeys/request-report/controller.js.map +3 -3
- package/dpr/routes/journeys/request-report/controller.ts +25 -5
- package/dpr/routes/journeys/request-report/filters/controller.js +1 -1
- package/dpr/routes/journeys/request-report/filters/controller.js.map +2 -2
- package/dpr/routes/journeys/request-report/filters/controller.ts +1 -1
- package/dpr/routes/journeys/request-report/routes.js +1 -1
- package/dpr/routes/journeys/request-report/routes.js.map +3 -3
- package/dpr/routes/journeys/request-report/routes.ts +16 -0
- package/dpr/routes/journeys/request-report/status/controller.js +1 -1
- package/dpr/routes/journeys/request-report/status/controller.js.map +3 -3
- package/dpr/routes/journeys/request-report/status/controller.ts +0 -17
- package/dpr/routes/journeys/request-report/status/routes.js +1 -1
- package/dpr/routes/journeys/request-report/status/routes.js.map +2 -2
- package/dpr/routes/journeys/request-report/status/routes.ts +0 -1
- package/dpr/routes/journeys/view-report/async/dashboard/utils.js +1 -1
- package/dpr/routes/journeys/view-report/async/dashboard/utils.js.map +2 -2
- package/dpr/routes/journeys/view-report/async/dashboard/utils.ts +12 -4
- package/dpr/routes/journeys/view-report/sync/dashboard/controller.js +2 -0
- package/dpr/routes/journeys/view-report/sync/dashboard/controller.js.map +7 -0
- package/dpr/routes/journeys/view-report/sync/dashboard/controller.ts +39 -0
- package/dpr/routes/journeys/view-report/sync/dashboard/routes.js +2 -0
- package/dpr/routes/journeys/view-report/sync/dashboard/routes.js.map +7 -0
- package/dpr/routes/journeys/view-report/sync/dashboard/routes.ts +18 -0
- package/dpr/routes/journeys/view-report/sync/dashboard/utils.js +2 -0
- package/dpr/routes/journeys/view-report/sync/dashboard/utils.js.map +7 -0
- package/dpr/routes/journeys/view-report/sync/dashboard/utils.ts +149 -0
- package/dpr/routes/journeys/view-report/sync/load-report/controller.js +1 -1
- package/dpr/routes/journeys/view-report/sync/load-report/controller.js.map +3 -3
- package/dpr/routes/journeys/view-report/sync/load-report/controller.ts +43 -13
- package/dpr/routes/journeys/view-report/sync/report/routes.js +1 -1
- package/dpr/routes/journeys/view-report/sync/report/routes.js.map +3 -3
- package/dpr/routes/journeys/view-report/sync/report/routes.ts +2 -2
- package/dpr/routes/journeys/view-report/sync/routes.js +1 -1
- package/dpr/routes/journeys/view-report/sync/routes.js.map +3 -3
- package/dpr/routes/journeys/view-report/sync/routes.ts +2 -0
- package/dpr/routes/journeys/view-report/sync/tests.cy.js +1 -1
- package/dpr/routes/journeys/view-report/sync/tests.cy.js.map +2 -2
- package/dpr/routes/journeys/view-report/sync/tests.cy.ts +21 -1
- package/dpr/routes/serviceProblem.njk +10 -0
- package/dpr/services/dashboardService.js +1 -1
- package/dpr/services/dashboardService.js.map +2 -2
- package/dpr/services/dashboardService.ts +9 -0
- package/dpr/types/ReportQuery.js +1 -1
- package/dpr/types/ReportQuery.js.map +2 -2
- package/dpr/types/ReportQuery.ts +1 -1
- package/dpr/types/api.d.js +1 -1
- package/dpr/types/api.d.js.map +1 -1
- package/dpr/types/api.d.ts +139 -3
- package/dpr/utils/datasetHelper.js +1 -1
- package/dpr/utils/datasetHelper.js.map +3 -3
- package/dpr/utils/datasetHelper.ts +18 -9
- package/package.json +6 -7
|
@@ -0,0 +1,7 @@
|
|
|
1
|
+
{
|
|
2
|
+
"version": 3,
|
|
3
|
+
"sources": ["../../../../src/dpr/routes/journeys/api-failures.cy.ts"],
|
|
4
|
+
"sourcesContent": ["import {\n executeDashboardStubs,\n executeReportStubs,\n stubBaseTasks,\n stubDefinitionsTasks,\n} from 'cypress-tests/cypressUtils'\n\ncontext('Try to run the app with failing and broken api endpoints', () => {\n const path = '/embedded/platform/'\n\n beforeEach(() => {\n stubBaseTasks()\n })\n\n describe('erroring endpoints - reports', () => {\n it('should cope with definitions list failing', () => {\n executeReportStubs()\n cy.task('stubDefinitionRequestExamplesSuccess')\n cy.task('stubRequestSuccessResult20')\n cy.task('getDefinitionSummariesFailure')\n\n cy.visit(path)\n\n cy.findByRole('heading', { name: /Sorry, there is a problem with the service/ }).should('be.visible')\n })\n\n it('should cope with definitions list being unauthd', () => {\n executeReportStubs()\n cy.task('stubDefinitionRequestExamplesSuccess')\n cy.task('stubRequestSuccessResult20')\n cy.task('getDefinitionSummariesUnauthenticatedFailure')\n\n cy.visit(path)\n\n cy.findByRole('heading', { name: /Sorry, there is a problem with authenticating your request/ }).should(\n 'be.visible',\n )\n })\n\n it('should cope with single definition endpoint failing', () => {\n executeReportStubs()\n cy.task('stubDefinitionRequestExamplesSuccess')\n cy.task('stubRequestSuccessResult20')\n cy.task('getSingleDefinitionFailure')\n\n cy.visit(path)\n cy.findByLabelText(/Reports catalogue.*/i).within(() => {\n cy.findByRole('row', {\n name: (_, element) => {\n return (\n Boolean(element?.textContent?.includes('Successful Report')) &&\n Boolean(element?.textContent?.includes('this will succeed'))\n )\n },\n }).within(() => {\n cy.findByRole('link', { name: 'Request report' }).click()\n })\n })\n\n cy.findByRole('heading', { name: /Your report has failed to generate/ }).should('be.visible')\n })\n\n it('should cope with single definition failing', () => {\n executeReportStubs()\n cy.task('stubDefinitionRequestExamplesSuccess')\n cy.task('stubRequestSuccessResult20')\n cy.task('getSingleDefinitionFailure')\n\n cy.visit(path)\n cy.findByLabelText(/Reports catalogue.*/i).within(() => {\n cy.findByRole('row', {\n name: (_, element) => {\n return (\n Boolean(element?.textContent?.includes('Successful Report')) &&\n Boolean(element?.textContent?.includes('this will succeed'))\n )\n },\n }).within(() => {\n cy.findByRole('link', { name: 'Request report' }).click()\n })\n })\n\n cy.findByRole('heading', { name: /Your report has failed to generate/ }).should('be.visible')\n })\n\n it('should cope with single definition variant failing', () => {\n executeReportStubs()\n cy.task('stubDefinitionRequestExamplesSuccess')\n cy.task('stubRequestSuccessResult20')\n cy.task('getSingleDefinitionVariantFailure')\n\n cy.visit(path)\n cy.findByLabelText(/Reports catalogue.*/i).within(() => {\n cy.findByRole('row', {\n name: (_, element) => {\n return (\n Boolean(element?.textContent?.includes('Successful Report')) &&\n Boolean(element?.textContent?.includes('this will succeed'))\n )\n },\n }).within(() => {\n cy.findByRole('link', { name: 'Request report' }).click()\n })\n })\n\n cy.findByRole('heading', { name: /Your report has failed to generate/ }).should('be.visible')\n })\n\n it('should cope with count failing', () => {\n executeReportStubs()\n cy.task('stubDefinitionRequestExamplesSuccess')\n cy.task('stubRequestSuccessResult20')\n cy.task('getAsyncCountFailure')\n\n cy.visit(path)\n cy.findByLabelText(/Reports catalogue.*/i).within(() => {\n cy.findByRole('row', {\n name: (_, element) => {\n return (\n Boolean(element?.textContent?.includes('Successful Report')) &&\n Boolean(element?.textContent?.includes('this will succeed'))\n )\n },\n }).within(() => {\n cy.findByRole('link', { name: 'Request report' }).click()\n })\n })\n cy.findByRole('button', { name: /Request/ }).click()\n\n cy.findByRole('heading', { name: /Your report has failed to generate/ }).should('be.visible')\n })\n\n it('should cope with requestAsyncReport failing', () => {\n executeReportStubs()\n cy.task('stubDefinitionRequestExamplesSuccess')\n cy.task('stubRequestSuccessResult20')\n cy.task('requestAsyncReportFailure')\n\n cy.visit(path)\n cy.findByLabelText(/Reports catalogue.*/i).within(() => {\n cy.findByRole('row', {\n name: (_, element) => {\n return (\n Boolean(element?.textContent?.includes('Successful Report')) &&\n Boolean(element?.textContent?.includes('this will succeed'))\n )\n },\n }).within(() => {\n cy.findByRole('link', { name: 'Request report' }).click()\n })\n })\n cy.findByRole('button', { name: /Request/ }).click()\n\n cy.findByRole('heading', { name: /Your report has failed to generate/ }).should('be.visible')\n })\n\n it('should cope with cancelAsyncRequest failing', () => {\n stubBaseTasks()\n stubDefinitionsTasks()\n cy.task('stubViewAsyncReportingResults')\n cy.task('stubRequestSuccessReportTablesCount')\n cy.task('stubAsyncRequestSuccessReportTablesCount')\n cy.task('stubDefinitionRequestExamplesSuccess')\n cy.task('stubRequestSuccessResult20')\n cy.task('cancelAsyncRequestFailure')\n\n cy.visit(path)\n cy.findByLabelText(/Reports catalogue.*/i).within(() => {\n cy.findByRole('row', {\n name: (_, element) => {\n return (\n Boolean(element?.textContent?.includes('Successful Report')) &&\n Boolean(element?.textContent?.includes('this will succeed'))\n )\n },\n }).within(() => {\n cy.findByRole('link', { name: 'Request report' }).click()\n })\n })\n cy.findByRole('button', { name: /Request/ }).click()\n\n cy.findByRole('button', { name: /Cancel request/ }).click()\n\n cy.findByRole('heading', { name: /Your report has failed to generate/ }).should('be.visible')\n })\n\n it('should cope with getAsyncReport failing', () => {\n executeReportStubs()\n cy.task('stubDefinitionRequestExamplesSuccess')\n cy.task('stubRequestSuccessResult20')\n cy.task('getAsyncReportFailure')\n\n cy.visit(path)\n cy.findByLabelText(/Reports catalogue.*/i).within(() => {\n cy.findByRole('row', {\n name: (_, element) => {\n return (\n Boolean(element?.textContent?.includes('Successful Report')) &&\n Boolean(element?.textContent?.includes('this will succeed'))\n )\n },\n }).within(() => {\n cy.findByRole('link', { name: 'Request report' }).click()\n })\n })\n cy.findByRole('button', { name: /Request/ }).click()\n\n cy.findByRole('heading', { name: /Your report has failed to generate/ }).should('be.visible')\n })\n\n it('should cope with getAsyncSummaryReport failing', () => {\n stubBaseTasks()\n stubDefinitionsTasks()\n cy.task('stubViewAsyncReportingResults')\n cy.task('getAsyncSummaryReportFailure')\n\n cy.visit(path)\n cy.findByLabelText(/Reports catalogue.*/i).within(() => {\n cy.findByRole('row', {\n name: (_, element) => {\n return (\n Boolean(element?.textContent?.includes('Successful Report')) &&\n Boolean(element?.textContent?.includes('this will succeed'))\n )\n },\n }).within(() => {\n cy.findByRole('link', { name: 'Request report' }).click()\n })\n })\n cy.findByRole('button', { name: /Request/ }).click()\n\n cy.findByRole('heading', { name: /Your report has failed to generate/ }).should('be.visible')\n })\n\n it('should cope with getAsyncReportStatus failing', () => {\n executeReportStubs()\n cy.task('stubDefinitionRequestExamplesSuccess')\n cy.task('getAsyncReportStatusFailure')\n\n cy.visit(path)\n cy.findByLabelText(/Reports catalogue.*/i).within(() => {\n cy.findByRole('row', {\n name: (_, element) => {\n return (\n Boolean(element?.textContent?.includes('Successful Report')) &&\n Boolean(element?.textContent?.includes('this will succeed'))\n )\n },\n }).within(() => {\n cy.findByRole('link', { name: 'Request report' }).click()\n })\n })\n cy.findByRole('button', { name: /Request/ }).click()\n\n cy.findByRole('heading', { name: /Your report has failed to generate/ }).should('be.visible')\n })\n })\n\n describe('erroring endpoints - dashboards', () => {\n it('should cope with single definition endpoint failing', () => {\n executeDashboardStubs()\n cy.task('stubDataQualityDashboardsResultMock')\n cy.task('stubListExampleDashboard')\n cy.task('stubDefinitionFeatureTestingInteractive')\n cy.task('getSingleDashboardFailure')\n\n cy.visit(path)\n cy.findByLabelText(/Reports catalogue.*/i).within(() => {\n cy.findByRole('row', {\n name: (_, element) => {\n return Boolean(element.textContent?.includes('Data quality data set'))\n },\n }).within(() => {\n cy.findByRole('link', { name: 'Request dashboard' }).click()\n })\n })\n\n cy.findByRole('heading', { name: /Your report has failed to generate/ }).should('be.visible')\n })\n\n it('should cope with requestAsyncDashboard failing', () => {\n executeDashboardStubs()\n cy.task('stubDataQualityDashboardsResultMock')\n cy.task('stubListExampleDashboard')\n cy.task('stubDefinitionFeatureTestingInteractive')\n cy.task('requestAsyncDashboardFailure')\n\n cy.visit(path)\n cy.findByLabelText(/Reports catalogue.*/i).within(() => {\n cy.findByRole('row', {\n name: (_, element) => {\n return Boolean(element.textContent?.includes('Data quality data set'))\n },\n }).within(() => {\n cy.findByRole('link', { name: 'Request dashboard' }).click()\n })\n })\n cy.findByRole('button', { name: 'Request dashboard' }).click()\n\n cy.findByRole('heading', { name: /Your report has failed to generate/ }).should('be.visible')\n })\n\n it('should cope with getAsyncDashboard failing', () => {\n executeDashboardStubs()\n cy.task('stubDataQualityDashboardsResultMock')\n cy.task('stubListExampleDashboard')\n cy.task('stubDefinitionFeatureTestingInteractive')\n cy.task('getAsyncDashboardFailure')\n\n cy.visit(path)\n cy.findByLabelText(/Reports catalogue.*/i).within(() => {\n cy.findByRole('row', {\n name: (_, element) => {\n return Boolean(element.textContent?.includes('Data quality data set'))\n },\n }).within(() => {\n cy.findByRole('link', { name: 'Request dashboard' }).click()\n })\n })\n cy.findByRole('button', { name: 'Request dashboard' }).click()\n\n cy.findByRole('heading', { name: /Your report has failed to generate/ }).should('be.visible')\n })\n\n it('should cope with getAsyncDashboardStatus failing', () => {\n stubBaseTasks()\n stubDefinitionsTasks()\n cy.task('stubViewAsyncResults')\n cy.task('stubDataQualityDashboardsResultMock')\n cy.task('stubListExampleDashboard')\n cy.task('stubDefinitionFeatureTestingInteractive')\n cy.task('getAsyncDashboardStatusFailure')\n\n cy.visit(path)\n cy.findByLabelText(/Reports catalogue.*/i).within(() => {\n cy.findByRole('row', {\n name: (_, element) => {\n return Boolean(element.textContent?.includes('Data quality data set'))\n },\n }).within(() => {\n cy.findByRole('link', { name: 'Request dashboard' }).click()\n })\n })\n cy.findByRole('button', { name: 'Request dashboard' }).click()\n\n cy.findByRole('heading', { name: /Your report has failed to generate/ }).should('be.visible')\n })\n\n it('should cope with cancelAsyncRequest failing', () => {\n stubBaseTasks()\n stubDefinitionsTasks()\n cy.task('stubReportsStartedStatus')\n cy.task('stubMockDashboardsStatusStarted')\n cy.task('stubViewAsyncResults')\n cy.task('stubDataQualityDashboardsResultMock')\n cy.task('stubListExampleDashboard')\n cy.task('stubDefinitionFeatureTestingInteractive')\n cy.task('cancelAsyncRequestDashboardFailure')\n\n cy.visit(path)\n cy.findByLabelText(/Reports catalogue.*/i).within(() => {\n cy.findByRole('row', {\n name: (_, element) => {\n return Boolean(element.textContent?.includes('Data quality data set'))\n },\n }).within(() => {\n cy.findByRole('link', { name: 'Request dashboard' }).click()\n })\n })\n cy.findByRole('button', { name: /Request/ }).click()\n\n cy.findByRole('button', { name: /Cancel request/ }).click()\n cy.task('stubMockDashboardsStatusFinished')\n cy.findByRole('heading', { name: /Failed to abort request/ }).should('be.visible')\n })\n })\n})\n"],
|
|
5
|
+
"mappings": "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",
|
|
6
|
+
"names": ["import_cypressUtils", "path", "_", "element"]
|
|
7
|
+
}
|
|
@@ -0,0 +1,377 @@
|
|
|
1
|
+
import {
|
|
2
|
+
executeDashboardStubs,
|
|
3
|
+
executeReportStubs,
|
|
4
|
+
stubBaseTasks,
|
|
5
|
+
stubDefinitionsTasks,
|
|
6
|
+
} from 'cypress-tests/cypressUtils'
|
|
7
|
+
|
|
8
|
+
context('Try to run the app with failing and broken api endpoints', () => {
|
|
9
|
+
const path = '/embedded/platform/'
|
|
10
|
+
|
|
11
|
+
beforeEach(() => {
|
|
12
|
+
stubBaseTasks()
|
|
13
|
+
})
|
|
14
|
+
|
|
15
|
+
describe('erroring endpoints - reports', () => {
|
|
16
|
+
it('should cope with definitions list failing', () => {
|
|
17
|
+
executeReportStubs()
|
|
18
|
+
cy.task('stubDefinitionRequestExamplesSuccess')
|
|
19
|
+
cy.task('stubRequestSuccessResult20')
|
|
20
|
+
cy.task('getDefinitionSummariesFailure')
|
|
21
|
+
|
|
22
|
+
cy.visit(path)
|
|
23
|
+
|
|
24
|
+
cy.findByRole('heading', { name: /Sorry, there is a problem with the service/ }).should('be.visible')
|
|
25
|
+
})
|
|
26
|
+
|
|
27
|
+
it('should cope with definitions list being unauthd', () => {
|
|
28
|
+
executeReportStubs()
|
|
29
|
+
cy.task('stubDefinitionRequestExamplesSuccess')
|
|
30
|
+
cy.task('stubRequestSuccessResult20')
|
|
31
|
+
cy.task('getDefinitionSummariesUnauthenticatedFailure')
|
|
32
|
+
|
|
33
|
+
cy.visit(path)
|
|
34
|
+
|
|
35
|
+
cy.findByRole('heading', { name: /Sorry, there is a problem with authenticating your request/ }).should(
|
|
36
|
+
'be.visible',
|
|
37
|
+
)
|
|
38
|
+
})
|
|
39
|
+
|
|
40
|
+
it('should cope with single definition endpoint failing', () => {
|
|
41
|
+
executeReportStubs()
|
|
42
|
+
cy.task('stubDefinitionRequestExamplesSuccess')
|
|
43
|
+
cy.task('stubRequestSuccessResult20')
|
|
44
|
+
cy.task('getSingleDefinitionFailure')
|
|
45
|
+
|
|
46
|
+
cy.visit(path)
|
|
47
|
+
cy.findByLabelText(/Reports catalogue.*/i).within(() => {
|
|
48
|
+
cy.findByRole('row', {
|
|
49
|
+
name: (_, element) => {
|
|
50
|
+
return (
|
|
51
|
+
Boolean(element?.textContent?.includes('Successful Report')) &&
|
|
52
|
+
Boolean(element?.textContent?.includes('this will succeed'))
|
|
53
|
+
)
|
|
54
|
+
},
|
|
55
|
+
}).within(() => {
|
|
56
|
+
cy.findByRole('link', { name: 'Request report' }).click()
|
|
57
|
+
})
|
|
58
|
+
})
|
|
59
|
+
|
|
60
|
+
cy.findByRole('heading', { name: /Your report has failed to generate/ }).should('be.visible')
|
|
61
|
+
})
|
|
62
|
+
|
|
63
|
+
it('should cope with single definition failing', () => {
|
|
64
|
+
executeReportStubs()
|
|
65
|
+
cy.task('stubDefinitionRequestExamplesSuccess')
|
|
66
|
+
cy.task('stubRequestSuccessResult20')
|
|
67
|
+
cy.task('getSingleDefinitionFailure')
|
|
68
|
+
|
|
69
|
+
cy.visit(path)
|
|
70
|
+
cy.findByLabelText(/Reports catalogue.*/i).within(() => {
|
|
71
|
+
cy.findByRole('row', {
|
|
72
|
+
name: (_, element) => {
|
|
73
|
+
return (
|
|
74
|
+
Boolean(element?.textContent?.includes('Successful Report')) &&
|
|
75
|
+
Boolean(element?.textContent?.includes('this will succeed'))
|
|
76
|
+
)
|
|
77
|
+
},
|
|
78
|
+
}).within(() => {
|
|
79
|
+
cy.findByRole('link', { name: 'Request report' }).click()
|
|
80
|
+
})
|
|
81
|
+
})
|
|
82
|
+
|
|
83
|
+
cy.findByRole('heading', { name: /Your report has failed to generate/ }).should('be.visible')
|
|
84
|
+
})
|
|
85
|
+
|
|
86
|
+
it('should cope with single definition variant failing', () => {
|
|
87
|
+
executeReportStubs()
|
|
88
|
+
cy.task('stubDefinitionRequestExamplesSuccess')
|
|
89
|
+
cy.task('stubRequestSuccessResult20')
|
|
90
|
+
cy.task('getSingleDefinitionVariantFailure')
|
|
91
|
+
|
|
92
|
+
cy.visit(path)
|
|
93
|
+
cy.findByLabelText(/Reports catalogue.*/i).within(() => {
|
|
94
|
+
cy.findByRole('row', {
|
|
95
|
+
name: (_, element) => {
|
|
96
|
+
return (
|
|
97
|
+
Boolean(element?.textContent?.includes('Successful Report')) &&
|
|
98
|
+
Boolean(element?.textContent?.includes('this will succeed'))
|
|
99
|
+
)
|
|
100
|
+
},
|
|
101
|
+
}).within(() => {
|
|
102
|
+
cy.findByRole('link', { name: 'Request report' }).click()
|
|
103
|
+
})
|
|
104
|
+
})
|
|
105
|
+
|
|
106
|
+
cy.findByRole('heading', { name: /Your report has failed to generate/ }).should('be.visible')
|
|
107
|
+
})
|
|
108
|
+
|
|
109
|
+
it('should cope with count failing', () => {
|
|
110
|
+
executeReportStubs()
|
|
111
|
+
cy.task('stubDefinitionRequestExamplesSuccess')
|
|
112
|
+
cy.task('stubRequestSuccessResult20')
|
|
113
|
+
cy.task('getAsyncCountFailure')
|
|
114
|
+
|
|
115
|
+
cy.visit(path)
|
|
116
|
+
cy.findByLabelText(/Reports catalogue.*/i).within(() => {
|
|
117
|
+
cy.findByRole('row', {
|
|
118
|
+
name: (_, element) => {
|
|
119
|
+
return (
|
|
120
|
+
Boolean(element?.textContent?.includes('Successful Report')) &&
|
|
121
|
+
Boolean(element?.textContent?.includes('this will succeed'))
|
|
122
|
+
)
|
|
123
|
+
},
|
|
124
|
+
}).within(() => {
|
|
125
|
+
cy.findByRole('link', { name: 'Request report' }).click()
|
|
126
|
+
})
|
|
127
|
+
})
|
|
128
|
+
cy.findByRole('button', { name: /Request/ }).click()
|
|
129
|
+
|
|
130
|
+
cy.findByRole('heading', { name: /Your report has failed to generate/ }).should('be.visible')
|
|
131
|
+
})
|
|
132
|
+
|
|
133
|
+
it('should cope with requestAsyncReport failing', () => {
|
|
134
|
+
executeReportStubs()
|
|
135
|
+
cy.task('stubDefinitionRequestExamplesSuccess')
|
|
136
|
+
cy.task('stubRequestSuccessResult20')
|
|
137
|
+
cy.task('requestAsyncReportFailure')
|
|
138
|
+
|
|
139
|
+
cy.visit(path)
|
|
140
|
+
cy.findByLabelText(/Reports catalogue.*/i).within(() => {
|
|
141
|
+
cy.findByRole('row', {
|
|
142
|
+
name: (_, element) => {
|
|
143
|
+
return (
|
|
144
|
+
Boolean(element?.textContent?.includes('Successful Report')) &&
|
|
145
|
+
Boolean(element?.textContent?.includes('this will succeed'))
|
|
146
|
+
)
|
|
147
|
+
},
|
|
148
|
+
}).within(() => {
|
|
149
|
+
cy.findByRole('link', { name: 'Request report' }).click()
|
|
150
|
+
})
|
|
151
|
+
})
|
|
152
|
+
cy.findByRole('button', { name: /Request/ }).click()
|
|
153
|
+
|
|
154
|
+
cy.findByRole('heading', { name: /Your report has failed to generate/ }).should('be.visible')
|
|
155
|
+
})
|
|
156
|
+
|
|
157
|
+
it('should cope with cancelAsyncRequest failing', () => {
|
|
158
|
+
stubBaseTasks()
|
|
159
|
+
stubDefinitionsTasks()
|
|
160
|
+
cy.task('stubViewAsyncReportingResults')
|
|
161
|
+
cy.task('stubRequestSuccessReportTablesCount')
|
|
162
|
+
cy.task('stubAsyncRequestSuccessReportTablesCount')
|
|
163
|
+
cy.task('stubDefinitionRequestExamplesSuccess')
|
|
164
|
+
cy.task('stubRequestSuccessResult20')
|
|
165
|
+
cy.task('cancelAsyncRequestFailure')
|
|
166
|
+
|
|
167
|
+
cy.visit(path)
|
|
168
|
+
cy.findByLabelText(/Reports catalogue.*/i).within(() => {
|
|
169
|
+
cy.findByRole('row', {
|
|
170
|
+
name: (_, element) => {
|
|
171
|
+
return (
|
|
172
|
+
Boolean(element?.textContent?.includes('Successful Report')) &&
|
|
173
|
+
Boolean(element?.textContent?.includes('this will succeed'))
|
|
174
|
+
)
|
|
175
|
+
},
|
|
176
|
+
}).within(() => {
|
|
177
|
+
cy.findByRole('link', { name: 'Request report' }).click()
|
|
178
|
+
})
|
|
179
|
+
})
|
|
180
|
+
cy.findByRole('button', { name: /Request/ }).click()
|
|
181
|
+
|
|
182
|
+
cy.findByRole('button', { name: /Cancel request/ }).click()
|
|
183
|
+
|
|
184
|
+
cy.findByRole('heading', { name: /Your report has failed to generate/ }).should('be.visible')
|
|
185
|
+
})
|
|
186
|
+
|
|
187
|
+
it('should cope with getAsyncReport failing', () => {
|
|
188
|
+
executeReportStubs()
|
|
189
|
+
cy.task('stubDefinitionRequestExamplesSuccess')
|
|
190
|
+
cy.task('stubRequestSuccessResult20')
|
|
191
|
+
cy.task('getAsyncReportFailure')
|
|
192
|
+
|
|
193
|
+
cy.visit(path)
|
|
194
|
+
cy.findByLabelText(/Reports catalogue.*/i).within(() => {
|
|
195
|
+
cy.findByRole('row', {
|
|
196
|
+
name: (_, element) => {
|
|
197
|
+
return (
|
|
198
|
+
Boolean(element?.textContent?.includes('Successful Report')) &&
|
|
199
|
+
Boolean(element?.textContent?.includes('this will succeed'))
|
|
200
|
+
)
|
|
201
|
+
},
|
|
202
|
+
}).within(() => {
|
|
203
|
+
cy.findByRole('link', { name: 'Request report' }).click()
|
|
204
|
+
})
|
|
205
|
+
})
|
|
206
|
+
cy.findByRole('button', { name: /Request/ }).click()
|
|
207
|
+
|
|
208
|
+
cy.findByRole('heading', { name: /Your report has failed to generate/ }).should('be.visible')
|
|
209
|
+
})
|
|
210
|
+
|
|
211
|
+
it('should cope with getAsyncSummaryReport failing', () => {
|
|
212
|
+
stubBaseTasks()
|
|
213
|
+
stubDefinitionsTasks()
|
|
214
|
+
cy.task('stubViewAsyncReportingResults')
|
|
215
|
+
cy.task('getAsyncSummaryReportFailure')
|
|
216
|
+
|
|
217
|
+
cy.visit(path)
|
|
218
|
+
cy.findByLabelText(/Reports catalogue.*/i).within(() => {
|
|
219
|
+
cy.findByRole('row', {
|
|
220
|
+
name: (_, element) => {
|
|
221
|
+
return (
|
|
222
|
+
Boolean(element?.textContent?.includes('Successful Report')) &&
|
|
223
|
+
Boolean(element?.textContent?.includes('this will succeed'))
|
|
224
|
+
)
|
|
225
|
+
},
|
|
226
|
+
}).within(() => {
|
|
227
|
+
cy.findByRole('link', { name: 'Request report' }).click()
|
|
228
|
+
})
|
|
229
|
+
})
|
|
230
|
+
cy.findByRole('button', { name: /Request/ }).click()
|
|
231
|
+
|
|
232
|
+
cy.findByRole('heading', { name: /Your report has failed to generate/ }).should('be.visible')
|
|
233
|
+
})
|
|
234
|
+
|
|
235
|
+
it('should cope with getAsyncReportStatus failing', () => {
|
|
236
|
+
executeReportStubs()
|
|
237
|
+
cy.task('stubDefinitionRequestExamplesSuccess')
|
|
238
|
+
cy.task('getAsyncReportStatusFailure')
|
|
239
|
+
|
|
240
|
+
cy.visit(path)
|
|
241
|
+
cy.findByLabelText(/Reports catalogue.*/i).within(() => {
|
|
242
|
+
cy.findByRole('row', {
|
|
243
|
+
name: (_, element) => {
|
|
244
|
+
return (
|
|
245
|
+
Boolean(element?.textContent?.includes('Successful Report')) &&
|
|
246
|
+
Boolean(element?.textContent?.includes('this will succeed'))
|
|
247
|
+
)
|
|
248
|
+
},
|
|
249
|
+
}).within(() => {
|
|
250
|
+
cy.findByRole('link', { name: 'Request report' }).click()
|
|
251
|
+
})
|
|
252
|
+
})
|
|
253
|
+
cy.findByRole('button', { name: /Request/ }).click()
|
|
254
|
+
|
|
255
|
+
cy.findByRole('heading', { name: /Your report has failed to generate/ }).should('be.visible')
|
|
256
|
+
})
|
|
257
|
+
})
|
|
258
|
+
|
|
259
|
+
describe('erroring endpoints - dashboards', () => {
|
|
260
|
+
it('should cope with single definition endpoint failing', () => {
|
|
261
|
+
executeDashboardStubs()
|
|
262
|
+
cy.task('stubDataQualityDashboardsResultMock')
|
|
263
|
+
cy.task('stubListExampleDashboard')
|
|
264
|
+
cy.task('stubDefinitionFeatureTestingInteractive')
|
|
265
|
+
cy.task('getSingleDashboardFailure')
|
|
266
|
+
|
|
267
|
+
cy.visit(path)
|
|
268
|
+
cy.findByLabelText(/Reports catalogue.*/i).within(() => {
|
|
269
|
+
cy.findByRole('row', {
|
|
270
|
+
name: (_, element) => {
|
|
271
|
+
return Boolean(element.textContent?.includes('Data quality data set'))
|
|
272
|
+
},
|
|
273
|
+
}).within(() => {
|
|
274
|
+
cy.findByRole('link', { name: 'Request dashboard' }).click()
|
|
275
|
+
})
|
|
276
|
+
})
|
|
277
|
+
|
|
278
|
+
cy.findByRole('heading', { name: /Your report has failed to generate/ }).should('be.visible')
|
|
279
|
+
})
|
|
280
|
+
|
|
281
|
+
it('should cope with requestAsyncDashboard failing', () => {
|
|
282
|
+
executeDashboardStubs()
|
|
283
|
+
cy.task('stubDataQualityDashboardsResultMock')
|
|
284
|
+
cy.task('stubListExampleDashboard')
|
|
285
|
+
cy.task('stubDefinitionFeatureTestingInteractive')
|
|
286
|
+
cy.task('requestAsyncDashboardFailure')
|
|
287
|
+
|
|
288
|
+
cy.visit(path)
|
|
289
|
+
cy.findByLabelText(/Reports catalogue.*/i).within(() => {
|
|
290
|
+
cy.findByRole('row', {
|
|
291
|
+
name: (_, element) => {
|
|
292
|
+
return Boolean(element.textContent?.includes('Data quality data set'))
|
|
293
|
+
},
|
|
294
|
+
}).within(() => {
|
|
295
|
+
cy.findByRole('link', { name: 'Request dashboard' }).click()
|
|
296
|
+
})
|
|
297
|
+
})
|
|
298
|
+
cy.findByRole('button', { name: 'Request dashboard' }).click()
|
|
299
|
+
|
|
300
|
+
cy.findByRole('heading', { name: /Your report has failed to generate/ }).should('be.visible')
|
|
301
|
+
})
|
|
302
|
+
|
|
303
|
+
it('should cope with getAsyncDashboard failing', () => {
|
|
304
|
+
executeDashboardStubs()
|
|
305
|
+
cy.task('stubDataQualityDashboardsResultMock')
|
|
306
|
+
cy.task('stubListExampleDashboard')
|
|
307
|
+
cy.task('stubDefinitionFeatureTestingInteractive')
|
|
308
|
+
cy.task('getAsyncDashboardFailure')
|
|
309
|
+
|
|
310
|
+
cy.visit(path)
|
|
311
|
+
cy.findByLabelText(/Reports catalogue.*/i).within(() => {
|
|
312
|
+
cy.findByRole('row', {
|
|
313
|
+
name: (_, element) => {
|
|
314
|
+
return Boolean(element.textContent?.includes('Data quality data set'))
|
|
315
|
+
},
|
|
316
|
+
}).within(() => {
|
|
317
|
+
cy.findByRole('link', { name: 'Request dashboard' }).click()
|
|
318
|
+
})
|
|
319
|
+
})
|
|
320
|
+
cy.findByRole('button', { name: 'Request dashboard' }).click()
|
|
321
|
+
|
|
322
|
+
cy.findByRole('heading', { name: /Your report has failed to generate/ }).should('be.visible')
|
|
323
|
+
})
|
|
324
|
+
|
|
325
|
+
it('should cope with getAsyncDashboardStatus failing', () => {
|
|
326
|
+
stubBaseTasks()
|
|
327
|
+
stubDefinitionsTasks()
|
|
328
|
+
cy.task('stubViewAsyncResults')
|
|
329
|
+
cy.task('stubDataQualityDashboardsResultMock')
|
|
330
|
+
cy.task('stubListExampleDashboard')
|
|
331
|
+
cy.task('stubDefinitionFeatureTestingInteractive')
|
|
332
|
+
cy.task('getAsyncDashboardStatusFailure')
|
|
333
|
+
|
|
334
|
+
cy.visit(path)
|
|
335
|
+
cy.findByLabelText(/Reports catalogue.*/i).within(() => {
|
|
336
|
+
cy.findByRole('row', {
|
|
337
|
+
name: (_, element) => {
|
|
338
|
+
return Boolean(element.textContent?.includes('Data quality data set'))
|
|
339
|
+
},
|
|
340
|
+
}).within(() => {
|
|
341
|
+
cy.findByRole('link', { name: 'Request dashboard' }).click()
|
|
342
|
+
})
|
|
343
|
+
})
|
|
344
|
+
cy.findByRole('button', { name: 'Request dashboard' }).click()
|
|
345
|
+
|
|
346
|
+
cy.findByRole('heading', { name: /Your report has failed to generate/ }).should('be.visible')
|
|
347
|
+
})
|
|
348
|
+
|
|
349
|
+
it('should cope with cancelAsyncRequest failing', () => {
|
|
350
|
+
stubBaseTasks()
|
|
351
|
+
stubDefinitionsTasks()
|
|
352
|
+
cy.task('stubReportsStartedStatus')
|
|
353
|
+
cy.task('stubMockDashboardsStatusStarted')
|
|
354
|
+
cy.task('stubViewAsyncResults')
|
|
355
|
+
cy.task('stubDataQualityDashboardsResultMock')
|
|
356
|
+
cy.task('stubListExampleDashboard')
|
|
357
|
+
cy.task('stubDefinitionFeatureTestingInteractive')
|
|
358
|
+
cy.task('cancelAsyncRequestDashboardFailure')
|
|
359
|
+
|
|
360
|
+
cy.visit(path)
|
|
361
|
+
cy.findByLabelText(/Reports catalogue.*/i).within(() => {
|
|
362
|
+
cy.findByRole('row', {
|
|
363
|
+
name: (_, element) => {
|
|
364
|
+
return Boolean(element.textContent?.includes('Data quality data set'))
|
|
365
|
+
},
|
|
366
|
+
}).within(() => {
|
|
367
|
+
cy.findByRole('link', { name: 'Request dashboard' }).click()
|
|
368
|
+
})
|
|
369
|
+
})
|
|
370
|
+
cy.findByRole('button', { name: /Request/ }).click()
|
|
371
|
+
|
|
372
|
+
cy.findByRole('button', { name: /Cancel request/ }).click()
|
|
373
|
+
cy.task('stubMockDashboardsStatusFinished')
|
|
374
|
+
cy.findByRole('heading', { name: /Failed to abort request/ }).should('be.visible')
|
|
375
|
+
})
|
|
376
|
+
})
|
|
377
|
+
})
|
|
@@ -1,7 +1,7 @@
|
|
|
1
1
|
{
|
|
2
2
|
"version": 3,
|
|
3
3
|
"sources": ["../../../../../../src/dpr/routes/journeys/my-reports/bookmarks/service.ts"],
|
|
4
|
-
"sourcesContent": ["import ReportStoreService from '../../../../services/reportStoreService'\nimport ReportDataStore from '../../../../data/reportDataStore'\nimport { ReportType } from '../../../../types/UserReports'\nimport { ReportStoreConfig } from '../../../../types/ReportStore'\nimport logger from '../../../../utils/logger'\nimport { BookmarkStoreData } from '../../../../types/Bookmark'\nimport { ServiceFeatureConfig } from '../../../../types/DprConfig'\n\nclass BookmarkService extends ReportStoreService {\n enabled: boolean\n\n constructor(reportDataStore: ReportDataStore, serviceFeatureConfig: ServiceFeatureConfig) {\n super(reportDataStore)\n this.enabled = Boolean(serviceFeatureConfig.bookmarking)\n if (!this.enabled) logger.info(`Bookmarking: disabled `)\n }\n\n async getAllBookmarks(userId: string): Promise<BookmarkStoreData[]> {\n if (!this.enabled) return []\n\n const userConfig = await this.getState(userId)\n return userConfig.bookmarks\n }\n\n async addBookmark(\n userId: string,\n reportId: string,\n id: string,\n type: ReportType,\n automatic?: boolean,\n ): Promise<void> {\n if (!this.enabled) return\n\n const userConfig = await this.getState(userId)\n if (!this.isBookmarkedCheck(userConfig, id, reportId)) {\n userConfig.bookmarks.unshift({ reportId, id, type, automatic })\n }\n await this.saveState(userId, userConfig)\n }\n\n async removeBookmark(userId: string, id: string, reportId: string): Promise<void> {\n if (!this.enabled) return\n\n const userConfig = await this.getState(userId)\n const index = userConfig.bookmarks.findIndex((bookmark) => {\n const bmVarId = bookmark.id\n return bmVarId === id && bookmark.reportId === reportId\n })\n if (index >= 0) {\n userConfig.bookmarks.splice(index, 1)\n }\n await this.saveState(userId, userConfig)\n }\n\n isBookmarked = async (id: string, reportId: string, userId: string): Promise<boolean | undefined> => {\n if (!this.enabled) return false\n\n const userConfig = await this.getState(userId)\n const isBookmarked = this.isBookmarkedCheck(userConfig, id, reportId)\n let bookmark\n if (isBookmarked) {\n bookmark = this.getBookmark(userConfig, id, reportId)\n }\n return bookmark?.automatic ? undefined : isBookmarked\n }\n\n private isBookmarkedCheck = (userConfig: ReportStoreConfig, id: string, reportId: string): boolean => {\n return userConfig.bookmarks.some((bookmark) => {\n const bmVarId = bookmark.id\n return bmVarId === id && bookmark.reportId === reportId\n })\n }\n\n private getBookmark = (userConfig: ReportStoreConfig, id: string, reportId: string) => {\n return userConfig.bookmarks.find((bookmark) => {\n const bmVarId = bookmark.id\n return bmVarId === id && bookmark.reportId === reportId\n })\n }\n\n async createBookMarkToggleHtml({\n userConfig,\n reportId,\n id,\n csrfToken,\n ctxId,\n reportType,\n isMissing,\n }: {\n userConfig: ReportStoreConfig\n reportId: string\n id: string\n csrfToken: string\n ctxId: string\n reportType: ReportType\n isMissing: boolean\n }) {\n let tooltip = 'Add bookmark'\n let automatic = false\n let checked = null\n if (userConfig?.bookmarks) {\n const bookmark = this.getBookmark(userConfig, id, reportId)\n if (bookmark) {\n checked = 'checked'\n tooltip = 'Remove bookmark'\n automatic = Boolean(bookmark.automatic)\n }\n }\n\n return automatic || isMissing\n ? ''\n : `<button class='dpr-bookmark dpr-bookmark-table' data-dpr-module='bookmark-toggle'>\n <input class='bookmark-input' type='checkbox' id='${reportId}-${id}-${ctxId}' data-report-id='${reportId}' data-id='${id}' data-report-type='${reportType}' data-csrf-token='${csrfToken}' ${checked} />\n <label tabindex='0' id='${id}-${reportId}-${ctxId}-bookmark-label' for='${reportId}-${id}-${ctxId}'><span class='dpr-bookmark-label govuk-body-s'>${tooltip}</span></label>\n</button>`\n }\n}\n\nexport { BookmarkService }\nexport default BookmarkService\n"],
|
|
5
|
-
"mappings": "0jBAAA,IAAAA,EAAA,GAAAC,EAAAD,EAAA,qBAAAE,EAAA,YAAAC,IAAA,eAAAC,EAAAJ,GAAA,IAAAK,EAA+B,sDAI/BC,EAAmB,uCAInB,MAAMJ,UAAwB,EAAAK,OAAmB,CAG/C,YAAYC,EAAkCC,EAA4C,CACxF,MAAMD,CAAe,EA0CvB,kBAAe,MAAOE,EAAYC,EAAkBC,IAAiD,CACnG,GAAI,CAAC,KAAK,QAAS,MAAO,GAE1B,MAAMC,EAAa,MAAM,KAAK,SAASD,CAAM,EACvCE,EAAe,KAAK,kBAAkBD,EAAYH,EAAIC,CAAQ,EACpE,IAAII,EACJ,OAAID,IACFC,EAAW,KAAK,YAAYF,EAAYH,EAAIC,CAAQ,
|
|
4
|
+
"sourcesContent": ["import ReportStoreService from '../../../../services/reportStoreService'\nimport ReportDataStore from '../../../../data/reportDataStore'\nimport { ReportType } from '../../../../types/UserReports'\nimport { ReportStoreConfig } from '../../../../types/ReportStore'\nimport logger from '../../../../utils/logger'\nimport { BookmarkStoreData } from '../../../../types/Bookmark'\nimport { ServiceFeatureConfig } from '../../../../types/DprConfig'\n\nclass BookmarkService extends ReportStoreService {\n enabled: boolean\n\n constructor(reportDataStore: ReportDataStore, serviceFeatureConfig: ServiceFeatureConfig) {\n super(reportDataStore)\n this.enabled = Boolean(serviceFeatureConfig.bookmarking)\n if (!this.enabled) logger.info(`Bookmarking: disabled `)\n }\n\n async getAllBookmarks(userId: string): Promise<BookmarkStoreData[]> {\n if (!this.enabled) return []\n\n const userConfig = await this.getState(userId)\n return userConfig.bookmarks\n }\n\n async addBookmark(\n userId: string,\n reportId: string,\n id: string,\n type: ReportType,\n automatic?: boolean,\n ): Promise<void> {\n if (!this.enabled) return\n\n const userConfig = await this.getState(userId)\n if (!this.isBookmarkedCheck(userConfig, id, reportId)) {\n userConfig.bookmarks.unshift({ reportId, id, type, automatic })\n }\n await this.saveState(userId, userConfig)\n }\n\n async removeBookmark(userId: string, id: string, reportId: string): Promise<void> {\n if (!this.enabled) return\n\n const userConfig = await this.getState(userId)\n const index = userConfig.bookmarks.findIndex((bookmark) => {\n const bmVarId = bookmark.id\n return bmVarId === id && bookmark.reportId === reportId\n })\n if (index >= 0) {\n userConfig.bookmarks.splice(index, 1)\n }\n await this.saveState(userId, userConfig)\n }\n\n isBookmarked = async (id: string, reportId: string, userId: string): Promise<boolean | undefined> => {\n if (!this.enabled) return false\n\n const userConfig = await this.getState(userId)\n const isBookmarked = this.isBookmarkedCheck(userConfig, id, reportId)\n let bookmark\n if (isBookmarked) {\n bookmark = this.getBookmark(userConfig, id, reportId)\n }\n\n return bookmark?.automatic ? undefined : isBookmarked\n }\n\n private isBookmarkedCheck = (userConfig: ReportStoreConfig, id: string, reportId: string): boolean => {\n return userConfig.bookmarks.some((bookmark) => {\n const bmVarId = bookmark.id\n return bmVarId === id && bookmark.reportId === reportId\n })\n }\n\n private getBookmark = (userConfig: ReportStoreConfig, id: string, reportId: string) => {\n return userConfig.bookmarks.find((bookmark) => {\n const bmVarId = bookmark.id\n return bmVarId === id && bookmark.reportId === reportId\n })\n }\n\n async createBookMarkToggleHtml({\n userConfig,\n reportId,\n id,\n csrfToken,\n ctxId,\n reportType,\n isMissing,\n }: {\n userConfig: ReportStoreConfig\n reportId: string\n id: string\n csrfToken: string\n ctxId: string\n reportType: ReportType\n isMissing: boolean\n }) {\n let tooltip = 'Add bookmark'\n let automatic = false\n let checked = null\n if (userConfig?.bookmarks) {\n const bookmark = this.getBookmark(userConfig, id, reportId)\n if (bookmark) {\n checked = 'checked'\n tooltip = 'Remove bookmark'\n automatic = Boolean(bookmark.automatic)\n }\n }\n\n return automatic || isMissing\n ? ''\n : `<button class='dpr-bookmark dpr-bookmark-table' data-dpr-module='bookmark-toggle'>\n <input class='bookmark-input' type='checkbox' id='${reportId}-${id}-${ctxId}' data-report-id='${reportId}' data-id='${id}' data-report-type='${reportType}' data-csrf-token='${csrfToken}' ${checked} />\n <label tabindex='0' id='${id}-${reportId}-${ctxId}-bookmark-label' for='${reportId}-${id}-${ctxId}'><span class='dpr-bookmark-label govuk-body-s'>${tooltip}</span></label>\n</button>`\n }\n}\n\nexport { BookmarkService }\nexport default BookmarkService\n"],
|
|
5
|
+
"mappings": "0jBAAA,IAAAA,EAAA,GAAAC,EAAAD,EAAA,qBAAAE,EAAA,YAAAC,IAAA,eAAAC,EAAAJ,GAAA,IAAAK,EAA+B,sDAI/BC,EAAmB,uCAInB,MAAMJ,UAAwB,EAAAK,OAAmB,CAG/C,YAAYC,EAAkCC,EAA4C,CACxF,MAAMD,CAAe,EA0CvB,kBAAe,MAAOE,EAAYC,EAAkBC,IAAiD,CACnG,GAAI,CAAC,KAAK,QAAS,MAAO,GAE1B,MAAMC,EAAa,MAAM,KAAK,SAASD,CAAM,EACvCE,EAAe,KAAK,kBAAkBD,EAAYH,EAAIC,CAAQ,EACpE,IAAII,EACJ,OAAID,IACFC,EAAW,KAAK,YAAYF,EAAYH,EAAIC,CAAQ,GAG/CI,GAAU,UAAY,OAAYD,CAC3C,EAEA,KAAQ,kBAAoB,CAACD,EAA+BH,EAAYC,IAC/DE,EAAW,UAAU,KAAME,GAChBA,EAAS,KACNL,GAAMK,EAAS,WAAaJ,CAChD,EAGH,KAAQ,YAAc,CAACE,EAA+BH,EAAYC,IACzDE,EAAW,UAAU,KAAME,GAChBA,EAAS,KACNL,GAAMK,EAAS,WAAaJ,CAChD,EAjED,KAAK,QAAU,EAAQF,EAAqB,YACvC,KAAK,SAAS,EAAAO,QAAO,KAAK,wBAAwB,CACzD,CAEA,MAAM,gBAAgBJ,EAA8C,CAClE,OAAK,KAAK,SAES,MAAM,KAAK,SAASA,CAAM,GAC3B,UAHQ,CAAC,CAI7B,CAEA,MAAM,YACJA,EACAD,EACAD,EACAO,EACAC,EACe,CACf,GAAI,CAAC,KAAK,QAAS,OAEnB,MAAML,EAAa,MAAM,KAAK,SAASD,CAAM,EACxC,KAAK,kBAAkBC,EAAYH,EAAIC,CAAQ,GAClDE,EAAW,UAAU,QAAQ,CAAE,SAAAF,EAAU,GAAAD,EAAI,KAAAO,EAAM,UAAAC,CAAU,CAAC,EAEhE,MAAM,KAAK,UAAUN,EAAQC,CAAU,CACzC,CAEA,MAAM,eAAeD,EAAgBF,EAAYC,EAAiC,CAChF,GAAI,CAAC,KAAK,QAAS,OAEnB,MAAME,EAAa,MAAM,KAAK,SAASD,CAAM,EACvCO,EAAQN,EAAW,UAAU,UAAWE,GAC5BA,EAAS,KACNL,GAAMK,EAAS,WAAaJ,CAChD,EACGQ,GAAS,GACXN,EAAW,UAAU,OAAOM,EAAO,CAAC,EAEtC,MAAM,KAAK,UAAUP,EAAQC,CAAU,CACzC,CA6BA,MAAM,yBAAyB,CAC7B,WAAAA,EACA,SAAAF,EACA,GAAAD,EACA,UAAAU,EACA,MAAAC,EACA,WAAAC,EACA,UAAAC,CACF,EAQG,CACD,IAAIC,EAAU,eACVN,EAAY,GACZO,EAAU,KACd,GAAIZ,GAAY,UAAW,CACzB,MAAME,EAAW,KAAK,YAAYF,EAAYH,EAAIC,CAAQ,EACtDI,IACFU,EAAU,UACVD,EAAU,kBACVN,EAAY,EAAQH,EAAS,UAEjC,CAEA,OAAOG,GAAaK,EAChB,GACA;AAAA,sDAC8CZ,CAAQ,IAAID,CAAE,IAAIW,CAAK,qBAAqBV,CAAQ,cAAcD,CAAE,uBAAuBY,CAAU,sBAAsBF,CAAS,KAAKK,CAAO;AAAA,4BAC1Kf,CAAE,IAAIC,CAAQ,IAAIU,CAAK,yBAAyBV,CAAQ,IAAID,CAAE,IAAIW,CAAK,mDAAmDG,CAAO;AAAA,UAE3J,CACF,CAGA,IAAOrB,EAAQD",
|
|
6
6
|
"names": ["service_exports", "__export", "BookmarkService", "service_default", "__toCommonJS", "import_reportStoreService", "import_logger", "ReportStoreService", "reportDataStore", "serviceFeatureConfig", "id", "reportId", "userId", "userConfig", "isBookmarked", "bookmark", "logger", "type", "automatic", "index", "csrfToken", "ctxId", "reportType", "isMissing", "tooltip", "checked"]
|
|
7
7
|
}
|
|
@@ -1,2 +1,2 @@
|
|
|
1
|
-
"use strict";var
|
|
1
|
+
"use strict";var d=Object.create;var a=Object.defineProperty;var y=Object.getOwnPropertyDescriptor;var R=Object.getOwnPropertyNames;var p=Object.getPrototypeOf,f=Object.prototype.hasOwnProperty;var h=(t,r)=>{for(var e in r)a(t,e,{get:r[e],enumerable:!0})},l=(t,r,e,s)=>{if(r&&typeof r=="object"||typeof r=="function")for(let o of R(r))!f.call(t,o)&&o!==e&&a(t,o,{get:()=>r[o],enumerable:!(s=y(r,o))||s.enumerable});return t};var n=(t,r,e)=>(e=t!=null?d(p(t)):{},l(r||!t||!t.__esModule?a(e,"default",{value:t,enumerable:!0}):e,t)),m=t=>l(a({},"__esModule",{value:!0}),t);var g={};h(g,{RequestReportController:()=>i,default:()=>b});module.exports=m(g);var c=n(require("./filters/utils")),u=n(require("../../../utils/ErrorHandler"));class i{constructor(r,e){this.errorHandler=async(r,e,s,o)=>{s.render("dpr/routes/journeys/view-report/error",{layoutPath:this.layoutPath,...e.body,...e.params,error:e.body.error,params:e.params})};this.CANCEL=async(r,e,s)=>{try{await c.default.cancelRequest({req:r,res:e,services:this.services})}catch(o){return r.body.title="Failed to abort request",r.body.errorDescription="We were unable to abort the report request for the following reason:",r.body.error=new u.default(o).formatError(),r.flash("ERROR_BODY",JSON.stringify(r.body)),r.flash("ERROR_PARAMS",JSON.stringify(r.params)),r.flash("ERROR",JSON.stringify(r.body.error)),e.redirect(`${r.originalUrl}/failed`)}return e.redirect(r.originalUrl.replace("/cancel","/status"))};this.layoutPath=r,this.services=e}}var b=i;0&&(module.exports={RequestReportController});
|
|
2
2
|
//# sourceMappingURL=controller.js.map
|
|
@@ -1,7 +1,7 @@
|
|
|
1
1
|
{
|
|
2
2
|
"version": 3,
|
|
3
3
|
"sources": ["../../../../../src/dpr/routes/journeys/request-report/controller.ts"],
|
|
4
|
-
"sourcesContent": ["import { RequestHandler } from 'express'\nimport { Services } from '../../../types/Services'\nimport
|
|
5
|
-
"mappings": "0jBAAA,IAAAA,EAAA,GAAAC,EAAAD,EAAA,6BAAAE,EAAA,YAAAC,IAAA,eAAAC,EAAAJ,GAEA,IAAAK,
|
|
6
|
-
"names": ["controller_exports", "__export", "RequestReportController", "controller_default", "__toCommonJS", "
|
|
4
|
+
"sourcesContent": ["import { ErrorRequestHandler, RequestHandler } from 'express'\nimport { Services } from '../../../types/Services'\nimport AsyncRequestUtils from './filters/utils'\nimport ErrorHandler from '../../../utils/ErrorHandler'\n\nclass RequestReportController {\n layoutPath: string\n\n services: Services\n\n constructor(layoutPath: string, services: Services) {\n this.layoutPath = layoutPath\n this.services = services\n }\n\n errorHandler: ErrorRequestHandler = async (_error, req, res, _next) => {\n res.render(`dpr/routes/journeys/view-report/error`, {\n layoutPath: this.layoutPath,\n ...req.body,\n ...req.params,\n error: req.body.error,\n params: req.params,\n })\n }\n\n CANCEL: RequestHandler = async (req, res, _next) => {\n try {\n await AsyncRequestUtils.cancelRequest({\n req,\n res,\n services: this.services,\n })\n } catch (error) {\n req.body.title = 'Failed to abort request'\n req.body.errorDescription = 'We were unable to abort the report request for the following reason:'\n req.body.error = new ErrorHandler(error).formatError()\n\n req.flash('ERROR_BODY', JSON.stringify(req.body))\n req.flash('ERROR_PARAMS', JSON.stringify(req.params))\n req.flash('ERROR', JSON.stringify(req.body.error))\n\n return res.redirect(`${req.originalUrl}/failed`)\n }\n return res.redirect(req.originalUrl.replace('/cancel', '/status'))\n }\n}\n\nexport { RequestReportController }\nexport default RequestReportController\n"],
|
|
5
|
+
"mappings": "0jBAAA,IAAAA,EAAA,GAAAC,EAAAD,EAAA,6BAAAE,EAAA,YAAAC,IAAA,eAAAC,EAAAJ,GAEA,IAAAK,EAA8B,8BAC9BC,EAAyB,0CAEzB,MAAMJ,CAAwB,CAK5B,YAAYK,EAAoBC,EAAoB,CAKpD,kBAAoC,MAAOC,EAAQC,EAAKC,EAAKC,IAAU,CACrED,EAAI,OAAO,wCAAyC,CAClD,WAAY,KAAK,WACjB,GAAGD,EAAI,KACP,GAAGA,EAAI,OACP,MAAOA,EAAI,KAAK,MAChB,OAAQA,EAAI,MACd,CAAC,CACH,EAEA,YAAyB,MAAOA,EAAKC,EAAKC,IAAU,CAClD,GAAI,CACF,MAAM,EAAAC,QAAkB,cAAc,CACpC,IAAAH,EACA,IAAAC,EACA,SAAU,KAAK,QACjB,CAAC,CACH,OAASG,EAAO,CACd,OAAAJ,EAAI,KAAK,MAAQ,0BACjBA,EAAI,KAAK,iBAAmB,uEAC5BA,EAAI,KAAK,MAAQ,IAAI,EAAAK,QAAaD,CAAK,EAAE,YAAY,EAErDJ,EAAI,MAAM,aAAc,KAAK,UAAUA,EAAI,IAAI,CAAC,EAChDA,EAAI,MAAM,eAAgB,KAAK,UAAUA,EAAI,MAAM,CAAC,EACpDA,EAAI,MAAM,QAAS,KAAK,UAAUA,EAAI,KAAK,KAAK,CAAC,EAE1CC,EAAI,SAAS,GAAGD,EAAI,WAAW,SAAS,CACjD,CACA,OAAOC,EAAI,SAASD,EAAI,YAAY,QAAQ,UAAW,SAAS,CAAC,CACnE,EAjCE,KAAK,WAAaH,EAClB,KAAK,SAAWC,CAClB,CAgCF,CAGA,IAAOL,EAAQD",
|
|
6
|
+
"names": ["controller_exports", "__export", "RequestReportController", "controller_default", "__toCommonJS", "import_utils", "import_ErrorHandler", "layoutPath", "services", "_error", "req", "res", "_next", "AsyncRequestUtils", "error", "ErrorHandler"]
|
|
7
7
|
}
|
|
@@ -1,6 +1,7 @@
|
|
|
1
|
-
import { RequestHandler } from 'express'
|
|
1
|
+
import { ErrorRequestHandler, RequestHandler } from 'express'
|
|
2
2
|
import { Services } from '../../../types/Services'
|
|
3
|
-
import
|
|
3
|
+
import AsyncRequestUtils from './filters/utils'
|
|
4
|
+
import ErrorHandler from '../../../utils/ErrorHandler'
|
|
4
5
|
|
|
5
6
|
class RequestReportController {
|
|
6
7
|
layoutPath: string
|
|
@@ -12,9 +13,7 @@ class RequestReportController {
|
|
|
12
13
|
this.services = services
|
|
13
14
|
}
|
|
14
15
|
|
|
15
|
-
errorHandler:
|
|
16
|
-
logger.error(`Error: ${JSON.stringify(req.body)}`)
|
|
17
|
-
|
|
16
|
+
errorHandler: ErrorRequestHandler = async (_error, req, res, _next) => {
|
|
18
17
|
res.render(`dpr/routes/journeys/view-report/error`, {
|
|
19
18
|
layoutPath: this.layoutPath,
|
|
20
19
|
...req.body,
|
|
@@ -23,6 +22,27 @@ class RequestReportController {
|
|
|
23
22
|
params: req.params,
|
|
24
23
|
})
|
|
25
24
|
}
|
|
25
|
+
|
|
26
|
+
CANCEL: RequestHandler = async (req, res, _next) => {
|
|
27
|
+
try {
|
|
28
|
+
await AsyncRequestUtils.cancelRequest({
|
|
29
|
+
req,
|
|
30
|
+
res,
|
|
31
|
+
services: this.services,
|
|
32
|
+
})
|
|
33
|
+
} catch (error) {
|
|
34
|
+
req.body.title = 'Failed to abort request'
|
|
35
|
+
req.body.errorDescription = 'We were unable to abort the report request for the following reason:'
|
|
36
|
+
req.body.error = new ErrorHandler(error).formatError()
|
|
37
|
+
|
|
38
|
+
req.flash('ERROR_BODY', JSON.stringify(req.body))
|
|
39
|
+
req.flash('ERROR_PARAMS', JSON.stringify(req.params))
|
|
40
|
+
req.flash('ERROR', JSON.stringify(req.body.error))
|
|
41
|
+
|
|
42
|
+
return res.redirect(`${req.originalUrl}/failed`)
|
|
43
|
+
}
|
|
44
|
+
return res.redirect(req.originalUrl.replace('/cancel', '/status'))
|
|
45
|
+
}
|
|
26
46
|
}
|
|
27
47
|
|
|
28
48
|
export { RequestReportController }
|
|
@@ -1,2 +1,2 @@
|
|
|
1
|
-
"use strict";var p=Object.create;var l=Object.defineProperty;var v=Object.getOwnPropertyDescriptor;var R=Object.getOwnPropertyNames;var D=Object.getPrototypeOf,b=Object.prototype.hasOwnProperty;var E=(s,e)=>{for(var t in e)l(s,t,{get:e[t],enumerable:!0})},m=(s,e,t,a)=>{if(e&&typeof e=="object"||typeof e=="function")for(let r of R(e))!b.call(s,r)&&r!==t&&l(s,r,{get:()=>e[r],enumerable:!(a=v(e,r))||a.enumerable});return s};var c=(s,e,t)=>(t=s!=null?p(D(s)):{},m(e||!s||!s.__esModule?l(t,"default",{value:s,enumerable:!0}):t,s)),P=s=>m(l({},"__esModule",{value:!0}),s);var F={};E(F,{RequestReportController:()=>y,default:()=>w});module.exports=P(F);var u=c(require("./utils")),d=c(require("../../../../utils/Personalisation/personalisationUtils")),n=require("../../../../components/_filters/filtersTypeEnum"),i=c(require("../../../../utils/ErrorHandler"));class y{constructor(e,t){this.GET=async(e,t,a)=>{try{const r=await u.default.renderRequest({req:e,res:t,services:this.services,next:a});t.render("dpr/routes/journeys/request-report/filters/view",{layoutPath:this.layoutPath,...r})}catch(r){e.body.title="Request failed",e.body.errorDescription=`Your ${e.params.type} has failed to generate.`,e.body.error=new i.default(r).formatError(),a()}};this.POST=async(e,t,a)=>{try{const r=await u.default.request({req:e,res:t,services:this.services,next:a}),{executionId:o,dataProductDefinitionsPath:f}=r;if(o){const h=f?`${o}/status?dataProductDefinitionsPath=${f}`:`${o}/status`;t.redirect(h)}else t.end()}catch(r){const o=u.default.getFiltersFromReqBody(e);e.body={title:"Request Failed",errorDescription:`Your ${e.params.type} has failed to generate.`,error:new i.default(r).formatError(),retry:!0,filters:o,...e.body},a()}};this.saveDefaultFilterValues=async(e,t,a)=>{try{await d.default.saveDefaults(n.FiltersType.REQUEST,t,e,this.services),t.redirect(`${e.baseUrl}?defaultsSaved=true`)}catch(r){e.body={title:"Failed to save defaults",error:new i.default(r).formatError(),...e.body},a()}};this.removeDefaultFilterValues=async(e,t,a)=>{try{await d.default.removeDefaults(n.FiltersType.REQUEST,t,e,this.services),t.redirect(e.baseUrl)}catch(r){e.body={title:"Failed to remove defaults",error:new i.default(r).formatError(),...e.body},a()}};this.layoutPath=e,this.services=t}}var w=y;0&&(module.exports={RequestReportController});
|
|
1
|
+
"use strict";var p=Object.create;var l=Object.defineProperty;var v=Object.getOwnPropertyDescriptor;var R=Object.getOwnPropertyNames;var D=Object.getPrototypeOf,b=Object.prototype.hasOwnProperty;var E=(s,e)=>{for(var t in e)l(s,t,{get:e[t],enumerable:!0})},m=(s,e,t,a)=>{if(e&&typeof e=="object"||typeof e=="function")for(let r of R(e))!b.call(s,r)&&r!==t&&l(s,r,{get:()=>e[r],enumerable:!(a=v(e,r))||a.enumerable});return s};var c=(s,e,t)=>(t=s!=null?p(D(s)):{},m(e||!s||!s.__esModule?l(t,"default",{value:s,enumerable:!0}):t,s)),P=s=>m(l({},"__esModule",{value:!0}),s);var F={};E(F,{RequestReportController:()=>y,default:()=>w});module.exports=P(F);var u=c(require("./utils")),d=c(require("../../../../utils/Personalisation/personalisationUtils")),n=require("../../../../components/_filters/filtersTypeEnum"),i=c(require("../../../../utils/ErrorHandler"));class y{constructor(e,t){this.GET=async(e,t,a)=>{try{const r=await u.default.renderRequest({req:e,res:t,services:this.services,next:a});t.render("dpr/routes/journeys/request-report/filters/view",{layoutPath:this.layoutPath,...r})}catch(r){e.body.title="Request failed",e.body.errorDescription=`Your ${e.params.type} has failed to generate.`,e.body.error=new i.default(r).formatError(),a()}};this.POST=async(e,t,a)=>{try{const r=await u.default.request({req:e,res:t,services:this.services,next:a}),{executionId:o,dataProductDefinitionsPath:f}=r;if(o){const h=f?`${o}/status?dataProductDefinitionsPath=${f}`:`${o}/status`;t.redirect(h)}else t.end()}catch(r){const o=u.default.getFiltersFromReqBody(e);e.body={title:"Request Failed",errorDescription:`Your ${e.params.type} has failed to generate.`,error:new i.default(r).formatError(),retry:!0,filters:o,...e.body},a(r)}};this.saveDefaultFilterValues=async(e,t,a)=>{try{await d.default.saveDefaults(n.FiltersType.REQUEST,t,e,this.services),t.redirect(`${e.baseUrl}?defaultsSaved=true`)}catch(r){e.body={title:"Failed to save defaults",error:new i.default(r).formatError(),...e.body},a()}};this.removeDefaultFilterValues=async(e,t,a)=>{try{await d.default.removeDefaults(n.FiltersType.REQUEST,t,e,this.services),t.redirect(e.baseUrl)}catch(r){e.body={title:"Failed to remove defaults",error:new i.default(r).formatError(),...e.body},a()}};this.layoutPath=e,this.services=t}}var w=y;0&&(module.exports={RequestReportController});
|
|
2
2
|
//# sourceMappingURL=controller.js.map
|
|
@@ -1,7 +1,7 @@
|
|
|
1
1
|
{
|
|
2
2
|
"version": 3,
|
|
3
3
|
"sources": ["../../../../../../src/dpr/routes/journeys/request-report/filters/controller.ts"],
|
|
4
|
-
"sourcesContent": ["import { RequestHandler } from 'express'\nimport { Services } from '../../../../types/Services'\nimport { RequestDataResult } from '../../../../types/AsyncReportUtils'\nimport AysncRequestUtils from './utils'\nimport PersonalisationUtils from '../../../../utils/Personalisation/personalisationUtils'\nimport { FiltersType } from '../../../../components/_filters/filtersTypeEnum'\nimport ErrorHandler from '../../../../utils/ErrorHandler'\n\nclass RequestReportController {\n layoutPath: string\n\n services: Services\n\n constructor(layoutPath: string, services: Services) {\n this.layoutPath = layoutPath\n this.services = services\n }\n\n // Render request page\n GET: RequestHandler = async (req, res, next) => {\n try {\n const requestRenderData = <RequestDataResult>await AysncRequestUtils.renderRequest({\n req,\n res,\n services: this.services,\n next,\n })\n\n res.render(`dpr/routes/journeys/request-report/filters/view`, {\n layoutPath: this.layoutPath,\n ...requestRenderData,\n })\n } catch (error) {\n req.body.title = 'Request failed'\n req.body.errorDescription = `Your ${req.params['type']} has failed to generate.`\n req.body.error = new ErrorHandler(error).formatError()\n next()\n }\n }\n\n // Request report\n POST: RequestHandler = async (req, res, next) => {\n try {\n const executionData = await AysncRequestUtils.request({\n req,\n res,\n services: this.services,\n next,\n })\n\n const { executionId, dataProductDefinitionsPath } = executionData\n\n if (executionId) {\n const redirect = dataProductDefinitionsPath\n ? `${executionId}/status?dataProductDefinitionsPath=${dataProductDefinitionsPath}`\n : `${executionId}/status`\n res.redirect(redirect)\n } else {\n res.end()\n }\n } catch (error) {\n const filters = AysncRequestUtils.getFiltersFromReqBody(req)\n\n req.body = {\n title: 'Request Failed',\n errorDescription: `Your ${req.params['type']} has failed to generate.`,\n error: new ErrorHandler(error).formatError(),\n retry: true,\n filters,\n ...req.body,\n }\n next()\n }\n }\n\n saveDefaultFilterValues: RequestHandler = async (req, res, next) => {\n try {\n await PersonalisationUtils.saveDefaults(FiltersType.REQUEST, res, req, this.services)\n res.redirect(`${req.baseUrl}?defaultsSaved=true`)\n } catch (error) {\n req.body = {\n title: 'Failed to save defaults',\n error: new ErrorHandler(error).formatError(),\n ...req.body,\n }\n next()\n }\n }\n\n removeDefaultFilterValues: RequestHandler = async (req, res, next) => {\n try {\n await PersonalisationUtils.removeDefaults(FiltersType.REQUEST, res, req, this.services)\n res.redirect(req.baseUrl)\n } catch (error) {\n req.body = {\n title: 'Failed to remove defaults',\n error: new ErrorHandler(error).formatError(),\n ...req.body,\n }\n next()\n }\n }\n}\n\nexport { RequestReportController }\nexport default RequestReportController\n"],
|
|
5
|
-
"mappings": "0jBAAA,IAAAA,EAAA,GAAAC,EAAAD,EAAA,6BAAAE,EAAA,YAAAC,IAAA,eAAAC,EAAAJ,GAGA,IAAAK,EAA8B,sBAC9BC,EAAiC,qEACjCC,EAA4B,2DAC5BC,EAAyB,6CAEzB,MAAMN,CAAwB,CAK5B,YAAYO,EAAoBC,EAAoB,CAMpD,SAAsB,MAAOC,EAAKC,EAAKC,IAAS,CAC9C,GAAI,CACF,MAAMC,EAAuC,MAAM,EAAAC,QAAkB,cAAc,CACjF,IAAAJ,EACA,IAAAC,EACA,SAAU,KAAK,SACf,KAAAC,CACF,CAAC,EAEDD,EAAI,OAAO,kDAAmD,CAC5D,WAAY,KAAK,WACjB,GAAGE,CACL,CAAC,CACH,OAASE,EAAO,CACdL,EAAI,KAAK,MAAQ,iBACjBA,EAAI,KAAK,iBAAmB,QAAQA,EAAI,OAAO,IAAO,2BACtDA,EAAI,KAAK,MAAQ,IAAI,EAAAM,QAAaD,CAAK,EAAE,YAAY,EACrDH,EAAK,CACP,CACF,EAGA,UAAuB,MAAOF,EAAKC,EAAKC,IAAS,CAC/C,GAAI,CACF,MAAMK,EAAgB,MAAM,EAAAH,QAAkB,QAAQ,CACpD,IAAAJ,EACA,IAAAC,EACA,SAAU,KAAK,SACf,KAAAC,CACF,CAAC,EAEK,CAAE,YAAAM,EAAa,2BAAAC,CAA2B,EAAIF,EAEpD,GAAIC,EAAa,CACf,MAAME,EAAWD,EACb,GAAGD,CAAW,sCAAsCC,CAA0B,GAC9E,GAAGD,CAAW,UAClBP,EAAI,SAASS,CAAQ,CACvB,MACET,EAAI,IAAI,CAEZ,OAASI,EAAO,CACd,MAAMM,EAAU,EAAAP,QAAkB,sBAAsBJ,CAAG,EAE3DA,EAAI,KAAO,CACT,MAAO,iBACP,iBAAkB,QAAQA,EAAI,OAAO,IAAO,2BAC5C,MAAO,IAAI,EAAAM,QAAaD,CAAK,EAAE,YAAY,EAC3C,MAAO,GACP,QAAAM,EACA,GAAGX,EAAI,IACT,EACAE,
|
|
4
|
+
"sourcesContent": ["import { RequestHandler } from 'express'\nimport { Services } from '../../../../types/Services'\nimport { RequestDataResult } from '../../../../types/AsyncReportUtils'\nimport AysncRequestUtils from './utils'\nimport PersonalisationUtils from '../../../../utils/Personalisation/personalisationUtils'\nimport { FiltersType } from '../../../../components/_filters/filtersTypeEnum'\nimport ErrorHandler from '../../../../utils/ErrorHandler'\n\nclass RequestReportController {\n layoutPath: string\n\n services: Services\n\n constructor(layoutPath: string, services: Services) {\n this.layoutPath = layoutPath\n this.services = services\n }\n\n // Render request page\n GET: RequestHandler = async (req, res, next) => {\n try {\n const requestRenderData = <RequestDataResult>await AysncRequestUtils.renderRequest({\n req,\n res,\n services: this.services,\n next,\n })\n\n res.render(`dpr/routes/journeys/request-report/filters/view`, {\n layoutPath: this.layoutPath,\n ...requestRenderData,\n })\n } catch (error) {\n req.body.title = 'Request failed'\n req.body.errorDescription = `Your ${req.params['type']} has failed to generate.`\n req.body.error = new ErrorHandler(error).formatError()\n next()\n }\n }\n\n // Request report\n POST: RequestHandler = async (req, res, next) => {\n try {\n const executionData = await AysncRequestUtils.request({\n req,\n res,\n services: this.services,\n next,\n })\n\n const { executionId, dataProductDefinitionsPath } = executionData\n\n if (executionId) {\n const redirect = dataProductDefinitionsPath\n ? `${executionId}/status?dataProductDefinitionsPath=${dataProductDefinitionsPath}`\n : `${executionId}/status`\n res.redirect(redirect)\n } else {\n res.end()\n }\n } catch (error) {\n const filters = AysncRequestUtils.getFiltersFromReqBody(req)\n\n req.body = {\n title: 'Request Failed',\n errorDescription: `Your ${req.params['type']} has failed to generate.`,\n error: new ErrorHandler(error).formatError(),\n retry: true,\n filters,\n ...req.body,\n }\n next(error)\n }\n }\n\n saveDefaultFilterValues: RequestHandler = async (req, res, next) => {\n try {\n await PersonalisationUtils.saveDefaults(FiltersType.REQUEST, res, req, this.services)\n res.redirect(`${req.baseUrl}?defaultsSaved=true`)\n } catch (error) {\n req.body = {\n title: 'Failed to save defaults',\n error: new ErrorHandler(error).formatError(),\n ...req.body,\n }\n next()\n }\n }\n\n removeDefaultFilterValues: RequestHandler = async (req, res, next) => {\n try {\n await PersonalisationUtils.removeDefaults(FiltersType.REQUEST, res, req, this.services)\n res.redirect(req.baseUrl)\n } catch (error) {\n req.body = {\n title: 'Failed to remove defaults',\n error: new ErrorHandler(error).formatError(),\n ...req.body,\n }\n next()\n }\n }\n}\n\nexport { RequestReportController }\nexport default RequestReportController\n"],
|
|
5
|
+
"mappings": "0jBAAA,IAAAA,EAAA,GAAAC,EAAAD,EAAA,6BAAAE,EAAA,YAAAC,IAAA,eAAAC,EAAAJ,GAGA,IAAAK,EAA8B,sBAC9BC,EAAiC,qEACjCC,EAA4B,2DAC5BC,EAAyB,6CAEzB,MAAMN,CAAwB,CAK5B,YAAYO,EAAoBC,EAAoB,CAMpD,SAAsB,MAAOC,EAAKC,EAAKC,IAAS,CAC9C,GAAI,CACF,MAAMC,EAAuC,MAAM,EAAAC,QAAkB,cAAc,CACjF,IAAAJ,EACA,IAAAC,EACA,SAAU,KAAK,SACf,KAAAC,CACF,CAAC,EAEDD,EAAI,OAAO,kDAAmD,CAC5D,WAAY,KAAK,WACjB,GAAGE,CACL,CAAC,CACH,OAASE,EAAO,CACdL,EAAI,KAAK,MAAQ,iBACjBA,EAAI,KAAK,iBAAmB,QAAQA,EAAI,OAAO,IAAO,2BACtDA,EAAI,KAAK,MAAQ,IAAI,EAAAM,QAAaD,CAAK,EAAE,YAAY,EACrDH,EAAK,CACP,CACF,EAGA,UAAuB,MAAOF,EAAKC,EAAKC,IAAS,CAC/C,GAAI,CACF,MAAMK,EAAgB,MAAM,EAAAH,QAAkB,QAAQ,CACpD,IAAAJ,EACA,IAAAC,EACA,SAAU,KAAK,SACf,KAAAC,CACF,CAAC,EAEK,CAAE,YAAAM,EAAa,2BAAAC,CAA2B,EAAIF,EAEpD,GAAIC,EAAa,CACf,MAAME,EAAWD,EACb,GAAGD,CAAW,sCAAsCC,CAA0B,GAC9E,GAAGD,CAAW,UAClBP,EAAI,SAASS,CAAQ,CACvB,MACET,EAAI,IAAI,CAEZ,OAASI,EAAO,CACd,MAAMM,EAAU,EAAAP,QAAkB,sBAAsBJ,CAAG,EAE3DA,EAAI,KAAO,CACT,MAAO,iBACP,iBAAkB,QAAQA,EAAI,OAAO,IAAO,2BAC5C,MAAO,IAAI,EAAAM,QAAaD,CAAK,EAAE,YAAY,EAC3C,MAAO,GACP,QAAAM,EACA,GAAGX,EAAI,IACT,EACAE,EAAKG,CAAK,CACZ,CACF,EAEA,6BAA0C,MAAOL,EAAKC,EAAKC,IAAS,CAClE,GAAI,CACF,MAAM,EAAAU,QAAqB,aAAa,cAAY,QAASX,EAAKD,EAAK,KAAK,QAAQ,EACpFC,EAAI,SAAS,GAAGD,EAAI,OAAO,qBAAqB,CAClD,OAASK,EAAO,CACdL,EAAI,KAAO,CACT,MAAO,0BACP,MAAO,IAAI,EAAAM,QAAaD,CAAK,EAAE,YAAY,EAC3C,GAAGL,EAAI,IACT,EACAE,EAAK,CACP,CACF,EAEA,+BAA4C,MAAOF,EAAKC,EAAKC,IAAS,CACpE,GAAI,CACF,MAAM,EAAAU,QAAqB,eAAe,cAAY,QAASX,EAAKD,EAAK,KAAK,QAAQ,EACtFC,EAAI,SAASD,EAAI,OAAO,CAC1B,OAASK,EAAO,CACdL,EAAI,KAAO,CACT,MAAO,4BACP,MAAO,IAAI,EAAAM,QAAaD,CAAK,EAAE,YAAY,EAC3C,GAAGL,EAAI,IACT,EACAE,EAAK,CACP,CACF,EAvFE,KAAK,WAAaJ,EAClB,KAAK,SAAWC,CAClB,CAsFF,CAGA,IAAOP,EAAQD",
|
|
6
6
|
"names": ["controller_exports", "__export", "RequestReportController", "controller_default", "__toCommonJS", "import_utils", "import_personalisationUtils", "import_filtersTypeEnum", "import_ErrorHandler", "layoutPath", "services", "req", "res", "next", "requestRenderData", "AysncRequestUtils", "error", "ErrorHandler", "executionData", "executionId", "dataProductDefinitionsPath", "redirect", "filters", "PersonalisationUtils"]
|
|
7
7
|
}
|