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.

105 lines (102 loc) 3.66 kB
import { getValues } from '../../../../utils/localsHelper.js'; import { buildReportPageAction, buildRequestAction } from '../../../my-reports/my-reports-list-item/my-reports-list-item-actions/utils.js'; import { RequestStatus } from '../../../../types/UserReports.js'; /** * Public api for building out the congfig for a current status component * * @param {RequestedReport} data * @param {RequestStatus} status * @param {Response} res * @return {*} */ const buildCurrentStatusView = (data, status, res, req) => { const { csrfToken } = getValues(res); const metaDetails = setMetaDetails(data); const requestDetails = setRequestDetails(data); const statusDetails = setStatusDetails(status, data, res, req); return { csrfToken, metaDetails, requestDetails, statusDetails, }; }; const setMetaDetails = (data) => { const { reportId, id, executionId, tableId, type } = data; return { reportId, id, executionId, tableId, type, }; }; const setRequestDetails = (data) => { const { reportName, name, timestamp, query } = data; return { reportName: reportName || '', name: name || '', requestedAt: timestamp.requested, ...(query && { querySummary: query?.summary }), }; }; const setStatusDetails = (status, data, res, req) => { const { type } = data; const reportPageAction = buildReportPageAction(res, req, data); const requestPageAction = buildRequestAction(res, req, data); let descriptionText; let altText; let buttonText; let buttonHref; let errorMessage; switch (status) { case RequestStatus.ABORTED: descriptionText = 'Your request has been cancelled'; buttonText = 'Return to request page'; buttonHref = requestPageAction?.href ?? '/'; break; case RequestStatus.FAILED: buttonText = 'Retry'; descriptionText = 'Your report is no longer available and needs to be refreshed'; buttonHref = requestPageAction?.href ?? '/'; errorMessage = setErrorMessage(data); break; case RequestStatus.EXPIRED: descriptionText = 'Your report is no longer available and needs to be refreshed'; buttonText = 'Refresh report'; buttonHref = requestPageAction?.href ?? '/'; break; case RequestStatus.STARTED: case RequestStatus.SUBMITTED: case RequestStatus.PICKED: descriptionText = `We are generating your ${type}.`; altText = [ `Your ${type} will be generated shortly.`, `You may navigate away from this page at anytime. Please visit the homepage to monitor your report status.`, ]; break; case RequestStatus.FINISHED: case RequestStatus.READY: descriptionText = `Your ${type} has been generated`; altText = [ `Please wait, you are being redirected...`, `If you are not redirected within 10 seconds, please copy and paste this url into your browser and press enter:`, `${reportPageAction.href}`, ]; buttonHref = reportPageAction.href; break; } return { status, descriptionText, altText, buttonText, buttonHref, errorMessage, }; }; const setErrorMessage = (data) => { return data?.errorMessage ? JSON.parse(data?.errorMessage) : undefined; }; export { buildCurrentStatusView }; //# sourceMappingURL=utils.js.map