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.

44 lines (41 loc) 1.65 kB
import { ErrorHandler } from '../../../../../utils/ErrorHandler/ErrorHandler.js'; import { LoadType } from '../../../../../types/UserReports.js'; import { renderDashboard } from './utils.js'; import ViewReportUtils from '../../utils.js'; class ViewSyncDashboardController { layoutPath; services; constructor(layoutPath, services) { this.layoutPath = layoutPath; this.services = services; } GET = async (req, res, next) => { try { // Redirect the same path to attach query string if (ViewReportUtils.redirectWithDefaults(res, req)) { return; } // Get the validation errors const validationErrors = res.locals['validationErrors'] || []; // Render the dashaboad const renderData = await renderDashboard({ req, res, services: this.services }); res.render(`dpr/routes/journeys/view-report/dashboard`, { layoutPath: this.layoutPath, ...renderData, validationErrors, }); } catch (error) { req.body ??= {}; req.body.title = `Dashboard Failed`; req.body.errorDescription = 'We were unable to show this dashboard for the following reason:'; req.body.error = new ErrorHandler(error).formatError(); next(error); } }; applyFilters = async (req, res, _next) => { await ViewReportUtils.applyDashboardInteractiveQuery(req, res, 'filters', LoadType.SYNC); }; } export { ViewSyncDashboardController }; //# sourceMappingURL=controller.js.map