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.

54 lines (53 loc) 2.1 kB
"use strict"; var __importDefault = (this && this.__importDefault) || function (mod) { return (mod && mod.__esModule) ? mod : { "default": mod }; }; Object.defineProperty(exports, "__esModule", { value: true }); const SummaryDataTableBuilder_1 = __importDefault(require("../SummaryDataTableBuilder/SummaryDataTableBuilder")); class CollatedSummaryBuilder { constructor(specification, summaries) { this.pageSummaryTemplates = ['page-header', 'page-footer']; this.dataTableSummaryTemplates = [ 'section-footer', 'section-header', 'table-footer', 'table-header', ]; this.specification = specification; this.summaries = summaries; } collatePageSummaries() { return this.collateAndMapToDataTable(this.pageSummaryTemplates); } collateDataTableSummaries() { return this.collate(this.dataTableSummaryTemplates); } collateAndMapToDataTable(summaryTemplates = []) { const collatedSummaries = this.collate(summaryTemplates); return this.mapToDataTables(collatedSummaries); } collate(summaryTemplates = this.pageSummaryTemplates) { const collatedSummaries = {}; if (this.summaries) { this.summaries.forEach((summary) => { if (summaryTemplates.includes(summary.template)) { if (!collatedSummaries[summary.template]) { collatedSummaries[summary.template] = []; } collatedSummaries[summary.template].push(summary); } }); } return collatedSummaries; } mapToDataTables(summaries) { const dataTables = {}; Object.keys(summaries).forEach((summaryType) => { dataTables[summaryType] = summaries[summaryType].map((summary) => { return new SummaryDataTableBuilder_1.default(summary, this.specification.sections).buildSummaryTable(); }); }); return dataTables; } } exports.default = CollatedSummaryBuilder;