@ministryofjustice/hmpps-digital-prison-reporting-frontend
Version:
The Digital Prison Reporting Frontend contains templates and code to help display data effectively in UI applications.
36 lines (32 loc) • 1.79 kB
JavaScript
;
var UserReports = require('../../../../../types/UserReports.js');
var Dashboard = require('../../../../../components/_dashboards/Dashboard.js');
var utils$1 = require('../../../../../components/_dashboards/dashboard-visualisation/utils.js');
var localsHelper = require('../../../../../utils/localsHelper.js');
var utils = require('../../../my-reports/utils.js');
var utils$2 = require('../../utils.js');
var validate = require('./validate.js');
const renderDashboard = async ({ req, res, services }) => {
const { token, dprUser, definitionsPath } = localsHelper.default.getValues(res);
const { id, tableId, reportId } = req.params;
const requestData = await utils.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
validate.DashboardSchema.parse(definition);
// validate visualisations
await utils$1.validateDashboardVisualisations(definition);
// Create the report config
const reportConfig = await new Dashboard(services, res, req, definition, UserReports.LoadType.ASYNC, requestData).build();
const { dashboardData } = reportConfig;
if (dashboardData && dashboardData.sections?.length && requestData && Object.keys(requestData).length) {
// Save the data to redis
await utils$2.updateLastViewedAsync(req, res, services, requestData, dprUser.id, dashboardData.fields || []);
}
return reportConfig;
};
exports.renderDashboard = renderDashboard;
//# sourceMappingURL=utils.js.map