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.

61 lines (58 loc) 2.64 kB
import { CollatedSummaryBuilder } from '../../../../utils/TemplateBuilder/SummaryDataHelper/SummaryDataHelper.js'; import { DataTableBuilder } from '../../../../utils/DataTableBuilder/DataTableBuilder.js'; import { ReportBuilder } from '../../../../utils/TemplateBuilder/ReportBuilder/ReportBuilder.js'; import { ParentChildDataBuilder } from '../../../../utils/TemplateBuilder/ParentChildDataBuilder/ParentChildDataBuilder.js'; import { validateDefinition } from '../../../../utils/definitionUtils.js'; const buildListTable = (definition, columns, reportData, summariesData, reportQuery) => { const { specification } = validateDefinition(definition); const collatedSummarries = new CollatedSummaryBuilder(specification, summariesData).collateDataTableSummaries(); return new DataTableBuilder(specification.fields) .withSummaries(collatedSummarries) .withHeaderOptions({ columns: columns.value, reportQuery, interactive: true, // Always show sort actions in header }) .buildTable(reportData); }; const buildReport = (definition, columns, reportData, summariesData, reportQuery) => { return new ReportBuilder(definition.variant, definition.id) .withData(reportData) .withSummaries(summariesData) .withColumns(columns.value) .withQuery(reportQuery) .build(); }; const buildParentChildReport = (definition, columns, reportData, childData, reportQuery) => { return new ParentChildDataBuilder(definition.variant, definition.id) .withData(reportData) .withColumns(columns.value) .withChildColumns([]) .withChildData(childData) .withQuery(reportQuery) .build(); }; const createReportTemplateData = (definition, columns, reportData, childData, summariesData, reportQuery) => { const { specification } = validateDefinition(definition); const { template } = specification; switch (template) { case 'list': case 'summary-section': case 'summary': case 'list-section': { return buildReport(definition, columns, reportData, summariesData, reportQuery); } case 'parent-child': case 'parent-child-section': { return buildParentChildReport(definition, columns, reportData, childData, reportQuery); } default: { return buildListTable(definition, columns, reportData, summariesData, reportQuery); } } }; var ReportTemplateUtils = { createReportTemplateData, }; export { createReportTemplateData, ReportTemplateUtils as default }; //# sourceMappingURL=utils.js.map