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.

74 lines (73 loc) 3.16 kB
"use strict"; var __importDefault = (this && this.__importDefault) || function (mod) { return (mod && mod.__esModule) ? mod : { "default": mod }; }; Object.defineProperty(exports, "__esModule", { value: true }); exports.default = routes; const utils_1 = __importDefault(require("../components/error-summary/utils")); const logger_1 = __importDefault(require("../utils/logger")); const utils_2 = __importDefault(require("../components/_embedded/embedded-report/utils")); const embeddedRouteUtils_1 = __importDefault(require("../utils/embeddedRouteUtils")); function routes({ router, config, services, options, features }) { logger_1.default.info('Embedded Reports: Initialiasing routes'); const routeConfig = { templatePath: (config === null || config === void 0 ? void 0 : config.templatePath) || 'dpr/views/', layoutPath: (config === null || config === void 0 ? void 0 : config.layoutPath) || 'page.njk', }; const { templatePath, layoutPath } = routeConfig; ({ services } = embeddedRouteUtils_1.default.initReportingService(config, services)); let initialisedFeatures; try { ; ({ router, services, initialisedFeatures } = embeddedRouteUtils_1.default.initFeatures({ router, services, config: routeConfig, features, })); } catch (error) { logger_1.default.error(error, 'Init features error'); } const errorHandler = async (req, res) => { logger_1.default.error(`Error: ${JSON.stringify(req.body)}`); res.render(`${templatePath}/async-error`, { layoutPath, ...req.body, ...req.params, error: req.body.error, params: req.params, }); }; const viewSyncReportHandler = async (req, res, next) => { try { const renderData = await utils_2.default.getReport({ req, res, services, next, features, options }); res.render(`${templatePath}embedded-report`, { layoutPath, ...renderData, }); } catch (error) { req.body.title = `Report Failed`; req.body.errorDescription = 'We were unable to show this report for the following reason:'; req.body.error = utils_1.default.handleError(error); next(); } }; const viewReportPaths = ['/dpr/embedded/sync/:type/:reportId/:id/report']; if (initialisedFeatures.download) { viewReportPaths.push('/dpr/embedded/sync/:type/:reportId/:id/report/:download'); } router.get(viewReportPaths, viewSyncReportHandler, errorHandler); if (Object.keys(initialisedFeatures).length) { logger_1.default.info(`Embedded Reports: Features Initialised:`); Object.keys(initialisedFeatures).forEach((key) => { logger_1.default.info(`Embedded Reports: Feature: ${key}`); }); } logger_1.default.info(`Embedded Reports: Routes Initialised:`); viewReportPaths.forEach((path) => { logger_1.default.info(`Embedded Reports: GET: ${path}`); }); logger_1.default.info(`Done! 🙂`); }