UNPKG

@ministryofjustice/hmpps-digital-prison-reporting-frontend

Version:

The Digital Prison Reporting Frontend contains templates and code to help display data effectively in UI applications.

34 lines (31 loc) 1.77 kB
import { LoadType } from '../../../../../types/UserReports.js'; import Dashboard from '../../../../../components/_dashboards/Dashboard.js'; import { validateDashboardVisualisations } from '../../../../../components/_dashboards/dashboard-visualisation/utils.js'; import localsHelper from '../../../../../utils/localsHelper.js'; import { getMyReport } from '../../../my-reports/utils.js'; import { updateLastViewedAsync } from '../../utils.js'; import DashboardSchema from './validate.js'; const renderDashboard = async ({ req, res, services }) => { const { token, dprUser, definitionsPath } = localsHelper.getValues(res); const { id, tableId, reportId } = req.params; const requestData = await getMyReport({ tableId }, 'requestedReports', services, dprUser.id); // get pre-filter query data required by getDefinition const queryData = requestData?.query?.data; // Get the definition const definition = res.locals['definition'] ?? (await services.dashboardService.getDefinition(token, reportId, id, definitionsPath, queryData)); // Validate definition DashboardSchema.DashboardSchema.parse(definition); // validate visualisations await validateDashboardVisualisations(definition); // Create the report config const reportConfig = await new Dashboard(services, res, req, definition, LoadType.ASYNC, requestData).build(); const { dashboardData } = reportConfig; if (dashboardData && dashboardData.sections?.length && requestData && Object.keys(requestData).length) { // Save the data to redis await updateLastViewedAsync(req, res, services, requestData, dprUser.id, dashboardData.fields || []); } return reportConfig; }; export { renderDashboard }; //# sourceMappingURL=utils.js.map