@gov-cy/govcy-express-services
Version:
An Express-based system that dynamically renders services using @gov-cy/govcy-frontend-renderer and posts data to a submission API.
32 lines (30 loc) • 1.45 kB
JavaScript
import { govcyFrontendRenderer } from "@gov-cy/govcy-frontend-renderer";
import * as govcyResources from "../resources/govcyResources.mjs";
import * as dataLayer from "../utils/govcyDataLayer.mjs";
/**
* Middleware function to render pages using the GovCy Frontend Renderer.
* This function takes the processed page data and template, and generates the final HTML response.
*/
export function renderGovcyPage() {
return (req, res) => {
const afterBody = {
name: "afterBody",
elements: [
govcyResources.staticResources.elements["govcyLoadingOverlay"],
govcyResources.staticResources.elements["govcyFormsJs"]
]
};
// Initialize the renderer
const renderer = new govcyFrontendRenderer();
const { processedPage } = req;
processedPage.pageTemplate.sections.push(afterBody);
//if user is logged in add the user name section in the page template
if (dataLayer.getUser(req.session)) {
processedPage.pageTemplate.sections.push(govcyResources.userNameSection(dataLayer.getUser(req.session).name)); // Add user name section
}
// Add custom CSS path
processedPage.pageData.site.customCSSFile = `/css/govcyExpress.css`;
const html = renderer.renderFromJSON(processedPage.pageTemplate, processedPage.pageData);
res.send(html);
};
}