@ministryofjustice/hmpps-digital-prison-reporting-frontend 4.19.0 → 4.20.1
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- 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/_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/filters/utils.js +1 -1
- package/dpr/routes/journeys/request-report/filters/utils.js.map +2 -2
- package/dpr/routes/journeys/request-report/filters/utils.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/api.d.js +1 -1
- package/dpr/types/api.d.js.map +1 -1
- package/dpr/types/api.d.ts +139 -3
- package/package.json +6 -7
|
@@ -1,7 +1,7 @@
|
|
|
1
1
|
{
|
|
2
2
|
"version": 3,
|
|
3
3
|
"sources": ["../../../../../../src/dpr/routes/journeys/request-report/filters/utils.ts"],
|
|
4
|
-
"sourcesContent": ["/* eslint-disable no-param-reassign */\nimport { Request, Response, NextFunction } from 'express'\n\n// Utils\nimport { defaultFilterValue } from '../../../../utils/Personalisation/types'\nimport FiltersFormUtils from '../../../../components/_async/async-filters-form/utils'\nimport LocalsHelper from '../../../../utils/localsHelper'\nimport FiltersUtils from '../../../../components/_filters/utils'\nimport { removeDuplicates } from '../../../../utils/reportStoreHelper'\nimport UserStoreItemBuilder from '../../../../utils/UserStoreItemBuilder'\n\n// Types\nimport type ReportingService from '../../../../services/reportingService'\nimport { ReportType, RequestFormData, RequestStatus } from '../../../../types/UserReports'\nimport type { ExecutionData, ChildReportExecutionData } from '../../../../types/ExecutionData'\nimport type { AsyncReportUtilsParams, RequestDataResult, RequestReportData } from '../../../../types/AsyncReportUtils'\nimport type {\n RenderFiltersReturnValue,\n SetQueryFromFiltersResult,\n} from '../../../../components/_async/async-filters-form/types'\nimport type { components } from '../../../../types/api'\nimport type { Services } from '../../../../types/Services'\nimport type DashboardService from '../../../../services/dashboardService'\nimport PersonalistionUtils from '../../../../utils/Personalisation/personalisationUtils'\nimport { FiltersType } from '../../../../components/_filters/filtersTypeEnum'\n\n/**\n * Updates the store with the request details\n *\n * @param {Request} req\n * @param {Response} res\n * @param {Services} services\n * @param {SetQueryFromFiltersResult} querySummaryData\n * @param {string} executionData\n * @return {*} {Promise<string>}\n */\nexport const updateStore = async ({\n req,\n res,\n services,\n queryData,\n executionData,\n childExecutionData,\n}: {\n req: Request\n res: Response\n services: Services\n queryData?: SetQueryFromFiltersResult | undefined\n executionData: ExecutionData\n childExecutionData: Array<ChildReportExecutionData>\n}): Promise<void> => {\n const { search, id, type } = req.body\n const { dprUser, definitionsPath, dpdPathFromQuery } = LocalsHelper.getValues(res)\n\n await removeDuplicates({ storeService: services.requestedReportService, userId: dprUser.id, id, search })\n await removeDuplicates({ storeService: services.recentlyViewedService, userId: dprUser.id, id, search })\n\n const requestFormData: RequestFormData = req.body\n const reportData = {\n type: requestFormData.type as ReportType,\n reportId: requestFormData.reportId,\n reportName: requestFormData.reportName,\n description: requestFormData.description,\n id: requestFormData.id,\n name: requestFormData.name,\n }\n\n let requestedReportData\n switch (type) {\n case ReportType.REPORT:\n requestedReportData = new UserStoreItemBuilder(reportData, requestFormData)\n .addExecutionData(executionData)\n .addChildExecutionData(childExecutionData)\n .addFilters(queryData?.filterData)\n .addSortData(queryData?.sortData)\n .addDefinitionsPath(definitionsPath, dpdPathFromQuery)\n .addRequestUrls(req)\n .addQuery(queryData)\n .addStatus(RequestStatus.SUBMITTED)\n .addTimestamp()\n .build()\n break\n case ReportType.DASHBOARD: {\n requestedReportData = new UserStoreItemBuilder(reportData, requestFormData)\n .addExecutionData(executionData)\n .addChildExecutionData(childExecutionData)\n .addFilters(queryData?.filterData)\n .addDefinitionsPath(definitionsPath, dpdPathFromQuery)\n .addRequestUrls(req)\n .addQuery(queryData)\n .addStatus(RequestStatus.SUBMITTED)\n .addTimestamp()\n .addMetrics(JSON.parse(req.body.sections))\n .build()\n break\n }\n default:\n break\n }\n\n if (requestedReportData) await services.requestedReportService.addReport(dprUser.id, requestedReportData)\n}\n\nasync function requestChildReports(\n childVariants: Array<components['schemas']['ChildVariantDefinition']>,\n reportingService: ReportingService,\n token: string,\n reportId: string,\n queryData?: SetQueryFromFiltersResult,\n dataProductDefinitionsPath?: string,\n): Promise<Array<ChildReportExecutionData>> {\n return Promise.all(\n childVariants.map((childVariant) =>\n reportingService\n .requestAsyncReport(token, reportId, childVariant.id, {\n ...(queryData && { queryData: queryData.query }),\n ...(dataProductDefinitionsPath && { dataProductDefinitionsPath }),\n })\n .then((response) => {\n const { executionId, tableId } = response\n if (!executionId || !tableId) {\n throw new Error('requestChildReports: No execution of tableId in response')\n }\n return { executionId, tableId, variantId: childVariant.id }\n }),\n ),\n )\n}\n\nconst requestProduct = async ({\n req,\n res,\n token,\n dashboardService,\n reportingService,\n}: {\n req: Request\n res: Response\n token: string\n dashboardService: DashboardService\n reportingService: ReportingService\n}): Promise<{\n executionData: ExecutionData\n childExecutionData: Array<ChildReportExecutionData>\n queryData?: SetQueryFromFiltersResult | undefined\n}> => {\n const { definitionsPath: dataProductDefinitionsPath, dpdPathFromQuery } = LocalsHelper.getValues(res)\n const { reportId, id, type } = req.body\n\n let fields: components['schemas']['FieldDefinition'][]\n let queryData\n let executionId\n let tableId\n let definition\n let childVariants: components['schemas']['ChildVariantDefinition'][] = []\n\n if (type === ReportType.REPORT) {\n definition = await reportingService.getDefinition(token, reportId, id, dataProductDefinitionsPath)\n\n fields = definition?.variant.specification?.fields || []\n queryData = FiltersFormUtils.setQueryFromFilters(req, fields)\n ;({ executionId, tableId } = await reportingService.requestAsyncReport(token, reportId, id, {\n ...queryData.query,\n dataProductDefinitionsPath,\n }))\n childVariants = definition.variant.childVariants ?? []\n }\n\n if (type === ReportType.DASHBOARD) {\n definition = await dashboardService.getDefinition(token, reportId, id, dataProductDefinitionsPath)\n\n fields = definition?.filterFields || []\n queryData = FiltersFormUtils.setQueryFromFilters(req, fields)\n ;({ executionId, tableId } = await dashboardService.requestAsyncDashboard(token, reportId, id, {\n ...queryData.query,\n dataProductDefinitionsPath,\n }))\n }\n\n const childExecutionData = await requestChildReports(\n childVariants,\n reportingService,\n token,\n reportId,\n queryData,\n dataProductDefinitionsPath,\n )\n\n const executionData = {\n executionId,\n tableId,\n ...(dpdPathFromQuery && { dataProductDefinitionsPath }),\n }\n\n return {\n executionData,\n childExecutionData,\n queryData,\n }\n}\n\nconst renderDashboardRequestData = async ({\n token,\n reportId,\n definitionPath,\n services,\n definition,\n}: {\n token: string\n reportId: string\n definitionPath: string\n services: Services\n definition: components['schemas']['DashboardDefinition']\n}) => {\n const productDefinitions = await services.reportingService.getDefinitions(token, definitionPath)\n const productDefinition = productDefinitions.find(\n (def: components['schemas']['ReportDefinitionSummary']) => def.id === reportId,\n )\n const reportName = productDefinition?.name\n const { name, description, sections, filterFields: fields } = definition\n\n return {\n reportName,\n name,\n description,\n sections: sections || [],\n fields: fields || [],\n }\n}\n\nconst renderReportRequestData = async (definition: components['schemas']['SingleVariantReportDefinition']) => {\n return {\n definition,\n reportName: definition.name,\n name: definition.variant.name,\n description: definition.variant.description || definition.description,\n template: definition.variant.specification,\n fields: definition?.variant?.specification?.fields || [],\n interactive: definition?.variant?.interactive,\n }\n}\n\nexport const getDefintionByType = async (req: Request, res: Response, _next: NextFunction, services: Services) => {\n const { token, definitionsPath } = LocalsHelper.getValues(res)\n const { reportId, id, variantId, type } = req.params\n\n const service = type === ReportType.REPORT ? services.reportingService : services.dashboardService\n const definition = await service.getDefinition(token, reportId, variantId || id, definitionsPath)\n\n return definition\n}\n\nconst getFilterData = async (\n req: Request,\n res: Response,\n fields: components['schemas']['FieldDefinition'][],\n interactive: boolean,\n services: Services,\n userId: string,\n) => {\n const { reportId, id } = req.params\n\n let filtersData = <RenderFiltersReturnValue>await FiltersFormUtils.renderFilters(fields, interactive)\n filtersData.filters = PersonalistionUtils.setUserContextDefaults(res, filtersData.filters)\n\n let defaultFilterValues\n if (res.locals['saveDefaultsEnabled']) {\n defaultFilterValues = await services.defaultFilterValuesService.get(userId, reportId, id, FiltersType.REQUEST)\n }\n if (defaultFilterValues) {\n filtersData = PersonalistionUtils.setFilterValuesFromSavedDefaults(\n filtersData.filters,\n filtersData.sortBy || [],\n defaultFilterValues,\n )\n }\n\n filtersData.filters = FiltersUtils.setFilterValuesFromRequest(filtersData.filters, req)\n\n return { filtersData, defaultFilterValues }\n}\n\n/**\n * Sends the request for the async report\n *\n * @param {AsyncReportUtilsParams} { req, res, services }\n * @return {*}\n */\nexport const request = async ({ req, res, services }: AsyncReportUtilsParams) => {\n const { token } = LocalsHelper.getValues(res)\n const requestArgs = { req, res, token }\n\n const { executionData, queryData, childExecutionData } = await requestProduct({\n ...requestArgs,\n dashboardService: services.dashboardService,\n reportingService: services.reportingService,\n })\n\n if (executionData) {\n await updateStore({\n req,\n res,\n services,\n queryData,\n executionData,\n childExecutionData,\n })\n }\n\n return executionData\n}\n\nexport const cancelRequest = async ({ req, res, services }: AsyncReportUtilsParams) => {\n const { token, dprUser, definitionsPath } = LocalsHelper.getValues(res)\n const { reportId, id, executionId, type } = req.params\n\n let service: ReportingService | DashboardService = services.reportingService\n if (type === ReportType.REPORT) service = services.reportingService\n if (type === ReportType.DASHBOARD) service = services.dashboardService\n\n const response = await service.cancelAsyncRequest(token, reportId, id, executionId, definitionsPath)\n\n if (response && response['cancellationSucceeded']) {\n await services.requestedReportService.updateStatus(executionId, dprUser.id, RequestStatus.ABORTED)\n }\n}\n\n/**\n * Returns the data required for rendering the async filters component\n *\n * @param {AsyncReportUtilsParams} { req, res, dataSources }\n * @return {*}\n */\nexport const renderRequest = async ({\n req,\n res,\n services,\n next,\n}: {\n req: Request\n res: Response\n next: NextFunction\n services: Services\n}): Promise<RequestDataResult | boolean> => {\n try {\n const { token, csrfToken, definitionsPath: definitionPath, dpdPathFromQuery, dprUser } = LocalsHelper.getValues(res)\n const { reportId, type, id } = req.params\n const { definition } = res.locals\n const defaultsSaved = <string>req.query['defaultsSaved']\n\n const definitionApiArgs = { token, reportId, definitionPath, services }\n\n let name\n let reportName\n let description\n let template\n let fields: components['schemas']['FieldDefinition'][] = []\n let sections\n let interactive\n let filtersData\n let defaultFilterValues: defaultFilterValue[] = []\n\n if (type === ReportType.REPORT) {\n ;({ name, reportName, description, fields, interactive } = await renderReportRequestData(definition))\n }\n\n if (type === ReportType.DASHBOARD) {\n ;({ name, reportName, description, sections, fields } = await renderDashboardRequestData({\n ...definitionApiArgs,\n definition,\n }))\n }\n\n if (fields) {\n const filterData = await getFilterData(req, res, fields, interactive || false, services, dprUser.id)\n defaultFilterValues = filterData.defaultFilterValues || defaultFilterValues\n filtersData = filterData.filtersData\n }\n\n const reportData: RequestReportData = {\n reportName,\n name,\n description,\n reportId,\n id,\n ...(dpdPathFromQuery && { definitionPath }),\n csrfToken,\n template,\n sections,\n hasDefaults: defaultFilterValues?.length > 0,\n defaultsSaved,\n type: type as ReportType,\n saveDefaultsEnabled: res.locals['saveDefaultsEnabled'],\n }\n\n return {\n title: `Request ${type}`,\n filtersDescription: `Customise your ${type} using the filters below and submit your request.`,\n filtersData,\n reportData,\n }\n } catch (error) {\n next(error)\n return false\n }\n}\n\nexport const getFiltersFromReqBody = (req: Request) => {\n return Object.keys(req.body)\n .filter((attr) => attr.includes('filters.'))\n .filter((attr) => !!req.body[attr])\n .map((attr) => {\n return { name: attr, value: req.body[attr] }\n })\n}\n\nexport default {\n request,\n cancelRequest,\n renderRequest,\n getFiltersFromReqBody,\n getDefintionByType,\n}\n"],
|
|
5
|
-
"mappings": "0jBAAA,IAAAA,GAAA,GAAAC,EAAAD,GAAA,mBAAAE,EAAA,YAAAC,GAAA,uBAAAC,EAAA,0BAAAC,EAAA,kBAAAC,EAAA,YAAAC,EAAA,gBAAAC,IAAA,eAAAC,EAAAT,IAKA,IAAAU,EAA6B,qEAC7BC,EAAyB,6CACzBD,EAAyB,oDACzBE,EAAiC,+CACjCC,EAAiC,qDAIjCC,EAA2D,yCAU3DC,EAAgC,qEAChCC,EAA4B,2DAYrB,MAAMR,EAAc,MAAO,CAChC,IAAAS,EACA,IAAAC,EACA,SAAAC,EACA,UAAAC,EACA,cAAAC,EACA,mBAAAC,CACF,IAOqB,CACnB,KAAM,CAAE,OAAAC,EAAQ,GAAAC,EAAI,KAAAC,CAAK,EAAIR,EAAI,KAC3B,CAAE,QAAAS,EAAS,gBAAAC,EAAiB,iBAAAC,CAAiB,EAAI,EAAAC,QAAa,UAAUX,CAAG,EAEjF,QAAM,oBAAiB,CAAE,aAAcC,EAAS,uBAAwB,OAAQO,EAAQ,GAAI,GAAAF,EAAI,OAAAD,CAAO,CAAC,EACxG,QAAM,oBAAiB,CAAE,aAAcJ,EAAS,sBAAuB,OAAQO,EAAQ,GAAI,GAAAF,EAAI,OAAAD,CAAO,CAAC,EAEvG,MAAMO,EAAmCb,EAAI,KACvCc,EAAa,CACjB,KAAMD,EAAgB,KACtB,SAAUA,EAAgB,SAC1B,WAAYA,EAAgB,WAC5B,YAAaA,EAAgB,YAC7B,GAAIA,EAAgB,GACpB,KAAMA,EAAgB,IACxB,EAEA,IAAIE,EACJ,OAAQP,EAAM,CACZ,KAAK,aAAW,OACdO,EAAsB,IAAI,EAAAC,QAAqBF,EAAYD,CAAe,EACvE,iBAAiBT,CAAa,EAC9B,sBAAsBC,CAAkB,EACxC,WAAWF,GAAW,UAAU,EAChC,YAAYA,GAAW,QAAQ,EAC/B,mBAAmBO,EAAiBC,CAAgB,EACpD,eAAeX,CAAG,EAClB,SAASG,CAAS,EAClB,UAAU,gBAAc,SAAS,EACjC,aAAa,EACb,MAAM,EACT,MACF,KAAK,aAAW,UAAW,CACzBY,EAAsB,IAAI,EAAAC,QAAqBF,EAAYD,CAAe,EACvE,iBAAiBT,CAAa,EAC9B,sBAAsBC,CAAkB,EACxC,WAAWF,GAAW,UAAU,EAChC,mBAAmBO,EAAiBC,CAAgB,EACpD,eAAeX,CAAG,EAClB,SAASG,CAAS,EAClB,UAAU,gBAAc,SAAS,EACjC,aAAa,EACb,WAAW,KAAK,MAAMH,EAAI,KAAK,QAAQ,CAAC,EACxC,MAAM,EACT,KACF,CACA,QACE,KACJ,CAEIe,GAAqB,MAAMb,EAAS,uBAAuB,UAAUO,EAAQ,GAAIM,CAAmB,CAC1G,EAEA,eAAeE,EACbC,EACAC,EACAC,EACAC,EACAlB,EACAmB,EAC0C,CAC1C,OAAO,QAAQ,IACbJ,EAAc,IAAKK,GACjBJ,EACG,mBAAmBC,EAAOC,EAAUE,EAAa,GAAI,CACpD,GAAIpB,
|
|
4
|
+
"sourcesContent": ["/* eslint-disable no-param-reassign */\nimport { Request, Response, NextFunction } from 'express'\n\n// Utils\nimport { defaultFilterValue } from '../../../../utils/Personalisation/types'\nimport FiltersFormUtils from '../../../../components/_async/async-filters-form/utils'\nimport LocalsHelper from '../../../../utils/localsHelper'\nimport FiltersUtils from '../../../../components/_filters/utils'\nimport { removeDuplicates } from '../../../../utils/reportStoreHelper'\nimport UserStoreItemBuilder from '../../../../utils/UserStoreItemBuilder'\n\n// Types\nimport type ReportingService from '../../../../services/reportingService'\nimport { ReportType, RequestFormData, RequestStatus } from '../../../../types/UserReports'\nimport type { ExecutionData, ChildReportExecutionData } from '../../../../types/ExecutionData'\nimport type { AsyncReportUtilsParams, RequestDataResult, RequestReportData } from '../../../../types/AsyncReportUtils'\nimport type {\n RenderFiltersReturnValue,\n SetQueryFromFiltersResult,\n} from '../../../../components/_async/async-filters-form/types'\nimport type { components } from '../../../../types/api'\nimport type { Services } from '../../../../types/Services'\nimport type DashboardService from '../../../../services/dashboardService'\nimport PersonalistionUtils from '../../../../utils/Personalisation/personalisationUtils'\nimport { FiltersType } from '../../../../components/_filters/filtersTypeEnum'\n\n/**\n * Updates the store with the request details\n *\n * @param {Request} req\n * @param {Response} res\n * @param {Services} services\n * @param {SetQueryFromFiltersResult} querySummaryData\n * @param {string} executionData\n * @return {*} {Promise<string>}\n */\nexport const updateStore = async ({\n req,\n res,\n services,\n queryData,\n executionData,\n childExecutionData,\n}: {\n req: Request\n res: Response\n services: Services\n queryData?: SetQueryFromFiltersResult | undefined\n executionData: ExecutionData\n childExecutionData: Array<ChildReportExecutionData>\n}): Promise<void> => {\n const { search, id, type } = req.body\n const { dprUser, definitionsPath, dpdPathFromQuery } = LocalsHelper.getValues(res)\n\n await removeDuplicates({ storeService: services.requestedReportService, userId: dprUser.id, id, search })\n await removeDuplicates({ storeService: services.recentlyViewedService, userId: dprUser.id, id, search })\n\n const requestFormData: RequestFormData = req.body\n const reportData = {\n type: requestFormData.type as ReportType,\n reportId: requestFormData.reportId,\n reportName: requestFormData.reportName,\n description: requestFormData.description,\n id: requestFormData.id,\n name: requestFormData.name,\n }\n\n let requestedReportData\n switch (type) {\n case ReportType.REPORT:\n requestedReportData = new UserStoreItemBuilder(reportData, requestFormData)\n .addExecutionData(executionData)\n .addChildExecutionData(childExecutionData)\n .addFilters(queryData?.filterData)\n .addSortData(queryData?.sortData)\n .addDefinitionsPath(definitionsPath, dpdPathFromQuery)\n .addRequestUrls(req)\n .addQuery(queryData)\n .addStatus(RequestStatus.SUBMITTED)\n .addTimestamp()\n .build()\n break\n case ReportType.DASHBOARD: {\n requestedReportData = new UserStoreItemBuilder(reportData, requestFormData)\n .addExecutionData(executionData)\n .addChildExecutionData(childExecutionData)\n .addFilters(queryData?.filterData)\n .addDefinitionsPath(definitionsPath, dpdPathFromQuery)\n .addRequestUrls(req)\n .addQuery(queryData)\n .addStatus(RequestStatus.SUBMITTED)\n .addTimestamp()\n .addMetrics(JSON.parse(req.body.sections))\n .build()\n break\n }\n default:\n break\n }\n\n if (requestedReportData) await services.requestedReportService.addReport(dprUser.id, requestedReportData)\n}\n\nasync function requestChildReports(\n childVariants: Array<components['schemas']['ChildVariantDefinition']>,\n reportingService: ReportingService,\n token: string,\n reportId: string,\n queryData?: SetQueryFromFiltersResult,\n dataProductDefinitionsPath?: string,\n): Promise<Array<ChildReportExecutionData>> {\n return Promise.all(\n childVariants.map((childVariant) =>\n reportingService\n .requestAsyncReport(token, reportId, childVariant.id, {\n ...(queryData && queryData.query),\n ...(dataProductDefinitionsPath && { dataProductDefinitionsPath }),\n })\n .then((response) => {\n const { executionId, tableId } = response\n if (!executionId || !tableId) {\n throw new Error('requestChildReports: No execution of tableId in response')\n }\n return { executionId, tableId, variantId: childVariant.id }\n }),\n ),\n )\n}\n\nconst requestProduct = async ({\n req,\n res,\n token,\n dashboardService,\n reportingService,\n}: {\n req: Request\n res: Response\n token: string\n dashboardService: DashboardService\n reportingService: ReportingService\n}): Promise<{\n executionData: ExecutionData\n childExecutionData: Array<ChildReportExecutionData>\n queryData?: SetQueryFromFiltersResult | undefined\n}> => {\n const { definitionsPath: dataProductDefinitionsPath, dpdPathFromQuery } = LocalsHelper.getValues(res)\n const { reportId, id, type } = req.body\n\n let fields: components['schemas']['FieldDefinition'][]\n let queryData\n let executionId\n let tableId\n let definition\n let childVariants: components['schemas']['ChildVariantDefinition'][] = []\n\n if (type === ReportType.REPORT) {\n definition = await reportingService.getDefinition(token, reportId, id, dataProductDefinitionsPath)\n\n fields = definition?.variant.specification?.fields || []\n queryData = FiltersFormUtils.setQueryFromFilters(req, fields)\n ;({ executionId, tableId } = await reportingService.requestAsyncReport(token, reportId, id, {\n ...queryData.query,\n dataProductDefinitionsPath,\n }))\n childVariants = definition.variant.childVariants ?? []\n }\n\n if (type === ReportType.DASHBOARD) {\n definition = await dashboardService.getDefinition(token, reportId, id, dataProductDefinitionsPath)\n\n fields = definition?.filterFields || []\n queryData = FiltersFormUtils.setQueryFromFilters(req, fields)\n ;({ executionId, tableId } = await dashboardService.requestAsyncDashboard(token, reportId, id, {\n ...queryData.query,\n dataProductDefinitionsPath,\n }))\n }\n\n const childExecutionData = await requestChildReports(\n childVariants,\n reportingService,\n token,\n reportId,\n queryData,\n dataProductDefinitionsPath,\n )\n\n const executionData = {\n executionId,\n tableId,\n ...(dpdPathFromQuery && { dataProductDefinitionsPath }),\n }\n\n return {\n executionData,\n childExecutionData,\n queryData,\n }\n}\n\nconst renderDashboardRequestData = async ({\n token,\n reportId,\n definitionPath,\n services,\n definition,\n}: {\n token: string\n reportId: string\n definitionPath: string\n services: Services\n definition: components['schemas']['DashboardDefinition']\n}) => {\n const productDefinitions = await services.reportingService.getDefinitions(token, definitionPath)\n const productDefinition = productDefinitions.find(\n (def: components['schemas']['ReportDefinitionSummary']) => def.id === reportId,\n )\n const reportName = productDefinition?.name\n const { name, description, sections, filterFields: fields } = definition\n\n return {\n reportName,\n name,\n description,\n sections: sections || [],\n fields: fields || [],\n }\n}\n\nconst renderReportRequestData = async (definition: components['schemas']['SingleVariantReportDefinition']) => {\n return {\n definition,\n reportName: definition.name,\n name: definition.variant.name,\n description: definition.variant.description || definition.description,\n template: definition.variant.specification,\n fields: definition?.variant?.specification?.fields || [],\n interactive: definition?.variant?.interactive,\n }\n}\n\nexport const getDefintionByType = async (req: Request, res: Response, _next: NextFunction, services: Services) => {\n const { token, definitionsPath } = LocalsHelper.getValues(res)\n const { reportId, id, variantId, type } = req.params\n\n const service = type === ReportType.REPORT ? services.reportingService : services.dashboardService\n const definition = await service.getDefinition(token, reportId, variantId || id, definitionsPath)\n\n return definition\n}\n\nconst getFilterData = async (\n req: Request,\n res: Response,\n fields: components['schemas']['FieldDefinition'][],\n interactive: boolean,\n services: Services,\n userId: string,\n) => {\n const { reportId, id } = req.params\n\n let filtersData = <RenderFiltersReturnValue>await FiltersFormUtils.renderFilters(fields, interactive)\n filtersData.filters = PersonalistionUtils.setUserContextDefaults(res, filtersData.filters)\n\n let defaultFilterValues\n if (res.locals['saveDefaultsEnabled']) {\n defaultFilterValues = await services.defaultFilterValuesService.get(userId, reportId, id, FiltersType.REQUEST)\n }\n if (defaultFilterValues) {\n filtersData = PersonalistionUtils.setFilterValuesFromSavedDefaults(\n filtersData.filters,\n filtersData.sortBy || [],\n defaultFilterValues,\n )\n }\n\n filtersData.filters = FiltersUtils.setFilterValuesFromRequest(filtersData.filters, req)\n\n return { filtersData, defaultFilterValues }\n}\n\n/**\n * Sends the request for the async report\n *\n * @param {AsyncReportUtilsParams} { req, res, services }\n * @return {*}\n */\nexport const request = async ({ req, res, services }: AsyncReportUtilsParams) => {\n const { token } = LocalsHelper.getValues(res)\n const requestArgs = { req, res, token }\n\n const { executionData, queryData, childExecutionData } = await requestProduct({\n ...requestArgs,\n dashboardService: services.dashboardService,\n reportingService: services.reportingService,\n })\n\n if (executionData) {\n await updateStore({\n req,\n res,\n services,\n queryData,\n executionData,\n childExecutionData,\n })\n }\n\n return executionData\n}\n\nexport const cancelRequest = async ({ req, res, services }: AsyncReportUtilsParams) => {\n const { token, dprUser, definitionsPath } = LocalsHelper.getValues(res)\n const { reportId, id, executionId, type } = req.params\n\n let service: ReportingService | DashboardService = services.reportingService\n if (type === ReportType.REPORT) service = services.reportingService\n if (type === ReportType.DASHBOARD) service = services.dashboardService\n\n const response = await service.cancelAsyncRequest(token, reportId, id, executionId, definitionsPath)\n\n if (response && response['cancellationSucceeded']) {\n await services.requestedReportService.updateStatus(executionId, dprUser.id, RequestStatus.ABORTED)\n }\n}\n\n/**\n * Returns the data required for rendering the async filters component\n *\n * @param {AsyncReportUtilsParams} { req, res, dataSources }\n * @return {*}\n */\nexport const renderRequest = async ({\n req,\n res,\n services,\n next,\n}: {\n req: Request\n res: Response\n next: NextFunction\n services: Services\n}): Promise<RequestDataResult | boolean> => {\n try {\n const { token, csrfToken, definitionsPath: definitionPath, dpdPathFromQuery, dprUser } = LocalsHelper.getValues(res)\n const { reportId, type, id } = req.params\n const { definition } = res.locals\n const defaultsSaved = <string>req.query['defaultsSaved']\n\n const definitionApiArgs = { token, reportId, definitionPath, services }\n\n let name\n let reportName\n let description\n let template\n let fields: components['schemas']['FieldDefinition'][] = []\n let sections\n let interactive\n let filtersData\n let defaultFilterValues: defaultFilterValue[] = []\n\n if (type === ReportType.REPORT) {\n ;({ name, reportName, description, fields, interactive } = await renderReportRequestData(definition))\n }\n\n if (type === ReportType.DASHBOARD) {\n ;({ name, reportName, description, sections, fields } = await renderDashboardRequestData({\n ...definitionApiArgs,\n definition,\n }))\n }\n\n if (fields) {\n const filterData = await getFilterData(req, res, fields, interactive || false, services, dprUser.id)\n defaultFilterValues = filterData.defaultFilterValues || defaultFilterValues\n filtersData = filterData.filtersData\n }\n\n const reportData: RequestReportData = {\n reportName,\n name,\n description,\n reportId,\n id,\n ...(dpdPathFromQuery && { definitionPath }),\n csrfToken,\n template,\n sections,\n hasDefaults: defaultFilterValues?.length > 0,\n defaultsSaved,\n type: type as ReportType,\n saveDefaultsEnabled: res.locals['saveDefaultsEnabled'],\n }\n\n return {\n title: `Request ${type}`,\n filtersDescription: `Customise your ${type} using the filters below and submit your request.`,\n filtersData,\n reportData,\n }\n } catch (error) {\n next(error)\n return false\n }\n}\n\nexport const getFiltersFromReqBody = (req: Request) => {\n return Object.keys(req.body)\n .filter((attr) => attr.includes('filters.'))\n .filter((attr) => !!req.body[attr])\n .map((attr) => {\n return { name: attr, value: req.body[attr] }\n })\n}\n\nexport default {\n request,\n cancelRequest,\n renderRequest,\n getFiltersFromReqBody,\n getDefintionByType,\n}\n"],
|
|
5
|
+
"mappings": "0jBAAA,IAAAA,GAAA,GAAAC,EAAAD,GAAA,mBAAAE,EAAA,YAAAC,GAAA,uBAAAC,EAAA,0BAAAC,EAAA,kBAAAC,EAAA,YAAAC,EAAA,gBAAAC,IAAA,eAAAC,EAAAT,IAKA,IAAAU,EAA6B,qEAC7BC,EAAyB,6CACzBD,EAAyB,oDACzBE,EAAiC,+CACjCC,EAAiC,qDAIjCC,EAA2D,yCAU3DC,EAAgC,qEAChCC,EAA4B,2DAYrB,MAAMR,EAAc,MAAO,CAChC,IAAAS,EACA,IAAAC,EACA,SAAAC,EACA,UAAAC,EACA,cAAAC,EACA,mBAAAC,CACF,IAOqB,CACnB,KAAM,CAAE,OAAAC,EAAQ,GAAAC,EAAI,KAAAC,CAAK,EAAIR,EAAI,KAC3B,CAAE,QAAAS,EAAS,gBAAAC,EAAiB,iBAAAC,CAAiB,EAAI,EAAAC,QAAa,UAAUX,CAAG,EAEjF,QAAM,oBAAiB,CAAE,aAAcC,EAAS,uBAAwB,OAAQO,EAAQ,GAAI,GAAAF,EAAI,OAAAD,CAAO,CAAC,EACxG,QAAM,oBAAiB,CAAE,aAAcJ,EAAS,sBAAuB,OAAQO,EAAQ,GAAI,GAAAF,EAAI,OAAAD,CAAO,CAAC,EAEvG,MAAMO,EAAmCb,EAAI,KACvCc,EAAa,CACjB,KAAMD,EAAgB,KACtB,SAAUA,EAAgB,SAC1B,WAAYA,EAAgB,WAC5B,YAAaA,EAAgB,YAC7B,GAAIA,EAAgB,GACpB,KAAMA,EAAgB,IACxB,EAEA,IAAIE,EACJ,OAAQP,EAAM,CACZ,KAAK,aAAW,OACdO,EAAsB,IAAI,EAAAC,QAAqBF,EAAYD,CAAe,EACvE,iBAAiBT,CAAa,EAC9B,sBAAsBC,CAAkB,EACxC,WAAWF,GAAW,UAAU,EAChC,YAAYA,GAAW,QAAQ,EAC/B,mBAAmBO,EAAiBC,CAAgB,EACpD,eAAeX,CAAG,EAClB,SAASG,CAAS,EAClB,UAAU,gBAAc,SAAS,EACjC,aAAa,EACb,MAAM,EACT,MACF,KAAK,aAAW,UAAW,CACzBY,EAAsB,IAAI,EAAAC,QAAqBF,EAAYD,CAAe,EACvE,iBAAiBT,CAAa,EAC9B,sBAAsBC,CAAkB,EACxC,WAAWF,GAAW,UAAU,EAChC,mBAAmBO,EAAiBC,CAAgB,EACpD,eAAeX,CAAG,EAClB,SAASG,CAAS,EAClB,UAAU,gBAAc,SAAS,EACjC,aAAa,EACb,WAAW,KAAK,MAAMH,EAAI,KAAK,QAAQ,CAAC,EACxC,MAAM,EACT,KACF,CACA,QACE,KACJ,CAEIe,GAAqB,MAAMb,EAAS,uBAAuB,UAAUO,EAAQ,GAAIM,CAAmB,CAC1G,EAEA,eAAeE,EACbC,EACAC,EACAC,EACAC,EACAlB,EACAmB,EAC0C,CAC1C,OAAO,QAAQ,IACbJ,EAAc,IAAKK,GACjBJ,EACG,mBAAmBC,EAAOC,EAAUE,EAAa,GAAI,CACpD,GAAIpB,GAAaA,EAAU,MAC3B,GAAImB,GAA8B,CAAE,2BAAAA,CAA2B,CACjE,CAAC,EACA,KAAME,GAAa,CAClB,KAAM,CAAE,YAAAC,EAAa,QAAAC,CAAQ,EAAIF,EACjC,GAAI,CAACC,GAAe,CAACC,EACnB,MAAM,IAAI,MAAM,0DAA0D,EAE5E,MAAO,CAAE,YAAAD,EAAa,QAAAC,EAAS,UAAWH,EAAa,EAAG,CAC5D,CAAC,CACL,CACF,CACF,CAEA,MAAMI,EAAiB,MAAO,CAC5B,IAAA3B,EACA,IAAAC,EACA,MAAAmB,EACA,iBAAAQ,EACA,iBAAAT,CACF,IAUM,CACJ,KAAM,CAAE,gBAAiBG,EAA4B,iBAAAX,CAAiB,EAAI,EAAAC,QAAa,UAAUX,CAAG,EAC9F,CAAE,SAAAoB,EAAU,GAAAd,EAAI,KAAAC,CAAK,EAAIR,EAAI,KAEnC,IAAI6B,EACA1B,EACAsB,EACAC,EACAI,EACAZ,EAAmE,CAAC,EAEpEV,IAAS,aAAW,SACtBsB,EAAa,MAAMX,EAAiB,cAAcC,EAAOC,EAAUd,EAAIe,CAA0B,EAEjGO,EAASC,GAAY,QAAQ,eAAe,QAAU,CAAC,EACvD3B,EAAY,EAAA4B,QAAiB,oBAAoB/B,EAAK6B,CAAM,EAC1D,CAAE,YAAAJ,EAAa,QAAAC,CAAQ,EAAI,MAAMP,EAAiB,mBAAmBC,EAAOC,EAAUd,EAAI,CAC1F,GAAGJ,EAAU,MACb,2BAAAmB,CACF,CAAC,EACDJ,EAAgBY,EAAW,QAAQ,eAAiB,CAAC,GAGnDtB,IAAS,aAAW,YACtBsB,EAAa,MAAMF,EAAiB,cAAcR,EAAOC,EAAUd,EAAIe,CAA0B,EAEjGO,EAASC,GAAY,cAAgB,CAAC,EACtC3B,EAAY,EAAA4B,QAAiB,oBAAoB/B,EAAK6B,CAAM,EAC1D,CAAE,YAAAJ,EAAa,QAAAC,CAAQ,EAAI,MAAME,EAAiB,sBAAsBR,EAAOC,EAAUd,EAAI,CAC7F,GAAGJ,EAAU,MACb,2BAAAmB,CACF,CAAC,GAGH,MAAMjB,EAAqB,MAAMY,EAC/BC,EACAC,EACAC,EACAC,EACAlB,EACAmB,CACF,EAQA,MAAO,CACL,cAPoB,CACpB,YAAAG,EACA,QAAAC,EACA,GAAIf,GAAoB,CAAE,2BAAAW,CAA2B,CACvD,EAIE,mBAAAjB,EACA,UAAAF,CACF,CACF,EAEM6B,EAA6B,MAAO,CACxC,MAAAZ,EACA,SAAAC,EACA,eAAAY,EACA,SAAA/B,EACA,WAAA4B,CACF,IAMM,CAKJ,MAAMI,GAJqB,MAAMhC,EAAS,iBAAiB,eAAekB,EAAOa,CAAc,GAClD,KAC1CE,GAA0DA,EAAI,KAAOd,CACxE,GACsC,KAChC,CAAE,KAAAe,EAAM,YAAAC,EAAa,SAAAC,EAAU,aAAcT,CAAO,EAAIC,EAE9D,MAAO,CACL,WAAAI,EACA,KAAAE,EACA,YAAAC,EACA,SAAUC,GAAY,CAAC,EACvB,OAAQT,GAAU,CAAC,CACrB,CACF,EAEMU,EAA0B,MAAOT,IAC9B,CACL,WAAAA,EACA,WAAYA,EAAW,KACvB,KAAMA,EAAW,QAAQ,KACzB,YAAaA,EAAW,QAAQ,aAAeA,EAAW,YAC1D,SAAUA,EAAW,QAAQ,cAC7B,OAAQA,GAAY,SAAS,eAAe,QAAU,CAAC,EACvD,YAAaA,GAAY,SAAS,WACpC,GAGW3C,EAAqB,MAAOa,EAAcC,EAAeuC,EAAqBtC,IAAuB,CAChH,KAAM,CAAE,MAAAkB,EAAO,gBAAAV,CAAgB,EAAI,EAAAE,QAAa,UAAUX,CAAG,EACvD,CAAE,SAAAoB,EAAU,GAAAd,EAAI,UAAAkC,EAAW,KAAAjC,CAAK,EAAIR,EAAI,OAK9C,OAFmB,MADHQ,IAAS,aAAW,OAASN,EAAS,iBAAmBA,EAAS,kBACjD,cAAckB,EAAOC,EAAUoB,GAAalC,EAAIG,CAAe,CAGlG,EAEMgC,GAAgB,MACpB1C,EACAC,EACA4B,EACAc,EACAzC,EACA0C,IACG,CACH,KAAM,CAAE,SAAAvB,EAAU,GAAAd,CAAG,EAAIP,EAAI,OAE7B,IAAI6C,EAAwC,MAAM,EAAAd,QAAiB,cAAcF,EAAQc,CAAW,EACpGE,EAAY,QAAU,EAAAC,QAAoB,uBAAuB7C,EAAK4C,EAAY,OAAO,EAEzF,IAAIE,EACJ,OAAI9C,EAAI,OAAO,sBACb8C,EAAsB,MAAM7C,EAAS,2BAA2B,IAAI0C,EAAQvB,EAAUd,EAAI,cAAY,OAAO,GAE3GwC,IACFF,EAAc,EAAAC,QAAoB,iCAChCD,EAAY,QACZA,EAAY,QAAU,CAAC,EACvBE,CACF,GAGFF,EAAY,QAAU,EAAAG,QAAa,2BAA2BH,EAAY,QAAS7C,CAAG,EAE/E,CAAE,YAAA6C,EAAa,oBAAAE,CAAoB,CAC5C,EAQazD,EAAU,MAAO,CAAE,IAAAU,EAAK,IAAAC,EAAK,SAAAC,CAAS,IAA8B,CAC/E,KAAM,CAAE,MAAAkB,CAAM,EAAI,EAAAR,QAAa,UAAUX,CAAG,EACtCgD,EAAc,CAAE,IAAAjD,EAAK,IAAAC,EAAK,MAAAmB,CAAM,EAEhC,CAAE,cAAAhB,EAAe,UAAAD,EAAW,mBAAAE,CAAmB,EAAI,MAAMsB,EAAe,CAC5E,GAAGsB,EACH,iBAAkB/C,EAAS,iBAC3B,iBAAkBA,EAAS,gBAC7B,CAAC,EAED,OAAIE,GACF,MAAMb,EAAY,CAChB,IAAAS,EACA,IAAAC,EACA,SAAAC,EACA,UAAAC,EACA,cAAAC,EACA,mBAAAC,CACF,CAAC,EAGID,CACT,EAEanB,EAAgB,MAAO,CAAE,IAAAe,EAAK,IAAAC,EAAK,SAAAC,CAAS,IAA8B,CACrF,KAAM,CAAE,MAAAkB,EAAO,QAAAX,EAAS,gBAAAC,CAAgB,EAAI,EAAAE,QAAa,UAAUX,CAAG,EAChE,CAAE,SAAAoB,EAAU,GAAAd,EAAI,YAAAkB,EAAa,KAAAjB,CAAK,EAAIR,EAAI,OAEhD,IAAIkD,EAA+ChD,EAAS,iBACxDM,IAAS,aAAW,SAAQ0C,EAAUhD,EAAS,kBAC/CM,IAAS,aAAW,YAAW0C,EAAUhD,EAAS,kBAEtD,MAAMsB,EAAW,MAAM0B,EAAQ,mBAAmB9B,EAAOC,EAAUd,EAAIkB,EAAaf,CAAe,EAE/Fc,GAAYA,EAAS,uBACvB,MAAMtB,EAAS,uBAAuB,aAAauB,EAAahB,EAAQ,GAAI,gBAAc,OAAO,CAErG,EAQapB,EAAgB,MAAO,CAClC,IAAAW,EACA,IAAAC,EACA,SAAAC,EACA,KAAAiD,CACF,IAK4C,CAC1C,GAAI,CACF,KAAM,CAAE,MAAA/B,EAAO,UAAAgC,EAAW,gBAAiBnB,EAAgB,iBAAAtB,EAAkB,QAAAF,CAAQ,EAAI,EAAAG,QAAa,UAAUX,CAAG,EAC7G,CAAE,SAAAoB,EAAU,KAAAb,EAAM,GAAAD,CAAG,EAAIP,EAAI,OAC7B,CAAE,WAAA8B,CAAW,EAAI7B,EAAI,OACrBoD,EAAwBrD,EAAI,MAAM,cAElCsD,EAAoB,CAAE,MAAAlC,EAAO,SAAAC,EAAU,eAAAY,EAAgB,SAAA/B,CAAS,EAEtE,IAAIkC,EACAF,EACAG,EACAkB,EACA1B,EAAqD,CAAC,EACtDS,EACAK,EACAE,EACAE,EAA4C,CAAC,EAajD,GAXIvC,IAAS,aAAW,SACpB,CAAE,KAAA4B,EAAM,WAAAF,EAAY,YAAAG,EAAa,OAAAR,EAAQ,YAAAc,CAAY,EAAI,MAAMJ,EAAwBT,CAAU,GAGjGtB,IAAS,aAAW,YACpB,CAAE,KAAA4B,EAAM,WAAAF,EAAY,YAAAG,EAAa,SAAAC,EAAU,OAAAT,CAAO,EAAI,MAAMG,EAA2B,CACvF,GAAGsB,EACH,WAAAxB,CACF,CAAC,GAGCD,EAAQ,CACV,MAAM2B,EAAa,MAAMd,GAAc1C,EAAKC,EAAK4B,EAAQc,GAAe,GAAOzC,EAAUO,EAAQ,EAAE,EACnGsC,EAAsBS,EAAW,qBAAuBT,EACxDF,EAAcW,EAAW,WAC3B,CAEA,MAAM1C,EAAgC,CACpC,WAAAoB,EACA,KAAAE,EACA,YAAAC,EACA,SAAAhB,EACA,GAAAd,EACA,GAAII,GAAoB,CAAE,eAAAsB,CAAe,EACzC,UAAAmB,EACA,SAAAG,EACA,SAAAjB,EACA,YAAaS,GAAqB,OAAS,EAC3C,cAAAM,EACA,KAAM7C,EACN,oBAAqBP,EAAI,OAAO,mBAClC,EAEA,MAAO,CACL,MAAO,WAAWO,CAAI,GACtB,mBAAoB,kBAAkBA,CAAI,oDAC1C,YAAAqC,EACA,WAAA/B,CACF,CACF,OAAS2C,EAAO,CACd,OAAAN,EAAKM,CAAK,EACH,EACT,CACF,EAEarE,EAAyBY,GAC7B,OAAO,KAAKA,EAAI,IAAI,EACxB,OAAQ0D,GAASA,EAAK,SAAS,UAAU,CAAC,EAC1C,OAAQA,GAAS,CAAC,CAAC1D,EAAI,KAAK0D,CAAI,CAAC,EACjC,IAAKA,IACG,CAAE,KAAMA,EAAM,MAAO1D,EAAI,KAAK0D,CAAI,CAAE,EAC5C,EAGL,IAAOxE,GAAQ,CACb,QAAAI,EACA,cAAAL,EACA,cAAAI,EACA,sBAAAD,EACA,mBAAAD,CACF",
|
|
6
6
|
"names": ["utils_exports", "__export", "cancelRequest", "utils_default", "getDefintionByType", "getFiltersFromReqBody", "renderRequest", "request", "updateStore", "__toCommonJS", "import_utils", "import_localsHelper", "import_reportStoreHelper", "import_UserStoreItemBuilder", "import_UserReports", "import_personalisationUtils", "import_filtersTypeEnum", "req", "res", "services", "queryData", "executionData", "childExecutionData", "search", "id", "type", "dprUser", "definitionsPath", "dpdPathFromQuery", "LocalsHelper", "requestFormData", "reportData", "requestedReportData", "UserStoreItemBuilder", "requestChildReports", "childVariants", "reportingService", "token", "reportId", "dataProductDefinitionsPath", "childVariant", "response", "executionId", "tableId", "requestProduct", "dashboardService", "fields", "definition", "FiltersFormUtils", "renderDashboardRequestData", "definitionPath", "reportName", "def", "name", "description", "sections", "renderReportRequestData", "_next", "variantId", "getFilterData", "interactive", "userId", "filtersData", "PersonalistionUtils", "defaultFilterValues", "FiltersUtils", "requestArgs", "service", "next", "csrfToken", "defaultsSaved", "definitionApiArgs", "template", "filterData", "error", "attr"]
|
|
7
7
|
}
|
|
@@ -113,7 +113,7 @@ async function requestChildReports(
|
|
|
113
113
|
childVariants.map((childVariant) =>
|
|
114
114
|
reportingService
|
|
115
115
|
.requestAsyncReport(token, reportId, childVariant.id, {
|
|
116
|
-
...(queryData &&
|
|
116
|
+
...(queryData && queryData.query),
|
|
117
117
|
...(dataProductDefinitionsPath && { dataProductDefinitionsPath }),
|
|
118
118
|
})
|
|
119
119
|
.then((response) => {
|
|
@@ -1,2 +1,2 @@
|
|
|
1
|
-
"use strict";var $=Object.create;var
|
|
1
|
+
"use strict";var $=Object.create;var n=Object.defineProperty;var S=Object.getOwnPropertyDescriptor;var q=Object.getOwnPropertyNames;var O=Object.getPrototypeOf,A=Object.prototype.hasOwnProperty;var E=(e,r)=>{for(var t in r)n(e,t,{get:r[t],enumerable:!0})},R=(e,r,t,o)=>{if(r&&typeof r=="object"||typeof r=="function")for(let s of q(r))!A.call(e,s)&&s!==t&&n(e,s,{get:()=>r[s],enumerable:!(o=S(r,s))||o.enumerable});return e};var u=(e,r,t)=>(t=e!=null?$(O(e)):{},R(r||!e||!e.__esModule?n(t,"default",{value:e,enumerable:!0}):t,e)),B=e=>R(n({},"__esModule",{value:!0}),e);var N={};E(N,{Redirects:()=>x,RequestReportRoutes:()=>C,Routes:()=>g});module.exports=B(N);var d=require("express"),l=u(require("./controller")),f=u(require("./filters/routes")),I=u(require("./status/routes")),c=u(require("../../../middleware/reportAuthoriser"));function g({layoutPath:e,services:r}){const t=(0,d.Router)({mergeParams:!0}),o=new l.default(e,r);return t.post("/:type/:reportId/:id/:executionId/cancel",o.CANCEL),t.use("/:type/:reportId/:id/filters",(0,c.default)(r,e),(0,f.default)({layoutPath:e,services:r}),o.errorHandler),t.use("/:type/:reportId/:id/:executionId/status",(0,c.default)(r,e),(0,I.default)({layoutPath:e,services:r}),o.errorHandler),t.get("/:type/:reportId/:id/:executionId/cancel/failed",(s,p,a)=>{const m=JSON.parse(s.flash("ERROR_BODY")?.[0]||""),i=JSON.parse(s.flash("ERROR_PARAMS")?.[0]||""),y=s.flash("ERROR");p.render("dpr/routes/journeys/view-report/error",{layoutPath:e,...m&&{...m},...i&&{...i},error:y,params:i})}),t}function x(){const e=(0,d.Router)({mergeParams:!0});return e.get("/async/:type/:reportId/:id/request",(r,t)=>{const{type:o,reportId:s,id:p}=r.params;t.redirect(`${t.locals.nestedBaseUrl}/dpr/request-report/${o}/${s}/${p}/filters`)}),e.get("/async/:type/:reportId/:id/request/:executionId",(r,t)=>{const{type:o,reportId:s,id:p,executionId:a}=r.params;t.redirect(`${t.locals.nestedBaseUrl}/dpr/request-report/${o}/${s}/${p}/${a}/status`)}),e}const C=({services:e,path:r,layoutPath:t})=>{const o=(0,d.Router)({mergeParams:!0});return o.use(r,g({services:e,layoutPath:t})),o.use("/",x()),o};0&&(module.exports={Redirects,RequestReportRoutes,Routes});
|
|
2
2
|
//# sourceMappingURL=routes.js.map
|
|
@@ -1,7 +1,7 @@
|
|
|
1
1
|
{
|
|
2
2
|
"version": 3,
|
|
3
3
|
"sources": ["../../../../../src/dpr/routes/journeys/request-report/routes.ts"],
|
|
4
|
-
"sourcesContent": ["/* eslint-disable no-param-reassign */\nimport { Router } from 'express'\nimport { Services } from '../../../types/Services'\nimport RequestReportController from './controller'\n\n// Routes\nimport requestReportRoutes from './filters/routes'\nimport requestStatusRoutes from './status/routes'\n\n// middleware\nimport reportAuthoriser from '../../../middleware/reportAuthoriser'\n\nexport function Routes({ layoutPath, services }: { services: Services; layoutPath: string }) {\n const router = Router({ mergeParams: true })\n\n const controller = new RequestReportController(layoutPath, services)\n router.use(\n `/:type/:reportId/:id/filters`,\n reportAuthoriser(services, layoutPath),\n requestReportRoutes({ layoutPath, services }),\n controller.errorHandler,\n )\n router.use(\n `/:type/:reportId/:id/:executionId/status`,\n reportAuthoriser(services, layoutPath),\n requestStatusRoutes({ layoutPath, services }),\n controller.errorHandler,\n )\n\n return router\n}\n\nexport function Redirects() {\n const router = Router({ mergeParams: true })\n\n // Request route redirect\n router.get(`/async/:type/:reportId/:id/request`, (req, res) => {\n const { type, reportId, id } = req.params\n res.redirect(`${res.locals['nestedBaseUrl']}/dpr/request-report/${type}/${reportId}/${id}/filters`)\n })\n\n // Status route redirect\n router.get(`/async/:type/:reportId/:id/request/:executionId`, (req, res) => {\n const { type, reportId, id, executionId } = req.params\n res.redirect(`${res.locals['nestedBaseUrl']}/dpr/request-report/${type}/${reportId}/${id}/${executionId}/status`)\n })\n\n return router\n}\n\nexport const RequestReportRoutes = ({\n services,\n path,\n layoutPath,\n}: {\n services: Services\n path: string\n layoutPath: string\n}) => {\n const router = Router({ mergeParams: true })\n router.use(path, Routes({ services, layoutPath }))\n router.use('/', Redirects())\n\n return router\n}\n"],
|
|
5
|
-
"mappings": "0jBAAA,IAAAA,EAAA,GAAAC,EAAAD,EAAA,eAAAE,EAAA,wBAAAC,EAAA,WAAAC,IAAA,eAAAC,EAAAL,GACA,IAAAM,EAAuB,mBAEvBC,EAAoC,2BAGpCC,EAAgC,+BAChCA,EAAgC,8BAGhCC,EAA6B,mDAEtB,SAASL,EAAO,CAAE,WAAAM,EAAY,SAAAC,CAAS,EAA+C,CAC3F,MAAMC,KAAS,UAAO,CAAE,YAAa,EAAK,CAAC,EAErCC,EAAa,IAAI,EAAAC,QAAwBJ,EAAYC,CAAQ,
|
|
6
|
-
"names": ["routes_exports", "__export", "Redirects", "RequestReportRoutes", "Routes", "__toCommonJS", "import_express", "import_controller", "import_routes", "import_reportAuthoriser", "layoutPath", "services", "router", "controller", "RequestReportController", "reportAuthoriser", "requestReportRoutes", "requestStatusRoutes", "req", "res", "type", "reportId", "id", "executionId", "path"]
|
|
4
|
+
"sourcesContent": ["/* eslint-disable no-param-reassign */\nimport { Router } from 'express'\nimport { Services } from '../../../types/Services'\nimport RequestReportController from './controller'\n\n// Routes\nimport requestReportRoutes from './filters/routes'\nimport requestStatusRoutes from './status/routes'\n\n// middleware\nimport reportAuthoriser from '../../../middleware/reportAuthoriser'\n\nexport function Routes({ layoutPath, services }: { services: Services; layoutPath: string }) {\n const router = Router({ mergeParams: true })\n\n const controller = new RequestReportController(layoutPath, services)\n\n router.post(`/:type/:reportId/:id/:executionId/cancel`, controller.CANCEL)\n router.use(\n `/:type/:reportId/:id/filters`,\n reportAuthoriser(services, layoutPath),\n requestReportRoutes({ layoutPath, services }),\n controller.errorHandler,\n )\n router.use(\n `/:type/:reportId/:id/:executionId/status`,\n reportAuthoriser(services, layoutPath),\n requestStatusRoutes({ layoutPath, services }),\n controller.errorHandler,\n )\n\n router.get(`/:type/:reportId/:id/:executionId/cancel/failed`, (req, res, _next) => {\n const body = JSON.parse(req.flash('ERROR_BODY')?.[0] || '')\n const params = JSON.parse(req.flash('ERROR_PARAMS')?.[0] || '')\n const error = req.flash('ERROR')\n\n res.render(`dpr/routes/journeys/view-report/error`, {\n layoutPath,\n ...(body && { ...body }),\n ...(params && { ...params }),\n error,\n params,\n })\n })\n\n return router\n}\n\nexport function Redirects() {\n const router = Router({ mergeParams: true })\n\n // Request route redirect\n router.get(`/async/:type/:reportId/:id/request`, (req, res) => {\n const { type, reportId, id } = req.params\n res.redirect(`${res.locals['nestedBaseUrl']}/dpr/request-report/${type}/${reportId}/${id}/filters`)\n })\n\n // Status route redirect\n router.get(`/async/:type/:reportId/:id/request/:executionId`, (req, res) => {\n const { type, reportId, id, executionId } = req.params\n res.redirect(`${res.locals['nestedBaseUrl']}/dpr/request-report/${type}/${reportId}/${id}/${executionId}/status`)\n })\n\n return router\n}\n\nexport const RequestReportRoutes = ({\n services,\n path,\n layoutPath,\n}: {\n services: Services\n path: string\n layoutPath: string\n}) => {\n const router = Router({ mergeParams: true })\n router.use(path, Routes({ services, layoutPath }))\n router.use('/', Redirects())\n\n return router\n}\n"],
|
|
5
|
+
"mappings": "0jBAAA,IAAAA,EAAA,GAAAC,EAAAD,EAAA,eAAAE,EAAA,wBAAAC,EAAA,WAAAC,IAAA,eAAAC,EAAAL,GACA,IAAAM,EAAuB,mBAEvBC,EAAoC,2BAGpCC,EAAgC,+BAChCA,EAAgC,8BAGhCC,EAA6B,mDAEtB,SAASL,EAAO,CAAE,WAAAM,EAAY,SAAAC,CAAS,EAA+C,CAC3F,MAAMC,KAAS,UAAO,CAAE,YAAa,EAAK,CAAC,EAErCC,EAAa,IAAI,EAAAC,QAAwBJ,EAAYC,CAAQ,EAEnE,OAAAC,EAAO,KAAK,2CAA4CC,EAAW,MAAM,EACzED,EAAO,IACL,kCACA,EAAAG,SAAiBJ,EAAUD,CAAU,KACrC,EAAAM,SAAoB,CAAE,WAAAN,EAAY,SAAAC,CAAS,CAAC,EAC5CE,EAAW,YACb,EACAD,EAAO,IACL,8CACA,EAAAG,SAAiBJ,EAAUD,CAAU,KACrC,EAAAO,SAAoB,CAAE,WAAAP,EAAY,SAAAC,CAAS,CAAC,EAC5CE,EAAW,YACb,EAEAD,EAAO,IAAI,kDAAmD,CAACM,EAAKC,EAAKC,IAAU,CACjF,MAAMC,EAAO,KAAK,MAAMH,EAAI,MAAM,YAAY,IAAI,CAAC,GAAK,EAAE,EACpDI,EAAS,KAAK,MAAMJ,EAAI,MAAM,cAAc,IAAI,CAAC,GAAK,EAAE,EACxDK,EAAQL,EAAI,MAAM,OAAO,EAE/BC,EAAI,OAAO,wCAAyC,CAClD,WAAAT,EACA,GAAIW,GAAQ,CAAE,GAAGA,CAAK,EACtB,GAAIC,GAAU,CAAE,GAAGA,CAAO,EAC1B,MAAAC,EACA,OAAAD,CACF,CAAC,CACH,CAAC,EAEMV,CACT,CAEO,SAASV,GAAY,CAC1B,MAAMU,KAAS,UAAO,CAAE,YAAa,EAAK,CAAC,EAG3C,OAAAA,EAAO,IAAI,qCAAsC,CAACM,EAAKC,IAAQ,CAC7D,KAAM,CAAE,KAAAK,EAAM,SAAAC,EAAU,GAAAC,CAAG,EAAIR,EAAI,OACnCC,EAAI,SAAS,GAAGA,EAAI,OAAO,aAAgB,uBAAuBK,CAAI,IAAIC,CAAQ,IAAIC,CAAE,UAAU,CACpG,CAAC,EAGDd,EAAO,IAAI,kDAAmD,CAACM,EAAKC,IAAQ,CAC1E,KAAM,CAAE,KAAAK,EAAM,SAAAC,EAAU,GAAAC,EAAI,YAAAC,CAAY,EAAIT,EAAI,OAChDC,EAAI,SAAS,GAAGA,EAAI,OAAO,aAAgB,uBAAuBK,CAAI,IAAIC,CAAQ,IAAIC,CAAE,IAAIC,CAAW,SAAS,CAClH,CAAC,EAEMf,CACT,CAEO,MAAMT,EAAsB,CAAC,CAClC,SAAAQ,EACA,KAAAiB,EACA,WAAAlB,CACF,IAIM,CACJ,MAAME,KAAS,UAAO,CAAE,YAAa,EAAK,CAAC,EAC3C,OAAAA,EAAO,IAAIgB,EAAMxB,EAAO,CAAE,SAAAO,EAAU,WAAAD,CAAW,CAAC,CAAC,EACjDE,EAAO,IAAI,IAAKV,EAAU,CAAC,EAEpBU,CACT",
|
|
6
|
+
"names": ["routes_exports", "__export", "Redirects", "RequestReportRoutes", "Routes", "__toCommonJS", "import_express", "import_controller", "import_routes", "import_reportAuthoriser", "layoutPath", "services", "router", "controller", "RequestReportController", "reportAuthoriser", "requestReportRoutes", "requestStatusRoutes", "req", "res", "_next", "body", "params", "error", "type", "reportId", "id", "executionId", "path"]
|
|
7
7
|
}
|
|
@@ -14,6 +14,8 @@ export function Routes({ layoutPath, services }: { services: Services; layoutPat
|
|
|
14
14
|
const router = Router({ mergeParams: true })
|
|
15
15
|
|
|
16
16
|
const controller = new RequestReportController(layoutPath, services)
|
|
17
|
+
|
|
18
|
+
router.post(`/:type/:reportId/:id/:executionId/cancel`, controller.CANCEL)
|
|
17
19
|
router.use(
|
|
18
20
|
`/:type/:reportId/:id/filters`,
|
|
19
21
|
reportAuthoriser(services, layoutPath),
|
|
@@ -27,6 +29,20 @@ export function Routes({ layoutPath, services }: { services: Services; layoutPat
|
|
|
27
29
|
controller.errorHandler,
|
|
28
30
|
)
|
|
29
31
|
|
|
32
|
+
router.get(`/:type/:reportId/:id/:executionId/cancel/failed`, (req, res, _next) => {
|
|
33
|
+
const body = JSON.parse(req.flash('ERROR_BODY')?.[0] || '')
|
|
34
|
+
const params = JSON.parse(req.flash('ERROR_PARAMS')?.[0] || '')
|
|
35
|
+
const error = req.flash('ERROR')
|
|
36
|
+
|
|
37
|
+
res.render(`dpr/routes/journeys/view-report/error`, {
|
|
38
|
+
layoutPath,
|
|
39
|
+
...(body && { ...body }),
|
|
40
|
+
...(params && { ...params }),
|
|
41
|
+
error,
|
|
42
|
+
params,
|
|
43
|
+
})
|
|
44
|
+
})
|
|
45
|
+
|
|
30
46
|
return router
|
|
31
47
|
}
|
|
32
48
|
|
|
@@ -1,2 +1,2 @@
|
|
|
1
|
-
"use strict";var p=Object.create;var
|
|
1
|
+
"use strict";var p=Object.create;var i=Object.defineProperty;var y=Object.getOwnPropertyDescriptor;var h=Object.getOwnPropertyNames;var v=Object.getPrototypeOf,m=Object.prototype.hasOwnProperty;var f=(r,t)=>{for(var e in t)i(r,e,{get:t[e],enumerable:!0})},u=(r,t,e,o)=>{if(t&&typeof t=="object"||typeof t=="function")for(let s of h(t))!m.call(r,s)&&s!==e&&i(r,s,{get:()=>t[s],enumerable:!(o=y(t,s))||o.enumerable});return r};var a=(r,t,e)=>(e=r!=null?p(v(r)):{},u(t||!r||!r.__esModule?i(e,"default",{value:r,enumerable:!0}):e,r)),P=r=>u(i({},"__esModule",{value:!0}),r);var g={};f(g,{RequestStatusController:()=>n,default:()=>R});module.exports=P(g);var c=a(require("./utils")),l=a(require("../../../../components/user-reports/requested/utils")),d=a(require("../../../../utils/ErrorHandler"));class n{constructor(t,e){this.GET=async(t,e,o)=>{try{const s=await c.default.renderPolling({req:t,res:e,services:this.services,next:o});e.render("dpr/routes/journeys/request-report/status/view",{layoutPath:this.layoutPath,...s})}catch(s){t.body.title="Failed to retrieve report status",t.body.errorDescription="We were unable to retrieve the report status:",t.body.error=new d.default(s).formatError(),o()}};this.POST=async(t,e,o)=>{try{const s=await l.default.getRequestStatus({req:t,res:e,services:this.services});e.send({status:s.status})}catch{e.send({status:"FAILED"})}};this.layoutPath=t,this.services=e}}var R=n;0&&(module.exports={RequestStatusController});
|
|
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/status/controller.ts"],
|
|
4
|
-
"sourcesContent": ["import { RequestHandler } from 'express'\nimport { Services } from '../../../../types/Services'\nimport AsyncPollingUtils from './utils'\nimport
|
|
5
|
-
"mappings": "0jBAAA,IAAAA,EAAA,GAAAC,EAAAD,EAAA,6BAAAE,EAAA,YAAAC,IAAA,eAAAC,EAAAJ,GAEA,IAAAK,EAA8B,sBAC9BA,
|
|
6
|
-
"names": ["controller_exports", "__export", "RequestStatusController", "controller_default", "__toCommonJS", "import_utils", "import_ErrorHandler", "layoutPath", "services", "req", "res", "next", "pollingRenderData", "AsyncPollingUtils", "error", "ErrorHandler", "_next", "response", "AsyncRequestListUtils"
|
|
4
|
+
"sourcesContent": ["import { RequestHandler } from 'express'\nimport { Services } from '../../../../types/Services'\nimport AsyncPollingUtils from './utils'\nimport AsyncRequestListUtils from '../../../../components/user-reports/requested/utils'\nimport ErrorHandler from '../../../../utils/ErrorHandler'\n\nclass RequestStatusController {\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 status page\n GET: RequestHandler = async (req, res, next) => {\n try {\n const pollingRenderData = await AsyncPollingUtils.renderPolling({\n req,\n res,\n services: this.services,\n next,\n })\n res.render(`dpr/routes/journeys/request-report/status/view`, {\n layoutPath: this.layoutPath,\n ...pollingRenderData,\n })\n } catch (error) {\n req.body.title = 'Failed to retrieve report status'\n req.body.errorDescription = 'We were unable to retrieve the report status:'\n req.body.error = new ErrorHandler(error).formatError()\n next()\n }\n }\n\n // Poll request status\n POST: RequestHandler = async (req, res, _next) => {\n try {\n const response = await AsyncRequestListUtils.getRequestStatus({ req, res, services: this.services })\n res.send({ status: response.status })\n } catch (error) {\n res.send({ status: 'FAILED' })\n }\n }\n}\n\nexport { RequestStatusController }\nexport default RequestStatusController\n"],
|
|
5
|
+
"mappings": "0jBAAA,IAAAA,EAAA,GAAAC,EAAAD,EAAA,6BAAAE,EAAA,YAAAC,IAAA,eAAAC,EAAAJ,GAEA,IAAAK,EAA8B,sBAC9BA,EAAkC,kEAClCC,EAAyB,6CAEzB,MAAMJ,CAAwB,CAK5B,YAAYK,EAAoBC,EAAoB,CAMpD,SAAsB,MAAOC,EAAKC,EAAKC,IAAS,CAC9C,GAAI,CACF,MAAMC,EAAoB,MAAM,EAAAC,QAAkB,cAAc,CAC9D,IAAAJ,EACA,IAAAC,EACA,SAAU,KAAK,SACf,KAAAC,CACF,CAAC,EACDD,EAAI,OAAO,iDAAkD,CAC3D,WAAY,KAAK,WACjB,GAAGE,CACL,CAAC,CACH,OAASE,EAAO,CACdL,EAAI,KAAK,MAAQ,mCACjBA,EAAI,KAAK,iBAAmB,gDAC5BA,EAAI,KAAK,MAAQ,IAAI,EAAAM,QAAaD,CAAK,EAAE,YAAY,EACrDH,EAAK,CACP,CACF,EAGA,UAAuB,MAAOF,EAAKC,EAAKM,IAAU,CAChD,GAAI,CACF,MAAMC,EAAW,MAAM,EAAAC,QAAsB,iBAAiB,CAAE,IAAAT,EAAK,IAAAC,EAAK,SAAU,KAAK,QAAS,CAAC,EACnGA,EAAI,KAAK,CAAE,OAAQO,EAAS,MAAO,CAAC,CACtC,MAAgB,CACdP,EAAI,KAAK,CAAE,OAAQ,QAAS,CAAC,CAC/B,CACF,EAjCE,KAAK,WAAaH,EAClB,KAAK,SAAWC,CAClB,CAgCF,CAGA,IAAOL,EAAQD",
|
|
6
|
+
"names": ["controller_exports", "__export", "RequestStatusController", "controller_default", "__toCommonJS", "import_utils", "import_ErrorHandler", "layoutPath", "services", "req", "res", "next", "pollingRenderData", "AsyncPollingUtils", "error", "ErrorHandler", "_next", "response", "AsyncRequestListUtils"]
|
|
7
7
|
}
|
|
@@ -1,7 +1,6 @@
|
|
|
1
1
|
import { RequestHandler } from 'express'
|
|
2
2
|
import { Services } from '../../../../types/Services'
|
|
3
3
|
import AsyncPollingUtils from './utils'
|
|
4
|
-
import AsyncRequestUtils from '../filters/utils'
|
|
5
4
|
import AsyncRequestListUtils from '../../../../components/user-reports/requested/utils'
|
|
6
5
|
import ErrorHandler from '../../../../utils/ErrorHandler'
|
|
7
6
|
|
|
@@ -45,22 +44,6 @@ class RequestStatusController {
|
|
|
45
44
|
res.send({ status: 'FAILED' })
|
|
46
45
|
}
|
|
47
46
|
}
|
|
48
|
-
|
|
49
|
-
DELETE: RequestHandler = async (req, res, next) => {
|
|
50
|
-
try {
|
|
51
|
-
await AsyncRequestUtils.cancelRequest({
|
|
52
|
-
req,
|
|
53
|
-
res,
|
|
54
|
-
services: this.services,
|
|
55
|
-
})
|
|
56
|
-
res.end()
|
|
57
|
-
} catch (error) {
|
|
58
|
-
req.body.title = 'Failed to abort request'
|
|
59
|
-
req.body.errorDescription = 'We were unable to abort the report request for the following reason:'
|
|
60
|
-
req.body.error = new ErrorHandler(error).formatError()
|
|
61
|
-
next()
|
|
62
|
-
}
|
|
63
|
-
}
|
|
64
47
|
}
|
|
65
48
|
|
|
66
49
|
export { RequestStatusController }
|
|
@@ -1,2 +1,2 @@
|
|
|
1
|
-
"use strict";var
|
|
1
|
+
"use strict";var a=Object.create;var u=Object.defineProperty;var l=Object.getOwnPropertyDescriptor;var p=Object.getOwnPropertyNames;var f=Object.getPrototypeOf,S=Object.prototype.hasOwnProperty;var g=(r,t)=>{for(var e in t)u(r,e,{get:t[e],enumerable:!0})},n=(r,t,e,o)=>{if(t&&typeof t=="object"||typeof t=="function")for(let s of p(t))!S.call(r,s)&&s!==e&&u(r,s,{get:()=>t[s],enumerable:!(o=l(t,s))||o.enumerable});return r};var v=(r,t,e)=>(e=r!=null?a(f(r)):{},n(t||!r||!r.__esModule?u(e,"default",{value:r,enumerable:!0}):e,r)),P=r=>n(u({},"__esModule",{value:!0}),r);var R={};g(R,{default:()=>x,routes:()=>c});module.exports=P(R);var i=require("express"),m=v(require("./controller"));function c({layoutPath:r,services:t}){const e=(0,i.Router)({mergeParams:!0}),o=new m.default(r,t);return e.get("/",o.GET),e.post("/",o.POST),e}var x=c;0&&(module.exports={routes});
|
|
2
2
|
//# sourceMappingURL=routes.js.map
|
|
@@ -1,7 +1,7 @@
|
|
|
1
1
|
{
|
|
2
2
|
"version": 3,
|
|
3
3
|
"sources": ["../../../../../../src/dpr/routes/journeys/request-report/status/routes.ts"],
|
|
4
|
-
"sourcesContent": ["/* eslint-disable no-param-reassign */\nimport { Router } from 'express'\nimport RequestStatusController from './controller'\nimport { Services } from '../../../../types/Services'\n\nexport function routes({ layoutPath, services }: { layoutPath: string; services: Services }) {\n const router = Router({ mergeParams: true })\n const controller = new RequestStatusController(layoutPath, services)\n\n router.get(`/`, controller.GET)\n router.post(`/`, controller.POST)\n
|
|
5
|
-
"mappings": "0jBAAA,IAAAA,EAAA,GAAAC,EAAAD,EAAA,aAAAE,EAAA,WAAAC,IAAA,eAAAC,EAAAJ,GACA,IAAAK,EAAuB,mBACvBC,EAAoC,2BAG7B,SAASH,EAAO,CAAE,WAAAI,EAAY,SAAAC,CAAS,EAA+C,CAC3F,MAAMC,KAAS,UAAO,CAAE,YAAa,EAAK,CAAC,EACrCC,EAAa,IAAI,EAAAC,QAAwBJ,EAAYC,CAAQ,EAEnE,OAAAC,EAAO,IAAI,IAAKC,EAAW,GAAG,EAC9BD,EAAO,KAAK,IAAKC,EAAW,IAAI,
|
|
4
|
+
"sourcesContent": ["/* eslint-disable no-param-reassign */\nimport { Router } from 'express'\nimport RequestStatusController from './controller'\nimport { Services } from '../../../../types/Services'\n\nexport function routes({ layoutPath, services }: { layoutPath: string; services: Services }) {\n const router = Router({ mergeParams: true })\n const controller = new RequestStatusController(layoutPath, services)\n\n router.get(`/`, controller.GET)\n router.post(`/`, controller.POST)\n\n return router\n}\n\nexport default routes\n"],
|
|
5
|
+
"mappings": "0jBAAA,IAAAA,EAAA,GAAAC,EAAAD,EAAA,aAAAE,EAAA,WAAAC,IAAA,eAAAC,EAAAJ,GACA,IAAAK,EAAuB,mBACvBC,EAAoC,2BAG7B,SAASH,EAAO,CAAE,WAAAI,EAAY,SAAAC,CAAS,EAA+C,CAC3F,MAAMC,KAAS,UAAO,CAAE,YAAa,EAAK,CAAC,EACrCC,EAAa,IAAI,EAAAC,QAAwBJ,EAAYC,CAAQ,EAEnE,OAAAC,EAAO,IAAI,IAAKC,EAAW,GAAG,EAC9BD,EAAO,KAAK,IAAKC,EAAW,IAAI,EAEzBD,CACT,CAEA,IAAOP,EAAQC",
|
|
6
6
|
"names": ["routes_exports", "__export", "routes_default", "routes", "__toCommonJS", "import_express", "import_controller", "layoutPath", "services", "router", "controller", "RequestStatusController"]
|
|
7
7
|
}
|
|
@@ -1,2 +1,2 @@
|
|
|
1
|
-
"use strict";var
|
|
1
|
+
"use strict";var v=Object.create;var y=Object.defineProperty;var H=Object.getOwnPropertyDescriptor;var Q=Object.getOwnPropertyNames;var G=Object.getPrototypeOf,J=Object.prototype.hasOwnProperty;var W=(e,t)=>{for(var r in t)y(e,r,{get:t[r],enumerable:!0})},E=(e,t,r,a)=>{if(t&&typeof t=="object"||typeof t=="function")for(let o of Q(t))!J.call(e,o)&&o!==r&&y(e,o,{get:()=>t[o],enumerable:!(a=H(t,o))||a.enumerable});return e};var d=(e,t,r)=>(r=e!=null?v(G(e)):{},E(t||!e||!e.__esModule?y(r,"default",{value:e,enumerable:!0}):r,e)),X=e=>E(y({},"__esModule",{value:!0}),e);var K={};W(K,{default:()=>z,renderAsyncDashboard:()=>O});module.exports=X(K);var m=require("../../../../../components/_dashboards/dashboard-visualisation/types"),S=require("../../../../../types/UserReports"),b=d(require("../../../../../components/_charts/utils")),F=d(require("../../../../../utils/definitionUtils")),C=d(require("../../../../../components/user-reports/utils")),B=d(require("../../../../../components/_dashboards/dashboard-list/utils")),g=d(require("../../../../../components/_filters/utils")),L=d(require("../../../../../components/_dashboards/scorecard/utils")),I=d(require("../../../../../components/_dashboards/scorecard/Scorecard")),N=d(require("../../../../../components/_reports/report-actions/utils")),x=d(require("../../../../../types/ReportQuery")),A=d(require("../../../../../utils/localsHelper")),M=require("../../../../../components/_filters/filtersTypeEnum");const w=(e,t,r)=>{const a=t.name,{name:o}=e,i=r?.url?.request?.fullUrl,c=r?.executionId;let s={};return i&&(s={share:{reportName:a,name:o,url:i},copy:{url:i}},c&&(s={...s,refresh:{url:i,executionId:c}})),N.default.getActions(s)},V=async({req:e,res:t,services:r,queryData:a})=>{const{token:o}=A.default.getValues(t),{reportId:i,id:c}=e.params,s=e.query.dataProductDefinitionsPath,p=await r.dashboardService.getDefinition(o,i,c,s,a),n=await F.default.getReportSummary(i,r.reportingService,o,s),u=await g.default.getFilters({fields:p.filterFields||[],req:e,filtersType:M.FiltersType.INTERACTIVE}),f=g.default.setRequestQueryFromFilterValues(u.filters);return{query:new x.default({fields:p.filterFields||[],queryParams:f,definitionsPath:s,reportType:S.ReportType.DASHBOARD}).toRecordWithFilterPrefix(!0),filters:u,dashboardDefinition:p,reportDefinition:n}},P=(e,t,r)=>e.sections.map(a=>{const{id:o,display:i,description:c}=a;let s=!1;const p=a.visualisations.map(n=>{const{type:u,display:f,description:D,id:R}=n;let l;switch(u){case m.DashboardVisualisationType.LIST:l=B.default.createList(n,t);break;case m.DashboardVisualisationType.SCORECARD:s=!0,l=new I.default(t,n).build();break;case m.DashboardVisualisationType.SCORECARD_GROUP:l=new I.default(t,n,!0).build();break;case m.DashboardVisualisationType.BAR:case m.DashboardVisualisationType.LINE:case m.DashboardVisualisationType.DONUT:{l=b.default.createChart(n,t);break}case m.DashboardVisualisationType.MATRIX_TIMESERIES:{l=b.default.createMatrixChart(n,t,r);break}case m.DashboardVisualisationType.BAR_TIMESERIES:case m.DashboardVisualisationType.LINE_TIMESERIES:{l=b.default.createTimeseriesCharts(n,t);break}default:break}return{id:R,title:f||"",description:D||"",type:u,data:l}});return s&&L.default.mergeScorecardsIntoGroup(p),{id:o,title:i||"",description:c||"",visualisations:p}}),j=async(e,t,r,a,o,i)=>{const{requestedReportService:c}=e,s=await c.getReportByTableId(t,r);return a&&a.length&&s&&C.default.updateLastViewed({services:e,reportStateData:s,userId:r,req:o,filters:i}),s},O=async({req:e,res:t,services:r})=>{const{token:a,csrfToken:o,dprUser:i,nestedBaseUrl:c}=A.default.getValues(t),{reportId:s,id:p,tableId:n}=e.params,{bookmarkService:u,requestedReportService:f}=r,{id:D}=i;let R=await f.getReportByTableId(n,D);const l=R?.query?.data,{query:U,filters:q,reportDefinition:T,dashboardDefinition:h}=await V({req:e,res:t,services:r,queryData:l}),_=(await r.dashboardService.getAsyncDashboard(a,p,s,n,U)).flat(),k=P(h,_,U);return f&&(R=await j(r,n,i.id,k,e,q.filters)),{dashboardData:{token:a,id:p,reportId:s,name:h.name,description:h.description,reportName:T.name,bookmarked:await u.isBookmarked(p,s,i.id),nestedBaseUrl:c,csrfToken:o,sections:k,filters:q,type:S.ReportType.DASHBOARD,actions:w(h,T,R)}}};var z={renderAsyncDashboard:O,getDefinitionData:V,getSections:P,setDashboardActions:w};0&&(module.exports={renderAsyncDashboard});
|
|
2
2
|
//# sourceMappingURL=utils.js.map
|
|
@@ -1,7 +1,7 @@
|
|
|
1
1
|
{
|
|
2
2
|
"version": 3,
|
|
3
3
|
"sources": ["../../../../../../../src/dpr/routes/journeys/view-report/async/dashboard/utils.ts"],
|
|
4
|
-
"sourcesContent": ["import { Request, Response } from 'express'\nimport { Services } from '../../../../../types/Services'\nimport Dict = NodeJS.Dict\nimport {\n DashboardSection,\n DashboardVisualisation,\n DashboardVisualisationType,\n} from '../../../../../components/_dashboards/dashboard-visualisation/types'\nimport type { AsyncReportUtilsParams } from '../../../../../types/AsyncReportUtils'\n\nimport type { DashboardDataResponse } from '../../../../../types/Metrics'\nimport type { RequestedReport } from '../../../../../types/UserReports'\nimport { ReportType } from '../../../../../types/UserReports'\nimport type { components } from '../../../../../types/api'\n\nimport ChartUtils from '../../../../../components/_charts/utils'\nimport DefinitionUtils from '../../../../../utils/definitionUtils'\nimport UserReportsUtils from '../../../../../components/user-reports/utils'\nimport DashboardListUtils from '../../../../../components/_dashboards/dashboard-list/utils'\nimport FilterUtils from '../../../../../components/_filters/utils'\nimport ScorecardsUtils from '../../../../../components/_dashboards/scorecard/utils'\nimport ScorecardVisualisation from '../../../../../components/_dashboards/scorecard/Scorecard'\nimport ReportActionsUtils from '../../../../../components/_reports/report-actions/utils'\nimport ReportQuery from '../../../../../types/ReportQuery'\nimport LocalsHelper from '../../../../../utils/localsHelper'\nimport { FilterValue } from '../../../../../components/_filters/types'\nimport { FiltersType } from '../../../../../components/_filters/filtersTypeEnum'\n\nconst setDashboardActions = (\n dashboardDefinition: components['schemas']['DashboardDefinition'],\n reportDefinition: components['schemas']['ReportDefinitionSummary'],\n requestData?: RequestedReport,\n) => {\n const reportName = reportDefinition.name\n const { name } = dashboardDefinition\n const actionsUrl = requestData?.url?.request?.fullUrl\n const executionId = requestData?.executionId\n\n let actions = {}\n if (actionsUrl) {\n actions = {\n share: {\n reportName,\n name,\n url: actionsUrl,\n },\n copy: {\n url: actionsUrl,\n },\n }\n if (executionId) {\n actions = {\n ...actions,\n refresh: {\n url: actionsUrl,\n executionId,\n },\n }\n }\n }\n\n return ReportActionsUtils.getActions(actions)\n}\n\nconst getDefinitionData = async ({\n req,\n res,\n services,\n queryData,\n}: {\n req: Request\n res: Response\n services: Services\n queryData
|
|
5
|
-
"mappings": "0jBAAA,IAAAA,EAAA,GAAAC,EAAAD,EAAA,aAAAE,EAAA,yBAAAC,IAAA,eAAAC,EAAAJ,GAGA,IAAAK,EAIO,+EAKPC,EAA2B,4CAG3BC,EAAuB,sDACvBC,EAA4B,mDAC5BD,EAA6B,2DAC7BA,EAA+B,yEAC/BA,EAAwB,uDACxBA,EAA4B,oEAC5BE,EAAmC,wEACnCF,EAA+B,sEAC/BG,EAAwB,+CACxBC,EAAyB,gDAEzBC,EAA4B,8DAE5B,MAAMC,EAAsB,CAC1BC,EACAC,EACAC,IACG,CACH,MAAMC,EAAaF,EAAiB,KAC9B,CAAE,KAAAG,CAAK,EAAIJ,EACXK,EAAaH,GAAa,KAAK,SAAS,QACxCI,EAAcJ,GAAa,YAEjC,IAAIK,EAAU,CAAC,EACf,OAAIF,IACFE,EAAU,CACR,MAAO,CACL,WAAAJ,EACA,KAAAC,EACA,IAAKC,CACP,EACA,KAAM,CACJ,IAAKA,CACP,CACF,EACIC,IACFC,EAAU,CACR,GAAGA,EACH,QAAS,CACP,IAAKF,EACL,YAAAC,CACF,CACF,IAIG,EAAAE,QAAmB,WAAWD,CAAO,CAC9C,EAEME,EAAoB,MAAO,CAC/B,IAAAC,EACA,IAAAC,EACA,SAAAC,EACA,UAAAC,CACF,IAKM,CACJ,KAAM,CAAE,MAAAC,CAAM,EAAI,EAAAC,QAAa,UAAUJ,CAAG,EACtC,CAAE,SAAAK,EAAU,GAAAC,CAAG,EAAIP,EAAI,OACvBQ,EAAqCR,EAAI,MAAM,2BAG/CV,
|
|
4
|
+
"sourcesContent": ["import { Request, Response } from 'express'\nimport { Services } from '../../../../../types/Services'\nimport Dict = NodeJS.Dict\nimport {\n DashboardSection,\n DashboardVisualisation,\n DashboardVisualisationType,\n} from '../../../../../components/_dashboards/dashboard-visualisation/types'\nimport type { AsyncReportUtilsParams } from '../../../../../types/AsyncReportUtils'\n\nimport type { DashboardDataResponse } from '../../../../../types/Metrics'\nimport type { RequestedReport } from '../../../../../types/UserReports'\nimport { ReportType } from '../../../../../types/UserReports'\nimport type { components } from '../../../../../types/api'\n\nimport ChartUtils from '../../../../../components/_charts/utils'\nimport DefinitionUtils from '../../../../../utils/definitionUtils'\nimport UserReportsUtils from '../../../../../components/user-reports/utils'\nimport DashboardListUtils from '../../../../../components/_dashboards/dashboard-list/utils'\nimport FilterUtils from '../../../../../components/_filters/utils'\nimport ScorecardsUtils from '../../../../../components/_dashboards/scorecard/utils'\nimport ScorecardVisualisation from '../../../../../components/_dashboards/scorecard/Scorecard'\nimport ReportActionsUtils from '../../../../../components/_reports/report-actions/utils'\nimport ReportQuery from '../../../../../types/ReportQuery'\nimport LocalsHelper from '../../../../../utils/localsHelper'\nimport { FilterValue } from '../../../../../components/_filters/types'\nimport { FiltersType } from '../../../../../components/_filters/filtersTypeEnum'\n\nconst setDashboardActions = (\n dashboardDefinition: components['schemas']['DashboardDefinition'],\n reportDefinition: components['schemas']['ReportDefinitionSummary'],\n requestData?: RequestedReport,\n) => {\n const reportName = reportDefinition.name\n const { name } = dashboardDefinition\n const actionsUrl = requestData?.url?.request?.fullUrl\n const executionId = requestData?.executionId\n\n let actions = {}\n if (actionsUrl) {\n actions = {\n share: {\n reportName,\n name,\n url: actionsUrl,\n },\n copy: {\n url: actionsUrl,\n },\n }\n if (executionId) {\n actions = {\n ...actions,\n refresh: {\n url: actionsUrl,\n executionId,\n },\n }\n }\n }\n\n return ReportActionsUtils.getActions(actions)\n}\n\nconst getDefinitionData = async ({\n req,\n res,\n services,\n queryData,\n}: {\n req: Request\n res: Response\n services: Services\n queryData?: Dict<string | string[]> | undefined\n}) => {\n const { token } = LocalsHelper.getValues(res)\n const { reportId, id } = req.params\n const dataProductDefinitionsPath = <string>req.query['dataProductDefinitionsPath']\n\n // Dashboard Definition,\n const dashboardDefinition = await services.dashboardService.getDefinition(\n token,\n reportId,\n id,\n dataProductDefinitionsPath,\n queryData,\n )\n\n // Report summary data\n const reportDefinition = await DefinitionUtils.getReportSummary(\n reportId,\n services.reportingService,\n token,\n <string>dataProductDefinitionsPath,\n )\n\n // Get the filters\n const filtersData = await FilterUtils.getFilters({\n fields: dashboardDefinition.filterFields || [],\n req,\n filtersType: FiltersType.INTERACTIVE,\n })\n\n const filtersQuery = FilterUtils.setRequestQueryFromFilterValues(filtersData.filters)\n\n // Create the query\n const query = new ReportQuery({\n fields: dashboardDefinition.filterFields || [],\n queryParams: filtersQuery,\n definitionsPath: <string>dataProductDefinitionsPath,\n reportType: ReportType.DASHBOARD,\n }).toRecordWithFilterPrefix(true)\n\n return {\n query,\n filters: filtersData,\n dashboardDefinition,\n reportDefinition,\n }\n}\n\nconst getSections = (\n dashboardDefinition: components['schemas']['DashboardDefinition'],\n dashboardData: DashboardDataResponse[],\n query: Record<string, string | string[]>,\n): DashboardSection[] => {\n return dashboardDefinition.sections.map((section: components['schemas']['DashboardSectionDefinition']) => {\n const { id, display: title, description } = section\n\n let hasScorecard = false\n const visualisations: DashboardVisualisation[] = section.visualisations.map(\n (visDefinition: components['schemas']['DashboardVisualisationDefinition']) => {\n const { type, display, description: visDescription, id: visId } = visDefinition\n\n let data: DashboardVisualisation['data'] | undefined\n\n switch (type) {\n case DashboardVisualisationType.LIST:\n data = DashboardListUtils.createList(visDefinition, dashboardData)\n break\n\n case DashboardVisualisationType.SCORECARD:\n hasScorecard = true\n data = new ScorecardVisualisation(dashboardData, visDefinition).build()\n break\n\n case DashboardVisualisationType.SCORECARD_GROUP:\n data = new ScorecardVisualisation(dashboardData, visDefinition, true).build()\n break\n\n case DashboardVisualisationType.BAR:\n case DashboardVisualisationType.LINE:\n case DashboardVisualisationType.DONUT: {\n data = ChartUtils.createChart(visDefinition, dashboardData)\n break\n }\n case DashboardVisualisationType.MATRIX_TIMESERIES: {\n data = ChartUtils.createMatrixChart(visDefinition, dashboardData, query)\n break\n }\n case DashboardVisualisationType.BAR_TIMESERIES:\n case DashboardVisualisationType.LINE_TIMESERIES: {\n data = ChartUtils.createTimeseriesCharts(visDefinition, dashboardData)\n break\n }\n default:\n break\n }\n\n return {\n id: visId,\n title: display || '',\n description: visDescription || '',\n type,\n data,\n }\n },\n )\n\n if (hasScorecard) ScorecardsUtils.mergeScorecardsIntoGroup(visualisations)\n\n return { id, title: title || '', description: description || '', visualisations }\n })\n}\n\nconst updateStore = async (\n services: Services,\n tableId: string,\n userId: string,\n sections: DashboardSection[],\n req: Request,\n filters: FilterValue[],\n): Promise<RequestedReport | undefined> => {\n const { requestedReportService } = services\n const dashboardRequestData = await requestedReportService.getReportByTableId(tableId, userId)\n\n // Add to recently viewed\n if (sections && sections.length && dashboardRequestData) {\n UserReportsUtils.updateLastViewed({\n services,\n reportStateData: dashboardRequestData,\n userId,\n req,\n filters,\n })\n }\n\n return dashboardRequestData\n}\n\nexport const renderAsyncDashboard = async ({ req, res, services }: AsyncReportUtilsParams) => {\n const { token, csrfToken, dprUser, nestedBaseUrl } = LocalsHelper.getValues(res)\n const { reportId, id, tableId } = req.params\n const { bookmarkService, requestedReportService } = services\n const { id: userId } = dprUser\n\n let requestData: RequestedReport | undefined = await requestedReportService.getReportByTableId(tableId, userId)\n const queryData = requestData?.query?.data\n\n // Get the definition Data\n const { query, filters, reportDefinition, dashboardDefinition } = await getDefinitionData({\n req,\n res,\n services,\n queryData,\n })\n\n // Get the results data\n const dashboardData: DashboardDataResponse[][] = await services.dashboardService.getAsyncDashboard(\n token,\n id,\n reportId,\n tableId,\n query,\n )\n\n const flattenedData: DashboardDataResponse[] = dashboardData.flat()\n\n // Get the dashboard parts\n const sections: DashboardSection[] = getSections(dashboardDefinition, flattenedData, query)\n\n // Update the store\n if (requestedReportService) {\n requestData = await updateStore(services, tableId, dprUser.id, sections, req, filters.filters)\n }\n\n return {\n dashboardData: {\n token,\n id,\n reportId,\n name: dashboardDefinition.name,\n description: dashboardDefinition.description,\n reportName: reportDefinition.name,\n bookmarked: await bookmarkService.isBookmarked(id, reportId, dprUser.id),\n nestedBaseUrl,\n csrfToken,\n sections,\n filters,\n type: ReportType.DASHBOARD,\n actions: setDashboardActions(dashboardDefinition, reportDefinition, requestData),\n },\n }\n}\n\nexport default {\n renderAsyncDashboard,\n getDefinitionData,\n getSections,\n setDashboardActions,\n}\n"],
|
|
5
|
+
"mappings": "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",
|
|
6
6
|
"names": ["utils_exports", "__export", "utils_default", "renderAsyncDashboard", "__toCommonJS", "import_types", "import_UserReports", "import_utils", "import_definitionUtils", "import_Scorecard", "import_ReportQuery", "import_localsHelper", "import_filtersTypeEnum", "setDashboardActions", "dashboardDefinition", "reportDefinition", "requestData", "reportName", "name", "actionsUrl", "executionId", "actions", "ReportActionsUtils", "getDefinitionData", "req", "res", "services", "queryData", "token", "LocalsHelper", "reportId", "id", "dataProductDefinitionsPath", "DefinitionUtils", "filtersData", "FilterUtils", "filtersQuery", "ReportQuery", "getSections", "dashboardData", "query", "section", "title", "description", "hasScorecard", "visualisations", "visDefinition", "type", "display", "visDescription", "visId", "data", "DashboardListUtils", "ScorecardVisualisation", "ChartUtils", "ScorecardsUtils", "updateStore", "tableId", "userId", "sections", "filters", "requestedReportService", "dashboardRequestData", "UserReportsUtils", "csrfToken", "dprUser", "nestedBaseUrl", "bookmarkService", "flattenedData"]
|
|
7
7
|
}
|
|
@@ -71,15 +71,20 @@ const getDefinitionData = async ({
|
|
|
71
71
|
req: Request
|
|
72
72
|
res: Response
|
|
73
73
|
services: Services
|
|
74
|
-
queryData
|
|
74
|
+
queryData?: Dict<string | string[]> | undefined
|
|
75
75
|
}) => {
|
|
76
76
|
const { token } = LocalsHelper.getValues(res)
|
|
77
77
|
const { reportId, id } = req.params
|
|
78
78
|
const dataProductDefinitionsPath = <string>req.query['dataProductDefinitionsPath']
|
|
79
79
|
|
|
80
80
|
// Dashboard Definition,
|
|
81
|
-
const dashboardDefinition
|
|
82
|
-
|
|
81
|
+
const dashboardDefinition = await services.dashboardService.getDefinition(
|
|
82
|
+
token,
|
|
83
|
+
reportId,
|
|
84
|
+
id,
|
|
85
|
+
dataProductDefinitionsPath,
|
|
86
|
+
queryData,
|
|
87
|
+
)
|
|
83
88
|
|
|
84
89
|
// Report summary data
|
|
85
90
|
const reportDefinition = await DefinitionUtils.getReportSummary(
|
|
@@ -247,7 +252,7 @@ export const renderAsyncDashboard = async ({ req, res, services }: AsyncReportUt
|
|
|
247
252
|
name: dashboardDefinition.name,
|
|
248
253
|
description: dashboardDefinition.description,
|
|
249
254
|
reportName: reportDefinition.name,
|
|
250
|
-
bookmarked:
|
|
255
|
+
bookmarked: await bookmarkService.isBookmarked(id, reportId, dprUser.id),
|
|
251
256
|
nestedBaseUrl,
|
|
252
257
|
csrfToken,
|
|
253
258
|
sections,
|
|
@@ -260,4 +265,7 @@ export const renderAsyncDashboard = async ({ req, res, services }: AsyncReportUt
|
|
|
260
265
|
|
|
261
266
|
export default {
|
|
262
267
|
renderAsyncDashboard,
|
|
268
|
+
getDefinitionData,
|
|
269
|
+
getSections,
|
|
270
|
+
setDashboardActions,
|
|
263
271
|
}
|
|
@@ -0,0 +1,2 @@
|
|
|
1
|
+
"use strict";var y=Object.create;var a=Object.defineProperty;var p=Object.getOwnPropertyDescriptor;var u=Object.getOwnPropertyNames;var b=Object.getPrototypeOf,m=Object.prototype.hasOwnProperty;var f=(e,r)=>{for(var t in r)a(e,t,{get:r[t],enumerable:!0})},l=(e,r,t,s)=>{if(r&&typeof r=="object"||typeof r=="function")for(let o of u(r))!m.call(e,o)&&o!==t&&a(e,o,{get:()=>r[o],enumerable:!(s=p(r,o))||s.enumerable});return e};var i=(e,r,t)=>(t=e!=null?y(b(e)):{},l(r||!e||!e.__esModule?a(t,"default",{value:e,enumerable:!0}):t,e)),v=e=>l(a({},"__esModule",{value:!0}),e);var D={};f(D,{ViewSyncDashboardController:()=>n,default:()=>w});module.exports=v(D);var d=i(require("../../../../../utils/ErrorHandler")),c=i(require("./utils")),h=i(require("../../utils"));class n{constructor(r,t){this.GET=async(r,t,s)=>{try{const o=await c.default.renderSyncDashboard({req:r,res:t,services:this.services});t.render("dpr/routes/journeys/view-report/dashboard",{layoutPath:this.layoutPath,...o})}catch(o){r.body.title="Dashboard Failed",r.body.errorDescription="We were unable to show this dashboard for the following reason:",r.body.error=new d.default(o).formatError(),s()}};this.applyFilters=async(r,t,s)=>{await h.default.applyDashboardInteractiveQuery(r,t,this.services,"filters")};this.layoutPath=r,this.services=t}}var w=n;0&&(module.exports={ViewSyncDashboardController});
|
|
2
|
+
//# sourceMappingURL=controller.js.map
|
|
@@ -0,0 +1,7 @@
|
|
|
1
|
+
{
|
|
2
|
+
"version": 3,
|
|
3
|
+
"sources": ["../../../../../../../src/dpr/routes/journeys/view-report/sync/dashboard/controller.ts"],
|
|
4
|
+
"sourcesContent": ["import { RequestHandler } from 'express'\nimport ErrorHandler from '../../../../../utils/ErrorHandler'\nimport { Services } from '../../../../../types/Services'\nimport SyncDashboardUtils from './utils'\nimport ViewReportUtils from '../../utils'\n\nclass ViewSyncDashboardController {\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 GET: RequestHandler = async (req, res, next) => {\n try {\n const renderData = await SyncDashboardUtils.renderSyncDashboard({ req, res, services: this.services })\n\n res.render(`dpr/routes/journeys/view-report/dashboard`, {\n layoutPath: this.layoutPath,\n ...renderData,\n })\n } catch (error) {\n req.body.title = `Dashboard Failed`\n req.body.errorDescription = 'We were unable to show this dashboard for the following reason:'\n req.body.error = new ErrorHandler(error).formatError()\n next()\n }\n }\n\n applyFilters: RequestHandler = async (req, res, _next) => {\n await ViewReportUtils.applyDashboardInteractiveQuery(req, res, this.services, 'filters')\n }\n}\n\nexport { ViewSyncDashboardController }\nexport default ViewSyncDashboardController\n"],
|
|
5
|
+
"mappings": "0jBAAA,IAAAA,EAAA,GAAAC,EAAAD,EAAA,iCAAAE,EAAA,YAAAC,IAAA,eAAAC,EAAAJ,GACA,IAAAK,EAAyB,gDAEzBC,EAA+B,sBAC/BA,EAA4B,0BAE5B,MAAMJ,CAA4B,CAKhC,YAAYK,EAAoBC,EAAoB,CAKpD,SAAsB,MAAOC,EAAKC,EAAKC,IAAS,CAC9C,GAAI,CACF,MAAMC,EAAa,MAAM,EAAAC,QAAmB,oBAAoB,CAAE,IAAAJ,EAAK,IAAAC,EAAK,SAAU,KAAK,QAAS,CAAC,EAErGA,EAAI,OAAO,4CAA6C,CACtD,WAAY,KAAK,WACjB,GAAGE,CACL,CAAC,CACH,OAASE,EAAO,CACdL,EAAI,KAAK,MAAQ,mBACjBA,EAAI,KAAK,iBAAmB,kEAC5BA,EAAI,KAAK,MAAQ,IAAI,EAAAM,QAAaD,CAAK,EAAE,YAAY,EACrDH,EAAK,CACP,CACF,EAEA,kBAA+B,MAAOF,EAAKC,EAAKM,IAAU,CACxD,MAAM,EAAAC,QAAgB,+BAA+BR,EAAKC,EAAK,KAAK,SAAU,SAAS,CACzF,EAtBE,KAAK,WAAaH,EAClB,KAAK,SAAWC,CAClB,CAqBF,CAGA,IAAOL,EAAQD",
|
|
6
|
+
"names": ["controller_exports", "__export", "ViewSyncDashboardController", "controller_default", "__toCommonJS", "import_ErrorHandler", "import_utils", "layoutPath", "services", "req", "res", "next", "renderData", "SyncDashboardUtils", "error", "ErrorHandler", "_next", "ViewReportUtils"]
|
|
7
|
+
}
|
|
@@ -0,0 +1,39 @@
|
|
|
1
|
+
import { RequestHandler } from 'express'
|
|
2
|
+
import ErrorHandler from '../../../../../utils/ErrorHandler'
|
|
3
|
+
import { Services } from '../../../../../types/Services'
|
|
4
|
+
import SyncDashboardUtils from './utils'
|
|
5
|
+
import ViewReportUtils from '../../utils'
|
|
6
|
+
|
|
7
|
+
class ViewSyncDashboardController {
|
|
8
|
+
layoutPath: string
|
|
9
|
+
|
|
10
|
+
services: Services
|
|
11
|
+
|
|
12
|
+
constructor(layoutPath: string, services: Services) {
|
|
13
|
+
this.layoutPath = layoutPath
|
|
14
|
+
this.services = services
|
|
15
|
+
}
|
|
16
|
+
|
|
17
|
+
GET: RequestHandler = async (req, res, next) => {
|
|
18
|
+
try {
|
|
19
|
+
const renderData = await SyncDashboardUtils.renderSyncDashboard({ req, res, services: this.services })
|
|
20
|
+
|
|
21
|
+
res.render(`dpr/routes/journeys/view-report/dashboard`, {
|
|
22
|
+
layoutPath: this.layoutPath,
|
|
23
|
+
...renderData,
|
|
24
|
+
})
|
|
25
|
+
} catch (error) {
|
|
26
|
+
req.body.title = `Dashboard Failed`
|
|
27
|
+
req.body.errorDescription = 'We were unable to show this dashboard for the following reason:'
|
|
28
|
+
req.body.error = new ErrorHandler(error).formatError()
|
|
29
|
+
next()
|
|
30
|
+
}
|
|
31
|
+
}
|
|
32
|
+
|
|
33
|
+
applyFilters: RequestHandler = async (req, res, _next) => {
|
|
34
|
+
await ViewReportUtils.applyDashboardInteractiveQuery(req, res, this.services, 'filters')
|
|
35
|
+
}
|
|
36
|
+
}
|
|
37
|
+
|
|
38
|
+
export { ViewSyncDashboardController }
|
|
39
|
+
export default ViewSyncDashboardController
|
|
@@ -0,0 +1,2 @@
|
|
|
1
|
+
"use strict";var c=Object.create;var i=Object.defineProperty;var m=Object.getOwnPropertyDescriptor;var u=Object.getOwnPropertyNames;var f=Object.getPrototypeOf,y=Object.prototype.hasOwnProperty;var g=(r,e)=>{for(var t in e)i(r,t,{get:e[t],enumerable:!0})},l=(r,e,t,o)=>{if(e&&typeof e=="object"||typeof e=="function")for(let s of u(e))!y.call(r,s)&&s!==t&&i(r,s,{get:()=>e[s],enumerable:!(o=m(e,s))||o.enumerable});return r};var v=(r,e,t)=>(t=r!=null?c(f(r)):{},l(e||!r||!r.__esModule?i(t,"default",{value:r,enumerable:!0}):t,r)),S=r=>l(i({},"__esModule",{value:!0}),r);var h={};g(h,{default:()=>d,routes:()=>a});module.exports=S(h);var n=require("express"),p=v(require("./controller"));function a({layoutPath:r,services:e}){const t=(0,n.Router)({mergeParams:!0}),o=new p.default(r,e);return t.get(["/"],o.GET),t.post("/apply-filters",o.applyFilters),t}var d=a;0&&(module.exports={routes});
|
|
2
|
+
//# sourceMappingURL=routes.js.map
|
|
@@ -0,0 +1,7 @@
|
|
|
1
|
+
{
|
|
2
|
+
"version": 3,
|
|
3
|
+
"sources": ["../../../../../../../src/dpr/routes/journeys/view-report/sync/dashboard/routes.ts"],
|
|
4
|
+
"sourcesContent": ["/* eslint-disable no-param-reassign */\nimport { Router } from 'express'\nimport ViewSyncDashboardController from './controller'\nimport { Services } from '../../../../../types/Services'\n\nexport function routes({ layoutPath, services }: { layoutPath: string; services: Services }) {\n const router = Router({ mergeParams: true })\n const controller = new ViewSyncDashboardController(layoutPath, services)\n\n router.get([`/`], controller.GET)\n\n // Interactive controls\n router.post('/apply-filters', controller.applyFilters)\n\n return router\n}\n\nexport default routes\n"],
|
|
5
|
+
"mappings": "0jBAAA,IAAAA,EAAA,GAAAC,EAAAD,EAAA,aAAAE,EAAA,WAAAC,IAAA,eAAAC,EAAAJ,GACA,IAAAK,EAAuB,mBACvBC,EAAwC,2BAGjC,SAASH,EAAO,CAAE,WAAAI,EAAY,SAAAC,CAAS,EAA+C,CAC3F,MAAMC,KAAS,UAAO,CAAE,YAAa,EAAK,CAAC,EACrCC,EAAa,IAAI,EAAAC,QAA4BJ,EAAYC,CAAQ,EAEvE,OAAAC,EAAO,IAAI,CAAC,GAAG,EAAGC,EAAW,GAAG,EAGhCD,EAAO,KAAK,iBAAkBC,EAAW,YAAY,EAE9CD,CACT,CAEA,IAAOP,EAAQC",
|
|
6
|
+
"names": ["routes_exports", "__export", "routes_default", "routes", "__toCommonJS", "import_express", "import_controller", "layoutPath", "services", "router", "controller", "ViewSyncDashboardController"]
|
|
7
|
+
}
|
|
@@ -0,0 +1,18 @@
|
|
|
1
|
+
/* eslint-disable no-param-reassign */
|
|
2
|
+
import { Router } from 'express'
|
|
3
|
+
import ViewSyncDashboardController from './controller'
|
|
4
|
+
import { Services } from '../../../../../types/Services'
|
|
5
|
+
|
|
6
|
+
export function routes({ layoutPath, services }: { layoutPath: string; services: Services }) {
|
|
7
|
+
const router = Router({ mergeParams: true })
|
|
8
|
+
const controller = new ViewSyncDashboardController(layoutPath, services)
|
|
9
|
+
|
|
10
|
+
router.get([`/`], controller.GET)
|
|
11
|
+
|
|
12
|
+
// Interactive controls
|
|
13
|
+
router.post('/apply-filters', controller.applyFilters)
|
|
14
|
+
|
|
15
|
+
return router
|
|
16
|
+
}
|
|
17
|
+
|
|
18
|
+
export default routes
|
|
@@ -0,0 +1,2 @@
|
|
|
1
|
+
"use strict";var V=Object.create;var y=Object.defineProperty;var q=Object.getOwnPropertyDescriptor;var I=Object.getOwnPropertyNames;var B=Object.getPrototypeOf,N=Object.prototype.hasOwnProperty;var x=(e,t)=>{for(var r in t)y(e,r,{get:t[r],enumerable:!0})},g=(e,t,r,s)=>{if(t&&typeof t=="object"||typeof t=="function")for(let o of I(t))!N.call(e,o)&&o!==r&&y(e,o,{get:()=>t[o],enumerable:!(s=q(t,o))||s.enumerable});return e};var c=(e,t,r)=>(r=e!=null?V(B(e)):{},g(t||!e||!e.__esModule?y(r,"default",{value:e,enumerable:!0}):r,e)),F=e=>g(y({},"__esModule",{value:!0}),e);var T={};x(T,{default:()=>Q,renderSyncDashboard:()=>w,setActions:()=>U});module.exports=F(T);var m=require("../../../../../types/UserReports"),h=c(require("../../../../../components/_filters/filters-selected/utils")),R=c(require("../../../../../utils/localsHelper")),b=c(require("../../../../../utils/UserStoreItemBuilder")),S=c(require("../../async/dashboard/utils")),A=c(require("../../../../../components/_reports/report-actions/utils"));const H=async({req:e,services:t,reportName:r,name:s,description:o,reportId:d,id:u,userId:a,filters:n})=>{const f={type:m.ReportType.DASHBOARD,reportId:d,id:u,reportName:r,description:o,name:s},p={query:e.query,querySummary:h.default.getQuerySummary(e.query,n)},D=new b.default(f).addInteractiveQuery(p).addStatus(m.RequestStatus.READY).addTimestamp().addReportUrls(e).build();await t.recentlyViewedService.setRecentlyViewed(D,a)},w=async({req:e,res:t,services:r})=>{const{token:s,csrfToken:o,dprUser:d,nestedBaseUrl:u}=R.default.getValues(t),{reportId:a,id:n}=e.params,f=`${e.protocol}://${e.get("host")}${e.originalUrl}`,{query:p,filters:D,reportDefinition:l,dashboardDefinition:i}=await S.default.getDefinitionData({req:e,res:t,services:r}),k=(await r.dashboardService.getSyncDashboard(s,a,a,p)).flat(),v=S.default.getSections(i,k,p);return await H({req:e,services:r,reportName:l.name,name:i.name,description:i.description||l.description||"",reportId:a,id:n,userId:d.id,filters:D.filters}),{dashboardData:{token:s,id:n,reportId:a,name:i.name,description:i.description,reportName:l.name,bookmarked:await r.bookmarkService.isBookmarked(n,a,d.id),nestedBaseUrl:u,csrfToken:o,sections:v,filters:D,type:m.ReportType.DASHBOARD,actions:U(i,l,f)}}},U=(e,t,r)=>{const{name:s}=t,{name:o}=e;return A.default.getActions({share:{reportName:s,name:o,url:r},copy:{url:r}})};var Q={renderSyncDashboard:w};0&&(module.exports={renderSyncDashboard,setActions});
|
|
2
|
+
//# sourceMappingURL=utils.js.map
|
|
@@ -0,0 +1,7 @@
|
|
|
1
|
+
{
|
|
2
|
+
"version": 3,
|
|
3
|
+
"sources": ["../../../../../../../src/dpr/routes/journeys/view-report/sync/dashboard/utils.ts"],
|
|
4
|
+
"sourcesContent": ["import type { Request, Response } from 'express'\nimport Dict = NodeJS.Dict\n\nimport type { Services } from '../../../../../types/Services'\nimport { ReportType, RequestStatus } from '../../../../../types/UserReports'\nimport { FilterValue } from '../../../../../components/_filters/types'\nimport SelectedFiltersUtils from '../../../../../components/_filters/filters-selected/utils'\nimport LocalsHelper from '../../../../../utils/localsHelper'\nimport UserStoreItemBuilder from '../../../../../utils/UserStoreItemBuilder'\nimport { DashboardDataResponse } from '../../../../../types/Metrics'\nimport AsyncDashboardUtils from '../../async/dashboard/utils'\nimport { DashboardSection } from '../../../../../components/_dashboards/dashboard-visualisation/types'\nimport { components } from '../../../../../types/api'\nimport ReportActionsUtils from '../../../../../components/_reports/report-actions/utils'\n\nconst setAsRecentlyViewed = async ({\n req,\n services,\n reportName,\n name,\n description,\n reportId,\n id,\n userId,\n filters,\n}: {\n req: Request\n services: Services\n reportName: string\n name: string\n description: string\n reportId: string\n id: string\n userId: string\n filters: FilterValue[]\n}) => {\n const stateData = {\n type: ReportType.DASHBOARD,\n reportId,\n id,\n reportName,\n description,\n name,\n }\n\n const interactiveQueryData: { query: Dict<string>; querySummary: Array<Dict<string>> } = {\n query: <Dict<string>>req.query,\n querySummary: SelectedFiltersUtils.getQuerySummary(<Dict<string>>req.query, filters),\n }\n\n const recentlyViewedData = new UserStoreItemBuilder(stateData)\n .addInteractiveQuery(interactiveQueryData)\n .addStatus(RequestStatus.READY)\n .addTimestamp()\n .addReportUrls(req)\n .build()\n\n await services.recentlyViewedService.setRecentlyViewed(recentlyViewedData, userId)\n}\n\nexport const renderSyncDashboard = async ({\n req,\n res,\n services,\n}: {\n req: Request\n res: Response\n services: Services\n}) => {\n const { token, csrfToken, dprUser, nestedBaseUrl } = LocalsHelper.getValues(res)\n const { reportId, id } = req.params\n const fullUrl = `${req.protocol}://${req.get('host')}${req.originalUrl}`\n\n const {\n query,\n filters: filterData,\n reportDefinition,\n dashboardDefinition,\n } = await AsyncDashboardUtils.getDefinitionData({\n req,\n res,\n services,\n })\n\n const dashboardData: DashboardDataResponse[][] = await services.dashboardService.getSyncDashboard(\n token,\n reportId,\n reportId,\n query,\n )\n const flattenedData: DashboardDataResponse[] = dashboardData.flat()\n\n // Get the dashboard parts\n const sections: DashboardSection[] = AsyncDashboardUtils.getSections(dashboardDefinition, flattenedData, query)\n\n await setAsRecentlyViewed({\n req,\n services,\n reportName: reportDefinition.name,\n name: dashboardDefinition.name,\n description: dashboardDefinition.description || reportDefinition.description || '',\n reportId,\n id,\n userId: dprUser.id,\n filters: filterData.filters,\n })\n\n return {\n dashboardData: {\n token,\n id,\n reportId,\n name: dashboardDefinition.name,\n description: dashboardDefinition.description,\n reportName: reportDefinition.name,\n bookmarked: await services.bookmarkService.isBookmarked(id, reportId, dprUser.id),\n nestedBaseUrl,\n csrfToken,\n sections,\n filters: filterData,\n type: ReportType.DASHBOARD,\n actions: setActions(dashboardDefinition, reportDefinition, fullUrl),\n },\n }\n}\n\nexport const setActions = (\n definition: components['schemas']['DashboardDefinition'],\n summaryDefinition: components['schemas']['ReportDefinitionSummary'],\n url: string,\n) => {\n const { name: reportName } = summaryDefinition\n const { name } = definition\n\n return ReportActionsUtils.getActions({\n share: {\n reportName,\n name,\n url,\n },\n copy: {\n url,\n },\n })\n}\n\nexport default {\n renderSyncDashboard,\n}\n"],
|
|
5
|
+
"mappings": "0jBAAA,IAAAA,EAAA,GAAAC,EAAAD,EAAA,aAAAE,EAAA,wBAAAC,EAAA,eAAAC,IAAA,eAAAC,EAAAL,GAIA,IAAAM,EAA0C,4CAE1CC,EAAiC,wEACjCC,EAAyB,gDACzBC,EAAiC,wDAEjCF,EAAgC,0CAGhCA,EAA+B,sEAE/B,MAAMG,EAAsB,MAAO,CACjC,IAAAC,EACA,SAAAC,EACA,WAAAC,EACA,KAAAC,EACA,YAAAC,EACA,SAAAC,EACA,GAAAC,EACA,OAAAC,EACA,QAAAC,CACF,IAUM,CACJ,MAAMC,EAAY,CAChB,KAAM,aAAW,UACjB,SAAAJ,EACA,GAAAC,EACA,WAAAJ,EACA,YAAAE,EACA,KAAAD,CACF,EAEMO,EAAmF,CACvF,MAAqBV,EAAI,MACzB,aAAc,EAAAW,QAAqB,gBAA8BX,EAAI,MAAOQ,CAAO,CACrF,EAEMI,EAAqB,IAAI,EAAAC,QAAqBJ,CAAS,EAC1D,oBAAoBC,CAAoB,EACxC,UAAU,gBAAc,KAAK,EAC7B,aAAa,EACb,cAAcV,CAAG,EACjB,MAAM,EAET,MAAMC,EAAS,sBAAsB,kBAAkBW,EAAoBL,CAAM,CACnF,EAEaf,EAAsB,MAAO,CACxC,IAAAQ,EACA,IAAAc,EACA,SAAAb,CACF,IAIM,CACJ,KAAM,CAAE,MAAAc,EAAO,UAAAC,EAAW,QAAAC,EAAS,cAAAC,CAAc,EAAI,EAAAC,QAAa,UAAUL,CAAG,EACzE,CAAE,SAAAT,EAAU,GAAAC,CAAG,EAAIN,EAAI,OACvBoB,EAAU,GAAGpB,EAAI,QAAQ,MAAMA,EAAI,IAAI,MAAM,CAAC,GAAGA,EAAI,WAAW,GAEhE,CACJ,MAAAqB,EACA,QAASC,EACT,iBAAAC,EACA,oBAAAC,CACF,EAAI,MAAM,EAAAC,QAAoB,kBAAkB,CAC9C,IAAAzB,EACA,IAAAc,EACA,SAAAb,CACF,CAAC,EAQKyB,GAN2C,MAAMzB,EAAS,iBAAiB,iBAC/Ec,EACAV,EACAA,EACAgB,CACF,GAC6D,KAAK,EAG5DM,EAA+B,EAAAF,QAAoB,YAAYD,EAAqBE,EAAeL,CAAK,EAE9G,aAAMtB,EAAoB,CACxB,IAAAC,EACA,SAAAC,EACA,WAAYsB,EAAiB,KAC7B,KAAMC,EAAoB,KAC1B,YAAaA,EAAoB,aAAeD,EAAiB,aAAe,GAChF,SAAAlB,EACA,GAAAC,EACA,OAAQW,EAAQ,GAChB,QAASK,EAAW,OACtB,CAAC,EAEM,CACL,cAAe,CACb,MAAAP,EACA,GAAAT,EACA,SAAAD,EACA,KAAMmB,EAAoB,KAC1B,YAAaA,EAAoB,YACjC,WAAYD,EAAiB,KAC7B,WAAY,MAAMtB,EAAS,gBAAgB,aAAaK,EAAID,EAAUY,EAAQ,EAAE,EAChF,cAAAC,EACA,UAAAF,EACA,SAAAW,EACA,QAASL,EACT,KAAM,aAAW,UACjB,QAAS7B,EAAW+B,EAAqBD,EAAkBH,CAAO,CACpE,CACF,CACF,EAEa3B,EAAa,CACxBmC,EACAC,EACAC,IACG,CACH,KAAM,CAAE,KAAM5B,CAAW,EAAI2B,EACvB,CAAE,KAAA1B,CAAK,EAAIyB,EAEjB,OAAO,EAAAG,QAAmB,WAAW,CACnC,MAAO,CACL,WAAA7B,EACA,KAAAC,EACA,IAAA2B,CACF,EACA,KAAM,CACJ,IAAAA,CACF,CACF,CAAC,CACH,EAEA,IAAOvC,EAAQ,CACb,oBAAAC,CACF",
|
|
6
|
+
"names": ["utils_exports", "__export", "utils_default", "renderSyncDashboard", "setActions", "__toCommonJS", "import_UserReports", "import_utils", "import_localsHelper", "import_UserStoreItemBuilder", "setAsRecentlyViewed", "req", "services", "reportName", "name", "description", "reportId", "id", "userId", "filters", "stateData", "interactiveQueryData", "SelectedFiltersUtils", "recentlyViewedData", "UserStoreItemBuilder", "res", "token", "csrfToken", "dprUser", "nestedBaseUrl", "LocalsHelper", "fullUrl", "query", "filterData", "reportDefinition", "dashboardDefinition", "AsyncDashboardUtils", "flattenedData", "sections", "definition", "summaryDefinition", "url", "ReportActionsUtils"]
|
|
7
|
+
}
|